対応バージョン
製品 | バージョン |
---|---|
Oracle APEX | 5.1.0 – 5.1.4 |
Oracle Database | 12.1 – 18.4(Oracle 18c XEにインストール) |
Oracle Linux | – |
更新履歴
日付 | 内容 |
---|---|
2018/11/13 | 記事公開 |
ここではAPEX(Oracle Application Express)のCDB(コンテナ・データベース)へのインストールについて解説します。 Linuxでのインストール記事ですが、Windowsでも参考になるかと思います。
弊社では、Oracle XE 環境でもOracle APEX のインストールや技術サポートの相談について承っております。ご相談頂く場合は、お問合せよりお気軽にお問い合わせください。
Oracle APEXの概要について
以降2018/11/13現在、Oracle Cloudと同一バージョンとなるapex_5.1.4.zipを対象として説明していきます。
Oracle APEX 18.1についても、ユーザ名をAPEX_050100をAPEX_180100と読み替えていただければインストール可能です。
非CDB環境や、Oracle APEXの概要については、以下のページをご参照ください。
Oracle APEXのインストール(Oracle Application Express)(非コンテナ環境)
Oracle APEXの最新版
以下のURLから最新版のダウンロード又はクラウドサービスとしての利用が可能です。表示してすぐの無料で開始を押したのち、少し下にあるOracle APEXのダウンロードのボタンからダウンロードページへ行けます。
https://apex.oracle.com/jp
上記遷移先のダウンロードページへのリンクについても記載しておきます。過去バージョンについては、Prior Release Archivesからダウンロードできます。
https://www.oracle.com/tools/downloads/apex-downloads.html
Oracle Database 18c XE について
Oracle Database 18c XEについては、以下にインストールの記事を記載しています。ご参考ください。
Oracle Database 18c XE インストールと制限
バイナリの展開とインストール
ダウンロードしたapex_5.1.4.zipを展開し、インストールします。PDBのみのインストールを行います。CDBにもインストールを行う場合、CDB全体でバージョンを一致させる必要があることに注意してください。
mv -i apex_5.1.4.zip ~oracle/
chown oracle:oinstall ~oracle/apex_5.1.4.zip
su - oracle
ls -l apex_5.1.4.zip
unzip apex_5.1.4.zip
cd apex
export ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE
export ORACLE_SID=XE
export PATH=$ORACLE_HOME/bin:$PATH
sqlplus / as sysdba
-- 元のパラメータが指定する値より大きい場合は変更しないでください。
show parameter JOB_QUEUE_PROCESSES
alter system set JOB_QUEUE_PROCESSES = 20 scope=both;
show parameter SHARED_SERVERS
alter system set SHARED_SERVERS = 5 scope=both;
alter system set MAX_SHARED_SERVERS = 5 scope=both;
-- 表領域についても確認しておきます。
set pagesize 1000 line 120 trim on
select CON_ID, TABLESPACE_NAME
, MAX_SIZE/1024/1024 as MAX_MB, STATUS, ENCRYPTED, COMPRESS_FOR
from cdb_tablespaces
order by 1,2;
CON_ID TABLESPACE_NAME MAX_MB STATUS ENC COMPRESS_FOR
---------- ------------------------------ ---------- --------- --- ------------------------------
1 SYSAUX 2048 ONLINE NO
1 SYSTEM 2048 ONLINE NO
1 TEMP 2048 ONLINE NO
1 UNDOTBS1 2048 ONLINE NO
1 USERS 2048 ONLINE NO
3 SYSAUX 2048 ONLINE NO
3 SYSTEM 2048 ONLINE NO
3 TEMP 2048 ONLINE NO
3 UNDOTBS1 2048 ONLINE NO
3 USERS 2048 ONLINE NO
show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 XEPDB1 READ WRITE NO
alter session set container = XEPDB1;
-- 表領域については変更可能です。アプリケーションのメタデータ、ユーザーデータ等が入ります。SYSTEM表領域は避けてください。
@apexins.sql USERS USERS 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)
Oracle APEXの接続構成
埋込みPL/SQLゲートウェイ構成
埋込みPL/SQLゲートウェイを構成します。
一度再接続します。
exit
sqlplus / as sysdba
-- ANONYMOUSのアカウントをアンロックします。CDBおよびPDB両方で行ってください。(アンロックは構成後でも問題ありません)
ALTER USER ANONYMOUS ACCOUNT UNLOCK;
alter session set container = XEPDB1;
ALTER USER ANONYMOUS ACCOUNT UNLOCK;
-- apex_epg_config.sql構成スクリプトを実行します。
-- この実行により埋込みPL/SQLゲートウェイが構成されます。
@apex_epg_config.sql /home/oracle
ユーザーの設定変更
構成したユーザをAPEXが利用可能なように変更します。
alter session set container = XEPDB1;
-- APEX_PUBLIC_USER をログイン可能として構成します。パスワードは何にしても大丈夫です。
ALTER USER APEX_PUBLIC_USER IDENTIFIED BY &inputPassword. ACCOUNT UNLOCK;
set pages 1000 line 120 trim on
col USERNAME for a30
select USERNAME, ACCOUNT_STATUS from DBA_USERS
where username = 'ANONYMOUS' or username like 'APEX%' order by 1;
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
ANONYMOUS EXPIRED
APEX_050100 EXPIRED & LOCKED
APEX_INSTANCE_ADMIN_USER EXPIRED
APEX_PUBLIC_USER OPEN
デフォルトで180日でパスワードの期限切れとなります。必要な場合は期限の変更をしてください。
alter profile DEFAULT limit password_life_time UNLIMITED;
col PROFILE for a20
col RESOURCE_NAME for a25
col LIMIT for a30
select PROFILE, RESOURCE_TYPE, RESOURCE_NAME, LIMIT from DBA_PROFILES
where RESOURCE_NAME = 'PASSWORD_LIFE_TIME' order by 1,2,3;
PROFILE RESOURCE RESOURCE_NAME LIMIT
-------------------- -------- ------------------------- ------------------------------
DEFAULT PASSWORD PASSWORD_LIFE_TIME UNLIMITED
ORA_STIG_PROFILE PASSWORD PASSWORD_LIFE_TIME 60
リスニングポートの設定
HTTPをリスニングするポートを指定します。Oracle Database 18c XEでは、デフォルトでEM Express用にCDB$ROOTにて、5500番が使用されています。
ここでは例としてPDBに5501番を設定しています。
alter session set container = XEPDB1;
select DBMS_XDB_CONFIG.GETHTTPPORT FROM DUAL;
GETHTTPPORT
-----------
0
SELECT DBMS_XDB_CONFIG.GETHTTPSPORT FROM DUAL;
GETHTTPSPORT
------------
0
EXEC DBMS_XDB_CONFIG.SETHTTPSPORT(5501);
SELECT DBMS_XDB_CONFIG.GETHTTPSPORT FROM DUAL;
GETHTTPSPORT
------------
5501
リモート接続のためのローカル以外のポート許可
必要な場合は、以下のパッケージにてローカル以外でのリスニングの許可を行ってください。 設定値FALSEは、ローカルホストを含む他のインターフェースについても同時にリスニングします。TRUEの場合はローカルホスト(127.0.0.1)のみリスニングします。
EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
以下のSQLを実行し、「Host : localhost」と出ている場合は、localhostのみでリスニングされる設定となっています。
alter session set container = XEPDB1;
set serveroutput on
declare
v_port number;
v_protocol number;
v_host varchar2(50);
begin
dbms_xdb.getListenerEndPoint(endpoint => 1,host => v_host,port => v_port,protocol => v_protocol);
dbms_output.put_line('Host :'||v_host);
dbms_output.put_line('Port :'||v_port);
dbms_output.put_line('Protocol:'||v_protocol);
end;
/
Host :
Port :0
Protocol:1
ACL(アクセスコントロールリスト)の許可
補足事項となりますが、PDF印刷が出来ないなどサーバプロセスでの接続エラーが出る場合、ACLで拒否されている可能性があります。その場合は、アクセスを許可をします。 ACLでの許可が必要な場合は、PDF印刷、メール送信やWebサービスの利用を行う場合です。外部(プリンタサーバ等)との連携が必要ない場合は不要な設定です。接続する各サーバがローカルで動作する場合も必要となります。
-- メール向けのACL追加例です。schema_nameは、APEX_050100スキーマ以外にも、
-- ワークスペースオーナーの登録が必要です。ロールでの指定も可能です。
-- xs$name_list('smtp') の代わりに xs$name_list('connect') を指定すると、
-- http等も許可されます。詳しくはマニュアルを参照してください。
alter session set container = XEPDB1;
declare
host_name varchar2(100) := '';
schema_name varchar2(100) := 'APEX_050100';
begin
dbms_network_acl_admin.append_host_ace (
host => host_name,
lower_port => 25,
upper_port => 25,
ace => xs$ace_type(privilege_list => xs$name_list('smtp'),
granted => TRUE, -- TRUE:許可 FALSE:拒否
principal_name => schema_name,
principal_type => xs_acl.ptype_db));
end;
/
-- commitしないと動作しません。
commit;
set pages 1000 line 120
col NAME for a50
col SECURITY_CLASS for a15
col PARENT_ACL for a10
col DESCRIPTION for a40
select NAME, SECURITY_CLASS, PARENT_ACL, DESCRIPTION from DBA_XS_ACLS
order by 1;
NAME SECURITY_CLASS PARENT_ACL DESCRIPTION
-------------------------------------------------- --------------- ---------- -------------------------------
NETWORK_ACL_7A7BF4A0B0AA72C0E053973410A08847 NETWORK_SC ACL for host :25-25
col ACL for a50
col ACE_ORDER for 999999999
col PRINCIPAL for a25
col PRIVILEGE for a25
select ACL, ACE_ORDER, GRANT_TYPE, PRINCIPAL, PRIVILEGE from DBA_XS_ACES
order by 1,2;
ACL ACE_ORDER GRANT PRINCIPAL PRIVILEGE
-------------------------------------------------- ---------- ----- ------------------------- ---------------
NETWORK_ACL_7A7BF4A0B0AA72C0E053973410A08847 1 GRANT APEX_050100 SMTP
exit
リスナーの確認
HTTPをリスニングしているか確認します。
lsnrctl status LISTENER
# 以下のような記載があることを確認
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=)(PORT=5501))(Security=(my_wallet_directory=/opt/oracle/admin/XE/xdb_wallet))(Presentation=HTTP)(Session=RAW))
HOST=がAPEXへ接続する時に、ブラウザのURLに指定するIPアドレスとなります。PORT=がポート番号です。
前の手順で設定した5501番がリスニングされていることを確認してください。
ADMINユーザのパスワード変更
ADMIN(APEXのログインユーザ)のパスワード変更をします。初回ログイン時に利用され、ログイン時にパスワード変更が求められます。
alter session set container = XEPDB1;
@apxchpwd.sql
Oracle APEXへの接続
まずは以下のURLでADMINパスワードの変更を行ってください。
https://[DBサーバのIP]:5501/apex/apex_admin
パスワードは数字、大文字、記号(指定されたもの)を必ず1つは入れないとNGとなりますので、ご注意ください。
以下のURLからログインできるようになります(パスワード変更後は勝手に移動します)。
https://[DBサーバのIP]:5501/apex
Oracle APEXの日本語化
日本語化用のスクリプトを実行します。ウェブブラウザでのサインインの時に日本語か英語かを選択できるようになります。
NLS_LANG=Japanese_Japan.AL32UTF8を設定しないとエラーとなる点に注意してください。
cd /home/oracle/apex/builder/ja/
export NLS_LANG=Japanese_Japan.AL32UTF8
sqlplus / as sysdba
-- 【注意】必ずNLS_LANG=Japanese_Japan.AL32UTF8を設定してから実行
alter session set container = XEPDB1;
alter session set current_schema = APEX_050100;
@load_ja.sql
ログイン画面で選択が可能になります。(Sign inボタンの下にあります。)
ログイン後はちょっとわかりづらいですが、トップページの左下の方で言語の選択が出来ます。
インストールファイルの移動
インストールしたapexのディレクトリは、設定変更時や、言語の追加、パスワードの再設定などで使用します。
ORACLE_HOME配下へ移動しておくと便利です。
mv -i ~oracle/apex ${ORACLE_HOME}/apex_5.1.4
ls -ld ${ORACLE_HOME}/apex_5.1.4