2025年4月23日水曜日

Oracle Cloudのコンピュート・インスタンス上でOracle APEXの環境を構築する

更新:2026年2月19日

先日テスト環境を作成する必要があり、Oracle Cloudのコンピュート・インスタンスを作成して、その上にOracle APEXの環境を作成しました。一番手順が少なく確実な方法として、Oracle AI Database 26ai FreeとOracle REST Data Servicesを共に、コンテナとして実行します。

コンテナの作成および実行にはpodmanを使います。

作成するコンピュート・インスタンスは、シェイプはVM.Standard.E6.FlexのOCPU数が1、メモリー11GB、ブロック・ボリュームのサイズを100GBとします。OSにはOracle Linux 9を選択します。

OCIの見積りページで月次見積りを計算したところ、月次の大体の費用は7千円弱くらいのようです。あくまで特定の時期に見積もりツールを実行した結果なので、費用についてはご自身で確認するようにしてください。


Oracle Databaseを含むソフトウェアについてはすべて無料のものを使用するため、ソフトウェアに関する費用は発生しません。

以下より作業手順を紹介します。

Oracle Cloudのコンソールよりインスタンスを開きます。

インスタンスの作成をクリックします。


作成するコンピュート・インスタンスの名前apextestとしました。コンパートメントに作成に、コンピュート・インスタンスを作成するコンパートメントを指定します。それ以外はデフォルトから変更していません。


イメージとして、Oracle Linux 9のイメージ・ビルド2026.01.29-0を選択しています。


シェイプとしてVM.Standard.E6.Flexを選択し、OCPUの数1メモリー量(GB)11としています。


のページに移動します。


セキュリティの保護インスタンスの設定はせず、へ進みます。


ネットワーキングについては、コンピュート・インスタンスを作成するコンパートメントにすでに作成されている前提で作業を進めます。

プライマリ・ネットワーク既存の仮想クラウド・ネットワークを選択を選択し、利用できる仮想クラウド・ネットワークコンパートメント仮想クラウド・ネットワークを選択します。

サブネットも同様に既存のサブネットを選択を選択し、利用できるサブネットコンパートメントサブネットを選択します。


プライマリVNIC IPアドレスプライベートIPv4アドレスの割当てとして、プライベートIPv4アドレスの自動割当てを選択します。

パブリックIPv4アドレスの自動割当てオンにします。

IPv6アドレスオフになっています。VCNとサブネットでIPv6アドレス指定が有効になっていないため有効にできないようです。IPv6は使用しないので、この設定自体は問題ありませんが、作成したコンピュート・インスタンス上でOracle AI Datababase 26ai Freeのコンテナを実行するにあたって、IPv6を無効にする必要がありました。


SSHキーの追加キー・ペアを自動で生成を選択し、秘密キーのダウンロードをクリックします。秘密キーのファイルがファイル名ssh-key-YYYY-MM-DD.keyの形式でダウンロードされます。

へ進みます。


ブート・ボリュームカスタム・ブート・ボリューム・サイズを指定しますオンにし、ブート・ボリューム・サイズ(GB)100を指定します。

へ進みます。


これまで設定した基本情報を確認して、作成をクリックします。


コンピュート・インスタンスのプロビジョニングが開始します。


インスタンスのプロビジョニングは、すぐに(今回は1分以内)完了します。

インスタンスをクリックして、作成済みのコンピュート・インスタンスの一覧画面に戻ります。


作成したコンピュート・インスタンスapextestパブリックIPを確認します。このIPアドレスが、これからの作業を行う際に使用する、sshやブラウザでの接続先になります。


コンピュート・インスタンスが作成できたので、sshで接続して構成作業を行います。

ダウンロードした秘密キーのファイルとIPアドレスを指定して、作成したコンピュート・インスタンスにサインインします。ユーザーはopcです。

以下はsshを使用した接続例です。

ssh -i ssh-key-YYYY-MM-DD.key opc@[パブリックIPアドレス]

% ssh -i ssh-key-2026-02-19.key opc@158.***.***.26

The authenticity of host '158.***.***.26 (158.***.***.26)' can't be established.

ED25519 key fingerprint is: SHA256:eZJgi0zY6O01wpgADEb3cVpKppvz8Fs7X06LDSr4s7k

This key is not known by any other names.

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Warning: Permanently added '158.***.***.26' (ED25519) to the list of known hosts.

** WARNING: connection is not using a post-quantum key exchange algorithm.

** This session may be vulnerable to "store now, decrypt later" attacks.

** The server may need to be upgraded. See https://openssh.com/pq.html

[opc@apextest ~]$ 


Oracle Linuxのイメージではブート・ボリュームを拡張しても、自動的にはルート・ファイルシステムは拡張されないようです。oci-growfsを実行してルート・ファイルシステムを拡張します。

現状のファイルシステムのサイズを確認します。ルート・ファイルシステムのサイズは30GBです。

df -h /

[opc@apextest ~]$ df -h /

Filesystem                  Size  Used Avail Use% Mounted on

/dev/mapper/ocivolume-root   30G  8.6G   21G  30% /

[opc@apextest ~]$


ルート・ファイルシステムを拡張します。

sudo /usr/libexec/oci-growfs -y

[opc@apextest ~]$ sudo /usr/libexec/oci-growfs -y

