- Oracle APEX 4 – 5.0.4
- Oracle Database 11.2 – 12.1
- Oracle Linux
- 2017/07/07: SSJ Tech labより移行
- 2018/05/25: APEXの読み方について更新
Linuxでのインストール記事ですが、Windowsでも参考になるかと思います。
Oracle APEXの概要について
Oracle APEXとは
Oracle APEXはOracle Database に付属しているWebブラウザベースの開発ツールです。基本的にOracle Databaseがインストールされていれば使うことが可能です。
Oracle APEXについて現状あまり浸透していないように感じています。ただ、筆者の個人的な見解ではありますが、特にOracle Cloudの台頭により、管理用などのツールとしてこれからどんどん使われるようになることが予想されます。
APEXを利用することで、どんなことが出来るかというと、RESTfulなWebアプリケーションの作成、エクセルのシステム化やワークフローの作成などが出来るようになります。
Oracle APEXの読み方
Oracle Application Expressの略称となるOracle APEXですが、聞いたところによると”エイペックス”と読むのが主流のようですが、”アペックス”と読んでも特に間違いではないようです。ちなみに筆者はずっと”アペックス”と読んでいました。Oracle APEXのユーザー会で、全世界的にユーザーグループで”エイペックス”と読むように統一されているとアナウンスされていました。APEX由来について説明のリンク(英語)
Oracle APEXで作成したページの例
ご参考までに以下のURLよりAPEXで作成したページの例が参照できます。
https://www.builtwithapex.com
Oracle APEXの最新版
以下のURLから最新版のダウンロード又はクラウドサービスとしての利用が可能です。
https://apex.oracle.com/jp
※OTN(Oracle Technology Network)のページから直接ダウンロードすることも可能です。
Oracle APEXへの接続について
APEXの接続にはOracle REST Data Services(旧称APEXリスナー)または埋込みPL/SQLゲートウェイでの接続が可能です。本記事では埋め込みPL/SQLゲートウェイを利用したインストールを紹介します。
次のようなイメージで接続を行います。
埋込みPL/SQLゲートウェイの接続イメージ
埋込みPL/SQLゲートウェイで接続する場合は、ウェブブラウザを経由して、直接データベースに接続するイメージです。
Webブラウザ <-> Oracle Database(Oracle ListenerでHTTPをリスニングします。)
埋込みPL/SQLゲートウェイではXML Databaseが必要になります。11gのEnterprise Editionを利用しており、Database作成時にXML Databaseをインストールしていない場合は、XML Databaseをインストールをしないと埋込みPL/SQLゲートウェイの利用は出来ません。Oracle Database 12cの各エディション、Oracle Database 11gの Standard Edition、Standard Edition One、Express EditionについてはDatabase作成時にインストールされています。
Oracle APEXのインストール
【注意】既存環境の利用をしている場合
既存でAPEXを利用している場合、アップグレード後にスキーマの削除が可能ですが、削除すると元に戻せなくなります。アップグレードの確認が取れるまでは既存のスキーマは消さないでください。APEXの新バージョンをインストールすると、既存のユーザデータは変更されず、メタデータのアップグレードとなります。ユーザ・インタフェースを保つために、アップグレードされないアプリケーション・コンポーネントについては、開発者でアップグレードの検討をする必要があります。また、アップグレード前にバックアップは必ず取るようにしてください。
本記事でのインストール構成について
本記事の説明では基本的にExpress Edition(無償)の環境を利用しています。ライセンス無償でありOracleからのサポートはされないのですが、今回はオンライン以外でも無償で利用可能な環境があるよという紹介込みです。
Oracle APEXのダウンロード
以下のURLより最新版のAPEXをダウンロードをします。
https://apex.oracle.com/jp
Oracle APEXの各バージョンでサーティファイ(承認・保証)されているOracle Databaseの最低バージョンに注意してください。
- Oracle APEX 5.1 (Oracle Database 11.2.0.4以上)
- Oracle APEX 5.0 (Oracle Database 11.1.0.7以上)
- Oracle APEX 4.0 (Oracle Database 10.2.0.3以上)
以降2016/10/28現在の最新であるapex_5.0.4.zipを対象として説明していきます。
バイナリの展開とインストール
ダウンロードしたapex_5.0.4.zipを展開し、インストールします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# mkdir -m777 /tmp/inst_apex # mv -i apex_5.0.4.zip /tmp/inst_apex/ # chown oracle:oinstall /tmp/inst_apex/apex_5.0.4.zip $ su - oracle $ cd /tmp/inst_apex $ ls -l apex_5.0.4.zip $ unzip apex_5.0.4.zip $ cd apex $ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe $ export ORACLE_SID=XE $ export PATH=$ORACLE_HOME/bin:$PATH $ sqlplus / as sysdba SQL> -- 元のパラメータが指定する値より大きい場合は変更しないでください。 SQL> show parameter JOB_QUEUE_PROCESSES SQL> alter system set JOB_QUEUE_PROCESSES = 20 scope=both; SQL> show parameter SHARED_SERVERS SQL> alter system set SHARED_SERVERS = 5 scope=both; SQL> alter system set MAX_SHARED_SERVERS = 5 scope=both; SQL> SQL> -- ここではサンプルのため、SYSAUXを指定していますが、アップグレード時にデータを分離するため、表領域を変更することをOracleが推奨しています。 SQL> @apexins.sql SYSAUX SYSAUX TEMP /i/ -- 以下のようなメッセージが出てきたらインストール成功です。 Thank you for installing Oracle Application Express 5.0.4.00.12 Oracle Application Express is installed in the APEX_050000 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) |
Oracle APEXの接続構成
埋込みPL/SQLゲートウェイ構成
埋込みPL/SQLゲートウェイを構成します。
1 2 3 4 5 6 |
SQL> -- apex_epg_config.sql構成スクリプトを実行します。 SQL> -- この実行により埋込みPL/SQLゲートウェイが構成されます。 SQL> @apex_epg_config.sql /tmp/inst_apex SQL> -- 構成完了後、ANONYMOUSのアカウントをアンロックします。 SQL> ALTER USER ANONYMOUS ACCOUNT UNLOCK; |
リモート接続のためのローカル以外のポート許可
必要な場合は、以下のパッケージにてローカル以外でのリスニングの許可を行ってください。
設定値FALSEは、ローカルホストを含む他のインターフェースについても同時にリスニングします。TRUEの場合はローカルホスト(127.0.0.1)のみリスニングします。
1 |
SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE); |
以下のSQLを実行し、「Host : localhost」と出ている場合は、localhostのみでリスニングされる設定となっています。
1 2 3 4 5 6 7 8 9 10 11 12 |
SQL> set serveroutput on SQL> declare 2 v_port number; 3 v_protocol number; 4 v_host varchar2(50); 5 begin 6 dbms_xdb.getListenerEndPoint(endpoint => 1,host => v_host,port => v_port,protocol => v_protocol); 7 dbms_output.put_line('Host :'||v_host); 8 dbms_output.put_line('Port :'||v_port); 9 dbms_output.put_line('Protocol:'||v_protocol); 10 end; 11 / |
ACL(アクセスコントロールリスト)の許可
補足事項となりますが、PDF印刷が出来ないなどサーバプロセスでの接続エラーが出る場合、ACLで拒否されている可能性があります。その場合は、アクセスを許可をします。
ACLでの許可が必要な場合は、PDF印刷、メール送信やWebサービスの利用を行う場合です。外部(プリンタサーバ等)との連携が必要ない場合は不要な設定です。接続する各サーバがローカルで動作する場合も必要となります。
※ 12cの場合は以下のパッケージは非推奨ですので、DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACEを利用してください。詳細はマニュアルをご参照ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
SQL> DECLARE 2 ACL_PATH VARCHAR2(4000); 3 APEX_USER VARCHAR2(120); 4 BEGIN 5 APEX_USER := 'APEX_050000'; 6 7 SELECT ACL INTO ACL_PATH FROM DBA_NETWORK_ACLS 8 WHERE HOST = '*' AND LOWER_PORT IS NULL AND UPPER_PORT IS NULL; 9 10 IF DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE(ACL_PATH, APEX_USER, 'connect') 11 IS NULL THEN 12 DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE(ACL_PATH, APEX_USER, TRUE, 'connect'); 13 END IF; 14 15 EXCEPTION 16 -- When no ACL has been assigned to '*'. 17 WHEN NO_DATA_FOUND THEN 18 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL('power_users.xml', 19 'ACL that lets power users to connect to everywhere', 20 APEX_USER, TRUE, 'connect'); 21 DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL('power_users.xml','*'); 22 END; 23 / SQL> -- ORA-01435: user does not existが出力される場合は以下のSQLでユーザ名を確認し、 SQL> -- 上記PL/SQLの5行目の APEX_050000 を正しいユーザに変更して再実行してください。 SQL> select username from dba_users 2 where regexp_like(username,'(FLOWS|APEX)_\d{6}') 3 and username <> (select table_owner from all_synonyms 4 where synonym_name = 'WWV_FLOW' 5 and owner = 'PUBLIC'); |
リスナーの確認
HTTPをリスニングしているか確認します。
1 2 3 4 |
$ lsnrctl status LISTENER -- ※以下のような記載があることを確認 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<HTTPのリスニングホスト名>)(PORT=8080)))(Presentation=HTTP)(Session=RAW)) |
上記の表示がされていない場合、リスニングされていません。しばらく待ってもリスニングされない場合は、構成内容を再度見直して下さい。
“HOST=”がAPEXへ接続する時に、ブラウザのURLに指定するIPアドレスとなります。”PORT=”がポート番号です。
ADMINユーザのパスワード変更
ADMIN(APEXのログインユーザ)のパスワード変更をします。初回ログイン時に利用され、ログイン時にパスワード変更が求められます。
1 |
SQL> @apxchpwd.sql |
Oracle APEXへの接続
まずは以下のURLでADMINパスワードの変更を行ってください。
http://[DBサーバのIP]:8080/apex/apex_admin
パスワードは数字、大文字、記号(指定されたもの)を必ず1つは入れないとNGとなりますので、ご注意ください。
以下のURLからログインできるようになります(パスワード変更後は勝手に移動します)。
http://[DBサーバのIP]:8080/apex
Oracle APEXの日本語化
日本語化用のスクリプトを実行します。ウェブブラウザでのサインインの時に日本語か英語かを選択できるようになります。
NLS_LANG=Japanese_Japan.AL32UTF8を設定しないとエラーとなる点に注意してください。
1 2 3 4 5 6 |
$ cd /tmp/inst_apex/apex/builder/ja/ $ export NLS_LANG=Japanese_Japan.AL32UTF8 $ sqlplus / as sysdba SQL> -- 【注意】必ずNLS_LANG=Japanese_Japan.AL32UTF8を設定してから実行 SQL> alter session set current_schema = APEX_050000; SQL> @load_ja.sql |
ログイン画面で選択が可能になります。(Sign inボタンの下にあります。)
ログイン後はちょっとわかりづらいですが、トップページの左下の方で言語の選択が出来ます。