4.3 SCANプロシージャ
このプロシージャは、オブジェクトの依存性レポートを生成します。
アプリケーション(またはアプリケーション内のページ)で、依存するすべてのデータベース・オブジェクト(表、ビュー、プロシージャ、ファンクション、パッケージおよびシノニムを含む)がスキャンされます。これらの依存性がフォーム、レポート、PL/SQLリージョン、条件、プラグインまたはその他の場所にあるかどうかは関係ありません。
結果は、次のビューを問い合せることで表示されます:
APEX_USED_DB_OBJECT_COMP_PROPS
- 見つかったすべてのアプリケーションSQLおよびPL/SQLAPEX_USED_DB_OBJECTS
- 参照されているすべてのデータベース・オブジェクトAPEX_USED_DB_OBJ_DEPENDENCIES
- 見つかったすべての依存性
SQLまたはPL/SQLの一部が無効(たとえば、必要なオブジェクトがない)の場合、依存性は検出されません。コンパイル・エラー・メッセージは、APEX_USED_DB_OBJECT_COMP_PROPS
ビューで問い合せることができます。
スキャンの結果は、次が実行されるまで保存されます:
- 新しいスキャンが開始される
apex_app_object_dependency.clear_cache
がコールされる- Oracle APEXインスタンスがアップグレードされる
PL/Scope
スキャナは、PL/Scopeでコンパイルされたパッケージ内のファンクションおよびプロシージャに固有の依存性のみを検出します。スキャンを開始する前に、PL/Scopeを使用して目的のスキーマをコンパイルすることを選択できます:
alter session set plscope_settings='identifiers:all';
exec sys.dbms_utility.compile_schema(user, true);
alter session set plscope_settings='identifiers:none';
コードベースのサイズによっては、実行に時間がかかる場合があります。
PL/Scopeでコンパイルされていないパッケージの場合、スキャナはパッケージに対する依存性のみを検出しますが、レポートではその中で参照される各メソッドはリストされません。
要件
アプリケーション所有者スキーマには、CREATE PROCEDURE
権限が必要です。
既知の制限事項
- 動的に生成されたSQL内の依存性は検出されません(即時実行またはdbms_sqlの使用など)。
- 再帰的な依存性(スキャンで検出されたオブジェクトによって参照される他のデータベース・オブジェクトなど)は検出されません。ヒント:
USER_DEPENDENCIES
データベース・ビューを問い合せると、再帰的な依存性が見つかる場合があります。 - サポート・オブジェクト・スクリプトの依存性(必要なオブジェクト名、インストール・スクリプト、アップグレード・スクリプトまたはアンインストール・スクリプトで発生する可能性のある依存性を含む)は検出されません。
- SQLを戻すファンクションから発生する依存性は検出されません(ファンクションが実行されないため、生成するSQLは依存性をスキャンしません)。
- ただし、SQL式に基づいてレポート列の依存性は常に検出されるわけではありません。
- RESTサービス問合せ(
#APEX$SOURCE_DATA#
)から発生する依存性は検出されません。 - データ・プロファイルSQL式から発生する依存性はまだ検出されません。
構文
APEX_APP_OBJECT_DEPENDENCY.SCAN (
p_application_id IN NUMBER,
p_page_id IN NUMBER DEFAULT NULL,
p_options IN VARCHAR2 DEFAULT c_option_all )
パラメータ
パラメータ | 説明 |
---|---|
p_application_id |
分析するアプリケーションのID。 |
p_page_id |
アプリケーションの単一ページを分析するには、このパラメータを設定します。 |
p_options |
オプションは次のとおりです:
|
例
BEGIN
apex_app_object_dependency.scan ( p_application_id => :app_id );
END;
親トピック: APEX_APP_OBJECT_DEPENDENCY