Volume Group: ocivolume

Volume Path: /dev/ocivolume/root

Mountpoint Data     

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

          mountpoint: /

              source: /dev/mapper/ocivolume-root

     filesystem type: xfs

         source size: 29.4G

                type: lvm

                size: 29.5G

    physical devices: ['/dev/sda3']

    physical volumes: ['/dev/sda', '/dev/sda']

    partition number: ['3']

   volume group name: ocivolume

   volume group path: /dev/ocivolume/root


Partition dry run expansion "/dev/sda3" succeeded.

CHANGE: partition=3 start=4401152 old: size=93325312 end=97726463 new: size=205314015 end=209715166


Expanding partition /dev/sda3: Confirm?  Partition expand expansion "/dev/sda3" succeeded.

update-partition set to true

FLOCK: try exec open fd 9, on failure exec exits this program

FLOCK: /dev/sda: obtained exclusive lock

resizing 3 on /dev/sda using resize_sfdisk_gpt

209715200 sectors of 512. total size=107374182400 bytes

## sfdisk --unit=S --dump /dev/sda

label: gpt

label-id: 1AFFC82D-1DC2-4FA6-9A26-A942CF1C0298

device: /dev/sda

unit: sectors

first-lba: 34

last-lba: 97727250

sector-size: 512


/dev/sda1 : start=        2048, size=      204800, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=3104EAF1-9D91-457F-8116-32FB7DFB0CBA, name="EFI System Partition"

/dev/sda2 : start=      206848, size=     4194304, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=4940139E-4ECC-4D67-BFD3-AFF5FB5CEA80

/dev/sda3 : start=     4401152, size=    93325312, type=E6D6D379-F507-44C2-A23C-238F2A3DF928, uuid=AC33A4AD-AD63-4DB5-A0DB-09B6733FD659

padding 33 sectors for gpt secondary header

max_end=209715166 tot=209715200 pt_end=97726463 pt_start=4401152 pt_size=93325312

resize of /dev/sda returned 0.

FLOCK: /dev/sda: releasing exclusive lock


CHANGED: partition=3 start=4401152 old: size=93325312 end=97726463 new: size=205314015 end=209715166


Extending /dev/sda3 succeeded.

Device /dev/sda3 extended successfully.

Logical volume /dev/ocivolume/root extended successfully.

[opc@apextest ~]$


拡張後のサイズを確認します。ルート・ファイルシステムのサイズが83GBまで拡張しています。

df -h /

[opc@apextest ~]$ df -h /

Filesystem                  Size  Used Avail Use% Mounted on

/dev/mapper/ocivolume-root   83G  9.0G   74G  11% /

[opc@apextest ~]$


OSを最新までアップデートします。

sudo dnf -y update

[opc@apextest ~]$ sudo dnf -y update

Ksplice for Oracle Linux 9 (x86_64)              41 MB/s |  17 MB     00:00    

Oracle Linux 9 OCI Included Packages (x86_64)    31 MB/s | 209 MB     00:06    

Oracle Linux 9 BaseOS Latest (x86_64)            51 MB/s | 110 MB     00:02    

