2022年11月29日火曜日

Oracle APEXの環境作成(12) - パッチの適用

 Oracle APEXの最新の修正は、My Oracle Supportよりダウンロードすることができます。

https://www.oracle.com/tools/downloads/apex-downloads.html

Patch Set Bundleのリンクをクリックすると、My Oracle Supportのパッチ詳細のページへリダイレクトされます。パッチをダウンロードするには、登録されているアカウントによるサインインが必要です。

2022年11月29日時点でダウンロードできたファイルはp34628174_2220_Generic.zipでした。このパッチをAPEX 22.2の環境に適用します。


現行の確認


管理サービスもしくは開発環境にサインインし、ヘルプ情報を開きます。

詳細製品のバージョン番号を確認します。


最初のスクリーンショットの画面に以下の記述があります。最新のパッチを適用すると製品のバージョンは22.2.1に変わります。現状は22.2.0なので、パッチは未適用であることがわかります。
The Patch Set Bundle was last updated on November 28, 2022 and its PATCH_VERSION is 1. When this patch is applied, the APEX product version will be updated to 22.2.1.
Oracle APEXが実行されているデータベース・サーバーからインターネットへの接続ができるようになっていると、開発環境のトップ画面にパッチが利用可能であることが表示されます。


インスタンス・パラメータIMAGE_PREFIXの値も確認します。データベースにSYSで接続し、以下を実行します。

exec dbms_output.put_line(apex_instance_admin.get_parameter('IMAGE_PREFIX'));




[oracle@apex ~]$ sqlplus sys/oracle@localhost/xepdb1 as sysdba


SQL*Plus: Release 21.0.0.0.0 - Production on Tue Nov 29 10:07:06 2022

Version 21.3.0.0.0


Copyright (c) 1982, 2021, Oracle.  All rights reserved.



Connected to:

Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production

Version 21.3.0.0.0


SQL> set serveroutput on

SQL> exec dbms_output.put_line(apex_instance_admin.get_parameter('IMAGE_PREFIX'));

/i/22.2.0/


PL/SQL procedure successfully completed.


SQL> 


