Oracle Application Express[環境構築編](1)   インストール

こんにちは、YDCのセノです。
今回はOracle Application Express(Oracle APEX)について取り上げてみようと思います。

Oracle APEXは、Oracleデータベースの標準機能として提供されている
Webブラウザベースのアプリケーション開発ツールです。
開発者はWebブラウザ上で簡単にOracleデータベース駆動型のアプリケーションの設計・開発・展開ができます。

実はOracle APEXの歴史は古く、2004年にリリースされた前身となるOracle HTML DBの登場から10年以上が経過していますが、
Oracle Database Cloud上でのWebアプリケーション開発ツールとして採用されており、
今現在も四半期ペースでアップデートされています。※ 執筆時の最新バージョンは 5.1.4.00.08(2017/12 Release)

また、次期バージョンはOracle Databaseと同様、18.1であることもアナウンスされており、
今後も注目の機能と言えるでしょう。

事前にVirtualBoxで以下のお試し環境を用意しておきましたので、
こちらの環境にセットアップしていこうと思います。

OS データベースバージョン 使用エディション データベース
CDB名 PDB名
Red Hat Enterprise Linux 6.9 12.2.0.1.0 Standard Edition 2 orcl orclpdb

1. Oracle APEXのインストール

1-1. データベースの確認

DBについては今回は標準構成のコンテナ・データベース(CDB)とプラガブル・データベース(PDB)を
あらかじめ作成してありますので、CDBに接続します。

$ sqlplus / as sysdba
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT

接続できました。

続けてインストール済みコンポーネントを確認していきます。

SQL> set linesize 100
SQL> set pagesize 100
SQL> col comp_id format a10
SQL> col comp_name format a40
SQL> col version format a10
SQL> col status format a20
SQL> select comp_id, comp_name, version, status from dba_registry where comp_id='APEX';

レコードが選択されませんでした。

Oracle APEXがインストールされていませんね。
どうやら、12c R2はデフォルトではCDBにOracle APEXはインストールされないようです。
Oracle APEXはPDBに構成したかったので、CDBにインストールされている場合は削除する必要がありましたが
手間が省けました。

 CDB に Oracle APEX を構成した場合、その CDB 上で動作するすべての PDB で使用可能となりますが、
 使用できるバージョンが、CDB に 構成されたバージョン固定となります。
 PDB に構成することにより、バージョンが異なるアプリケーションの検証や、
 バージョンアップ検証などが可能となるので何かと便利かと思います。

PDBへの接続も同様に確認していきます。

$ sqlplus pdbadmin/xxxxxx@localhost:1521/orclpdb ※ xxxxxx:PDB管理者ユーザーのパスワード
SQL> show con_name

CON_NAME
------------------------------
ORCLPDB

PDB にも接続できることが確認できました。

1-2. Oracle APEXインストール

それでは、 PDB に Oracle APEXをインストールをしていきます。

基本的に以下のマニュアルに沿って作業していきます。
 Oracle Application Expressインストレーション・ガイド リリース5.1
 https://docs.oracle.com/cd/E86255_01/HTMIG/toc.htm

まず、最新バージョンをダウンロードします。
 http://www.oracle.com/technetwork/jp/developer-tools/apex/download-094348-ja.html
 ※ Oracleのアカウントが必要です

「ライセンスに同意する」を選択してファイル (apex_5.1.4.zip)をダウンロードし、
サーバーの任意の場所(今回は /u01/work)にアップロード/展開します。

$ cd /u01/work
$ unzip apex_5.1.4.zip

インストールモジュールは、apexディレクトリに展開されます。
インストールにはSYSDBA権限が必要となりますので、
展開されたapexディレクトリに移動し、CDBに接続後、コンテナをPDBに設定します。

$ cd /u01/work/apex
$ sqlplus / as sysdba
SQL> alter session set container = orclpdb;
SQL> show con_name

CON_NAME
------------------------------
ORCLPDB

インストール・オプションは以下の2種類があります。

・完全開発環境
・ランタイム環境

アプリケーション開発を行うには完全開発環境が必要になるので、
今回は完全開発環境をインストールします。

完全開発環境をインストールする際に実行するスクリプトは、以下のスクリプトです。

 /u01/work/apex/apexins.sql

インストールスクリプトの引数は以下になります。

