"Нас Атакуют!" Изобличи козни лукавого, запрети диаволу
Установка Enterprise Manager Database Control
База данных Oracle имеет все необходимое для управления и мониторинга в виде "V$*" или "DBA_*" dictionary views, доступ к которым может быть получен через командную строку (SqlPlus) или через графический интерфейс (Enterprise Manager), так популярный в среде "ДБА v2.0". Сам по себе EM как продукт оставляет желать лучшего, но уже достиг того уровня стабильности, на котором EM может быть полезным и использоваться в реальной жизни.
Очень часто возникает ситуация, когда сам по себе Enterprise Manager не работает - в этом случае "ДБА v2.0" начинает чувствовать свою бесполезность. Решение очевидно - надо знать и уметь использовать средства командной строки. К сожалению (или к счастью?) это требует некоего понимания архитектуры и реализации Oracle RDBMS, а также наличия базовых навыков работы с UNIX.
Менее очевидное, но более заманчивое решение кроется в восстановлении работоспособности EM.
Надо также признать, что во многих случаях EM может быть хорошим средством для просмотра графиков производительности, быстрого поверхностного анализа истории работы системы. обнаружения очевидных дефектов в SQL запросах и прочей черновой работы. Особенно полезен EM может быть для разработчиков под Oracle, которым необходимо быстро установить тестовую систему, поддерживать и настраивать ее самостоятельно.
Опыт показывает, что "поломанный" EM достаточно трудно привести в рабочее состояние. Особенно в ситуации "одно пользовательской" системы, полностью поддерживаемой разработчиком или даже бизнес-пользователем.
В этой заметке мы попробуем наиболее простой способ восстановления работоспособности ЕМ - его полную переустановку. Естественно, вся "история" работы системы при этом будет утеряна - но графики и прочие ценные для разработчика средства будут восстановлены. По затратам времени этот подход куда более эффективен, чем попытки устранения неполадок в Enterprise Manager. Также эта заметка может быть использована желающими "включить" EM в не имеющей его, но уже работающей базе данных.
Прежде чем мы продолжим, я хотел бы привести строки из Евангелия:
................... == От Луки святое благовествование == ......................
=== Глава 21, Стих 8 ===
8 Он сказал: берегитесь, чтобы вас не ввели в заблуждение, ибо многие придут
под именем Моим, говоря, что это Я; и это время близко: не ходите вслед их.
9 Когда же услышите о войнах и смятениях, не ужасайтесь, ибо этому надлежит
быть прежде; но не тотчас конец.
10 Тогда сказал им: восстанет народ на народ, и царство на царство;
11 будут большие землетрясения по местам, и глады, и моры, и ужасные
явления, и великие знамения с неба.
Лично для вас благая весть - Единородный Сын Божий Иисус Христос любит вас, Он взошел на крест за ваши грехи, был распят и на третий день воскрес, сел одесную Бога и открыл нам дорогу в Царствие Небесное.
Никто из нас не знает, когда наступит конец всему - но мы живем, отгоняя мысли о нашем предназначении в этом мире и нашей христианской ответственности перед Богом. Грешим и не каемся, совершаем преступления и остаемся безнаказанными до поры до времени, думая что так будет всегда.
Покайтесь, примите Иисуса как вашего Спасителя, ибо наступают последние времена и время близко - стоит Судья у ворот.
Храните себя от идолов и ложных учений, ищите ответы на все вопросы в Библии, молитесь Богу о ваших нуждах - и ожидайте Спасителя нашего Иисуса Христа. Внимайте тому, что Бог говорит вам через Духа Святого, не слушайте лжеучителей и лжепророков, коих много уже сейчас и будет все больше, нам с вами во искушение.
На главной странице этого сайта вы найдете программу для чтения Библии в командной строке - буду очень рад если программа окажется полезной. Пожалуйста, читайте Библию, на экране или в печатном виде - вы будете искренне удивлены как много там сказано лично про вас и ваши обстоятельства.
Вернемся к нашим техническим деталям.
Я предполагаю что уважаемый читатель владеет необходимыми знаниями и навыками использования Linux и Oracle, поэтому я буду очень краток. Цель этой заметки изложить самый простой подход к переустановке EM и прояснить некоторые детали.
Для начала уясним для себя, что же такое Oracle Enterprise Manager.
Продукт имеет две версии:
В том или ином виде, EM всегда незримо присутствует - он устанавливается автоматически в ORACLE HOME любой базы данных, в директории "sysman", где содержатся необходимые java классы, perl и SQL скрипты и все прочее необходимое для работы самого приложения. Но любая база должна быть "зарегистрирована" для управления EM. По умолчанию, Database Configuration Assistant регистрирует новую базу для EM, но эта опция может быть отключена. Также, если ваша база была создана скриптом (через SQL команду CREATE DATABASE) - ЕМ не будет знать о вашей базе ничего.
EM Grid Control используется для управления большим количеством продуктов Oracle, установлен в единственном экземпляре централизованно на отдельном сервере и поддерживается администраторами баз данных вашей компании. Эту версию системы трогать не нужно, эта статья не про нее. Если в вашей компании есть централизованный EM Grid Control - обращайтесь за помощью к ДБА.
EM Database Control используется для одиночных баз данных, с одним instance или кластерных. Если вы - владелец и администратор такой базы, установленной в виртуальной машине или на отдельно стоящем сервере - Database Control это ваш выбор и эта заметка для вас.
Удаление старой неработающей версии EM
Предположим, что вы получили доступ к серверу, на котором когда-то был Oracle 9, в процессе разработки одна существующая база была обновлена до версий 10.1, 10.2. 11.1 и наконец 11.2. С базой работает только несколько человек из вашей команды разработчиков и используется она только для тестирования. Ваш администратор перегружен работой и не хочет ничего слышать о EM Grid Control и советует вам использовать Toad. Но, как настоящий специалист, вы хотите воспользоваться новыми средствами мониторинга, предлагаемыми в EM 11g. Также мы предположим, что вопрос лицензирования Oracle решен в вашей компании и у вас есть лицензии на использование EM Option packs.
Определим переменную ORACLE_UNQNAME (в моем случае она такая же, как ORACLE_SID - "DB11G") и проверим, какие компоненты установлены:
02:47:18 SQL> ; 1 select comp_id, comp_name, version, status 2* from dba_registry 02:47:23 SQL> / COMP_ID COMP_NAME VERSION STATUS ------------------------------ ----------------------------------- ------------------------------ ----------- OWB OWB 11.2.0.2.0 VALID APEX Oracle Application Express 3.2.1.00.12 VALID EM Oracle Enterprise Manager 11.2.0.2.0 VALID AMD OLAP Catalog 11.2.0.2.0 VALID SDO Spatial 11.2.0.2.0 VALID ORDIM Oracle Multimedia 11.2.0.2.0 VALID XDB Oracle XML Database 11.2.0.2.0 VALID CONTEXT Oracle Text 11.2.0.2.0 VALID EXF Oracle Expression Filter 11.2.0.2.0 VALID RUL Oracle Rules Manager 11.2.0.2.0 VALID OWM Oracle Workspace Manager 11.2.0.2.0 VALID CATALOG Oracle Database Catalog Views 11.2.0.2.0 VALID CATPROC Oracle Database Packages and Types 11.2.0.2.0 VALID JAVAVM JServer JAVA Virtual Machine 11.2.0.2.0 VALID XML Oracle XDK 11.2.0.2.0 VALID CATJAVA Oracle Database Java Packages 11.2.0.2.0 VALID APS OLAP Analytic Workspace 11.2.0.2.0 VALID XOQ Oracle OLAP API 11.2.0.2.0 VALID 18 rows selected. Elapsed: 00:00:00.04 02:47:27 SQL>
Мы видим, что элемент "ЕМ" присутствует в списке, также мы видим пользователя с именем "SYSMAN" в DBA_USERS. Удостоверимся, что существующий EM действительно не работает:
u@x > ssh oul5a ..................... == Вторая книга Паралипоменон == ......................... === Глава 33, Стих 12 === 12 И в тесноте своей он стал умолять лице Господа Бога своего и глубоко смирился пред Богом отцов своих. (b+/b-, c+/c-, +/-, *) > [oracle@OUL5A ~]$ emctl status dbconsole OC4J Configuration issue. /u01/app/oracle/product/11.2.0/db_2/oc4j/j2ee/OC4J_DBConsole_OUL5A_DB11G not found. [oracle@OUL5A ~]$ emctl status agent EM Configuration issue. /u01/app/oracle/product/11.2.0/db_2/OUL5A_DB11G not found. [oracle@OUL5A ~]
Как видно, Enterprise Manager имеется, но в нашем случае совершенно не функционален. Убедитесь, что Oracle Listener запущен и ожидает подключения:
u@x > ssh oul5a .............................. == Псалтирь == .................................. === Глава 75, Стих 10 === 9 С небес Ты возвестил суд; земля убоялась и утихла, 10 когда восстал Бог на суд, чтобы спасти всех угнетенных земли. (b+/b-, c+/c-, +/-, *) > [oracle@OUL5A ~]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 12-FEB-2011 03:20:19 Copyright (c) 1991, 2010, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.2.0 - Production Start Date 12-FEB-2011 03:18:40 Uptime 0 days 0 hr. 1 min. 38 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Log File /u01/app/oracle/diag/tnslsnr/OUL5A/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=OUL5A)(PORT=1521))) Services Summary... Service "DB11G" has 1 instance(s). Instance "DB11G", status READY, has 1 handler(s) for this service... Service "DB11GXDB" has 1 instance(s). Instance "DB11G", status READY, has 1 handler(s) for this service... The command completed successfully [oracle@OUL5A ~]$
Удаляем необходимые части EM. Я не хочу использовать команду "emca -deconfig dbcontrol db -repos drop", поскольку она переводит базу данных в quiesce mode. Вместо этого:
[oracle@OUL5A ~]$ $ORACLE_HOME/sysman/admin/emdrep/bin/RepManager OUL5A 1521 DB11G -sys_password 1 -action drop Enter repository user name : sysman Getting temporary tablespace from database... Found temporary tablespace: TEMP Checking SYS Credentials ... rem error switch OK. rem error switch Dropping the repository.. Checking for Repos User ... Exists. Repos User exists.. Clearing EM Contexts ... OK. Dropping EM users ... Done. Dropping Repos User ... Done. Dropping Roles/Synonymns/Tablespaces ... Done. Dropped Repository Successfully. [oracle@OUL5A ~]$ 03:27:59 SQL> select comp_id, comp_name, version, status 03:28:12 2 from dba_registry where comp_id = 'EM'; no rows selected Elapsed: 00:00:00.08 03:28:23 SQL>
Убедитесь. что пользователь "SYSMAN" более не существует в DBA_USERS. Если это не так - используйте команду "DROP USER SYSMAN CASCADE;"
Установка EM Database Control
Теперь самое время "перерегистрировать" вашу базу данных для ЕМ. Сейчас нам надо доделать кое-какую работу за разработчиков из Oracle - откроем файл "$ORACLE_HOME/sysman/admin/scripts/emca/emcaDbUtil.pl", найдем строку #107 и изменим ее таким образом:
$lda = DBI->connect('dbi:Oracle:', "SYS", "$dbPwd",
это необходимо для устранения ошибки "CONFIG: Failed to unlock mgmt_view account". Для регистрации базы данных в EM Database Control 11g используется утилита "emca":
[oracle@OUL5A ~]$ emca -config dbcontrol db -repos create -SYS_PWD 1 STARTED EMCA at Feb 12, 2011 5:48:38 AM EM Configuration Assistant, Version 11.2.0.0.2 Production Copyright (c) 2003, 2005, Oracle. All rights reserved. Enter the following information: Database SID: DB11G Listener port number: 1521 Listener ORACLE_HOME [ /u01/app/oracle/product/11.2.0/db_2 ]: Password for DBSNMP user: Password for SYSMAN user: Email address for notifications (optional): Outgoing Mail (SMTP) server for notifications (optional): ----------------------------------------------------------------- You have specified the following settings Database ORACLE_HOME ................ /u01/app/oracle/product/11.2.0/db_2 Local hostname ................ OUL5A Listener ORACLE_HOME ................ /u01/app/oracle/product/11.2.0/db_2 Listener port number ................ 1521 Database SID ................ DB11G Email address for notifications ............... Outgoing Mail (SMTP) server for notifications ............... ----------------------------------------------------------------- Do you wish to continue? [yes(Y)/no(N)]: Y Feb 12, 2011 5:50:05 AM oracle.sysman.emcp.EMConfig perform INFO: This operation is being logged at /u01/app/oracle/cfgtoollogs/emca/DB11G/emca_2011_02_12_05_48_38.log. Feb 12, 2011 5:50:11 AM oracle.sysman.emcp.EMReposConfig createRepository INFO: Creating the EM repository (this may take a while) ... ... tail the logfile Feb 12, 2011 6:09:57 AM oracle.sysman.emcp.EMReposConfig invoke INFO: Repository successfully created Feb 12, 2011 6:10:14 AM oracle.sysman.emcp.EMReposConfig uploadConfigDataToRepository INFO: Uploading configuration data to EM repository (this may take a while) ... Feb 12, 2011 6:11:25 AM oracle.sysman.emcp.EMReposConfig invoke INFO: Uploaded configuration data successfully Feb 12, 2011 6:11:28 AM oracle.sysman.emcp.ParamsManager getLocalListener WARNING: Error retrieving listener for OUL5A Feb 12, 2011 6:11:37 AM oracle.sysman.emcp.util.DBControlUtil secureDBConsole INFO: Securing Database Control (this may take a while) ... Feb 12, 2011 6:12:01 AM oracle.sysman.emcp.util.DBControlUtil secureDBConsole INFO: Database Control secured successfully. Feb 12, 2011 6:12:01 AM oracle.sysman.emcp.util.DBControlUtil startOMS INFO: Starting Database Control (this may take a while) ... Feb 12, 2011 6:14:06 AM oracle.sysman.emcp.EMDBPostConfig performConfiguration INFO: Database Control started successfully Feb 12, 2011 6:14:07 AM oracle.sysman.emcp.EMDBPostConfig performConfiguration INFO: >>>>>>>>>>> The Database Control URL is https://OUL5A:1158/em <<<<<<<<<<< Feb 12, 2011 6:15:03 AM oracle.sysman.emcp.EMDBPostConfig invoke WARNING: ************************ WARNING ************************ Management Repository has been placed in secure mode wherein Enterprise Manager data will be encrypted. The encryption key has been placed in the file: /u01/app/oracle/product/11.2.0/db_2/OUL5A_DB11G/sysman/config/emkey.ora. Ensure this file is backed up as the encrypted data will become unusable if this file is lost. *********************************************************** Enterprise Manager configuration completed successfully FINISHED EMCA at Feb 12, 2011 6:15:03 AM [oracle@OUL5A ~]$
Проверим, запущены ли DBConsole и agent, он используется даже в локальной конфигурации:
[oracle@OUL5A ~]$ emctl status dbconsole Oracle Enterprise Manager 11g Database Control Release 11.2.0.2.0 Copyright (c) 1996, 2010 Oracle Corporation. All rights reserved. https://OUL5A:1158/em/console/aboutApplication Oracle Enterprise Manager 11g is running. ------------------------------------------------------------------ Logs are generated in directory /u01/app/oracle/product/11.2.0/db_2/OUL5A_DB11G/sysman/log [oracle@OUL5A ~]$ emctl status agent Oracle Enterprise Manager 11g Database Control Release 11.2.0.2.0 Copyright (c) 1996, 2010 Oracle Corporation. All rights reserved. --------------------------------------------------------------- Agent Version : 10.2.0.4.3 OMS Version : 10.2.0.4.3 Protocol Version : 10.2.0.4.3 Agent Home : /u01/app/oracle/product/11.2.0/db_2/OUL5A_DB11G Agent binaries : /u01/app/oracle/product/11.2.0/db_2 Agent Process ID : 4617 Parent Process ID : 4575 Agent URL : https://OUL5A:3938/emd/main Repository URL : https://OUL5A:1158/em/upload/ Started at : 2011-02-12 06:12:11 Started by user : oracle Last Reload : 2011-02-12 06:12:11 Last successful upload : 2011-02-12 06:20:06 Total Megabytes of XML files uploaded so far : 10.17 Number of XML files pending upload : 0 Size of XML files pending upload(MB) : 0.00 Available disk space on upload filesystem : 19.30% Data channel upload directory : /u01/app/oracle/product/11.2.0/db_2/OUL5A_DB11G/sysman/recv Last successful heartbeat to OMS : 2011-02-12 06:19:52 --------------------------------------------------------------- Agent is Running and Ready [oracle@OUL5A ~]$
Не знаю как вам, а мне ни капельки не удивительно что ЕМ 11g использует агента версии 10g. Проигнорируем эту деталь и откроем в броузере страничку "https://OUL5A:1158/em", в моем примере логин "sysman", пароль "1" или из командной строки:
u@x > ssh oul5a ............. == Послание к Ефесянам святого апостола Павла == ................. === Глава 5, Стих 7 === 6 Никто да не обольщает вас пустыми словами, ибо за это приходит гнев Божий на сынов противления; 7 итак, не будьте сообщниками их. (b+/b-, c+/c-, +/-, *) > [oracle@OUL5A ~]$ telnet OUL5A 1158 Trying 192.168.56.10... Connected to OUL5A (192.168.56.10). Escape character is '^]'. GET .... нечитаемые символы - открытие SSL сессии .... Connection closed by foreign host. [oracle@OUL5A ~]$
Вот и все - наша база данных зарегистрирована в ЕМ, все странички работают и показывают наши привычные графики. Не забудьте прописать имя хоста (в моем примере, OUL5A) в "/etc/hosts" файле вашей рабочей станции - иначе некоторые страницы ЕМ не будут работать.
Спасибо что зашли,
Будьте благословенны!
Денис