Oracle Linux 9 Application Stream Packages (x86  51 MB/s |  83 MB     00:01    

Oracle Linux 9 Addons (x86_64)                  6.3 MB/s | 830 kB     00:00    

Oracle Linux 9 UEK Release 8 (x86_64)            44 MB/s |  28 MB     00:00    

Dependencies resolved.

================================================================================

 Package                Arch   Version                  Repository         Size

================================================================================

Installing:

 kernel                 x86_64 5.14.0-611.34.1.el9_7    ol9_baseos_latest 1.1 M

 kernel-core            x86_64 5.14.0-611.34.1.el9_7    ol9_baseos_latest  17 M

 kernel-devel           x86_64 5.14.0-611.34.1.el9_7    ol9_appstream      34 M

 kernel-modules         x86_64 5.14.0-611.34.1.el9_7    ol9_baseos_latest  41 M


[中略]


  kernel-uek-modules-core-6.12.0-107.59.3.4.el9uek.x86_64                       

  kernel-uek-modules-desktop-6.12.0-107.59.3.4.el9uek.x86_64                    

  kernel-uek-modules-extra-netfilter-6.12.0-107.59.3.4.el9uek.x86_64            

  kernel-uek-modules-usb-6.12.0-107.59.3.4.el9uek.x86_64                        

  kernel-uek-modules-wireless-6.12.0-107.59.3.4.el9uek.x86_64                   


Complete!

[opc@apextest ~]$ 


podmanを含むパッケージcontainer-toolsをインストールします。Oracle Linux以外のRHEL互換ディストリビューションではunzipが含まれていないことが多いので、unzipもインストールする対象に含めておきます。

sudo dnf -y install container-tools unzip

[opc@apextest ~]$ sudo dnf -y install container-tools unzip

Last metadata expiration check: 0:05:14 ago on Thu 19 Feb 2026 02:51:56 AM GMT.

Package unzip-6.0-59.0.1.el9.x86_64 is already installed.

Dependencies resolved.

================================================================================

 Package             Arch   Version                     Repository         Size

================================================================================

Installing:

 container-tools     noarch 1-14.0.1.el9                ol9_appstream     7.3 k

Installing dependencies:

 aardvark-dns        x86_64 2:1.16.0-1.el9              ol9_appstream     874 k

 buildah             x86_64 2:1.41.8-1.0.1.el9_7        ol9_appstream      10 M

 cockpit-podman      noarch 111-1.el9                   ol9_appstream     620 k

 conmon              x86_64 3:2.1.13-1.el9              ol9_appstream      55 k


[中略]


  skopeo-2:1.20.0-2.el9_7.x86_64                                                

  slirp4netns-1.3.3-1.el9.x86_64                                                

  udica-0.2.8-2.el9.noarch                                                      

  yajl-2.1.0-25.el9.x86_64                                                      


Complete!

[opc@apextest ~]$ 


firewalldの設定を行います。

Oracle Linux 9のイメージはfirewalldがあらかじめインストールされていて、デフォルトで起動します。そうでない場合は、以下のコマンドを実行し、firewalldのインストールや有効化を行う必要があります。

sudo dnf -y install firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld

firewalldに以下の設定を追加します。

ポート8080(HTTP)、8443(HTTPS)、1521(SQL*Net)に接続許可を与えます。また、ポート80(HTTPの標準ポート)への接続を8080へ、ポート443(HTTPSの標準ポート)をポート8443へ転送する設定を行います。

sudo firewall-cmd --add-port=8080/tcp
sudo firewall-cmd --add-port=8443/tcp
sudo firewall-cmd --add-port=27017/tcp
sudo firewall-cmd --add-port=1521/tcp
sudo firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
sudo firewall-cmd --add-forward-port=port=443:proto=tcp:toport=8443
sudo firewall-cmd --runtime-to-permanent
sudo firewall-cmd --list-all

[opc@apextest ~]$ sudo firewall-cmd --add-port=8080/tcp

sudo firewall-cmd --add-port=8443/tcp

sudo firewall-cmd --add-port=27017/tcp

sudo firewall-cmd --add-port=1521/tcp

sudo firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080

sudo firewall-cmd --add-forward-port=port=443:proto=tcp:toport=8443

sudo firewall-cmd --runtime-to-permanent

sudo firewall-cmd --list-all

success

success

success

success

success

success

success

public (active)

  target: default

  icmp-block-inversion: no

  interfaces: enp0s5

  sources: 

  services: dhcpv6-client ssh

  ports: 8080/tcp 8443/tcp 27017/tcp 1521/tcp

  protocols: 

  forward: yes

  masquerade: no

  forward-ports: 

port=80:proto=tcp:toport=8080:toaddr=

port=443:proto=tcp:toport=8443:toaddr=

  source-ports: 

  icmp-blocks: 

  rich rules: 

[opc@apextest ~]$ 


ユーザーoracle、グループoinstallを作成します。

Oracle DatabaseおよびORDSは、コンテナ内でユーザーoracleとして実行されます。コンテナ内からホストのファイル・システムを参照するにあたって、参照するホスト側にあるディレクトリの所有者のUIDやGIDが、コンテナ内のユーザーoracleと一致するようにします。

sudo groupadd -g 54321 oinstall
sudo useradd -u 54321 -g 54321 oracle

[opc@apextest ~]$ sudo groupadd -g 54321 oinstall

sudo useradd -u 54321 -g 54321 oracle

[opc@apextest ~]$


ユーザーoracleがログインしていなくてもサービスが実行できるように、以下のコマンドを実行します。

sudo loginctl enable-linger 54321

[opc@apextest ~]$ sudo loginctl enable-linger 54321

[opc@apextest ~]$ 


IPv6を無効にします。/etc/sysctl.confに以下の2行を追加します。

sudo vi /etc/sysctl.conf

net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1


追加後、設定を更新します。

sudo sysctl -p /etc/sysctl.conf

[opc@apextest ~]$ sudo sysctl -p /etc/sysctl.conf

kernel.unknown_nmi_panic = 1

net.ipv6.conf.all.disable_ipv6 = 1

net.ipv6.conf.default.disable_ipv6 = 1

[opc@apextest ~]$ 


以上でOSレベルの構成は完了です。一旦、インスタンスを再起動します。

sudo shutdown -r now

[opc@apextest ~]$ sudo shutdown -r now

[opc@apextest ~]$ Connection to ***.***.***.*** closed by remote host.

Connection to ***.***.***.*** closed.


再度、インスタンスにユーザーopcで接続し、Oracle APEXの構成作業を始めます。

ユーザーoracleに切り替えて作業します。

sudo su - oracle

[opc@apextest ~]$ sudo su - oracle

[oracle@apextest ~]$


あらかじめ、Oracle AI Database 26ai Freeのコンテナ・イメージをダウンロードします。

podman pull container-registry.oracle.com/database/free:latest

[oracle@apextest ~]$ podman pull container-registry.oracle.com/database/free:latest

Trying to pull container-registry.oracle.com/database/free:latest...

Getting image source signatures

Copying blob 8b259ba4c4d9 done   | 

Copying blob 41fec24cd635 done   | 

Copying blob 2194ce8eea01 done   | 

Copying blob 3bf32880b451 done   | 

Copying blob 422548fea3d3 done   | 

Copying blob ec2d2b9967e0 done   | 

Copying blob 76262a11b33d done   | 

Copying blob 1b5d06dc2c49 done   | 

Copying blob 991ed18434dd done   | 

Copying blob f25c6654bf3b done   | 

Copying blob ea29ae69235f done   | 

Copying blob 3a95ca5b8cd0 done   | 

Copying blob d46a44facb7d done   | 

Copying blob cc817f3645bb done   | 

Copying blob 45768b398726 done   | 

Copying blob 7e9be3b296e9 done   | 

Copying blob e02d6fb066f3 done   | 

Copying blob 2d032c198665 done   | 

Copying blob 8a5b38f9ede2 done   | 

Copying blob da072ef4f3b2 done   | 

Copying blob aeed28bf05ac done   | 

Copying blob 29c59e2aad04 done   | 

Copying config 7c044a242a done   | 

Writing manifest to image destination

7c044a242a1c6b1d7f0d6bcf145a96b1dc5265d4d9610c70302ece0d067cf670

[oracle@apextest ~]$ 


Oracle REST Data Servicesのコンテナ・イメージをダウンロードします。

podman pull container-registry.oracle.com/database/ords:latest

[oracle@apextest ~]$ podman pull container-registry.oracle.com/database/ords:latest

Trying to pull container-registry.oracle.com/database/ords:latest...

Getting image source signatures

Copying blob 0c76fee24ccd done   | 

Copying blob 7199b16c8c4a done   | 

Copying blob ac06ceafe5b9 done   | 

Copying blob 2d59a8c44230 done   | 

Copying blob 4577ec524291 done   | 

Copying blob a1247073a683 done   | 

Copying blob b91daf9676e0 done   | 

Copying blob 4f4fb700ef54 done   | 

Copying config 3f853d6c8f done   | 

Writing manifest to image destination

3f853d6c8ffd32021b3154789d719170e3d5c3b61b48ac5d703281a67ba7d8fe

[oracle@apextest ~]$ 


Oracle APEXの最新のアーカイブをダウンロードします。

curl -OL https://download.oracle.com/otn_software/apex/apex-latest.zip

[oracle@apextest ~]$ curl -OL https://download.oracle.com/otn_software/apex/apex-latest.zip

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100  289M  100  289M        0  46.7M      0  0:00:06  0:00:06 --:--:-- 52.0M

[oracle@apextest ~]$ 


ダウンロードしたzipファイルを解凍します。

unzip -q apex-latest.zip
ls apex

[oracle@apextest ~]$ unzip -q apex-latest.zip 

[oracle@apextest ~]$ ls apex

apexins1.sql                apxdevrm.sql        apxrtins.sql

apexins2.sql                apxdvins_cdb.sql    apxsilentins.sql

apexins3.sql                apxdvins_nocdb.sql  builder

apexins_adb_ext.sql         apxdvins.sql        core

apexins_adb.sql             apxdwngrd.sql       coreins2.sql

apexins_cdb.sql             apxpatch_cdb.sql    coreins3.sql

apexins_nocdb.sql           apxpatch_nocdb.sql  coreins4.sql

apexins.sql                 apxpatch.sql        coreins5.sql

apex_rest_config_cdb.sql    apxremov1.sql       coreins.sql

apex_rest_config_core.sql   apxremov2.sql       dbcsconf.sql

apex_rest_config_nocdb.sql  apxremov_cdb.sql    dbcsins.sql

apex_rest_config.sql        apxremov_nocdb.sql  devins.sql

appins.sql                  apxremov.sql        images

apxappcon_ext.sql           apxrtins1.sql       LICENSE.txt

apxappcon.sql               apxrtins2.sql       load_trans.sql

apxchpwd.sql                apxrtins3.sql       utilities

apxdevrm_cdb.sql            apxrtins_cdb.sql

apxdevrm_nocdb.sql          apxrtins_nocdb.sql

[oracle@apextest ~]$ 


これから作成するデータベースのパスワードを環境変数ORASYSPWDに設定します。データベースとORDSのコンテナに設定する環境変数ORACLE_PWDの値として使用します。

export ORASYSPWD=[SYSのパスワード]

[oracle@apextest ~]$ export ORASYSPWD=*********

[oracle@apextest ~]$ 


データベースのデータファイルを配置するディレクトリoradataを、/home/oracle以下に作成します。

mkdir oradata

[oracle@apextest ~]$ mkdir oradata

[oracle@apextest ~]$ 


ORDSの構成情報を保存するフォルダords_configを、/home/oracle以下に作成します。

mkdir ords_config

[oracle@apextest ~]$ mkdir ords_config

[oracle@apextest ~]$ 


データベースとORDSを含むポッドとしてapexを作成します。

podman pod create --userns=keep-id:uid=54321,gid=54321 -p 1521:1521 -p 8080:8080 -p 8443:8443 -p 27017:27017 --name apex

[oracle@apextest ~]$ podman pod create --userns=keep-id:uid=54321,gid=54321 -p 1521:1521 -p 8080:8080 -p 8443:8443 -p 27017:27017 --name apex

02dce96a4679a6fec635b11f35a2416ccc7bab2f70a99958872ae92b72da0667

[oracle@apextest ~]$ 


ポッドapex内にOracle AI Database 26ai Freeのコンテナを作成します。名前はapex-dbとします。

podman run -d --pod apex --name apex-db --privileged -e ORACLE_PWD=$ORASYSPWD -v /home/oracle/oradata:/opt/oracle/oradata -v /home/oracle/apex:/home/oracle/apex container-registry.oracle.com/database/free:latest

[oracle@apextest ~]$ podman run -d --pod apex --name apex-db --privileged -e ORACLE_PWD=$ORASYSPWD -v /home/oracle/oradata:/opt/oracle/oradata -v /home/oracle/apex:/home/oracle/apex container-registry.oracle.com/database/free:latest

1b966c67e8595b63c7bf82f6426f18fdb617ac730abf273a8cbb4889687ac81f

[oracle@apextest ~]$ 


コンテナapex-dbの作成過程のログを確認します。

podman logs -f apex-db

DATABASE IS READY TO USE!と表示されたら、コンテナの準備は完了です。Ctrl+Cを入力して、ログの確認を終了します。

[oracle@apextest ~]$ podman logs -f apex-db

Specify a password to be used for database accounts. Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9]. Note that the same password will be used for SYS, SYSTEM and PDBADMIN accounts:

Confirm the password:

Configuring Oracle Listener.

Listener configuration succeeded.

Configuring Oracle AI Database FREE.

Enter SYS user password: 

******************

Enter SYSTEM user password: 

******************

Enter PDBADMIN User Password: 

******************

Prepare for db operation

7% complete

Copying database files

29% complete

Creating and starting Oracle instance

30% complete

33% complete

36% complete

39% complete

43% complete

Completing Database Creation

47% complete

49% complete

50% complete

Creating Pluggable Databases

54% complete

71% complete

Executing Post Configuration Actions

93% complete

Running Custom Scripts

100% complete

Database creation complete. For details check the logfiles at:

 /opt/oracle/cfgtoollogs/dbca/FREE.

Database Information:

Global Database Name:FREE

System Identifier(SID):FREE

Look at the log file "/opt/oracle/cfgtoollogs/dbca/FREE/FREE.log" for further details.


Connect to Oracle AI Database using one of the connect strings:

     Pluggable database: apex/FREEPDB1

     Multitenant container database: apex


SQL*Plus: Release 23.26.1.0.0 - Production on Thu Feb 19 03:21:48 2026

Version 23.26.1.0.0


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



Connected to:

Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free

Version 23.26.1.0.0


SQL> 

System altered.


SQL> 

Pluggable database altered.