第一引数:Oracle APEXアプリケーションユーザー(APEX_050100)の表領域名
第二引数:Oracle APEXファイルユーザー(FLOWS_FILES)の表領域名
第三引数:一時表領域名
第四引数:Oracle APEXイメージディレクトリ

APEXのアプリケーションはすべてDB上に保存されます。
マニュアルではSYSAUX表領域へインストールする例が記載されています。

特にAPEX専用の表領域を用意する必要はないですが、
今回は引数の違いによる構成の確認の意味を込めて、PDBにAPEX専用の表領域を用意してみます。

SQL> create tablespace apexapp;
SQL> create tablespace apexfile;

標準構成で作成したデータベースははOMF構成となっていて、表領域作成も簡単です。

ではインストールスクリプトを実行します。

SQL> @apexins.sql apexapp apexfile temp /i/

スクリプトの実行が完了すると、最後に以下のように出力されます。

Thank you for installing Oracle Application Express 5.1.4.00.08

Oracle Application Express is installed in the APEX_050100 schema.

The structure of the link to the Application Express administration services is as follows:
http://host:port/pls/apex/apex_admin (Oracle HTTP Server with mod_plsql)
http://host:port/apex/apex_admin (Oracle XML DB HTTP listener with the embedded PL/SQL gateway)
http://host:port/apex/apex_admin (Oracle REST Data Services)

The structure of the link to the Application Express development interface is as follows:
http://host:port/pls/apex (Oracle HTTP Server with mod_plsql)
http://host:port/apex (Oracle XML DB HTTP listener with the embedded PL/SQL gateway)
http://host:port/apex (Oracle REST Data Services)

PDBにインストールができたかを確認していきましょう。

SQL> show con_name

CON_NAME
------------------------------
ORCLPDB
SQL> select comp_id, comp_name, version, status from dba_registry where comp_id='APEX';

COMP_ID COMP_NAME VERSION STATUS
---------- ---------------------------------------- ------------ --------------------
APEX Oracle Application Express 5.1.4.00.08 VALID

SQL> col username format a20
SQL> select username, default_tablespace from dba_users
2 where username in ('APEX_050100', 'FLOWS_FILES', 'APEX_PUBLIC_USER');

USERNAME DEFAULT_TABLESPACE
-------------------- ------------------------------
APEX_PUBLIC_USER USERS
FLOWS_FILES APEXFILE ← 第二引数で指定した表領域
APEX_050100 APEXAPP ← 第一引数で指定した表領域

2. Oracle APEXの構成(埋込みPL/SQLゲートウェイ)

前項で、インストール完了後に以下の2種類の画面へのアクセスURLが表示されます。

・APEX管理者用画面(Application Express administration services)
・APEX開発者用画面(Application Express development interface)

また、それぞれに3パターンのURLが表示されていることがわかります。
これは、Oracle APEXはPL/SQLをベースとしたWebアプリケーションがデータベース上に保存されるため、
Webリスナーの構成が必要であり、その構成方法が以下の3パターンあるからです。

・Oracle HTTP Serverおよびmod_plsqlの構成(Oracle HTTP Server with mod_plsql)
  mod_plsqlを使用してWebアプリケーションへアクセスする構成
  Oracle HTTP Server 12c (12.1.3)以降では非推奨とされており、
  代替としてOracle REST Data Servicesの構成が案内されている

・埋込みPL/SQLゲートウェイの構成(Oracle XML DB HTTP listener with the embedded PL/SQL gateway)
  Oracle XML DBプロトコル・サーバーで実行されるWebリスナーで、mod_plsqlとほぼ同等の機能を持つ
  別途アプリケーションサーバを必要としないが、データベースに直接アクセスする形になるため
  アプリケーションの公開には向いておらず、開発環境としての利用を主とする構成

・Oracle REST Data Servicesの構成(Oracle REST Data Services)
  Oracle HTTP Server with mod_plsqlの代替となるJavaEEベースで動作するWebリスナー
  mod_plsqlに比べ機能も強化されており、最も推奨される構成

 ※Webリスナーの種類に関しては以下のドキュメントを参考ください。
  Oracle Application Expresssインストレーション・ガイド リリース5.1
   https://docs.oracle.com/cd/E86255_01/HTMIG/choosing-web-listener.htm

