Autonomous Databaseでデフォルト・エディションを変更した場合、どの程度の時間で変更が反映されるか確認してみました。
確認に使用したSQLは以下です。
select
o.object_name edition_name,
s.sid,
s.username,
s.logon_time
from v$session s join dba_objects o
on s.session_edition_id = o.object_id
order by s.logon_time;
SQL Developer WebにユーザーADMINでサインインして作業しました。
Oracle APEXでアプリケーション・ビルダーを開き、SQLコマンドから以下のSQLを実行できるようにしておきます。
select sys_context('USERENV', 'SESSION_EDITION_NAME') from dual;
デフォルト・エディションをED02へ変更します。SQL Developer Webで以下のALER文を実行します。
alter database default edition = ed02;
以下のような結果になりました。
新しく生成された接続には、設定されたデフォルト・エディションが適用されますが、以前のセッションも残っています。
APEX側でのSQLコマンドの実行結果を見ても、コネクション・プールから取得される接続に依存して、結果がORA$BASEだったりED02だったりします。
これでは開発できません。APEXのSQLコマンドで以下のPL/SQLスクリプトを実行します。
begin
dbms_session.set_edition_deferred('ED02');
end;
何度か繰り返すことで以前からの接続についても、セッション・エディションをED02に変更することができました。
Oracle APEXのアプリケーションに関してはセッション・エディションの変更の影響は受けないため、上記の対応を行うことによりページ・デザイナが参照するエディションを指定することができます。
完