SQL> 

PL/SQL procedure successfully completed.


SQL> SQL> 

Session altered.


SQL> 

User created.


SQL> 

Grant succeeded.


SQL> 

Grant succeeded.


SQL> 

Grant succeeded.


SQL> 

User altered.


SQL> SQL> Disconnected from Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free

Version 23.26.1.0.0


SQL*Plus: Release 23.26.1.0.0 - Production on Thu Feb 19 03:21:48 2026

Version 23.26.1.0.0


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



Connected to:

Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free

Version 23.26.1.0.0


SQL> Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> ORACLE instance started.


Total System Global Area 1603375136 bytes

Fixed Size     5009440 bytes

Variable Size   402653184 bytes

Database Buffers 1191182336 bytes

Redo Buffers     4530176 bytes

Database mounted.

SQL> 

Database altered.


SQL> 

Database altered.


SQL> 

Database altered.


SQL> SQL> Disconnected from Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free

Version 23.26.1.0.0

The Oracle base remains unchanged with value /opt/oracle


Executing user defined scripts

/opt/oracle/runUserScripts.sh: running /opt/oracle/scripts/extensions/setup/registerService.sh


DONE: Executing user defined scripts


The Oracle base remains unchanged with value /opt/oracle

#########################

DATABASE IS READY TO USE!

#########################

The following output is now a tail of the alert.log:

replication_dependency_tracking turned off (no async multimaster replication found)

Opening with Resource Manager plan: DEFAULT_CDB_PLAN 

CLID: P

PDB$SEED(2):Autotune of undo retention is turned on. 

PDB$SEED(2):Opening pdb with Resource Manager plan: DEFAULT_PLAN

FREEPDB1(3):Autotune of undo retention is turned on. 

2026-02-19T03:21:57.594039+00:00

FREEPDB1(3):Opening pdb with Resource Manager plan: DEFAULT_PLAN

Completed: Pluggable database FREEPDB1 opened read write 

Completed: ALTER DATABASE OPEN

2026-02-19T03:21:59.073460+00:00

===========================================================

Dumping current patch information

===========================================================

No patches have been applied

===========================================================

2026-02-19T03:21:59.334046+00:00

FREEPDB1(3):Resize operation completed for file# 13, fname /opt/oracle/oradata/FREE/FREEPDB1/sysaux01.dbf, old size 409600K, new size 419840K

^C[oracle@apextest ~]$ 


ORDSのコンテナを作成します。

データベースにORDSのメタデータがインストールされていないと、初回接続時にメタデータのインストールを実施します。また、APEXのメディアが解凍されているディレクトリ/home/oracle/apexが/opt/oracle/apexにマウントされていると、データベースへのAPEXのインストールが実施されます。

podman run -d --pod apex --name apex-ords --privileged -e DBHOST=localhost -e DBPORT=1521 -e DBSERVICENAME=freepdb1 -e ORACLE_PWD=$ORASYSPWD -v /home/oracle/ords_config:/etc/ords/config -v /home/oracle/apex:/opt/oracle/apex container-registry.oracle.com/database/ords:latest