今現在、Oracle REST Data Servicesの構成が推奨とされていますが、
今回は開発環境を簡単に構築し、実際に触ってみることを目的としているので、
DBサーバのみで完結できる「埋込みPL/SQLゲートウェイの構成」を使用してみます。

 Oracle REST Data Servicesの構成については別の機会で触れようと思います。

2-1. shared_serversパラメータの設定(CDB)

埋込みPL/SQLゲートウェイの構成では、shared_serversパラメータを設定する必要があります。
マニュアル通り、5に設定します。

設定はCDB側で行います。

$ sqlplus / as sysdba
SQL> alter system set shared_servers = 5 scope=both;

SQL> show parameter shared_servers

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
max_shared_servers integer
shared_servers integer 5

2-1. 埋込みPL/SQLゲートウェイの構成(PDB)

埋込みPL/SQLゲートウェイを構成するスクリプトは以下です。

 /u01/work/apex/apex_epg_config.sql

引数として、展開したapexディレクトリがあるパスを渡します。

コンテナをPDBに設定し、スクリプトを実行します。

SQL> alter session set container = orclpdb;
SQL> @apex_epg_config.sql /u01/work

この処理にて、データベース内にapex/images以下のファイルをロードします。 

 インストール時に指定した第四引数が関係してきますが、これについても別の機会で触れようと思います。

2-3. ANONYMOUSアカウントのアンロック(CDB)

完了したら、ANONYMOUSアカウントをアンロックします。
埋込みPL/SQLゲートウェイを使用する場合、APEX_PUBLIC_USERは使用せず、ANONYMOUSアカウントを使用します。

$ sqlplus / as sysdba
SQL> alter user anonymous account unlock;

ユーザーが変更されました。

2-3. HTTPポートの有効化(PDB)

続いて、接続ポートを有効化します。

SQL> alter session set container = orclpdb;
SQL> select dbms_xdb_config.gethttpport from dual;

GETHTTPPORT
-----------
0

SQL> exec dbms_xdb_config.sethttpport(8080);

PL/SQLプロシージャが正常に完了しました。

SQL> select dbms_xdb_config.gethttpport from dual;

GETHTTPPORT
------------
8080

ポートが有効化できました。

2-4. APEX管理者ユーザーの作成(PDB)

次にOracle APEX管理者ユーザーのを作成します。
パスワードは8文字以上の英数字および大文字小文字記号が含まれている必要があります。
パスワード以外はデフォルトの[ADMIN]としてEnterキーで進めます。

SQL> @apxchpwd.sql
================================================================================
This script can be used to change the password of an Application Express
instance administrator. If the user does not yet exist, a user record will be
created.
================================================================================
Enter the administrator's username [ADMIN] [Enterキー]
User "ADMIN" does not yet exist and will be created.
Enter ADMIN's email [ADMIN] [Enterキー]
Enter ADMIN's password [] パスワードを入力して[Enterキー]
Created instance administrator ADMIN.

2-5. 日本語環境のロード(PDB)

これでOracle APEXを使用する準備ができましたが、このままでは対応言語は英語のみになります。

日本語環境をロードするためのスクリプトは以下になります。

 /u01/work/apex/builder/ja/load_ja.sql

言語環境をロードする場合、NLS_LANGを設定する必要があります。
設定値の例は以下です。

・American_America.AL32UTF8
・Japanese_Japan.AL32UTF8

文字コードセットはAL32UTF8である必要がありますが、言語および地域は各国のもので問題ないでしょう。

$ cd /u01/work/apex/builder/ja
$ export NLS_LANG=American_America.AL32UTF8

$ sqlplus / as sysdba
SQL> alter session set container=orclpdb;
SQL> alter session set current_schema = APEX_050100;
SQL> @load_ja.sql

最後に以下の出力が確認できればOKです。

Adjust instance settings

PL/SQL procedure successfully completed.

それではAPEX管理者画面にアクセスしてみましょう。

 http://localhost:8080/apex/apex_admin

apex_login_1.png

無事アクセスできることが確認できました。

長くなってしまったので、今回はここまで。

次回は、開発を始めるにあたっての初期設定を行っていこうと思います。

Standby Expressに関するお問合わせ

  • TEL 042-333-6217
  • FAX 042-352-6101
  • LINE
  • Mail