DCM out of sync, after inserting ‘invalid’ character, app server

Created a Java Container, inserted a large string of  startup-options (cut and paste from wordpad) in enterprise manager.  Saved, and from that moment on the application server refused to update the repository.   Commands like ‘opmnctl status’  didn’t work anymore, Enterprise Manager will not start etc. The old ‘dcmctl getstate -v -d’ showed me that all my containers were out of sync, either configuration and application. Happened a lot with the 9.0.4-version of the application server, but in on Linux?

It appeared to be that there was a ‘invalid’ character  in opmn.xml, in the line of the Java startup-option (damn’d Wordpad/MS).  No worry, updated opmn.xml, ‘dcmctl updateconfig’ and…. Unfortunately, this did’nt work either (ADMN-705024).  Stopping opmn, killing processe, starting? no. Note 577972.1 helped me out this time, with one interesting new point in it.

By the way, by cleaning up opmn.xml, and a reload after that, causes all to be able to startup again. But my problem still exists, and I still can’t do anything with Enterprise Manager.

The error showed after the ‘dcmctl updateconfig’ :

This command requires communication with DCM daemon, the communication failed. The base exception
is {0}.

The issue is caused by the bad opmn.xml existing in the dcm repository. Every time the dcm-daemon is attempting to start it overwrites the ‘fixed’ version of opmn.xml with what is in the repository. Thus not allowing the environment to completely start up therefore preventing the ‘fixed’ version from being saved into the repository.

The solution is in the beginning quite standard:

1. Shutdown opmn

$ORACLE_HOME/opmn/bin/opmnctl stopall

2. Kill any lingering processes -> I shut down all the processes from the middle-tier which were still alive.

ps -ef | grep <pid owner>

kill -9 <pid>

3. Clean up the opmn.xml so it no longer contains the ‘invalid’ characters.

4. Make a copy of the file

cp opmn.xml opmn.xml.copy

The following is not standard to me:

5. In another window run the following from the $ORACLE_HOME/opmn/conf directory:

while true; do; cp opmn.xml.copy opmn.xml; sleep 1; done;

6. Back in the main window, start opmn

$ORACLE_HOME/opmn/bin/opmnctl start

7. Start dcm-daemon  (normally it is automatically started by EM)

$ORACLE_HOME/opmn/bin/opmnctl startproc ias-component=dcm-daemon

8. Verify dcm-daemon started

$ORACLE_HOME/opmn/bin/opmnctl status

9. Once dcm-daemon starts, run updateconfig to change the dcm repository

$ORACLE_HOME/dcm/bin/dcmctl updateconfig -ct opmn.xml -v -d

10. In the window running the copy stop the script


11. Start up the remaining opmn components

$ORACLE_HOME/opmn/bin/opmnctl startall

12. Startup ias console

$ORACLE_HOME/bin/emctl start iasconsole

And it was succesfull!

By | 2011-06-03T23:15:46+00:00 February 13th, 2009|Categories: App. Server|3 Comments

About the Author:


  1. lee June 3, 2011 at 7:23 am

    hi friend,

    good article.
    but your step 10 should goes before step 9.

    best regards,

  2. admin June 3, 2011 at 11:19 pm

    It’s been a long time ago, so I had to read my article again twice.
    And you’re right. I made a correction. Switched step 9 and 10.

  3. MIc October 6, 2011 at 7:49 pm

    In Step 9 (now Step 10) the -ct parameter should be opmn not opmn.xml

Leave A Comment