Last week I was installinging the OEM Agent 10.2.0.5.0 on a RedHat 5.4 x64 machine and got the following error message:
org.xml.sax.SAXParseException: <Line 1, Column 37>: XML-20201: (Fatal Error) Expected name instead of ?. at oracle.xml.parser.v2.XMLError.flushErrorHandler(XMLError.java:415) at oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:284) at oracle.xml.parser.v2.XMLReader.scanNameChars(XMLReader.java:1101) at oracle.xml.parser.v2.XMLReader.scanQName(XMLReader.java:1911) at oracle.xml.parser.v2.NonValidatingParser.parseAttr(NonValidatingParser.java:1515) at oracle.xml.parser.v2.NonValidatingParser.parseAttributes(NonValidatingParser.java:1465) at oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1304) at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:353) at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:299) at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:213) at oracle.sysman.oii.oiii.OiiiInstallXMLReader.readHomes(OiiiInstallXMLReader.java:126) at oracle.sysman.oii.oiii.OiiiInstallInventory.readHomes(OiiiInstallInventory.java:629) at oracle.sysman.oii.oiii.OiiiInstallAreaControl.loadPartialInstallInv(OiiiInstallAreaControl.java:656) at oracle.sysman.oii.oiii.OiiiInstallAreaControl.initInstallInv(OiiiInstallAreaControl.java:701) at oracle.sysman.oii.oiii.OiiiInstallAreaControl.loadInstallInventory(OiiiInstallAreaControl.java:568) at oracle.sysman.oii.oiii.OiiiInstallAreaControl.initAreaControl(OiiiInstallAreaControl.java:1785) at oracle.sysman.oii.oiii.OiiiInstallAreaControl.initAreaControl(OiiiInstallAreaControl.java:1738) at oracle.sysman.prov.prereqs.OracleInventory.initInventorySession(OracleInventory.java:65) at oracle.sysman.prov.prereqs.OracleInventory.init(OracleInventory.java:44) at oracle.sysman.prov.prereqs.OracleInventory.<init>(OracleInventory.java:34) at oracle.sysman.prov.prereqs.OracleInventory.<clinit>(OracleInventory.java:28) at oracle.sysman.prov.prereqs.PortHandlerUtil.getBusyPorts(PortHandlerUtil.java:53) at oracle.sysman.prov.prereqs.PortChecks.checkPortAvailability(PortChecks.java:104) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at oracle.sysman.oip.oipc.oipcr.OipcrRulesEngine.executeRule(OipcrRulesEngine.java:325) at oracle.sysman.oip.oipc.oipcp.OipcpPrereqChecker.executeCheck(OipcpPrereqChecker.java:495) at oracle.sysman.oip.oipc.oipcp.OipcpPrereqChecker.runChecks(OipcpPrereqChecker.java:450) at oracle.sysman.oip.oipc.oipcp.OipcpPrereqChecker.executePrereqs(OipcpPrereqChecker.java:351) at oracle.sysman.oip.oipc.oipcc.OipccPreReqSession$1.run(OipccPreReqSession.java:332) at java.lang.Thread.run(Unknown Source)
After some searching I found that my inventory was corrupt. There are tools available to restore / recreate the inventory. Instead I removed the inventory and let the OUI recreate it, when the installation finished I added the Oracle Home of the database that was installed on this machine and everything is working as it should be.
For restoring / recreating your Oracle Inventory see: http://download.oracle.com/docs/cd/B19306_01/em.102/b16227/oui3_manage_oracle_homes.htm#CJAGHABI