APEXの静的ファイルの位置として、ローカルのファイルシステムを指している場合(/i/22.2.0/)と、CDN(https://static.oracle.com/cdn/apex/22.2.0/)を指している場合でパッチの適用作業は変わります。


パッチの適用


パッチの適用方法は、パッチを解凍したディレクトリに含まれるREADME.txtに記載されています。パッチごとに手順が違う場合もあり得るので、README.txtは必ず確認します。

ユーザーoracleにて作業を行います。パッチのファイルは/home/oracle以下にアップロードしておきます。

最初にパッチ・ファイルp34628174_2220_Generic.zipunzipコマンドで解凍します。zipファイルが解凍されて、ディレクトリ34628174が作成されます。

[oracle@apex ~]$ unzip p34628174_2220_Generic.zip 

Archive:  p34628174_2220_Generic.zip

  inflating: 34628174/wwv_flow_approval.plb  

  inflating: 34628174/wwv_flow_authentication.plb  

  inflating: 34628174/wwv_flow_data_parser.plb  

  inflating: 34628174/wwv_flow_developer_toolbar.plb  

  inflating: 34628174/wwv_flow_imp_shared.plb  

  inflating: 34628174/wwv_flow_interactive_grid.plb  


[中略]


  inflating: 34628174/images/apex_ui/css/DevTools.min.css  

  inflating: 34628174/images/apex_ui/css/Theme-Standard.min.css  

  inflating: 34628174/images/apex_ui/css/Theme-Dark.min.css  

  inflating: 34628174/images/apex_ui/css/Theme-Dark.css  

[oracle@apex ~]$ ls

34628174  apex  i  META-INF  p34628174_2220_Generic.zip

[oracle@apex ~]$ 

作成されたディレクトリ34628174へ移動します。環境変数NLS_LANGおよびその他の環境変数を設定します。

[oracle@apex ~]$ cd 34628174/

[oracle@apex 34628174]$ . oraenv

ORACLE_SID = [oracle] ? XE

The Oracle base has been set to /opt/oracle

[oracle@apex 34628174]$ export NLS_LANG=American_America.AL32UTF8

[oracle@apex 34628174]$ 

パッチの適用前にOracle REST Data Servicesを停止します。systemctl stop ordsを実行します。

[oracle@apex 34628174]$ systemctl stop ords

==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====

Authentication is required to stop 'ords.service'.

Authenticating as: root

Password: ********

==== AUTHENTICATION COMPLETE ====

[oracle@apex 34628174]$ 


APEXがインストールされているPDBにSYSで接続し、catpatch.sqlを実行します。

[oracle@apex 34628174]$ sqlplus sys/********@localhost/xepdb1 as sysdba


SQL*Plus: Release 21.0.0.0.0 - Production on Tue Nov 29 10:30:05 2022

Version 21.3.0.0.0


Copyright (c) 1982, 2021, Oracle.  All rights reserved.



Connected to:

Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production

Version 21.3.0.0.0


SQL> @catpatch.sql


. ORACLE

.

. Oracle APEX 22.2.%

. Patch Set Exception 34628174

........................................


APEX_VERSION

------------------------------

APEX_SCHEMA

--------------------------------------------------------------------------------

22.2.0

APEX_220200




PL/SQL procedure successfully completed.



Session altered.



APEX_SCHEMA

--------------------------------------------------------------------------------

APEX_220200



PL/SQL procedure successfully completed.


... Disabling Jobs


[中略]


PL/SQL procedure successfully completed.


... Enabling Jobs


PL/SQL procedure successfully completed.


...Validating APEX

...(10:30:20) Starting validate_apex for APEX_220200

...(10:30:21) Checking missing sys privileges

...(10:30:21) Re-generating APEX_220200.wwv_flow_db_version

... wwv_flow_db_version is up to date

...(10:30:21) Checking invalid public synonyms

...(10:30:21) Key object existence check

...(10:30:21) Setting DBMS Registry for APEX to valid

...(10:30:21) Exiting validate_apex


PL/SQL procedure successfully completed.


...Recompiling invalid public synonyms


PL/SQL procedure successfully completed.



PL/SQL procedure successfully completed.


timing for: Complete Patch 34628174

Elapsed: 00:00:12.00

Disconnected from Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production

Version 21.3.0.0.0

[oracle@apex 34628174]$ 


catpatch.sqlによるパッチ適用開始初期に適用前の状況が画面に出力されます。catpatch.sqlが終了する前に、インストールの検証(Validating APEX)が実行されます。

再度、データベースに接続しパッチの適用状況を確認します。

select patch_number, patch_version, installed_on from apex_patches order by installed_on;

SQL> select patch_number, patch_version, installed_on from apex_patches order by installed_on;


PATCH_NUMBER PATCH_VERSION     INSTALLED_ON

------------ ------------------------------ -------------------

    34628174 1     2022-11-29 10:30:21


SQL> 


問題がなければcatpatch.sqlの実行は完了です。

ローカルのファイルシステムに静的ファイルが配置されている場合は、パッチに含まれているファイルに置き換えます。

imagesの下にあるファイルをIMAGE_PREFIXとなっているディレクトリに上書きします。

cp -r -p images/* /home/oracle/i/22.2.0/

[oracle@apex 34628174]$ cp -r -p images/* /home/oracle/i/22.2.0/

[oracle@apex 34628174]$ 


CDNを参照している場合は、ダウンロードのページに記載のあるように変更は不要です。
For APEX product versions 22.2.0 and 22.2.1 use https://static.oracle.com/cdn/apex/22.2.0/. The CDN contains the production APEX 22.2 static resources and the updated static resources included in PATCH_VERSION 1.

変更が必要な場合は、APEX_INSTANCE_ADMIN.SET_PARAMETERを実行しIMAPGE_PREFIXを更新します。

以上でパッチ適用が完了しました。Oracle REST Data Servicesを起動します。

systemctl start ords

[oracle@apex 34628174]$ systemctl start ords

==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====

Authentication is required to start 'ords.service'.

Authenticating as: root

Password: 

==== AUTHENTICATION COMPLETE ====

[oracle@apex 34628174]$ 

 最初に確認したヘルプの情報の製品のバージョン情報も22.2.1へ更新されます。