суббота, 19 ноября 2011 г.

Проблемы с Enterprise Manager

На Oracle 10.2.0.4
После создания новой базы в dbca имеем ошибку:

Error securing Database Control, Database Control has been brought up in non-secure mode. To secure the Database Control execute the following command(s):

1) Set the environment variable ORACLE_SID to rsud
2) D:\oracle\product\10.2.0\db_1\bin\emctl.bat stop dbconsole
3) D:\oracle\product\10.2.0\db_1\bin\emctl.bat config emkey -repos -sysman_pwd < Password for SYSMAN user >
4) D:\oracle\product\10.2.0\db_1\bin\emctl.bat secure dbconsole -sysman_pwd < Password for SYSMAN user >
5) D:\oracle\product\10.2.0\db_1\bin\emctl.bat start dbconsole

Как описано в docid 1222603.1 ошибка в устаревшем с 2011 года сертификате. При этом подключение по http работает прекрасно.

Для исправления ошибки выпущен патч 8350262, который обновляет эти сертификаты. После выполнения патча рекомендовано сделать
emctl secure dbconsole -reset

но я почему-то не пошел по этому пути и пересоздал репозитарий полностью:

emca -deconfig dbcontrol db -repos drop
emca -config dbcontrol db -repos create


После выполнения этой штуки получил на экране ошибку (в логе ее нет):

java.io.IOException: The handle is invalidEnterprise Manager configuration compl
eted successfully

at java.io.FileInputStream.close0(Native Method)
at java.io.FileInputStream.close(FileInputStream.java:245)
at sun.nio.cs.StreamDecoder$CharsetSD.implClose(StreamDecoder.java:505)
at sun.nio.cs.StreamDecoder.close(StreamDecoder.java:198)
at java.io.InputStreamReader.close(InputStreamReader.java:187)
at java.io.BufferedReader.close(BufferedReader.java:502)
FINISHED EMCA at 19.11.2011 12:17:53 at oracle.sysman.assistants.util.sqlEngi
ne.SQLEngine$ErrorStreamReader.run(SQLEngine.java:2406)

При этом сервис создался и запустился, https поднялся, но при входе в em видим ошибку:

java.lang.Exception: Exception in sending Request :: null

и переходы на другие вкладки тоже падают с ошибкой:

500 Internal Server Error
java.util.MissingResourceException: Can't find resource for bundle oracle.sysman.db.rsc.LoginResource, key connectStringError
at java.util.ResourceBundle.getObject(ResourceBundle.java:325)


Алгоритм починки этой штуки примерно следующий:
1. Возможно стоит указать JAVA_HOME и PATH на те, которые лежат в ORACLE_HOME (шаг я делал, но он скорее всего лишний)
2. Удаляем все

emca -deconfig all db -repos drop

При удалении пользователя SYSMAN все может повиснуть. Как вариант обхода этого можно перезагрузить базу и удалить пользователя после ее поднятия или погуглить по команде drop user sysman, что даст кучу ссылок по удалению.

3. Очищаем папки, которые находятся в ORACLE_HOME/oc4j/j2ee, которые относятся к старым инсталляциям
4. Создаем все заново (ошибка java.io.IOException почему-то все равно осталась, но все заработало)

emca -cofig all db -repos create


После этого все поднялось и заработало.

Как вариант просто отказаться от https:

emctl unsecure dbconsole

Комментариев нет: