воскресенье, 27 ноября 2011 г.

Восстановление пароля weblogic


Для безопасного хранения паролей в Weblogic server  предусмотрено их шифрование с помощью алгоритмов 3DES  или AES. Шифрованные пароли и логины хранятся в конфигурационных файлах домена (config.xml), конфигурационных файлах источников данных ($DOMAIN_HOME/config/jdbc/Datasource_name.xml ), в файле для запуска серверов без ввода пароля (boot.properties) и т.д. Ключ хранится в файле SerializedSystemIni.dat

Зашифрованные этими ключом данные при наличии доступа к ключу шифрования могут быть расшифрованы.

под катом - маленький класс, позволяющий это сделать.
На вход утилите требуются путь к домену и зашифрованный пароль. На выходе - дешифрованный пароль.
перед запуском необходимо добавить в переменную CLASSPATH директорию, где находится скомпилированный класс и путь к файлу  weblogic.jar

например, вот так:




понедельник, 14 ноября 2011 г.

установка APEX на хост c EM Grid Control 11 Upd 29.11



Установка APEX на хост с EM Grid Control 11g.

Я буду использовать конфигурацию APEX + Oracle HTTP server: Scenario 3

Для этого требуется установить и сконфигурировать 2 инстанса:
1. Oracle DB с компонентом APEX.
2. Oracle HTTP server. (Компонент Oracle Web Tier). 

Установка компонента БД

1. Download дистрибутив с OTN.
2. Копирование в Oracle_home
cp apex_4.1_en.zip $ORACLE_HOME/
3. Распаковка 
unzip apex_4.1_en.zip
cd $ORACLE_HOME/apex
5. Установка
sqlplus / as sysdba
@apexins SYSAUX SYSAUX TEMP /i/
7.Установка пароля администратора
sqlplus / as sysdba
@apxchpwd
8. Включение аккаунта APEX_PUBLIC_USER
sqlplus / as sysdba
ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK
ALTER USER APEX_PUBLIC_USER IDENTIFIED BY PASSWORD
Настройка ORACLE_HTTP_SERVER

В этом примере я использую компонент Web Tier, установленный вместе с Oracle Enterprise Manager Grid Control 11g. Инстанс Oracle HTTP Server уже сконфигурирован в директории /opt/oracle/gc_inst/WebTierIH1 и для его работы с APEX необходимо немного изменить конфигурацию.

Для проверки его состояния инстанса можно использовать команды opmnctl
$ export ORACLE_INSTANCE=/opt/oracle/gc_inst/WebTierIH1
$ /opt/oracle/middleware/oms11g/opmn/bin/opmnctl status
В моём случае вывод команды выглядит так:
Processes in Instance: instance1
------------------------+---------------+--------+---------
ias-component              | process-type    |     pid   | status
------------------------+---------------+--------+---------
ohs1                             | OHS                |    1343 | Alive

 Для старта/остановки сервера можно пользоваться командами
$ /opt/oracle/middleware/oms11g/opmn/bin/opmnctl startproc ias-component=ohs1
$ /opt/oracle/middleware/oms11g/opmn/bin/opmnctl stopproc ias-component=ohs1 

1.  В конфигурации APEX + Oracle HTTP Server  изображения для web-страниц не хранятся в базе данных. Страницы с изображениями пользователю отправляет Apache-сервер, поэтому их нужно скопировать из дистрибутива в то место, где Apache сможет их увидеть. Например в
/opt/oracle/gc_inst/WebTierIH1/config/OHS/ohs1/htdocs
cp -r $ORACLE_HOME/apex/images /opt/oracle/gc_inst/WebTierIH1/config/OHS/ohs1/htdocs/
2. Конфигурирование mod_pl
Конфигурационный файл mod_pl располагается в директории 
/opt/oracle/gc_inst/WebTierIH1/config/OHS/ohs1/mod_plsql/dads.conf
Он по умолчанию включён в конфигурацию сервера.