[oracle@apextest ~]$ podman run -d --pod apex --name apex-ords --privileged -e DBHOST=localhost -e DBPORT=1521 -e DBSERVICENAME=freepdb1 -e ORACLE_PWD=$ORASYSPWD -v /home/oracle/ords_config:/etc/ords/config -v /home/oracle/apex:/opt/oracle/apex container-registry.oracle.com/database/ords:latest

3720aff8d04883b63b40fd837a2e64b2dc97be8804be9d43dbf5a615557c0fab

[oracle@apextest ~]$ 


ログを表示し、ORDSの起動状況を確認します。

podman logs -f apex-ords

APEXのインストールには少々時間がかかります。INFO : Installing Oracle APEX on your DB, please be patient.というメッセージが出力されます。

[oracle@apextest ~]$ podman logs -f apex-ords

Testing database connection...

INFO : Attempt 1: Connecting to sys/*****@localhost:1521/freepdb1 as sysdba...

INFO : Database connection successful.

INFO : The Oracle REST Data Services are not installed on your database.

INFO : Installing The Oracle REST Data Services 25.4.0.

INFO : The ORACLE_USER_PWD variable was not supplied.

       A temporary password was generated for ORACLE_USER_PWD.

       Execute this command to get the generated password:

       docker exec <ORDS_container_name> ords config get --secret db.password

INFO : The Oracle REST Data Services 25.4.0 has been installed correctly on your database.

INFO : The container found Oracle APEX version 24.2.0 in the mounted volume.

INFO : Installing Oracle APEX on your DB, please be patient.

INFO : The APEX_PWD variable was not supplied.

       A new password must be set to complete the configuration.

       To do this, connect as SYS with SYSDBA privileges and run:

       ALTER USER APEX_PUBLIC_USER IDENTIFIED BY "<new_password>";



APEXのインストールが完了しORDSが正常に起動したら、ORDSやAPEXにアクセスできる状態になっています。

INFO : The Oracle APEX has been installed. You can create an APEX Workspace in Database Actions APEX Workspaces section.

INFO : Set plsql.gateway.mode proxied after Oracle APEX was installed.


INFO : Setup standalone.static.path /opt/oracle/apex/images.

INFO : Starting the Oracle REST Data Services instance.

2026-02-19T06:23:19Z INFO   ORDS has not detected the option '--config' and this will be set up to the default directory.


ORDS: Release 25.4 Production on Thu Feb 19 06:23:21 2026


Copyright (c) 2010, 2026, Oracle.


Configuration:

  /etc/ords/config


2026-02-19T06:23:22.364Z INFO        HTTP and HTTP/2 cleartext listening on host: 0.0.0.0 port: 8080

2026-02-19T06:23:22.413Z INFO        Disabling document root because the specified folder does not exist: /etc/ords/config/global/doc_root

2026-02-19T06:23:22.421Z INFO        Default forwarding from / to contextRoot configured.

2026-02-19T06:23:22.532Z SEVERE      ORAMLVERSION null

2026-02-19T06:23:22.539Z INFO        Oracle API for MongoDB listening on port: 27017

2026-02-19T06:23:22.539Z INFO        The Oracle API for MongoDB connection string is: 

         mongodb://[{user}:{password}@]localhost:27017/{user}?authMechanism=PLAIN&authSource=$external&ssl=true&retryWrites=false&loadBalanced=true

2026-02-19T06:23:25.892Z INFO        Configuration properties for: |default|lo|

db.connectionType=basic

db.hostname=localhost

db.port=1521

db.servicename=freepdb1

db.username=ORDS_PUBLIC_USER

feature.sdw=true

plsql.gateway.mode=proxied

restEnabledSql.active=true

security.requestValidationFunction=ords_util.authorize_plsql_gateway

database.api.enabled=true

mongo.enabled=true

standalone.access.log=/tmp/ords_access_logs/

standalone.static.path=/opt/oracle/apex/images

file.encoding=ANSI_X3.4-1968

file.separator=/

java.awt.headless=true

java.class.path=/opt/oracle/ords/ords.war

java.class.version=61.0

java.home=/opt/graalvm-ee-java17

java.io.tmpdir=/tmp

java.library.path=/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib

java.runtime.name=Java(TM) SE Runtime Environment

java.runtime.version=17.0.11+7-LTS-jvmci-21.3-b51

java.specification.name=Java Platform API Specification

java.specification.vendor=Oracle Corporation

java.specification.version=17

java.vendor=Oracle Corporation

java.vendor.url=https://java.oracle.com/

java.vendor.url.bug=https://bugreport.java.com/bugreport/

java.vendor.version=GraalVM EE 21.3.10

java.version=17.0.11

java.version.date=2024-04-16

java.vm.compressedOopsMode=Zero based

java.vm.info=mixed mode, sharing

java.vm.name=Java HotSpot(TM) 64-Bit Server VM

java.vm.specification.name=Java Virtual Machine Specification

java.vm.specification.vendor=Oracle Corporation

java.vm.specification.version=17

java.vm.vendor=Oracle Corporation

java.vm.version=17.0.11+7-LTS-jvmci-21.3-b51

jdk.debug=release

jdk.internal.vm.ci.enabled=true

line.separator=


native.encoding=ANSI_X3.4-1968

oracle.dbtools.cmdline.ShellCommand=ords

oracle.dbtools.cmdline.home=/opt/oracle/ords

oracle.dbtools.launcher.executable.jar.path=/opt/oracle/ords/ords.war

os.arch=amd64

os.name=Linux

os.version=6.12.0-107.59.3.4.el9uek.x86_64

path.separator=:

sun.arch.data.model=64

sun.boot.library.path=/opt/graalvm-ee-java17/lib

sun.cpu.endian=little

sun.io.unicode.encoding=UnicodeLittle

sun.java.command=/opt/oracle/ords/ords.war --config /etc/ords/config serve

sun.java.launcher=SUN_STANDARD

sun.jnu.encoding=ANSI_X3.4-1968

sun.management.compiler=HotSpot 64-Bit Tiered Compilers

user.country=US

user.dir=/etc/ords/config

user.home=/home/oracle

user.language=en

user.name=oracle

user.timezone=UTC

db.password=******

conf.use.wallet=true


2026-02-19T06:23:25.895Z WARNING     *** jdbc.MaxLimit in configuration |default|lo| is using a value of 10, this setting may not be sized adequately for a production environment ***

2026-02-19T06:23:26.183Z INFO        Created Pool: |default|lo|-2026-02-19T06-23-25.293233112Z at: 2026-02-19T06:23:25.293233112Z

2026-02-19T06:23:26.311Z INFO        


Mapped local pools from /etc/ords/config/databases:

  /ords/                              => default                        => VALID     



2026-02-19T06:23:26.323Z INFO        Oracle REST Data Services initialized

Oracle REST Data Services version : 25.4.0.r3641739

Oracle REST Data Services server info: jetty/12.0.25

Oracle REST Data Services java info: Java HotSpot(TM) 64-Bit Server VM GraalVM EE 21.3.10 (build 17.0.11+7-LTS-jvmci-21.3-b51 mixed mode, sharing)


2026-02-19T06:23:26.416Z INFO        TransactionMonitor 1

2026-02-19T06:23:26.417Z INFO        RequestMonitor 1

2026-02-19T06:23:26.417Z INFO        AccessLogMonitor 1 0

2026-02-19T06:23:26.418Z INFO        WatchdogMonitor 1

2026-02-19T06:23:26.421Z INFO        CursorMonitor 1



ブラウザよりAPEXの管理画面にアクセスします。

http://コンピュート・インスタンスのIPアドレス/ords/apex_admin

以下の画面が表示されます。言語セレクタがなく、英語のみの表示になっています。


ORDSの自動インストールは、APEXの言語リソースをインストールしません。

ユーザーSYSでPDB、FREEPDB1に接続し、言語リソースのインストールを含めた追加の作業を実施します。

データベースのコンテナに接続します。データベースのコンテナapex-dbの/home/oracle/apexにはAPEXのメディアの解凍先がマウントされています。/home/oracle/apexに移動します。

podman exec -it apex-db bash
cd ~/apex

[oracle@apextest ~]$ podman exec -it apex-db bash

bash-4.4$ cd ~/apex

bash-4.4$  


sqlplusでデータベースに接続します。

export NLS_LANG=American_America.AL32UTF8
sqlplus / as sysdba
alter session set container = freepdb1;


bash-4.4$ export NLS_LANG=American_America.AL32UTF8

bash-4.4$ sqlplus / as sysdba


SQL*Plus: Release 23.26.1.0.0 - Production on Thu Feb 19 06:36:37 2026

Version 23.26.1.0.0


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



Connected to:

Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free

Version 23.26.1.0.0


SQL> alter session set container = freepdb1;


Session altered.


SQL> 


日本語リソースをロードします。

@load_trans JAPANESE

SQL> @load_trans JAPANESE


PL/SQL procedure successfully completed.


Installing Oracle APEX translation - JAPANESE



. ORACLE

.

. Oracle APEX Hosted Development Service Installation.

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


PL/SQL procedure successfully completed.



PL/SQL procedure successfully completed.


--application/set_environment

API Last Extended:20241130

Your Current Version:20241130

This import is compatible with version: 20241130


[中略]


--application/deployment/buildoptions

--application/end_environment

... elapsed: 3.42 sec

...done

Adjust instance settings


PL/SQL procedure successfully completed.


SQL> 


管理者ユーザーとパスワードを設定します。

@apxchpwd

SQL> @apxchpwd

...set_appun.sql

================================================================================

This script can be used to change the password of an Oracle APEX

instance administrator. If the user does not yet exist, a user record will be

created.

================================================================================

Enter the administrator's username [ADMIN] 

User "ADMIN" does not yet exist and will be created.


Enter ADMIN's email [ADMIN] 

Enter ADMIN's password [] *********

Created instance administrator ADMIN.



SQL> exit

Disconnected from Oracle AI Database 26ai Free Release 23.26.1.0.0 - Develop, Learn, and Run for Free

Version 23.26.1.0.0

bash-4.4$ 


以上でデータベースへのOracle APEXのインストールは完了です。

コンテナapex-dbから抜け、ホストに戻ります。

exit

bash-4.4$ exit

exit

[oracle@apextest ~]$ 


APEXを使用するには、管理サービスにアクセスしワークスペースを作るところから始めます。

http://コンピュート・インスタンスのIPアドレス/ords/apex_admin


以降は通常のOracle APEXの操作になります。


今回の記事は以上になります。

追記


ルート・ファイルシステムの拡張手順



今回はOracle Linuxだったのでoci-growfsを呼び出しました。以下により一般的な、growpart、lvextend、xfs_growfsを使った手順を紹介します。

毎回実行するコマンドにsudoをつけるのが面倒なので、sudo -sを実行します。

[opc@apextest ~]$ sudo -s

[root@apextest opc]# 


lsblkでディクスの利用状況を確認すると、最小サイズの50GBになっています。

lsblk

[root@apextest opc]# lsblk

NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS

sda                  8:0    0  100G  0 disk 

├─sda1               8:1    0  100M  0 part /boot/efi

├─sda2               8:2    0    2G  0 part /boot

└─sda3               8:3    0 44.5G  0 part 

  ├─ocivolume-root 252:0    0 29.5G  0 lvm  /

  └─ocivolume-oled 252:1    0   15G  0 lvm  /var/oled

[root@apextest opc]# 


以下を実行して/dev/sdaの最後のパーティションの/dev/sda3を拡張します。

growpart /dev/sda 3

[root@apextest opc]# growpart /dev/sda 3

CHANGED: partition=3 start=4401152 old: size=93325312 end=97726463 new: size=205314015 end=209715166

[root@apextest opc]#


ルート・ファイルシステムが作成されている(フィジカル・ボリュームとして/dev/sda3を含む)ロジカル・ボリュームの名前を確認します。

lvdisplay

[root@apextest opc]# lvdisplay

  --- Logical volume ---

  LV Path                /dev/ocivolume/oled

  LV Name                oled

  VG Name                ocivolume

  LV UUID                QefVxn-MgHG-dMha-IQdJ-X7sw-6eJR-oA2Pz5

  LV Write Access        read/write

  LV Creation host, time localhost.localdomain, 2025-01-15 19:11:42 +0000

  LV Status              available

  # open                 1

  LV Size                15.00 GiB

  Current LE             3840

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     4096

  Block device           252:1

   

  --- Logical volume ---

  LV Path                /dev/ocivolume/root

  LV Name                root

  VG Name                ocivolume

  LV UUID                DVkyyE-aryO-hNLY-7NPc-sMmE-or3u-LKJzzK

  LV Write Access        read/write

  LV Creation host, time localhost.localdomain, 2025-01-15 19:11:42 +0000

  LV Status              available

  # open                 1

  LV Size                29.50 GiB

  Current LE             7552

  Segments               1

  Allocation             inherit

  Read ahead sectors     auto

  - currently set to     4096

  Block device           252:0

   

[root@apextest opc]# 


/dev/sda3の拡張された領域を、ロジカル・ボリューム/dev/ocivolume/rootに与えて拡張します。

lvextend -l +100%FREE /dev/mapper/ocivolume-root

[root@apextest opc]# lvextend -l +100%FREE /dev/mapper/ocivolume-root

  Size of logical volume ocivolume/root changed from 29.50 GiB (7552 extents) to <82.90 GiB (21222 extents).

  Logical volume ocivolume/root successfully resized.

[root@apextest opc]# 


ルート・ファイルシステムはXFSですが、一応確認します。

df -T /

[root@apextest opc]# df -T /

Filesystem                 Type 1K-blocks    Used Available Use% Mounted on

/dev/mapper/ocivolume-root xfs   30867456 9280160  21587296  31% /

[root@apextest opc]#


ファイルシステムを拡張します。

xfs_growfs /

[root@apextest opc]# xfs_growfs /

meta-data=/dev/mapper/ocivolume-root isize=512    agcount=4, agsize=1933312 blks

         =                       sectsz=512   attr=2, projid32bit=1

         =                       crc=1        finobt=1, sparse=1, rmapbt=0

         =                       reflink=1    bigtime=1 inobtcount=1 nrext64=0

data     =                       bsize=4096   blocks=7733248, imaxpct=25

         =                       sunit=0      swidth=0 blks

naming   =version 2              bsize=4096   ascii-ci=0, ftype=1

log      =internal log           bsize=4096   blocks=16384, version=2

         =                       sectsz=512   sunit=0 blks, lazy-count=1

realtime =none                   extsz=4096   blocks=0, rtextents=0

data blocks changed from 7733248 to 21731328

[root@apextest opc]# 


拡張結果を確認します。

df -h /

[root@apextest opc]# df -h /

Filesystem                  Size  Used Avail Use% Mounted on

/dev/mapper/ocivolume-root   83G  9.5G   74G  12% /

[root@apextest opc]# 



plsql.gateway.modeについて



ORDSのコンテナのログに以下のメッセージが出力されます。

INFO : Set plsql.gateway.mode proxied after Oracle APEX was installed.


ORDSによるAPEXの自動インストールでは、Oracle APEXインストール後にplsql.gateway.modeをproxiedに設定するように要求されていますが、確認するとproxiedになっていたので、対応はしていません。


ポッドを作成するYAMLファイル



以下のYAMLファイルを使って、podmanでの一連の作業を一度に実施できます。ファイル中の$ORASYSPWDはパスワードとなる文字列に置き換えます。

podman play kube apex.yml