2021年1月31日日曜日

最初に開くページの変更

Oracle APEXにベースとなるパスの指定のみでアクセスすると、アプリケーション・ビルダーのサインイン画面が呼び出されます。例えば、以下のようなURLです。

https://localhost:8080/ords/xepdb1/

一般のアプリケーションの利用者にはあまり見せたくない画面がデフォルトというのも...と、何か対処がないものか、と色々試してみました。

最終的にこれが一番簡単だろうと思った手順です。

そもそも、Oracle APEXにベース・パス以下無指定でアクセスしたときは、apexというプロシージャが呼び出されるようになっています。これはデータベースにはパブリック・シノニムとして作成されています。実体はOracle APEXのスキーマ(APEX_200200といったバージョン番号の付いたスキーマ)に存在するプロシージャapexです。このプロシージャの中で、ベース・パス以下が無指定の場合は、アプリケーション・ビルダーが呼び出されています。

ですので、アプリケーション・ビルダーを呼び出さないようするプロシージャを作成し、それをパブリック・シノニムの実体に変更すれば対応できそうです。

試してみました。

CREATE OR REPLACE EDITIONABLE PROCEDURE "ADMIN"."MYAPEX" (p_session in number default null)
as
begin
    SYS.OWA_UTIL.REDIRECT_URL('https://apex.oracle.com/ja/');
end;
/

GRANT EXECUTE ON "ADMIN"."MYAPEX" TO "ORDS_PUBLIC_USER";

CREATE OR REPLACE PUBLIC SYNONYM APEX FOR ADMIN.MYAPEX;

プロシージャMYAPEXをスキーマADMINに作成し、パブリック・シノニムを置き換えています。GRANT文はORDS_PUBLIC_USERのみですが、環境によってはAPEX_PUBLIC_USERへも実行権限を与える必要があるでしょう。

デフォルトで開く画面が、https://apex.oracle.com/ja/になることは、確認できました。

アプリケーション・ビルダーは、アプリケーション番号を指定することでアクセスできます。

https://localhost:8080/ords/xepdb1/f?p=4550

パブリック・シノニムの変更はサポートされる手法ではないですが、問題が起きるとしたら置き換えたプロシージャが原因(つまり自分で記述したコード)でしょうし、容易に元に戻せるので、見つけた方法の中では一番利用可能だと思いました。