対応バージョン

  • Oracle APEX 20.1
  • Oracle Database 12.1 – 18.4(Oracle 18c XEにて検証)
  • Oracle Linux 7

更新履歴

  • 2020/05/12: 記事公開

ここではAPEX(Oracle Application Express)のメジャー・バージョンのアップグレード(18.1->20.1)について説明します。基本的にはインストールと変わりませんが、戸惑う方がいるかもしれないのと、最近アップグレードする機会がありましたので、ご参考までに。

弊社では、Oracle XE 環境でもOracle APEX のインストールや技術サポートの相談について承っております。ご相談頂く場合は、お問合せよりお気軽にお問い合わせください。
初期導入時の講習や定額メールサポートがエンドユーザ様、SIer様かかわらず人気です。

環境の前提条件

OSLinux
DBOracle XE 18c コンテナ環境
インストール対象CDBにはインストールされておらず、PDB単体へインストールされている状態
PDB名XEPDB1
Oracle APEXバージョン18.1(18.1.0.00.45) => 20.1(20.1.0.00.13)
WebリスナーPL/SQLゲートウェイ

インストールについては、過去のバージョンとなりますが、以下の記事が参考になるかと思います。

Oracle APEXの概要、非CDB環境インストール
Oracle APEXのインストール(Oracle Application Express)(非コンテナ環境)

CDB環境インストール
Oracle APEXのインストール(Oracle Application Express)(CDB環境)

Oracle APEX有効化と確認
Oracle APEX有効化と確認(コンテナ構成)

Oracle Database 18c XE について

Oracle Database 18c XEについては、以下にインストールの記事を記載しています。ご参考ください。
Oracle Database 18c XE インストールと制限

事前準備

バックアップについて

バックアップを取得する場合、最悪スキーマのバックアップをするだけで元に戻せますが、出来るだけRMANバックアップなどで、全体バージョンごともとに戻せるようにしてください。

Oracle APEXの最新版ダウンロード

以下のURLから最新版のダウンロード又はクラウドサービスとしての利用が可能です。表示してすぐの”無料で開始”を押したのち、少し下にある”Oracle APEX のダウンロード”ボタンからダウンロードページへ行けます。
https://apex.oracle.com/jp

上記遷移先のダウンロードページへのリンクについても記載しておきます。過去バージョンについては、Prior Release Archivesからダウンロードできます。
https://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html

Oracle APEXのセッション停止

ORDSにて構成している場合は、ORDSを停止して下さい。

リスニングポートの設定

HTTPをリスニングするポートを指定します。Oracle Database 18c XEでは、デフォルトでEM Express用にCDB$ROOTにて、5500番が使用されています。
ここでは例として対象PDBのOracle APEXが5501番で稼働している状態を想定しています。

$ export ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE
$ export ORACLE_SID=XE
$ export PATH=$ORACLE_HOME/bin:$PATH
$ sqlplus / as sysdba
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 XEPDB1                         READ WRITE NO

SQL> alter session set container = XEPDB1;
SQL> select DBMS_XDB_CONFIG.GETHTTPPORT FROM DUAL;

GETHTTPPORT
-----------
          0
SQL> SELECT DBMS_XDB_CONFIG.GETHTTPSPORT FROM DUAL;

GETHTTPSPORT
------------
        5501
SQL> EXEC DBMS_XDB_CONFIG.SETHTTPSPORT(0);
SQL> SELECT DBMS_XDB_CONFIG.GETHTTPSPORT FROM DUAL;

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

PDBの再起動

Oracle APEXの全セッションを切断する為、念のためPDBの再起動を行います。

SQL> alter session set container = XEPDB1;
SQL> shutdown immediate
SQL> startup

バイナリの展開とアップグレード

ダウンロードしたapex_20.1.zipを展開し、アップグレードします。 アップグレード後のバイナリは、対象バージョンのAPEXのINTERNALユーザの初期化等に使う為、残しておくのがよいかと思います。ここではproduct配下にバージョン別で管理するように展開します。

