2026年2月5日木曜日

United CodesのUC Local APEX Devを使ってOracle APEXのローカル開発環境を作成する

欧州のベルギーに拠点があるUnited Codes社より、Oracle APEXのローカル開発環境を作成するスクリプトが公開されています。

UC Local APEX Dev

本記事では、このuc-local-apex-devを使用して、MacbookにOracle APEXの開発環境を作成します。作業はuc-local-apex-devのGetting Startedにそって実施します。

Getting Started

このブログの筆者も、ローカル開発環境をオラクルがcontainer-registry.oracle.comから提供しているコンテナ・イメージから作成するスクリプトを書いていますが、uc-local-apex-devの方がよく出来ていますし、ドキュメントも整備されています。

Macbookの環境ですが、DockerとDockerエンジンにColimaを使用します。podmanは使用しません。そのため、環境の準備手順は少し異なります。Windowsの場合はWSL2の使用が推奨されています。

Macでの環境については、以下で説明されています。

Init podman on MacOS
https://www.united-codes.com/products/uc-local-apex-dev/docs/other/podman-on-mac/

私はSQLclを、HomebrewではなくSQLclのページよりダウンロードしてインストールしているので、brewにsqlclは含めていません。

brew install docker docker-compose colima

私の環境では、すべてインストール済みでした。

% brew install docker docker-compose colima

✔︎ JSON API cask.jws.json                                                                                 Downloaded   15.3MB/ 15.3MB

✔︎ JSON API formula.jws.json                                                                              Downloaded   32.0MB/ 32.0MB

Warning: docker 29.2.1 is already installed and up-to-date.

To reinstall 29.2.1, run:

  brew reinstall docker

Warning: docker-compose 5.0.2 is already installed and up-to-date.

To reinstall 5.0.2, run:

  brew reinstall docker-compose

Warning: colima 0.9.1 is already installed and up-to-date.

To reinstall 0.9.1, run:

  brew reinstall colima

% 


SQLclをPATHに含めておきます。SQLclのインストール先など、設定方法は環境に依存します。sql /nologの実行で、SQLclが起動されることを確認します。

~ % sql /nolog


SQLcl: 木 2月 05 14:55:01 2026のリリース25.4 Production


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


SQL> exit

~ % 


colimaの仮想マシンを実行します。

CPUは8、メモリは16GB、ディスクは100GBで作成しています。Getting Startedでは、4GB RAM、3 CPUs、20GBディスクが最小限となっています。

colima start --runtime docker --cpu 8 --memory 16 --disk 100

~ % colima start --runtime docker --cpu 8 --memory 16 --disk 100

INFO[0000] starting colima                              

INFO[0000] runtime: docker                              

INFO[0002] creating and starting ...                     context=vm

INFO[0019] provisioning ...                              context=docker

INFO[0020] starting ...                                  context=docker

INFO[0021] done                                         

~ % 


dockerがcolimaを使用する様に設定します。

docker context use colima
docker context ls

~ % docker context use colima

colima

Current context is now "colima"

~ % docker context ls

NAME       DESCRIPTION                               DOCKER ENDPOINT                                        ERROR

colima *   colima                                    unix:///Users/_________/.colima/default/docker.sock   

default    Current DOCKER_HOST based configuration   unix:///var/run/docker.sock                            

~ %


以上でコンテナを実行する環境が準備できました。

この後は、Getting StartedQuick Setupを実行します。1 Clone the Repositoryから7 PATH Configurationに記載されているコマンドを、順次実行します。

./scripts/after-first-db-start.shの最後の方で、アーカイブ・ログ・モードを無効にするかどうか確認を求められるので、デフォルトの無効を選んでいます。

言語リソースのインストールに使用するため、ダウンロードしたAPEXのメディアは残します。rm -rf ./apexは実行しません。

Documents % git clone https://github.com/United-Codes/uc-local-apex-dev.git

Cloning into 'uc-local-apex-dev'...

remote: Enumerating objects: 672, done.

