пятница, 26 февраля 2010 г.

Установка APEX 3.2.1 в СУБД Oracle 11gR2

Рассмотрен пример установки APEX 3.2.1 в СУБД Oracle 11gR2 (OEL 5.4).

Использованные источники

Oracle® Application Express Installation Guide
Release 3.2
Part Number E12196-02

Oracle® Fusion Middleware User's Guide for mod_plsql
11g Release 1 (11.1.1)
Part Number E12041-02

Oracle® Fusion Middleware PL/SQL Web Toolkit Reference
11g Release 1 (11.1.1)
Part Number E12042-01

Выбор HTTP сервера

  • Oracle HTTP Server and mod_plsql;

  • Embedded PL/SQL Gateway.


Выбор сценария установки APEX

  • Downloading from OTN and Configuring the Embedded PL/SQL Gateway;

  • Downloading from OTN and Configuring Oracle HTTP Server;

  • Installing from the Database and Configure the Embedded PL/SQL Gateway;

  • Installing from the Database and Configure Oracle HTTP Server.



Загрузка дистрибутива APEX

Согласно выбранного сценария - загрузим дистрибутив Oracle Application Express в директорию для последующей установки: ${ORACLE_BASE}/install/apex_3.2.1/ .

Подготовка APEX_HOME:

Скопируем диструбутив APEX, загруженный с сайта Oracle OTN в ORACLE_HOME и "подменим" каталог APEX_HOME. Существующий домашний каталог APEX сохраним под именем apex.orig.


В среде UNIX:

# Check Environment:
echo ${ORACLE_BASE}
echo ${ORACLE_HOME}

# Prepare APEX Binaries:
cp -p ${ORACLE_BASE}/install/apex_3.2.1/apex_3.2.1.zip ${ORACLE_HOME}/
cd ${ORACLE_HOME}
mv apex apex.orig
unzip apex_3.2.1.zip

В среде Windows:

rem Set Environment:
set ORACLE_BASE=C:\oracle
set ORACLE_HOME=%ORACLE_BASE%\product\11.2.0\dbhome_1
set 7Z_UTL="C:\Program Files\7-Zip\7z.exe"

rem Check Environment:
set ORACLE_BASE
set ORACLE_HOME
set 7Z_UTL

rem Prepare APEX Binaries:
copy %ORACLE_BASE%\install\apex_3.2.1\apex_3.2.1.zip %ORACLE_HOME%\
cd /D %ORACLE_HOME%
rename apex apex.orig
%7Z_UTL% x -y apex_3.2.1.zip


Создание табличных пространств APEX

В целях уменьшения "нагрузки" на табличное пространство SYSAUX - добавим: APEX_DATA, APEX_FILES, APEX_TEMP.


В среде UNIX:

echo ${ORACLE_SID}
echo ${ORACLE_BASE}
cd ${ORACLE_BASE}/install/apex_3.2.1/scripts/
sqlplus / as sysdba @ts_apex030200.sql "${ORACLE_BASE}/oradata/${ORACLE_SID}"

В среде Windows:

rem Setup Environment:
rem set ORACLE_SID=SID
set ORACLE_BASE=C:\oracle
set WGET_UTL="C:\Program Files\GnuWin32\bin\wget.exe"


rem Check Environment:
set ORACLE_SID
set ORACLE_BASE
set WGET_UTL

rem Create tablespaces:
mkdir %ORACLE_BASE%\install\apex_3.2.1\scripts\
cd %ORACLE_BASE%\install\apex_3.2.1\scripts\
%WGET_UTL% http://bkwmedia.ru/blogs/bkwmedia/install_11gr2/ts_apex030200.sql
sqlplus / as sysdba @ts_apex030200.sql "%ORACLE_BASE%\oradata\%ORACLE_SID%"

Установка APEX

Удалим ранее установленный APEX. И приступим к его установке, используя табличные пространства APEX_*:


В среде UNIX:

echo ${ORACLE_SID}
echo ${ORACLE_HOME}
echo ${ORACLE_INSTANCE}

