17 апреля 2014 г.

Установка «Oracle Enterprise Manager 12c» с базой Oracle DB 12c


  За последний год несколько раз устанавливал Oracle Enterprise Manager, всегда натыкался на какие-нибудь проблемы. По количеству ошибок эта программа у меня на 1-м месте, установить с 1-го раза практически невозможно.

  В очередной раз устанавливал Oracle Enterprise Manager для заказчиков. Скачал последнюю версию, с обнадёживающим названием: «Oracle Enterprise Manager Cloud Control 12c Release 3 Plug-in Update 1 (12.1.0.3) New!». В компании Oracle знают свою репутацию надежности своих программ, поэтому  заманивают клиентов магическими словами: «Release 3» (уже 3-я версия), «Update 1» (это не бета-версия), «12.1.0.3» (здесь 0.3 в конце, версии с 0.0 никто для реальной работы не будет скачивать).

  Для хранения репозитория я решил использовать базу Oracle 12c. В конце года заканчивается официальная поддержка базы версии 11.2, нужно будет переходить на версию 12. Я подумал, что хватит версии Oracle 12с простаивать на тестовых стендах, пора и в бою себя показать. 

  Создал новую PDB (подключаемую базу). Запустил установку OEM. С 5-й попытки установка завершилась успешно. Как обычно потребовались танцы с бубном. Самую большую проблему для меня вызвало аварийное завершение на шаге «OMS сonfiguration». Ключевые слова в логах:


INFO: oracle.sysman.top.oms:The plug-in OMS Configuration has failed its perform method

SEVERE: Failed executing oracle.sysman.omsca.util.RegisterPostRepSchemaMetadata unable to look up name "jdbc/mds/owsm" in JNDI context

oracle.sysman.top.oms:OMSCA-ERR:Post deploy operations failed. Check the trace file

install weblogic "PolicyManagerValidator" failed to preload on startup in Web application: "/wsm-pm".


  Поиск в интернете решения не нашел. Затрудняло анализ, то что программа установки после этой ошибки удаляла сконфигурированный инстанс weblogic-сервера вместе с логами. Пришлось несколько раз запускать установку, сохранять логи. После изучения проблемы была найдена причина: сессия в базе данных от weblogic-сервера аварийно завершалась с ошибкой ORA-7445:

Exception [type: SIGSEGV, SI_KERNEL(general_protection)] [ADDR:0x0] [PC:0x22BAA34, kzrtevw()+9988] [flags: 0x0, count: 1]
Errors in file /u01/app/oracle/diag/rdbms/emcdb/emcdb/trace/emcdb_ora_36611.trc  (incident=7581):
ORA-07445: core dump [kzrtevw()+9988] [SIGSEGV] [ADDR:0x0] [PC:0x22BAA34] [SI_KERNEL(general_protection)] []

Падение базы вызывал такой SQL запрос:

SELECT COUNT(*) FROM all_objects WHERE object_name = 'EM_UPG_DESUPPORTED_PLUGINS' AND object_type = 'TABLE'AND 0 = (SELECT COUNT(*) FROM gc_current_deployed_plugin WHERE plugin_id = 'oracle.sysman.db' AND destination_type = 'Repository');

На сайте техподдержки support.oracle.com нашел статью с описанием этой ошибки: Bug 4618715 - Dump inserting into a view with OLS policy on tables (Doc ID 4618715.8). Первый раз эта ошибка была обнаружена в 2005 году в версии базы oracle db 9, затем всплывала в версии 10, затем в 11. Каждый раз помечено, что баг исправлен. В моем случае этот баг всплыл в версии 12. Официального метода исправления ошибки от oracle нет. Я установил последний пакет с исправлениями: Patch 17552800 DATABASE PATCH SET UPDATE 12.1.0.1.2, в нем этот баг не исправился. Oracle Label security (OLS) у меня уже был отключен. 

  Я сделал несколько экспериментов и нашел такой workaround: нужно вручную отключить политики OLS у всех таблиц, участвующих в запросе. Т.е. смотрим проблемный SQL запрос, находим таблицы входящие в запрос, и отключаем у всех таблиц все политики. В нашем случае представление gc_current_deployed_plugin ссылается на 4 таблицы, у одной из них есть политики, отключаем так:

BEGIN
SYS.DBMS_RLS.DROP_POLICY('SYSMAN', 'EM_MANAGEABLE_ENTITIES', 'TARGET');
END;

Сделать это нужно в середине инсталляции EM12, когда таблицы репозитория уже созданы, но установщик еще не дошел до шага конфигурации OMS сервера. В итоге успешно заканчиваем инстилляцию.


  К сожалению этот эксперимент показал, что версия oracle db 12c еще "сырая" и в продакшн ей выходить еще рано. Ждем 1-го сервис-пака.

1 комментарий:

  1. Доброго времени суток, коллеги.

    Удалось успешно и достаточно беспроблемно установить:
    ОС: CentOS 7
    СУБД репозитария: 12.1.0.2 + патчи 12.1.0.2.160119 (DBPSU/GIPSU + OJVM Patch) и 20243268
    EMCC: 12.1.0.5

    БД репозитария - в pluggable базе.

    Единственная проблема - при сборке возникает известная ошибка (не собирается webcache):
    gcc -o webcached -L/u01/em12c/middleware/Oracle_WT/webcache/lib/ -L/u01/em12c/middleware/Oracle_WT/lib/ -L/u01/em12c/middleware/Oracle_WT/lib/stubs/ main.o libwebcache.a -Wl,-rpath,/u01/em12c/middleware/Oracle_WT/lib -liau -lnnz11 -lxml11 -lclntsh -lcore11 -lunls11 -lnls11 /u01/em12c/middleware/Oracle_WT/lib/liboraz.a -ldmsapp -lons `cat /u01/em12c/middleware/Oracle_WT/lib/sysliblist` -lrt -Wl,-rpath,/u01/em12c/middleware/Oracle_WT/lib -lm `cat /u01/em12c/middle
    INFO: 10/23/15 10:23:56 PM SGT: ware/Oracle_WT/lib/sysliblist` -lrt -ldl -lm -L/u01/em12c/middleware/Oracle_WT/lib

    Лечится исправлением файла $EMCC_HOME/Oracle_WT/lib/sysliblist - добавляем в конце -ldms2

    Надеюсь кому-нибудь пригодится.

    ОтветитьУдалить