# sudo mkdir /opt/oracle/product/apex_20_1
# sudo chown oracle:oinstall /opt/oracle/product/apex_20_1
# sudo mv -i apex_20.1.zip /opt/oracle/product/apex_20_1
# sudo chown oracle:oinstall /opt/oracle/product/apex_20_1/apex_20.1.zip
# sudo su - oracle
$ cd /opt/oracle/product/apex_20_1
$ ls -l apex_20.1.zip
$ unzip apex_20.1.zip
$ cd apex
$ export ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE
$ export ORACLE_SID=XE
$ export PATH=$ORACLE_HOME/bin:$PATH
$ sqlplus / as sysdba
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 XEPDB1                         READ WRITE NO

SQL> alter session set container = XEPDB1;
SQL> -- 表領域については変更可能です。アプリケーションのメタデータ、ユーザーデータ等が入ります。SYSTEM表領域は避けてください。
SQL> @apexins.sql USERS USERS TEMP /i/

-- 以下のようなメッセージが出てきたらインストール成功です。
Thank you for installing Oracle Application Express 20.1.0.00.13

Oracle Application Express is installed in the APEX_200100 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)

..中略..
...null1.sql
SQL>

Oracle APEXのWebリスナー構成

埋込みPL/SQLゲートウェイ構成

埋込みPL/SQLゲートウェイを構成します。ここの作業で画像などのファイルが20.1用に更新されます。 ORDSの場合は、ORDS側の画像の入れ替えを行います。

SQL> -- 一度再接続します。
SQL> exit
$ sqlplus / as sysdba
SQL> alter session set container = XEPDB1;
SQL> -- apex_epg_config.sql構成スクリプトを実行します。
SQL> @apex_epg_config.sql /home/oracle

Oracle APEXの日本語化

日本語追加済みの環境の場合は、言語のアップデートを行います。 NLS_LANG=Japanese_Japan.AL32UTF8を設定しないとエラーとなる点に注意してください。

$ cd /opt/oracle/product/apex_20_1/apex/builder/ja/
$ export NLS_LANG=Japanese_Japan.AL32UTF8
$ sqlplus / as sysdba
SQL> -- 【注意】必ずNLS_LANG=Japanese_Japan.AL32UTF8を設定してから実行
SQL> alter session set container = XEPDB1;
SQL> alter session set current_schema = APEX_200100;
SQL> @load_ja.sql

Oracle APEX 接続設定

リスニングポートの設定

最後にリスニングポートを戻し、接続を許可します。
ここでは例としてPDBにアップグレード前と同じ5501番を設定しています。

SQL> alter session set container = XEPDB1;
SQL> SELECT DBMS_XDB_CONFIG.GETHTTPSPORT FROM DUAL;

GETHTTPSPORT
------------
           0
SQL> EXEC DBMS_XDB_CONFIG.SETHTTPSPORT(5501);
SQL> SELECT DBMS_XDB_CONFIG.GETHTTPSPORT FROM DUAL;

GETHTTPSPORT
------------
        5501

リスナーの確認

HTTPをリスニングしているか確認します。即時反映したい場合は、リスナーの再起動後、PDBの再起動を行ってください。

$ 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番がリスニングされていることを確認してください。

既存のアプリケーションについて

テーマのリフレッシュ

基本的に既存のアプリケーションは問題なく使えるはずです。但し、新しいテンプレートなどは使えないようになっているかと思います。 5.0以上からのアップグレードの場合、基本的に「Universal Theme」を利用しているかと思いますので、以下を実行すると新しい機能が使えます。 「共有コンポーネント」 > 「テーマ」 > 「Universal Theme – 42」 > 「テーマのリフレッシュ」 アプリケーションのインポート時と同様ですが、「テーマのリフレッシュ」に関係なく、新しいバージョンからエクスポートしたアプリケーションは古いバージョンへインポートできない点には注意してください。

独自カスタマイズについて

JQuery(Javascript)やCSS等を独自で組み込んでいる場合、JQueryのバージョンアップなどに伴い動作するかの確認が必要となります。