remote: Counting objects: 100% (156/156), done.

remote: Compressing objects: 100% (92/92), done.

remote: Total 672 (delta 71), reused 115 (delta 58), pack-reused 516 (from 1)

Receiving objects: 100% (672/672), 194.99 KiB | 4.64 MiB/s, done.

Resolving deltas: 100% (367/367), done.

Documents % cd uc-local-apex-dev                           

uc-local-apex-dev % chmod +x ./local-26ai.sh ./setup.sh ./scripts/*.sh

uc-local-apex-dev % ./setup.sh

Created .env file

uc-local-apex-dev % docker-compose up -d

[+] up 4/4

  Network uc-local-apex-dev_default Created                                                                                    0.0s

  Volume oradata-26ai               Created                                                                                    0.0s

  Container local-26ai              Healthy                                                                                    8.6s

  Container local-26ai-ords         Created                                                                                    0.0s

uc-local-apex-dev % docker exec -it local-26ai-ords bash -c \

"ords --config /etc/ords/config config --db-pool default set plsql.gateway.mode proxied"


ORDS: Release 25.4 Production on Thu Feb 05 06:19:16 2026


Copyright (c) 2010, 2026, Oracle.


Configuration:

  /etc/ords/config


The setting named: plsql.gateway.mode was set to: proxied in configuration: default

uc-local-apex-dev % ./scripts/after-first-db-start.sh

loaded .env file



SQLcl: 木 2月 05 11:19:58 2026のリリース25.3 Production


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


接続先:

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

Version 23.26.0.0.0



USER    

_______ 

SYS     


名前: local-26ai-sys

接続文字列: localhost:1521/FREEPDB1

ユーザー: sys

パスワード: ******

internal_logon: sysdba

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

Version 23.26.0.0.0から切断されました

saved sqlcl connection

connect with 'sql -name local-26ai-sys'


[中略]


コミットが完了しました。


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

Version 23.26.0.0.0から切断されました

loaded .env file

Successfully copied 1.54kB to local-26ai:/opt/oracle/oradata/datapump/

Successfully copied 1.54kB to /Users/__________/Documents/uc-local-apex-dev/backups/

synced backups folder

Do you want to disable archive logs (recommended if this is just a dev environment)? [Y/n] 

loaded .env file

Disabling archive logs

Database closed.

Database dismounted.

ORACLE instance shut down.

ORACLE instance started.


Total System Global Area 1603373280 bytes

Fixed Size     5007584 bytes

Variable Size   469762048 bytes

Database Buffers 1124073472 bytes

Redo Buffers     4530176 bytes

Database mounted.


Database altered.



Database altered.


Database log mode       No Archive Mode

Automatic archival       Disabled

Archive destination       /opt/oracle/product/26ai/dbhomeFree/dbs/arch

Oldest online log sequence     5

Current log sequence       3

Removing archive logs

uc-local-apex-dev % docker-compose restart ords-26ai

[+] restart 0/1

  Container local-26ai-ords Restarting                                                                                        10.2s

uc-local-apex-dev % ./scripts/unexpire-accounts.sh


loaded .env file


SQLcl: 木 2月 05 15:32:41 2026のリリース25.4 Production


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


接続先:

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

Version 23.26.0.0.0



PL/SQLプロシージャが正常に完了しました。



PL/SQLプロシージャが正常に完了しました。


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

Version 23.26.0.0.0から切断されました

Unexpired APEX_PUBLIC_USER and APEX workspace accounts.

ynakakoshi@Ns-Macbook uc-local-apex-dev % ./scripts/disable-password-expiration.sh


loaded .env file


SQLcl: 木 2月 05 15:32:45 2026のリリース25.4 Production


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


接続先:

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

Version 23.26.0.0.0



PL/SQLプロシージャが正常に完了しました。


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

Version 23.26.0.0.0から切断されました

Disabled password expiration for APEX workspace accounts.

uc-local-apex-dev % 


7 PATH Configurationまでの作業を終えると、以下のURLでAPEXに接続できます。


SQLclに接続local-26ai-sysが保存されていることを確認します。この接続は、ユーザーSYSでAPEXをインストールしたFREEPDB1に接続します。

uc-local-apex-dev % sql /nolog


SQLcl: 木 2月 05 15:52:19 2026のリリース25.4 Production


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


SQL> connmgr list

.

└── local-26ai-sys

SQL> exit

uc-local-apex-dev % 


管理者ユーザーADMINを設定するため、APEXのメディアがあるディレクトリapexに移動し、apxchpwd.sqlを実行します。

cd apex
sql -name local-26ai-sys @apxchpwd
exit

uc-local-apex-dev % cd apex

ynakakoshi@Ns-Macbook apex % sql -name local-26ai-sys @apxchpwd


SQLcl: 木 2月 05 15:53:29 2026のリリース25.4 Production


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


接続先:

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

Version 23.26.0.0.0


...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

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

Version 23.26.0.0.0から切断されました

apex % 


load_trans.sqlを実行し、日本語リソースをインストールします。

sql -name local-26ai-sys @load_trans JAPANESE

apex % sql -name local-26ai-sys @load_trans JAPANESE


SQLcl: 木 2月 05 15:58:34 2026のリリース25.4 Production


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


接続先:

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

Version 23.26.0.0.0



PL/SQLプロシージャが正常に完了しました。


Installing Oracle APEX translation - JAPANESE



. ORACLE

.

. Oracle APEX Hosted Development Service Installation.

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


PL/SQLプロシージャが正常に完了しました。



PL/SQLプロシージャが正常に完了しました。


--application/set_environment

API Last Extended:20241130

Your Current Version:20241130

This import is compatible with version: 20241130

COMPATIBLE (You should be able to run this import without issues.)

ID offset during import: 0

New ID offset for application: 0



[中略]


--application/pages/page_00204

--application/pages/page_00205

--application/pages/page_00206

--application/deployment/definition

--application/deployment/checks

--application/deployment/buildoptions

--application/end_environment

... elapsed: 2.79 sec


...done

Adjust instance settings


PL/SQLプロシージャが正常に完了しました。


SQL> exit

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

Version 23.26.0.0.0から切断されました

apex % 


APEXワークスペースとしてAPEXDEV、デフォルト・パーシング・スキーマとなるデータベース・ユーザーとしてAPEXDEVを作成します。

local-26ai.sh create-user apexdev

スクリプトの出力の最後の方に、作成されたユーザー(今回はapexdev)が表示されます。

apex % local-26ai.sh create-user apexdev

loaded .env file


SQLcl: 木 2月 05 16:07:49 2026のリリース25.4 Production


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


接続先:

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

Version 23.26.0.0.0



USER    

_______ 

SYS     



Tablespace TBS_APEXDEVは作成されました。



User APEXDEVは作成されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



Grantが正常に実行されました。



PL/SQLプロシージャが正常に完了しました。


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

Version 23.26.0.0.0から切断されました

>>>>

created user


SQLcl: 木 2月 05 16:07:51 2026のリリース25.4 Production


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


接続先:

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

Version 23.26.0.0.0



USER    

_______ 

SYS     



PL/SQLプロシージャが正常に完了しました。


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

Version 23.26.0.0.0から切断されました

>>>>

created workspace. Access with username 'ADMIN' or apexdev and password 'Welcome_1'

http://localhost:8181/ords/r/apex/workspace-sign-in/oracle-apex-sign-in


SQLcl: 木 2月 05 16:07:53 2026のリリース25.4 Production


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


接続先:

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

Version 23.26.0.0.0



USER       

__________ 

APEXDEV    


名前: local-26ai-apexdev

接続文字列: localhost:1521/FREEPDB1

ユーザー: apexdev

パスワード: ******


PL/SQLプロシージャが正常に完了しました。


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

Version 23.26.0.0.0から切断されました

>>>>

saved sqlcl connection

connect with 'sql -name local-26ai-apexdev'

apex % 


以上でOracle APEXのアプリケーションの開発を始める準備が整いました。

管理サービスにサインインしてみます。ユーザー名/パスワードは、apxchpwd.sqlを実行して設定しています。


管理サービスにサインインできます。ワークスペースの作成はスクリプトで実行できるので、あまり管理サービスにサインインすることはないかもしれません。


ワークスペースにサインインします。


ユーザー名はapexdev、デフォルトのパスワードはWelcome_1です。


サインインすると、アプリケーション・ビルダーの画面が開きます。


パッチの適用については、FAQに手順が記載されています。


ダウンロードしたパッチを解凍したディレクトリに移動し、catpatch.sqlを実行します。

sql -name local-26ai-sys @catpatch

37366599 % sql -name local-26ai-sys @catpatch


SQLcl: 木 2月 05 16:25:46 2026のリリース25.4 Production


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


接続先:

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

Version 23.26.0.0.0


sqlclではTimingコマンドは廃止されました。

SET TIMING ONとSET TIMING OFFを使用してください。


. ORACLE

.

. Oracle APEX 24.2.%

. Patch Set Exception 37366599

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


APEX_VERSION    APEX_SCHEMA    

_______________ ______________ 

24.2.0          APEX_240200    



PL/SQLプロシージャが正常に完了しました。



Sessionが変更されました。



APEX_SCHEMA    

______________ 

APEX_240200    


[中略]


PL/SQLプロシージャが正常に完了しました。


... Enabling Jobs


PL/SQLプロシージャが正常に完了しました。


...Validating APEX

...(07:26:03) Starting validate_apex for APEX_240200

...(07:26:03) Checking missing privileges for APEX_240200

...(07:26:03) Checking missing privileges for APEX_GRANTS_FOR_NEW_USERS_ROLE

...(07:26:03) Re-generating APEX_240200.wwv_flow_db_version

... wwv_flow_db_version is up to date

...(07:26:03) Checking for sys.wwv_flow_cu_constraints

...(07:26:03) Checking invalid public synonyms

...(07:26:03) Key object existence check

...(07:26:03) Post-ORDS updates

...(07:26:03) calling wwv_util_apex_240200.post_ords_upgrade

...enabled_schema

...define_module

...define_template

...define_handler

...set_module_origins_allowed

...(07:26:03) Setting DBMS Registry for APEX to valid

...(07:26:03) Exiting validate_apex



PL/SQLプロシージャが正常に完了しました。


...Recompiling invalid public synonyms


PL/SQLプロシージャが正常に完了しました。



PL/SQLプロシージャが正常に完了しました。


sqlclではTimingコマンドは廃止されました。

SET TIMING ONとSET TIMING OFFを使用してください。

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

Version 23.26.0.0.0から切断されました

37366599 % 


パッチに含まれるimagesの内容をuc-local-apex-dev/apex-imagesに上書きします。

cp -r ./images/* {path_to_your_cloned_repo}/apex-images

37366599 % cp -r ./images/* ../../uc-local-apex-dev/apex-images 

37366599 % 


以上でパッチの適用は完了です。

環境の構築については以上です。

uc-local-apex-devには、環境構築の他にも色々と便利なスクリプトが含まれています。--helpでスクリプトの一覧を確認できます。

local-26ai.sh --help

~ % local-26ai.sh --help

Script '--help' not found in /Users/_________/Documents/uc-local-apex-dev

Available scripts:

after-first-db-start.sh

backup-all.sh

backup-user.sh

clear-schema.sh

create-self-signed-certificates.sh

create-user.sh

disable-archive-logs.sh

disable-password-expiration.sh

drop-user.sh

fix-ws-group-ids.sh

import-all.sh

import-backup.sh

import-datapump.sh

install-dbms-cloud.sh

shrink-space.sh

start.sh

stop.sh

sync-backups-folder.sh

test-app-install.sh

test-script-install.sh

unexpire-accounts.sh

used-space.sh

~ % 


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

Oracle APEXのアプケーション開発の参考になれば幸いです。