2023年4月7日金曜日

Oracle Database 23ai Free - Developer Release on VirtalBoxでAPEXを使う

 Oracle Database 23ai Freeは、VirutalBoxの仮想マシンでも提供されています。米国オラクル本社所属のデータベース・ツールのPM、Jeff Smithさんが彼のブログにて、提供されているVirutalBoxについて詳しく紹介されています。

Oracle Database 23ai News & an Updated VirtualBox appliance
https://www.thatjeffsmith.com/archive/2024/05/oracle-database-23ai-news-an-updated-virtualbox-appliance/

ダウンロード

以下が概要になります。
  • Oracle Linux 8.8
  • Oracle Database 23ai Free
  • Oracle REST Data Services 24.1.0
  • Oracle SQLcl 24.1.0
  • Oracle APEX 23.2
上記の仮想マシンをダウンロードした後、VirtualBoxにインポートして起動し、Oracle APEXの使い勝手を確認してみました。残念なことにAPEXは日本語化されていませんでした。
以下より、日本語リソースをロードする方法を紹介します。手順自体は、一般的なOracle APEXの言語リソースのロード作業です。

ダウンロードしたOracle_Database_23ai_Free_Developer.ovaをVirtualBoxにインポートした直後の状態から作業を始めます。

インポートした仮想マシンを起動すると、データベースとORDSも同時に起動します。

ターミナルも開きますが、私の環境ではキーマップが異なり、この画面のターミナルからの作業は今ひとつでした。


ネットワークポートフォワーディングの設定を確認すると、sshのポートがホストの2223に割り当てられています。


なので、ローカルのマシンのターミナルからSSHで接続し、作業をすることにします。

ssh -p 2223 oracle@localhost

% ssh -p 2223 oracle@localhost

oracle@localhost's password: *********

Activate the web console with: systemctl enable --now cockpit.socket


Last login: Wed May 15 01:19:58 2024 from 10.0.2.2

[oracle@localhost ~]$ 


仮想マシンにはOracle APEXの言語リソースが含まれていません。インストールされているOracle APEXのバージョンは23.2であるため、以下のリンクより日本語リソースを含んだアーカイブをダウンロードします。

mkdir temp
cd temp
curl -OL https://download.oracle.com/otn_software/apex/apex_23.2.zip

[oracle@localhost ~]$ mkdir temp

[oracle@localhost ~]$ cd temp

[oracle@localhost temp]$ curl -OL https://download.oracle.com/otn_software/apex/apex_23.2.zip

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

                                 Dload  Upload   Total   Spent    Left  Speed

100  261M  100  261M    0     0  9588k      0  0:00:27  0:00:27 --:--:-- 9018k

[oracle@localhost temp]$ 


ダウンロードしたapex_23.2.zipを解凍します。

unzip apex_23.2.zip

[oracle@localhost temp]$ unzip apex_23.2.zip 

Archive:  apex_23.2.zip

  inflating: META-INF/MANIFEST.MF    

  inflating: META-INF/ORACLE_C.SF    

  inflating: META-INF/ORACLE_C.RSA   

   creating: apex/

  inflating: apex/apxremov2.sql      

  inflating: apex/apxrtins_cdb.sql   


[中略]


  inflating: apex/utilities/readme.txt  

  inflating: apex/utilities/apxrekey.sql  

  inflating: apex/apexins_cdb.sql    

[oracle@localhost temp]$ 


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

cd apex
. oraenv   (ORACLE_SIDとしてFREEを指定)
export NLS_LANG=American_America.AL32UTF8
sqlplus sys/******@localhost/freepdb1 as sysdba
@load_trans JAPANESE

[oracle@localhost temp]$ cd apex

[oracle@localhost apex]$ . oraenv

ORACLE_SID = [oracle] ? FREE

The Oracle base remains unchanged with value /opt/oracle

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

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


SQL*Plus: Release 23.0.0.0.0 - Production on Wed May 15 02:00:54 2024

Version 23.4.0.24.05


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



Connected to:

Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free

Version 23.4.0.24.05


SQL> @load_trans JAPANESE


PL/SQL procedure successfully completed.


Installing Oracle APEX translation - JAPANESE


. ORACLE

.

. Application Express Hosted Development Service Installation.

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


PL/SQL procedure successfully completed.


--application/set_environment

API Last Extended:20231031

Your Current Version:20231031

This import is compatible with version: 20231031

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

ID offset during import: 0

New ID offset for application: 0

APPLICATION 4420 - Oracle APEX Builder, Wizard Messages and Native Plug-Ins

--application/delete_application

--application/create_application

--application/user_interfaces

--application/shared_components/navigation/lists/spotlight_custom_entries_global

--application/shared_components/navigation/lists/spotlight_custom_entries_app_level


[中略]


--application/pages/page_00205

--application/pages/page_00206

--application/end_environment

... elapsed: 4.72 sec

...done

Adjust instance settings


PL/SQL procedure successfully completed.


SQL> 


プロンプトが返ってきた時点で日本語リソースの導入は完了しています。

APEXの管理者パスワードの記載を見つけることができなかったので、apxchpwd.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" exists.

Enter ADMIN's email [ADMIN] 

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

Changed password of instance administrator ADMIN.


SQL> 


この環境には、APEXのワークスペースが作成されていません(正確にはHRRESTというワークスペースがあるが、そのままでは開発に使用できない)。

APEXの管理サービスにサインインし、ワークスペースを作成します。管理者ユーザーはADMINです。

http://localhost:8080/ords/apex_admin


ワークスペースを作成します。


作成するワークスペースのワークスペース名MYDEVとします。に進みます。


既存のスキーマの再利用いいえスキーマ名MYDEVスキーマのパスワードを設定します。領域割当て制限(MB)10000を選択します。

へ進みます。


管理者のユーザー名admin管理者のパスワードを設定します。電子メールの指定は必須です。

へ進みます。


確認画面が表示されます。ワークスペースの作成を実行します。


ワークスペースMYDEVが作成されました。完了をクリックします。


ワークスペースMYDEVが作成されると、APEXのワークスペースMYDEVにユーザーADMINでサインインできるようになります。



初回サインイン時は、パスワードの更新が求められます。


サインイン後の画面です。


SQLワークショップRESTfulサービスを開き、ORDSにスキーマを登録します。


ORDSにスキーマを登録します。


RESTfulアクセスの有効化オンにします。スキーマ別名はデフォルトでワークスペース名と同じ値になります。この値はSQL Developer Webへのサインイン時に指定するため、覚えておきます。


ORDSにスキーマが登録されました。


データベース・アクション(SQL Developer Web)への接続も確認します。

http://localhost:8080/ords/sql-developer

詳細をクリックし、パス指定を開きます。

パスmydevユーザーadminを指定します。パスワードは管理者ユーザーadminのパスワードで、APEXへのサインイン時に指定したものと同じです。


サインインに成功すると、以下がの画面が開きます。


以下の記事に、ユーザーPDBADMINでSQL Developer Webに接続する方法を紹介しています。記事に記載されているSQLスクリプトを実行すると、ユーザーPDBADMIN、パスワードoracleでSQL Developer Webに接続できるようになります。

ローカル環境のSQL Developer Webの管理者ユーザーを作成する


SQL Developer Webでは、ユーザーHRがあらかじめ作成されています。パスhrユーザー名hrパスワードとしてoracleを指定することにより、サインインできます。


以上で、Oracle APEXのアプリケーションを開発する準備ができました。