以前にAutonomous Databaseでのワークスペースの追加作成という記事で、Autonomous DatabaseでのAPEXワークスペースの作成手順について説明しました。
Autonomous DatabaseのAPEXがOracle APEX 22.1に上がった際に、APEXワークスペースの作成手順が変更されています。
以下より変更された手順を確認します。
管理サービスの説明「自律型データベースの管理者(ADMIN)パスワードを使用してサインインしてください。」に従って、ADMINのパスワードを入力し、管理にサインインをクリックします。
初回サインイン時はワークスペースが未作成のため、すぐにワークスペースを作成するダイアログが開きます。今回はワークスペースはすでに作成済みなので、ワークスペースを追加作成します。
ワークスペースの作成をクリックします。
ダイアログが開きます。新規のスキーマを選択します。
ワークスペースの作成のダイアログが開きます。
APEX 22.1から、以下のダイアログに変わりました。
ワークスペース名については、バージョンによらず双方ともAPEXのワークスペース名の指定になります。
以前あったデータベース・ユーザとパスワードの指定は無くなりました。
APEX 22.1からは、ワークスペースの管理者ユーザーとして作成されるデータベース・ユーザーと、データベース・オブジェクトなどを保持しデフォルト・パーシング・スキーマとなるデータベース・ユーザーは別に作成されます。
ワークスペース・ユーザー名およびパスワードとして、ワークスペースの管理者となるデータベース・ユーザーの名前とパスワードを指定します。このユーザーは、データベース・オブジェクトを保持しません。
データベース・オブジェクトを保持するスキーマとして、ワークスペース名に接頭辞としてWKSP_を付けたデータベース・ユーザーが作成されます。データベース・パスワードは、このユーザーに与えるパスワードです。sqlplusやSQLclといったツールから接続する要件がなければ、このパスワードを指定する必要はありません。
ワークスペースIDは、こちらの記事で説明しているように、開発、ステージング、本番といった異なる用途のインスタンスに作成するワークスペースで、ワークスペースIDを一致させる際に指定します。
ワークスペースの作成をクリックします。
作成されたワークスペースを確認します。
既存のワークスペースからは、ワークスペースHRが作成されていることが確認できます。
開発者とユーザーの管理を確認します。
ワークスペース管理者としてHRADMINが作成されています。ワークスペースはHR、デフォルトのスキーマとしてWKSP_HRが紐づけられています。
サインインには、ワークスペース名、ワークスペース・ユーザー名、ワークスペース・パスワードを指定します。データベース・ユーザー名(WKSP_HR)およびデータベース・パスワードではサインインできません。
画面が開きます。ここで入力するユーザーはAPEXワークスペースの管理者ユーザーとパスワードになります。
SQLワークショップのSQLコマンドを開き、以下のSQLを実行します。
select
sys_context('userenv','session_user') as session_user,
sys_context('userenv','session_schema') as session_schema,
sys_context('userenv','current_schema') as current_schema,
sys_context('userenv','proxy_user') as proxy_user
from dual;
SQLコマンドを実行するスキーマとして、右上の選択リストにWKSP_HRが選択されていることが確認できます。
Oracle APEXによるSQLの実行という解説記事を書いた当時は、APEXの処理であるプロシージャはSESSION_USERのORDS_PUBLIC_USERから呼び出されていました。これはセキュリティ強化を目的として、Oracle REST Data Servicesの処理と同様にORDS_PUBLIC_USERをプロキシとして通した上で、ユーザーORDS_PLSQL_GATEWAYにて実行されるように変わっています。
続けて、Oracle REST Data Servicesを有効にします。
Oracle REST Data Servicesを有効にするスキーマは、WKSP_HRになります。HRADMINではありません。
ORDSにスキーマを登録する際に、スキーマ別名をワークスペース名に一致するようにします。今回の例ではhrです。スキーマ名であるWKSP_HRはORDS RESTサービスのURLに現れません。
データベース・アクションから、作成されたデータベース・ユーザーを確認します。
RESTの有効化が行われているのはWKSP_HRです。そのため、データベース・アクションへの接続URLはデータベース・ユーザーWKSP_HRに対して生成されています。
リンクを開き、データベース・ユーザーWKSP_HRでADBに接続します。
今回の例ではHRADMINとそのパスワードを入力します。
サインインにはAPEXワースクスペースの管理者ユーザーであるデータベース・ユーザーのユーザー名とパスワードを指定しましたが、データベース・アクションとしてはデータベース・ユーザーWKSP_HRとしてサインインされています。
直リンクによる接続でない場合は、最初のユーザー名として、ORDS別名であるHRを入力します。
Oracle APEXおよびOracle REST Data Servicesの双方とも、実際にSQLを実行するユーザーはWKSP_HRになるため、grant文を呼び出して実行権限などを付与する対象は、WKSP_HRになります。
データベース・アクションには、Oracle APEXのワークスペースを管理する機能が追加されています。
画面右上に、ワークスペースの作成というボタンがあります。
現時点(2022年7月12日)のデータベース・アクションでは、データベース・ユーザー(スキーマ)の名前と、APEXユーザー名を同じ名前にしてAPEXワークスペースを作成します。これはAPEX側から見ると、APEX 22.1以前でのワークスペースの作成方法になります。
Autonomous Database上で動作するAPEX 22.1から、ワークスペースを新規作成する場合、スキーマにはWKSP_の接頭辞が付くことを理解した上で、Oracle APEXで扱うスキーマ名にWKSP_といった接頭辞は付けたくない場合は、APEXではワークスペースを新規作成せず、既存のスキーマを選択するか(あらかじめスキーマを作成するには、データベース・アクションでの作業が必要)、そのままデータベース・アクションからAPEXワークスペースを作成する必要があるでしょう。
APEX 22.1で変更された、Autonomous Databaseでのワークスペース作成についての説明は以上です。
完