${ORACLE_INSTANCE}/bin/opmnctl stopproc ias-component=ohs1
${ORACLE_INSTANCE}/bin/opmnctl status -l

cd ${ORACLE_HOME}/apex/
sqlplus / as sysdba @apxremov.sql
sqlplus / as sysdba @apexins APEX_DATA APEX_FILES APEX_TEMP /i/

В среде Windows:

rem Setup Environment:
rem set ORACLE_SID=SID
set ORACLE_BASE=C:\oracle
set ORACLE_HOME=%ORACLE_BASE%\product\11.2.0\dbhome_1
set ORACLE_INSTANCE=C:\bea_default\Oracle_WT1\instances\instance1

rem Check Environment:
set ORACLE_SID
set ORACLE_BASE
set ORACLE_HOME
set ORACLE_INSTANCE

rem Stop Web Instance:
%ORACLE_INSTANCE%\bin\opmnctl status -l
%ORACLE_INSTANCE%\bin\opmnctl stopproc ias-component=ohs1
%ORACLE_INSTANCE%\bin\opmnctl status -l

rem Reinstal APEX:
cd %ORACLE_HOME%\apex\
sqlplus / as sysdba @apxremov.sql
sqlplus / as sysdba @apexins APEX_DATA APEX_FILES APEX_TEMP /i/


Файлы изображений APEX

В настоящий момент изображения расположены в каталоге ORACLE_HOME/apex/images/



Настроим профиль APEX

Создадим профиль для схемы APEX. Это позволит избежать блокировки учетной записи в СУБД Oracle по причине неправильного ввода пароля:


В среде UNIX:

echo ${ORACLE_SID}
echo ${ORACLE_BASE}
cd ${ORACLE_BASE}/install/apex_3.2.1/scripts/
sqlplus / as sysdba @profile_apex030200.sql

В среде Windows:

rem Setup Environment:
rem set ORACLE_SID=SID
set ORACLE_BASE=C:\oracle
set WGET_UTL="C:\Program Files\GnuWin32\bin\wget.exe"

rem Check Environment:
set ORACLE_SID
set ORACLE_BASE
set WGET_UTL

rem Create profile:
cd %ORACLE_BASE%\install\apex_3.2.1\scripts\
%WGET_UTL% http://bkwmedia.ru/blogs/bkwmedia/install_11gr2/profile_apex030200.sql
sqlplus / as sysdba @profile_apex030200.sql

Настроим учетную запись APEX_PUBLIC_USER

По умолчанию учетная запись APEX_PUBLIC_USER заблокирована. Разблокируем учетную запись, сменим профиль учетной записи и установим пароль учетной записи:


В среде UNIX:

echo ${ORACLE_SID}
sqlplus / as sysdba

ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK;
ALTER USER APEX_PUBLIC_USER PROFILE APEX_PROFILE;
PASSWORD APEX_PUBLIC_USER;

В среде Windows:


rem Setup Environment:
rem set ORACLE_SID=SID

rem Check Environment:
set ORACLE_SID

rem Change Account:
sqlplus / as sysdba

ALTER USER APEX_PUBLIC_USER ACCOUNT UNLOCK;
ALTER USER APEX_PUBLIC_USER PROFILE APEX_PROFILE;
PASSWORD APEX_PUBLIC_USER;


Установка пароля встроенной учетной записи ADMIN

Сменим пароль администратора экземпляра APEX. При первом входе потребуется смена пароля:


В среде UNIX:

echo ${ORACLE_SID}
echo ${ORACLE_HOME}
cd ${ORACLE_HOME}/apex/
sqlplus / as sysdba @apxchpwd

В среде Windows:

rem Setup Environment:
rem set ORACLE_SID=SID
set ORACLE_BASE=C:\oracle
set ORACLE_HOME=%ORACLE_BASE%\product\11.2.0\dbhome_1

rem Check Environment:
set ORACLE_SID
set ORACLE_BASE
set ORACLE_HOME

rem Change Password:
cd %ORACLE_HOME%\apex\
sqlplus / as sysdba @apxchpwd