Добавляем туда конфиг:
Alias /i/ "/opt/oracle/gc_inst/WebTierIH1/config/OHS/ohs1/images/"
<Location /pls/apex>
      Order                                     deny,allow
      PlsqlDocumentPath                 docs
      AllowOverride                        None
      PlsqlDocumentProcedure        wwv_flow_file_mgr.process_download
      PlsqlDatabaseConnectString   localhost:1521:orcl
      PlsqlNLSLanguage                 AMERICAN_AMERICA.AL32UTF8
      PlsqlAuthenticationMode        Basic
      SetHandler                             pls_handler
      PlsqlDocumentTablename       wwv_flow_file_objects$
      PlsqlDatabaseUsername         APEX_PUBLIC_USER
      PlsqlDefaultPage                     apex
      PlsqlDatabasePassword          PASSWORD
      PlsqlRequestValidationFunction wwv_flow_epg_include_modules.authorize
      Allow from all
</Location>

Пояснения к конфигурации
/opt/oracle/gc_inst/WebTierIH1/config/OHS/ohs1/images/ - Директория где хранятся рисунки. На конце должен быть слэш.
PlsqlDatabaseConnectString - строка соединения с БД. Она может быть задана в различных форматах. Не все из них одинаково хорошо работают.
PlsqlNLSLanguage - Языковые настройки БД.
PlsqlDatabasePassword - пароль, заданный APEX_PUBLIC_USER на этапе установки APEX.

3. Рестарт HTTP Server-а
$ export ORACLE_INSTANCE=/opt/oracle/gc_inst/WebTierIH1
$ /opt/oracle/middleware/oms11g/opmn/bin/opmnctl stopproc ias-component=ohs1
$ /opt/oracle/middleware/oms11g/opmn/bin/opmnctl startproc ias-component=ohs1 
 4. Можно попытаться получить страницу входа в приложение:
http://Host:Port/pls/apex/apex_admin
Здесь хост - имя хоста
Port  - порт, на котором слушает Apache. Его можно посмотреть в файле 
$ORACLE_INSTANCE/config/OHS/ohs1/httpd.conf
параметр 
Listen
У меня это файл /opt/oracle/gc_inst/WebTierIH1/config/OHS/ohs1/httpd.conf и порт 7788 соответственно.

Troubleshuting

Причину большинства ошибок можно понять, почитав вывод файла
$ORACLE_INSTANCE/diagnostics/logs/OHS/ohs1/ohs1.log
У меня их было две.
1. После попытки получить страницу http://Host:Port/pls/apex/apex_admin в логе появилось сообщение об ошибке:

[2011-11-11T15:25:49.1473+04:00] [OHS] [INCIDENT_ERROR:32] [OHS-9999] [core.c] [host_id: OEM.host.ru] [host_addr: 10.0.0.10] [tid: 1126410560] [user: orcl] [ecid: 004gNF8ScXFFS8G6yzjc6G0007nx00000t] [rid: 0] [VirtualHost: OEM.host.ru:0]  File does not exist: /opt/oracle/gc_inst/WebTierIH1/config/OHS/ohs1/htdocs/favicon.ico

Apache не смог найти иконку сайта. Просто копируем туда любую.
cp /opt/oracle/gc_inst/WebTierIH1/config/OHS/ohs1/htdocs/images/favicon.ico /opt/oracle/gc_inst/WebTierIH1/config/OHS/ohs1/htdocs/favicon.ico

2. При следующем запросе я получил ещё одну ошибку.

[2011-11-11T15:25:51.2482+04:00] [OHS] [INCIDENT_ERROR:32] [OHS-9999] [mod_context.c] [OEM.host.ru] [host_addr: 10.0.0.10] [tid: 1126410560] [user: orcl] [ecid: 004gNF8^b5_FS8G6yzjc6G0007nx000019] [rid: 0] [VirtualHost: OEM.host.ru:0]  MODPLSQL-00054: mod_plsql: HTTP-503 ORA-12154 ORA-12154: TNS:could not resolve the connect identifier

Проблема оказалась в строке подключения
в формате TNSFormat.
Заработало в таком виде:

PlsqlDatabaseConnectString localhost:1521:orcl


Ссылки:
APEX на otn.oracle.com.