Отключим XML DB HTTP Server

Запретим доступ к APEX по EPG (Embeded PLSQL Gateway):


В среде UNIX:

echo ${ORACLE_SID}
sqlplus / as sysdba
exec dbms_xdb.sethttpport(0);

В среде Windows:


rem Setup Environment:
rem set ORACLE_SID=SID

rem Check Environment:
set ORACLE_SID

rem Disable EPG:
sqlplus / as sysdba
exec dbms_xdb.sethttpport(0);



Применение пакета исправлений APEX


Информацию о новых пакетах исправлений можно получить на сайте Oracle OTN. На момент написания был доступен пакет исправления 3.2.1.0.12 (My Oracle Support - patch# 8548651). Загрузим файл 8548651_111060_GENERIC.zip в каталог ORACLE_BASE/install/apex_3.2.1/ и применим его.


В среде UNIX:

echo ${ORACLE_SID}
echo ${ORACLE_BASE}
echo ${ORACLE_HOME}

cd ${ORACLE_BASE}/install/apex_3.2.1/
cp -p p8548651_111060_GENERIC.zip ${ORACLE_HOME}/apex/

cd ${ORACLE_HOME}/apex/
unzip p8548651_111060_GENERIC.zip

cd ${ORACLE_HOME}/apex/patch/
sqlplus / as sysdba @apxpatch.sql

cp -prf ${ORACLE_HOME}/apex/patch/images/* ${ORACLE_HOME}/apex/images/

В среде Windows:

rem Setup Environment:
rem set ORACLE_SID=SID
set ORACLE_BASE=C:\oracle
set ORACLE_HOME=%ORACLE_BASE%\product\11.2.0\dbhome_1
set 7Z_UTL="C:\Program Files\7-Zip\7z.exe"

rem Check Environment:
set ORACLE_SID
set ORACLE_BASE
set ORACLE_HOME
set 7Z_UTL

rem Apply Patch:
cd %ORACLE_BASE%\install\apex_3.2.1\
copy p8548651_111060_GENERIC.zip %ORACLE_HOME%\apex\

cd %ORACLE_HOME%\apex\
%7Z_UTL% x -y p8548651_111060_GENERIC.zip

cd %ORACLE_HOME%\apex\patch\
sqlplus / as sysdba @apxpatch.sql

xcopy /E /Y %ORACLE_HOME%\apex\patch\images\* %ORACLE_HOME%\apex\images\


Разрешение сетевых сервисов APEX

Разрешим сетевые взаимодействия для APEX. Для этого предоставим соответствующие привилегии (ACL) схеме APEX_030200, выполнив SQL скрипты:


В среде UNIX:

echo ${ORACLE_SID}
echo ${ORACLE_BASE}
cd ${ORACLE_BASE}/install/apex_3.2.1/scripts/

sqlplus / as sysdba @acl_apex030200_anyhost.sql
sqlplus / as sysdba @acl_apex030200_localhost.sql
sqlplus / as sysdba @acl_apex030200_repair.sql

В среде Windows:

rem Setup Environment:
rem set ORACLE_SID=SID
set ORACLE_BASE=C:\oracle
set WGET_UTL="C:\Program Files\GnuWin32\bin\wget.exe"

rem Check Environment:
set ORACLE_SID
set ORACLE_BASE
set WGET_UTL

rem Download Scripts:
cd %ORACLE_BASE%\install\apex_3.2.1\scripts\
%WGET_UTL% http://bkwmedia.ru/blogs/bkwmedia/install_11gr2/acl_apex030200_anyhost.sql
%WGET_UTL% http://bkwmedia.ru/blogs/bkwmedia/install_11gr2/acl_apex030200_localhost.sql
%WGET_UTL% http://bkwmedia.ru/blogs/bkwmedia/install_11gr2/acl_apex030200_repair.sql

rem Enable Network Services:
sqlplus / as sysdba @acl_apex030200_anyhost.sql
sqlplus / as sysdba @acl_apex030200_localhost.sql
sqlplus / as sysdba @acl_apex030200_repair.sql

Установка HTTP сервера с поддержкой MOD_PLSQL

Для организации WEB доступа установим Oracle Fusion Middleware Web Tier Utilities 11g (11.1.1.2.0) - HTTP сервер с поддержкой MOD_PLSQL. Дистрибутив можно загрузить по адресу:

Oracle Fusion Middleware Web Tier Utilities 11g (11.1.1.2.0) for Linux x86-64

Oracle Fusion Middleware Web Tier Utilities 11g (11.1.1.2.0) for Microsoft Windows (32-bit)



Настойка MOD_PLSQL

Выполним настройку конфигурационного файла MOD_PLSQL. В качестве директории с изображениями APEX возьмем ORACLE_HOME/apex/images/:


В среде UNIX:

# Edit the dads.conf File:
vi ${ORACLE_INSTANCE}/config/OHS/ohs1/mod_plsql/dads.conf

Alias /i/ "/u01/app/oracle/product/11.2.0/dbhome_1/apex/images/"
AddType text/xml xbl
AddType text/x-component htc

<Location /pls/apex>
Order deny,allow
PlsqlDocumentPath docs
PlsqlDocumentProcedure wwv_flow_file_mgr.process_download
PlsqlDatabaseConnectString host.abc.com:1521:orcl.abc.com ServiceNameFormat
PlsqlNLSLanguage AMERICAN_AMERICA.AL32UTF8
PlsqlAuthenticationMode Basic
SetHandler pls_handler
PlsqlDocumentTablename wwv_flow_file_objects$
PlsqlDatabaseUsername APEX_PUBLIC_USER
PlsqlDefaultPage apex
PlsqlDatabasePassword !!!---P.A.S.S.W.O.R.D---!!!
#PlsqlRequestValidationFunction wwv_flow_epg_include_modules.authorize
Allow from all
</Location>

# Start HTTP server with mod_plsql:
${ORACLE_INSTANCE}/bin/opmnctl startproc ias-component=ohs1
${ORACLE_INSTANCE}/bin/opmnctl status -l

В среде Windows:

rem Setup Environment:
set ORACLE_INSTANCE=C:\bea_default\Oracle_WT1\instances\instance1

rem Check Environment:
set ORACLE_INSTANCE

# Edit the dads.conf File:
notepad.exe %ORACLE_INSTANCE%\config\OHS\ohs1\mod_plsql\dads.conf

Alias /i/ "C:\oracle\product\11.2.0\dbhome_1\apex\images\"
AddType text/xml xbl
AddType text/x-component htc

<Location /pls/apex>
Order deny,allow
PlsqlDocumentPath docs
PlsqlDocumentProcedure wwv_flow_file_mgr.process_download
PlsqlDatabaseConnectString host.abc.com:1521:orcl.abc.com ServiceNameFormat
PlsqlNLSLanguage AMERICAN_AMERICA.AL32UTF8
PlsqlAuthenticationMode Basic
SetHandler pls_handler
PlsqlDocumentTablename wwv_flow_file_objects$
PlsqlDatabaseUsername APEX_PUBLIC_USER
PlsqlDefaultPage apex
PlsqlDatabasePassword !!!---P.A.S.S.W.O.R.D---!!!
#PlsqlRequestValidationFunction wwv_flow_epg_include_modules.authorize
Allow from all
</Location>

rem Stop HTTP server with mod_plsql:
%ORACLE_INSTANCE%\bin\opmnctl.bat stopproc ias-component=ohs1
%ORACLE_INSTANCE%\bin\opmnctl.bat stopall

rem Start HTTP server with mod_plsql:
%ORACLE_INSTANCE%\bin\opmnctl.bat start
%ORACLE_INSTANCE%\bin\opmnctl.bat startproc ias-component=ohs1

rem Check HTTP server status:
%ORACLE_INSTANCE%\bin\opmnctl status -l


"Преобразование" значения параметра PlsqlDatabasePassword

"Преобразование" пароля учетной записи APEX хранимого в файле dads.conf произведем при помощи PERL скрипта dadTool.pl.


Скрипт для среды UNUX доступен по ссылке apex_dads_obfuscation.sh.txt.


Для Windows выполните следующие команды:

rem Setup Environment:
set ORACLE_HTTPSERVER_HOME=C:\bea_default\Oracle_WT1
set ORACLE_INSTANCE=%ORACLE_HTTPSERVER_HOME%\instances\instance1

rem Check Environment:
set ORACLE_HTTPSERVER_HOME
set ORACLE_INSTANCE

rem Obfuscate passwords in dads.conf file:
cd %ORACLE_HTTPSERVER_HOME%\bin\
perl dadTool.pl -f %ORACLE_INSTANCE%\config\OHS\ohs1\mod_plsql\dads.conf



После "преобразования" пароля перезагрузим Web сервер.


В среде UNIX:

echo ${ORACLE_INSTANCE}

# Restart HTTP mod_plsql:
${ORACLE_INSTANCE}/bin/opmnctl restartproc ias-component=ohs1
${ORACLE_INSTANCE}/bin/opmnctl status -l

В среде Windows:

rem Setup Environment:
set ORACLE_INSTANCE=C:\bea_default\Oracle_WT1\instances\instance1

rem Check Environment:
set ORACLE_INSTANCE

# Restart HTTP mod_plsql:
%ORACLE_INSTANCE%\bin\opmnctl restartproc ias-component=ohs1
%ORACLE_INSTANCE%\bin\opmnctl status -l

PL/SQL Web Toolkit

Минимальная версия OWA_UTIL 10.1.2.0.6. После установки пакета исправления с сайта support.oracle.com версия OWA_UTIL 10.1.2.0.8. Для работы с Fusion Middleware рекомендуется версия 10.1.2.0.9. Далее приведены команды работы с OWA_UTIL:


В среде UNIX:

echo ${ORACLE_SID}
echo ${ORACLE_HTTPSERVER_HOME}
cd ${ORACLE_HTTPSERVER_HOME}/mod_plsql/owa/
sqlplus / as sysdba

-- Get version:
select owa_util.get_version from dual;

-- Install:
@owaload.sql owaload.log
@?/rdbms/admin/utlrp.sql

-- Get version:
select owa_util.get_version from dual;

В среде Windows:

rem Setup Environment:
rem set ORACLE_SID=SID
set ORACLE_HTTPSERVER_HOME=C:\bea_default\Oracle_WT1

rem Check Environment:
set ORACLE_SID
set ORACLE_HTTPSERVER_HOME

rem Upgrade OWA utils:
cd %ORACLE_HTTPSERVER_HOME%\ohs\mod_plsql\owa\
sqlplus / as sysdba

-- Get version:
select owa_util.get_version from dual;

-- Install:
@owaload.sql owaload.log
@?/rdbms/admin/utlrp.sql

-- Get version:
select owa_util.get_version from dual;


Enable Indexing of Online Help in Oracle Database 11gR2 and Higher

Для предотвращения появления ошибки для системы помощи в APEX

ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-20000: Oracle Text error:
DRG-10758: index owner does not have the privilege to use file or URL datastore

предоставим соответствующие привилегии схеме приложения APEX_030200:

SELECT par_value FROM ctxsys.ctx_parameters WHERE par_name = 'FILE_ACCESS_ROLE';
CREATE ROLE APEX_URL_DATASTORE_ROLE;
GRANT APEX_URL_DATASTORE_ROLE to APEX_030200;
EXEC ctxsys.ctx_adm.set_parameter('file_access_role', 'APEX_URL_DATASTORE_ROLE');


Смена пароля APEX пользователя ADMIN при первом входе

При первом входе в APEX используйте следующий URL: http://host:port/pls/apex/apex_admin. Введите временный пароль, заданный ранее скриптом @apxchpwd и укажите новый пароль - используя символы верхнего и нижнего регистра, спецсимволы и числа длиною более 8 символов.



Домашняя страница Администратора APEX

После смены пароля пользователю ADMIN доступна домашняя страница Администратора APEX:

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