Oracle E-Business Suite開発者ガイド リリース12.2 E53035-01 | ![]() 目次 | ![]() 前へ | ![]() 次へ |
この章では、Oracle E-Business Suiteリリース12.2のデータベース・オブジェクト開発およびオンライン・パッチ適用に関する新しい標準または変更された標準について説明します。その他の開発標準については記載していません。
注意: これらの標準は、アプリケーション開発者が直接管理できるオブジェクトおよびデータにのみ適用されます。データベースでは、内部/非表示の表、索引、タイプおよびその他のオブジェクトが生成される場合があります。開発標準は、これらの生成オブジェクトには適用されません。
注意: これらの標準の明示的なスキーマ名に対する参照(例: APPS)は、概念として考える必要があり、実際のスキーマ名とはかぎりません。スキーマ名は、インストール時にスキーマに対して異なる名前が選択される場合があるため、ソフトウェア・コードには組み込まないでください。このルールの唯一の例外はAPPS_NEスキーマであり、この名前はすべてのインストールで使用されることが保証されています。関連項目: APPS_NE以外のOracle E-Business Suiteデータベース・ユーザーに対するエディショニングの有効化。
この章の各項は、オブジェクト・タイプごとに編成されています。各オブジェクト・タイプごとに、次のタイプの標準が提供されます。
これらは、オブジェクトの定義に関して従う必要があるルールです。これらのルールは、Oracle E-Business Suiteリリース12.2の基本リリース内のすべてのオブジェクトに適用されます。
これらは、アプリケーション実行時にオブジェクトを使用する際に従う必要があるルールです。
これらは、アプリケーション実行時にオブジェクト定義を生成または変更する際に従う必要があるルールです。
これらは、カスタム・オブジェクトまたはパッチで従う必要があるルールです。Oracle E-Business Suiteの開発者は、オンライン・パッチでオブジェクト定義を配信する際にもこれらの標準に従う必要があります。これらのルールは、Oracle E-Business Suiteリリース12.2上のすべてのカスタマイズ、パッチおよびアップグレードに適用されます。これらのルールは、Oracle E-Business Suiteリリース12.2のアップグレード自体を構成するパッチには適用されません。
このユーティリティでは、データベース・オブジェクトについて、オンライン・パッチ適用開発標準に対するすべての違反がレポートされます。カスタム・コードの一部である、このレポートにリストされたオブジェクトを修正する必要があります。違反を修正しない場合は、このレポートにリストされたオブジェクトにパッチを適用するために、オンライン・パッチ適用インフラストラクチャを使用することはできません。
次のコマンドを使用してオンライン・パッチ適用データベース準拠チェッカを実行して、オンライン・パッチ適用データベース標準の違反をチェックしてください。
sqlplus <APPS username> @$AD_TOP/sql/ADZDDBCC.sql
オンライン・パッチ適用の2つの主要な要件は、2つの簡単なルールで記述できます。
オンライン・パッチが実行中のアプリケーションを中断しないこと
実行中のアプリケーションがオンライン・パッチを中断しないこと
オンライン・パッチ適用の基本は、Oracle Database 11gR2のエディションベースの再定義(EBR)と呼ばれる機能です。これは、Oracle E-Business Suiteインストールで、単一システム上でアプリケーションの2つのエディション(バージョン)がサポートされることを意味します。アプリケーションは、実行エディションと呼ばれるファイルとデータベース・オブジェクトのセット上で実行されます。オンライン・パッチは、パッチ・エディションと呼ばれる実行エディションのコピーに適用されます。データベース表、索引およびその他の非エディション化オブジェクトは、両方のエディションで共有されます。
オンライン・パッチ適用の要件には、次の一般的な開発標準が含まれています。
オンライン・パッチでは、パッチ・エディションのエディション化オブジェクトのみを変更すること。
オンライン・パッチでは、実行中のアプリケーションで使用される非エディション化オブジェクトまたはデータに非互換の変更を加えないこと。
実行中のアプリケーションは、エディション化オブジェクトに対する動的な変更をパッチ・エディションに複製すること。
実行中のアプリケーションは、オンライン・パッチ適用で保守される非エディション化オブジェクトに対して変更を加えないこと。
残りの開発標準では、データベース・オブジェクトの各タイプに対して、前述の基準を確実に満たすために役立つ指示を提供します。
エディション化オブジェクトの定義は、各データベース・エディションで異なる場合があります。これは、このようなオブジェクトに対しては、(実行エディションで)実行中のアプリケーションに影響を与えずに(パッチ・エディションで)パッチを簡単に適用できることを意味します。
ビューは、1つ以上の表の論理表現です。これは、そのデータをその元となる表から導出する格納済の問合せと考えることができます。ビューの詳細は、『Oracle Database管理者ガイド 11g リリース2 (11.2)』を参照してください。
ビュー名は、引用符で囲まれていない識別子である必要があります。
注意: 引用符で囲まれていない識別子では、A-Z、0-9、_、#、$の文字のみを使用できます。引用符で囲まれている識別子は、テクノロジ・コンポーネントで使用するために予約されています。
結合ビューでは、実表のROWIDにマップされるROW_ID列を定義する必要があります。
結合ビューの暗黙的なROWID疑似列は参照しないでください。結合ビューの暗黙的ROWIDの使用可能性は、警告なしに変更される場合があります。かわりに、すべての結合ビューに存在する必要がある明示的なROW_ID列を使用してください。
パッチ・エディションが存在する間に、実行中のアプリケーションでビューが作成、置換または削除された場合は、同じ処理をパッチ・エディションで実行する必要があります。この要件は、次の2つのいずれかの方法で満たすことができます。
実行エディションの動的DDLをパッチ・エディションに複製します。
ビューに対する実行エディションのDDLをパッチ・エディションに自動的に複製する、AD_DDLを使用します。
例:
/* Code example: Create a view using AD_DDL */
declare
L_APP varchar2(8);
L_NAME varchar2(30);
L_STMT varchar2(32000);
begin
l_app := 'FND';
l_name := 'FND_EXAMPLE_V';
l_stmt :=
'create or replace view '||l_name||' as '||
'select user_id, user_name from fnd_user '||
'where user_id < 10000';
ad_ddl.do_ddl(
ad_zd.applsys_schema, -- applsys schema name
l_app, -- application short name for your product
ad_ddl.create_view, -- statement type
l_stmt, -- statement text
l_name -- view name
);
end;
/
オンライン・パッチ適用中に動的DDLを実行するアプリケーション処理を、無効化またはブロックします。
この方法は、通常の顧客操作を中断せずに、依存機能を数日間続けて使用不可にできる場合にのみ使用できます。
この方法は、一時的な回避策としてのみ考えてください。
関連項目:
CTXSYS、SYSTEM、SYSまたはPUBLICなど、非エディション化データベース・スキーマにビューをインストールしないでください。
PL/SQLパッケージの詳細は、『Oracle Database PL/SQL言語リファレンス 11g リリース2 (11.2)』を参照してください。
パッケージ名は、引用符で囲まれていない識別子である必要があります。
注意: 引用符で囲まれていない識別子では、A-Z、0-9、_、#、$の文字のみを使用できます。引用符で囲まれている識別子は、テクノロジ・コンポーネントで使用するために予約されています。
特別な考慮事項はありません。
パッチ・エディションが存在する間に、実行中のアプリケーションでPL/SQLが作成、置換または削除された場合は、同じ処理をパッチ・エディションで実行する必要があります。この要件は、次の2つのいずれかの方法で満たすことができます。
実行エディションの動的DDLをパッチ・エディションに複製します。
PL/SQLに対する実行エディションのDDLをパッチ・エディションに自動的に複製する、AD_DDLを使用します。
例:
-- Example of using AD_DDL to create a PL/SQL package
DECLARE
l_applsys_schema varchar2(30);
BEGIN
-- Get applsys schema name
SELECT user
INTO l_applsys_schema
FROM dual;
-- Build and create Package Spec
ad_ddl.build_package('create package FND_GB_TEST as', 1);
ad_ddl.build_package(' procedure test;', 2);
ad_ddl.build_package('end;', 3);
ad_ddl.create_package(l_applsys_schema, 'FND', 'FND_GB_TEST', 'FALSE', 1, 3);
-- Build and create Package Body
ad_ddl.build_package('create package body FND_GB_TEST as', 1);
ad_ddl.build_package(' procedure test is', 2);
ad_ddl.build_package(' begin null; end;', 3);
ad_ddl.build_package('end;', 4);
ad_ddl.create_package(l_applsys_schema, 'FND', 'FND_GB_TEST', 'TRUE', 1, 4);
END;
/
オンライン・パッチ適用中に動的DDLを実行するアプリケーション処理を、無効化またはブロックします。
この方法は、通常の顧客操作を中断せずに、依存機能を数日間続けて使用不可にできる場合にのみ使用できます。
この方法は、一時的な回避策としてのみ考えてください。
関連項目:
CTXSYS、SYSTEM、SYSまたはPUBLICなど、非エディション化スキーマにPL/SQLをインストールしないでください。
タイプの詳細は、『Oracle Database PL/SQL言語リファレンス 11g リリース2 (11.2)』を参照してください。
特別な考慮事項はありません。
エディション化ユーザー定義タイプは、列タイプまたはアドバンスト・キュー(AQ)ペイロード・タイプとして使用できません。
PL/SQLパッケージと同様です。
PL/SQLパッケージと同様です。
PL/SQLトリガーの詳細は、『Oracle Database PL/SQL言語リファレンス 11g リリース2 (11.2)』を参照してください。
トリガー名は、引用符で囲まれていない識別子である必要があります。
注意: 引用符で囲まれていない識別子では、A-Z、0-9、_、#、$の文字のみを使用できます。引用符で囲まれている識別子は、テクノロジ・コンポーネントで使用するために予約されています。
表トリガーは、表上ではなく、エディショニング・ビュー(EV)上にある必要があります。表上のトリガーは、リリース12.2のアップグレード時に、対応するエディショニング・ビューに自動的に移動されます。エディショニング・ビューの詳細は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド 11g リリース2 (11.2)』を参照してください。
ヒント: この標準に準拠する最も簡単な方法は、APPS表シノニム上にトリガーを作成することです。結果のトリガーはシノニムが指す場所に作成され、この場所が存在する場合はこれがエディショニング・ビューになります。
注意: EVトリガーは、実際の表の列ではなく、エディショニング・ビューを介して論理列を参照します。
パッチ・エディションが存在する間に、ランタイム・アプリケーションでトリガーが作成、置換または削除された場合は、同じ処理をパッチ・エディションで実行する必要があります。この要件は、次の2つのいずれかの方法で満たすことができます。
実行エディションの動的DDLをパッチ・エディションに複製します。
トリガーに対する実行エディションのDDLをパッチ・エディションに自動的に複製する、AD_DDLを使用します。
例:
/* Code example: Create a trigger using AD_DDL */
declare
L_APP varchar2(8);
L_NAME varchar2(30);
L_STMT varchar2(32000);
begin
l_app := 'FND';
l_name := 'FND_EXAMPLE_TRG';
l_stmt :=
'create or replace trigger '||l_name||' '||
'before insert or update on fnd_user for each row '||
'begin '||
' ad_zd_log.message(''test'', ''STATEMENT'', ''hello!''); '||
'end;';
ad_ddl.do_ddl(
ad_zd.applsys_schema, -- applsys schema name
l_app, -- application short name for your product
ad_ddl.create_trigger, -- statement type
l_stmt, -- statement text
l_name -- trigger name
);
end;
/
オンライン・パッチ適用中に動的DDLを実行するアプリケーション処理を、無効化またはブロックします。この方法は、通常の顧客操作を中断せずに、依存機能を数日間続けて使用不可にできる場合にのみ使用できます。
この方法は、一時的な回避策としてのみ考えてください。
関連項目:
CTXSYS、SYSTEM、SYSまたはPUBLICなど、非エディション化スキーマにトリガーをインストールしないでください。
シノニムの管理の詳細は、『Oracle Database管理者ガイド 11g リリース2 (11.2)』を参照してください。
ほとんどのAPPSシノニムがadopパッチ適用ツールによって自動的に作成されます。自動的に管理されるシノニムは作成、変更または削除しないでください。
表シノニムは、表ではなくエディショニング・ビューを指す必要があります。
パブリック・シノニムは作成しないでください。
APPSシノニムを使用して、Oracle E-Business Suiteの表を参照します。表を直接参照しないでください。
パッチ・エディションが存在する間に、実行中のアプリケーションでシノニムが作成、置換または削除された場合は、同じ処理をパッチ・エディションで実行する必要があります。この要件は、次の2つのいずれかの方法で満たすことができます。
実行エディションの動的DDLをパッチ・エディションに複製します。
シノニムに対する実行エディションのDDLをパッチ・エディションに自動的に複製する、AD_DDLを使用します。
例:
/* Code example: Create a synonym using AD_DDL */
declare
L_APP varchar2(8);
L_NAME varchar2(30);
L_STMT varchar2(32000);
begin
l_app := 'FND';
l_name := 'FND_USERS';
l_stmt :=
'create or replace synonym '||l_name||' for fnd_user';
ad_ddl.do_ddl(
ad_zd.applsys_schema, -- applsys schema name
l_app, -- application short name for your product
ad_ddl.create_synonym, -- statement type
l_stmt, -- statement text
l_name -- view name
);
end;
/
オンライン・パッチ適用中に動的DDLを実行するアプリケーション処理を、無効化またはブロックします。
この方法は、通常の操作を中断せずに、依存機能を数日間続けて使用不可にできる場合にのみ使用できます。
この方法は、一時的な回避策としてのみ考えてください。
関連項目:
CTXSYS、SYSTEM、SYSまたはPUBLICなど、非エディション化スキーマにシノニムをインストールしないでください。
Oracle Virtual Private Databaseの詳細は、『Oracle Databaseセキュリティ・ガイド 11g リリース2 (11.2)』を参照してください。
VPDポリシーは、表上ではなくエディショニング・ビューまたは表シノニム上にある必要があります。
表上のVPDポリシーは、リリース12.2のアップグレード時に、対応するエディショニング・ビューに自動的に移動されます。
特別な考慮事項はありません。
ヒント: VPDポリシーを追加または削除するには、SQLスクリプトからFND_ACCESS_CONTROL_UTILパッケージをコールします(&phase=plb)。
これらのオブジェクト・タイプは、データベース・レベルでは非エディション化であり、これはすべてのデータベース・エディションに表示される単一の定義があることを意味します。しかし、このカテゴリ内の各オブジェクトに対しては、実行中のアプリケーションに影響を与えずにオブジェクトにパッチを適用できるように、オンライン・パッチ適用ツールによって特別なサポートが実装されます。新しい制限および標準が各実質的エディション化オブジェクト・タイプに適用されます。
通常の表は、アプリケーション・パッチ適用時に作成、変更または削除されます。これに対して、動的表は、実行時にアプリケーションによって作成、変更または削除されます。この項の標準は、通常の表にのみ適用されます。
通常の表に対して実質的エディション化サポートを実装するために、オンライン・パッチ適用テクノロジによって、各表に新しいエディショニング・ビュー層がインストールされて保守されます。エディショニング・ビューでは、アプリケーションで使用される論理列名が、各エディションでそれらの属性の格納に使用される実際の格納列にマップされます。エディショニング・ビューはオンライン・パッチ適用時に自動的に保守されますが、開発データベースで表を手作業で作成または変更する開発者は、エディショニング・ビューを保守するための新しい手順に従う必要があります。
注意: これらの標準の一部について、グローバル標準準拠チェッカ(GSCC)スクリプトの出力に対応するコードが提供されています。コードの例はGSCC File.Gen.34です。このスクリプトの詳細は、「グローバル標準準拠チェッカ (GSCC)の出力」を参照してください。
表の管理に関するガイドラインの詳細は、『Oracle Database管理者ガイド 11g リリース2 (11.2)』を参照してください。
表名に#文字は使用できません(GSCC File.Gen.34)。
表名は、最初の29バイトまでは一意である必要があります。
表は、APPSではなく、Oracle E-Business Suite製品スキーマまたはカスタム製品スキーマで所有される必要があります(GSCC File.Gen.35)。
ベース列名の最後の文字として使用できるのは#のみです(GSCC File.Gen.36)。
ベース列名は、28バイト以内である必要があります(GSCC File.Xdf.4)。
注意: オンライン・パッチ適用では現在、この標準に違反する列のパッチ適用はサポートされていません。違反列にパッチを適用する必要がある場合は、パッチの一部として、準拠列(つまり、短い名前の列)に置換する必要があります。新しい短い列名を参照するようにアプリケーション・コードを更新する必要があります。
列タイプは、ビルトイン・タイプであるか、または非エディション化ユーザーが所有するユーザー定義タイプである必要があります(GSCC File.Gen.37)。
列タイプは、LONGまたはLONG RAWにできません。関連項目: 「LONGからCLOBへの変換プロシージャ」(GSCC File.Xdf.4)。
列タイプはROWIDにしないでください(GSCC File.Xdf.4)。
ターゲット表がパッチ適用、ロードまたは再構築された場合は、ROWID参照が無効になる場合があります。オンライン・パッチ適用の境界をまたぐROWID参照の格納は安全ではありません。
問合せ/DML文は、表シノニムまたはエディショニング・ビューを介して表にアクセスする必要があります(GSCC File.Gen.41)。
アプリケーション・ランタイム・コードで表の列名を問合せ、表示または格納する場合は、ほとんどの場合で物理列名ではなく論理列名を使用する必要があります。
ランタイム・アプリケーション・コードについては、「論理列対物理列のガイドライン」に従ってください。
警告: 一部のディクショナリ・ビュー(ALL_TAB_COLUMNSなど)には、エディショニング・ビューを問い合せるか実表データを問い合せるかに応じて、論理表列と物理表列両方の情報が含まれます。詳細は、「論理列対物理列のガイドライン」を参照してください。
問合せで、必要な論理列または物理列の情報を取得していることを確認してください。
TRUNCATEなどのDDL文は、エディショニング・ビューを指すAPPS表シノニム上では動作しません。表を切り捨てるには、切捨てコマンドに実際の実表(owner.table_name)を指定する必要があります。
アプリケーション管理表は、通常のアプリケーション実行時にアプリケーション・ロジックによって作成および保守される表です。
アプリケーション管理(動的)表には、エディショニング・ビューは設定できません。
アプリケーション管理表をオンライン・パッチで変更しないでください(GSCC File.Gen.38)。
通常の表は、オンライン・パッチ適用で作成および保守(さらにエディショニング・ビューが設定)されます。
アプリケーション・ロジックで実行時に通常の表が変更される場合は、AD_DDLインタフェースを使用して動的DDLを実行する必要があります。
パッチ・エディションが存在している間に実行エディションで通常の表を変更しないでください。
ODFまたはXDFを使用して表定義にパッチを適用します(GSCC File.Sql.81)。
(自動)表は、名前がsubstrb(table_name, 1, 29)||'#'のエディショニング・ビューによって処理されます。
(自動)エディショニング・ビューでは、各論理列名がその列の最新バージョンにマップされます。
例: 表FND_PROFILE_OPTIONSには、FND_PROFILE_OPTIONS#というエディショニング・ビューがあります。
実行中のアプリケーションと互換性のない方法で既存の列を更新しないでください。かわりに、改訂列を作成し、更新したデータを改訂列に格納してください。
改訂列名の形式は、<logical_column_name>#<version_tag>です。
<Version_tag>は、[0-9A-Z]+の形式の文字列です。
バージョン・タグは、SQLの>演算子を使用して比較されます。大きい方のタグが新しいバージョンです。
例: 列AMOUNTは、改訂列AMOUNT#1で置換されます。
例: 列AMOUNT#1は、改訂列AMOUNT#2で置換されます。
forward crosseditionトリガー(FCET)を使用して改訂列にデータを移入します。
FCETは、APPSユーザーが所有している必要があります。
FCET名の形式は<table_name>_F<change_number>である必要があります。
例: FND_PROFILE_OPTIONS_F3
FCETは、disableオプションを指定して作成する必要があります。
特定の表に対する2回目以降の変更のためのFCETでは、トリガー定義にそれが<previous_fcet_name~>の後に起動されることを指定する必要があります。
FOLLOW句の詳細は、『Oracle Database PL/SQL言語リファレンス』を参照してください。
FCETは、phase=ccetで作成スクリプトを実行するDBDRVコマンドを使用して作成する必要があります。
FCETは、phase=ccetでAD_ZD_TABLE_APPLY <fcet_name>をコールするDBDRVコマンドを使用して適用する必要があります。
ヒント: forward crosseditionトリガーのテンプレートを使用します。
パッチ実行のクリーン・アップ・フェーズまで既存の表は削除しないでください。
遅延削除の例は、「遅延削除のコード例」を参照してください。
既存列は削除しないでください。新しい改訂列で置換される列は、クリーン・アップ時に自動的に削除されます。論理列の削除はサポートされていません。
既存の表の名前は変更しないでください。
シード・データ表には、ランタイム・アプリケーション機能の制御に使用され、そのためにOracle E-Business Suite Developmentによるパッチ適用の対象となるデータが含まれています。シード・データのオンライン・パッチ適用を可能にするには、すべてのシード・データ表で新しいエディション化データ格納アーキテクチャが実装される必要があります。これには、表への新しいエディションのストライプ化列の追加、および各エディションにおける正しいデータ・ストライプのフィルタが含まれています。
シード・データ表は、通常の表のすべての要件を満たす必要があります。
シード・データ表は、エディション化データ格納を実装する必要があります。
シード・データ・マネージャのUPGRADEプロシージャ(AD_ZD_SEED.UPGRADE('TABLE_SYNONYM'))をコールして、通常の表をエディション化データ格納アップグレードにアップグレードします。アップグレードAPIでは、次の変更が自動的に行われます。
新しい列ZD_EDITION_NAME NOT NULL VARCHAR2(30)を追加します。
表に対するすべての一意索引および一意制約に、ZD_EDITION_NAME列を含めます。
表を参照するすべての外部キー制約を削除します。
ZD_EDITION_NAME列にデータを移入するためのEVトリガーを追加します。
ZD_EDITION_NAME列に基づいて行をフィルタするためのEV VPDポリシーを追加します。
実行エディションのシード・データ・コンテンツのパッチ・エディションからの変更をブロックします。
Oracle E-Business Suiteリリース12.2のシード・データ表は、リリース12.2へのアップグレード中に、エディション化データ格納にアップグレードする必要があります。
各製品で、次のテンプレートを使用してシード・データ表のアップグレード・スクリプトを作成する必要があります。製品によって所有されている各シード・データ表ごとに、AD_ZD_SEED.UPGRADEへのコールを1回追加します。
重要: 製品外部の表に対してUPGRADEプロシージャをコールしないでください。製品は、実際に所有している表のみをアップグレードする必要があります。
シード・データ表のアップグレード・スクリプトのテンプレート
REM $Header: $
REM dbdrv: sql ~PROD ~PATH ~FILE none none none sqlplus &phase=last+95 \
REM dbdrv: checkfile:~PROD:~PATH:~FILE
REM /*=======================================================================+
REM | Copyright (c) 2012 Oracle, California, USA |
REM | All rights reserved. |
REM +=======================================================================+
REM | Seed Data Table Upgrade for Online Patching:
REM | Converts Seed Data Tables to support Editioned Data Storage
REM +=======================================================================*/
SET VERIFY OFF
WHENEVER SQLERROR EXIT FAILURE ROLLBACK;
WHENEVER OSERROR EXIT FAILURE ROLLBACK;
exec AD_ZD_SEED.UPGRADE('<seed_data_table_name>')
...
commit;
exit;
シード・データ表のアップグレード・スクリプトの例
REM $Header: $
REM dbdrv: sql ~PROD ~PATH ~FILE none none none sqlplus &phase=last+95 \
REM dbdrv: checkfile:~PROD:~PATH:~FILE
REM /*=======================================================================+
REM | Copyright (c) 2012 Oracle, California, USA |
REM | All rights reserved. |
REM +=======================================================================+
REM | Seed Data Table Upgrade for Online Patching:
REM | Converts Seed Data Tables to support Editioned Data Storage
REM +=======================================================================*/
SET VERIFY OFF
WHENEVER SQLERROR EXIT FAILURE ROLLBACK;
WHENEVER OSERROR EXIT FAILURE ROLLBACK;
exec AD_ZD_SEED.UPGRADE('FND_NEW_MESSAGES')
exec AD_ZD_SEED.UPGRADE('FND_APPLICATION')
exec AD_ZD_SEED.UPGRADE('FND_APPLICATION_TL')
commit;
exit;
シード・データ表には、一意の索引が必要です。
一意の索引がないと、シード・データに対する実行エディションの更新をパッチ・エディションのコピーに同期できず、失われます。
この標準は、表がランタイム・アプリケーションに対して読取り専用の場合は適用されません。
INSERT ALL(『Oracle Database SQL言語リファレンス』を参照)は、シード・データ表に対してサポートされなくなりました。この文を別々の挿入文として再コーディングしてください。
シード・データ表の行に対するROWID値は、オンライン・パッチ後に変更される場合があります。単一のトランザクションまたはプログラム実行内でシード・データのROWID値を使用できますが、パッチ適用境界をまたいだシード・データのROWIDの格納は有効ではなくなりました。
アプリケーション・ロジックでZD_EDITION_NAME列を使用しないようにしてください。
ZD_EDITION_NAME列の選択、挿入または更新、あるいは列値の参照はどのような場合でも実行しないでください。
ZD_EDITION_NAMEをビュー、APIまたはアプリケーション・ロジックに組み込まないでください。
ZD_EDITION_NAMEをユーザー・インタフェース、レポートまたはその他のユーザー表示に組み込まないでください。
ZD_EDITION_NAMEをBC4Jエンティティ・オブジェクト、ビュー・オブジェクトまたはその他の自動的に生成されるアーチファクトに組み込まないでください。生成されたコードからZD_EDITION_NAME列を明示的に削除する必要がある場合があります。
適用はありません。
通常の表のパッチ適用標準がシード・データ表にも適用されます。
デフォルト値のないNOT NULL制約があるか、または一意索引の一部である既存の列に対して改訂列を作成する場合、開発者は、既存の制約を満たす方法で既存の列にデータを移入するために、reverse crosseditionトリガーを作成する必要があります。reverse crosseditionトリガーは、オンライン・パッチ適用中に(パッチ・エディションから)シード・データ表にデータがロードされた場合にのみ起動されます。
reverse crosseditionトリガー・ロジックは、既存列のNULL以外の制約または一意制約を満たす必要があります。既存の列に移入されるデータは、実行中のアプリケーションでは表示されず、意味のあるものにする必要はありません。
ヒント: NOT NULLの場合のこの問題を回避するには、NOT NULL列に対してデフォルト値を常に定義します。
コード例: reverse crosseditionトリガー
REM ---- Create RCET ----
REM dbdrv: sql ~PROD ~PATH ~FILE \
REM dbdrv: none none none sqlplus &phase=ccet \
REM dbdrv: checkfile:~PROD:~PATH:~FILE &un_fnd
REM ---- Apply RCET ----
REM dbdrv: sql ad patch/115/sql AD_ZD_TABLE_APPLY.sql \
REM dbdrv: none none none sqlplus &phase=acet \
REM dbdrv: checkfile:~PROD:~PATH:~FILE XYZ_SERVICE_TYPES_R1
REM Copyright (c) 2012 Oracle, All Rights Reserved
REM $Header$
REM Update XYZ_SERVICE_TYPES.SERVICE_TYPE to varchar2(30)
SET VERIFY OFF;
WHENEVER SQLERROR EXIT FAILURE ROLLBACK;
WHENEVER OSERROR EXIT FAILURE ROLLBACK;
create or replace trigger XYZ_SERVICE_TYPES_R1
before insert or update on &1..XYZ_SERVICE_TYPES
for each row reverse crossedition
disable
begin
:new.service_type := substrb(:new.service_type#1, 1, 8);
end;
/
commit;
exit;
シード・データ表のコンテンツには、表に対してPREPAREプロシージャをコールするシード・データ・ローダー(シード・データ・ローダーの標準を参照)を使用して、パッチを適用する必要があります。
(自動)シード・データ表のコンテンツは、PREPAREがコールされるまでパッチ・エディションから変更できません。
(自動)PREPAREプロシージャでは、実行エディションのシード・データの新しいパッチ・エディション・コピーが作成されます。
(自動)PREPAREプロシージャでは、パッチ・エディション・コピー内の実行エディションのシード・データの変更を同期するための同期化トリガーである、forward crosseditionトリガーがインストールされます。
注意: 同期化トリガーは、シード・データ表に一意索引がない場合は作成されません。
次の標準がシード・データ・ローダーに適用されます。
FNDLOAD構成ファイル(LCTファイル)に各エンティティに対するPREPARE文を含めて、UPLOADコマンドのロード先のシード・データ表をリストする必要があります。
構文:
PREPARE <entity>
TABLE <seed_data_table_name1>
TABLE <seed_data_table_name2>
...
LCTファイル内のUPLOAD / DOWNLOAD / PREPARE文の順序は重要ではありません。
<seed_data_table_name >は、APPSスキーマからシード・データ表を参照するために使用される名前(つまり、表を指すAPPSシノニムの名前)です。APPSシノニム名が実際の表名と異なる場合、この引数に対してはAPPSシノニムが使用されます。
次のいずれかに該当する場合、エンティティにPREPARE文は必要ないことに注意してください。
エンティティが実行時に使用されない場合。
オンライン・パッチ適用時にエンティティにパッチが適用されないか、またはUPLOADがサポートされていない場合。
子エンティティによってロードされるシード・データ表が親エンティティによって準備される場合。
PREPAREコールがアップロード・ロジックによってすでに処理されている場合。
ロードされるシード・データ表のみをリストしてください。たとえば、最初にアップロード・ロジックで一時表にデータを格納した場合、一時表はPREPARE文にリストしないでください。シード・データ表のみを準備できます。
例:
# $Header: wfmlrp.lct 120.0 2005/05/07 16:19:43 appldev ship $
COMMENT = "dbdrv: exec fnd bin FNDLOAD bin &phase=daa+52 checkfile:~PROD:~PATH:~FILE &ui_apps 0 Y UPLOAD @FND:patch/115/import/wfmlrp.lct @~PROD:~PATH/~FILE"
DEFINE MAILERPARAMS
KEY NAME VARCHAR2(12)
KEY PARAMETER VARCHAR2(30)
BASE VALUE VARCHAR2(200)
BASE REQUIRED VARCHAR2(1)
BASE CALLBACK VARCHAR2(60)
BASE ALLOWRELOAD VARCHAR2(1)
END MAILERPARAMS
DOWNLOAD MAILERPARAMS
"select NAME, PARAMETER, VALUE, REQUIRED, CB, ALLOW_RELOAD
from WF_MAILER_PARAMETERS
where NAME = :NAME"
###
### Do NOT call AD_ZD_SEED.PREPARE from the UPLOAD statement of an LCT file.
### Use the LCT PREPARE statement instead (see below)
###
UPLOAD MAILERPARAMS
"begin
wf_mailer_parameter.PutParameter(:NAME, :PARAMETER,:VALUE, :REQUIRED, :CALLBACK, :ALLOWRELOAD);
end;"
###
### New for Online Patching
###
PREPARE MAILERPARAMS
TABLE WF_MAILER_PARAMETERS
オンライン・パッチ適用に使用されるその他(FNDLOAD以外)のシード・データ・ローダーは、データを表にロードする前に、シード・データ・マネージャのPREPAREプロシージャをコールする必要があります。この要件は、Oracle E-Business Suiteリリース12.2のアップグレードにのみ使用されるスクリプトおよびローダーには適用されないことに注意してください。
構文: AD_ZD_SEED.PREPARE('<table_name>');
注意: <table_name>は、APPSスキーマから表を参照するために使用される名前(つまり、表を指すAPPSシノニムの名前)です。APPSシノニム名が実際の表名と異なる場合、この引数に対してはAPPSシノニムが使用されます。
AD_ZD_SEED.PREPAREプロシージャは、dbdrv: sql ... sql実行メソッドを使用してスクリプトからコールできません。かわりに、dbdrv sql ... sqlplusを使用してください。
悪い例: dbdrv: sql ~PROD ~PATH ~FILE none none none sql &phase=upg+14 ...
良い例: dbdrv: sql ~PROD ~PATH ~FILE none none none sqlplus &phase=upg+14 ...
データを表にロードする前に、PREPAREコールを実行します。ロードには、シード・データ・コンテンツの変更(挿入、更新、削除)が含まれます。
AD_ZD_SEED.PREPAREプロシージャ・コールを使用したSQLスクリプトの例
REM $Header: $
REM dbdrv: sql ~PROD ~PATH ~FILE none none none sqlplus_single &phase=upa \
REM dbdrv: checkfile(115.2=120.1):~PROD:~PATH:~FILE &un_fnd &pw_fnd
REM /*=======================================================================+
REM | Copyright (c) 2012 Oracle, Belmont, California, USA |
REM | All rights reserved. |
REM +=======================================================================+
REM |
REM | NAME
REM | ldrexample.sql
REM |
REM | DESCRIPTION
REM | This script adds a policy to the wf_signature_policies
REM +=======================================================================*/
SET VERIFY OFF;
WHENEVER SQLERROR EXIT FAILURE ROLLBACK
WHENEVER OSERROR EXIT FAILURE ROLLBACK
--
-- NEW FOR ONLINE PATCHING
--
exec ad_zd_seed.prepare('WF_SIGNATURE_POLICIES')
insert into WF_SIGNATURE_POLICIES
(SIG_POLICY, SIG_REQUIRED, FWK_SIG_FLAVOR,
EMAIL_SIG_FLAVOR, RENDER_HINT, DEFAULT_POLICY)
select 'DEFAULT', 'N', Null, Null, Null, 'Y'
from dual
where not exists
(select 1
from WF_SIGNATURE_POLICIES
where SIG_POLICY = 'DEFAULT');
commit;
exit;
オンライン・パッチ適用時に実行されるアップロード・ロジックでは、マテリアライズド・ビューは参照できませんが、これは、マテリアライズド・ビューが非エディション化オブジェクトであり、パッチ・エディションではなく実行エディションに従って定義されるためです。
特別な考慮事項はありません。
適用はありません。
適用はありません。
索引の詳細は、『Oracle Database概要 11g リリース2 (11.2)』を参照してください。
索引名には、アンダースコア(_)が含まれている必要があります(GSCC File.Gen.39)。
シード・データ表の一意の索引にZD_EDITION_NAMEが含まれている必要があります。
注意: このルールは、シード・データ表でad_zd_seed.upgradeをコールすると自動的に実装されますが、新しい一意の索引を既存のシード・データ表に追加する場合は、索引定義にZD_EDITION_NAME列を含める必要があります。
シード・データ表の一意の索引には、ZD_EDITION_NAME以外に、少なくとも1つのNULL以外の列が必要です。
注意: 一意の索引にすべてNULL値可能な列がある場合は、表内の各行に、索引付き列に対して少なくとも1つのNULL以外の列値が必要です。Oracle E-Business Suite 12.2アップグレードの一部として、これに該当することを確認する必要があります(索引付き列がすべてNULLである行を選択し、この標準を満たすように必要に応じて削除または更新します)。
索引キーの長さは3125バイト未満である必要があります。
索引キーの長さは、索引内の各列に対する列の長さの合計に、列ごとに1バイトずつ加算した値です。
索引キーの長さが3125バイトより大きい場合、オンライン索引定義を使用して索引を改訂することはできず、索引改訂時に完全な表ロックが保持されます。
ファンクション・ベースの索引は、エディション化Oracle E-Business Suiteオブジェクトを参照できません(UPPER()などのビルトイン・データベース・ファンクションは受け入れられます)。
CREATE INDEX ... ON ...文では、APPS表シノニムではなく、完全修飾表名を指定する必要があります。
良い例: create index SOME_TABLE_N1 on SCHEMA.SOME_TABLE ...
悪い例: create index SOME_TABLE_N1 on SOME_TABLE ...
ODFまたはXDFを使用して索引定義を配信します。
(自動)新規または改訂索引は、最初は無効な状態で代替名を使用して作成されます。これらの索引は、カットオーバー処理時に有効化され、名前が変更されます。
パッチ実行のクリーン・アップ・フェーズまで既存の索引は削除しないでください。
遅延削除の例は、「遅延削除のコード例」を参照してください。
整合性制約の詳細は、『Oracle Database概要 11g リリース2 (11.2)』を参照してください。
制約名には、アンダースコア(_)が含まれている必要があります。
表に主キー制約を作成しないでください。かわりに、一意の索引または一意の制約を作成してください。
既存の主キー制約は機能しますが、オンライン・パッチで改訂主キー制約を作成することはできません。
外部キー制約は作成しないでください(シード・データ表は参照できません)。
シード・データ表に対して一意の制約を動的に作成する場合は、制約にZD_EDITION_NAME列が含まれている必要があります。
既存の主キー制約にパッチを適用しようとしないでください。かわりに一意の制約を作成する必要があります。
ODFまたはXDFを使用して制約定義を配信します(GSCC File.Sql.81)。
新規または改訂制約は、最初は無効な状態で作成され、カットオーバー時に有効化されます。
XDF (XML定義ファイル)機能の使用方法の詳細は、「XML定義ファイル・ユーティリティ」を参照してください。
マテリアライズド・ビューは、非エディション化オブジェクト・タイプであるため、エディション化オブジェクトを直接参照できません。この制限を回避するために、Oracle E-Business Suiteのオンライン・パッチ適用テクノロジでは、新しい実質的エディション化マテリアライズド・ビュー複合オブジェクトが実装されます。アプリケーション開発者は、通常のビューでマテリアライズド・ビュー定義(問合せ)を作成および保守します。オンライン・パッチ適用テクノロジによって、エディション化データベースに適正である、対応するマテリアライズド・ビューの実装が自動的に保守されます。
マテリアライズド・ビューの詳細は、『Oracle Database概要 11g リリース2 (11.2)』を参照してください。
定義の標準:
マテリアライズド・ビュー名は、最初の29バイトまでは一意である必要があります。
マテリアライズド・ビュー定義は、MV_NAME||'#'という通常のビューに格納される必要があります。
マテリアライズド・ビュー定義を、mv_name||'#'という通常のビューとして作成または置換します。
マテリアライズド・ビューの実装を生成する前に、マテリアライズド・ビュー定義が正しいことをテストします。
例:
create or replace view FND_EXAMPLE_MV# as select ... ;
select * from fnd_example_mv#;
マテリアライズド・ビューの実装は、AD_ZD_MVIEW.UPGRADEプロシージャを使用してマテリアライズド・ビュー定義から自動的に生成されます。
構文は、exec ad_zd_mview.upgrade(<MV_OWNER>, <MV_NAME>)です。
マテリアライズド・ビューの実装を直接作成または置換しようとしないでください。MVの実装を再作成するには、AD_ZD_MVIEW.UPGRADEプロシージャをコールします。
マテリアライズド・ビュー定義では、選択リストで各項目に対する列別名を指定する必要があります。
列別名の指定に失敗すると、エラーORA-00998「式に列の別名を指定する必要があります。」が発生する場合があります。
例: select sum(EMP.SALARY), ...をselect sum(EMP.SALARY) SUM_EMP_SALARY, ...に変更します。
マテリアライズド・ビュー定義で、エディション化PL/SQLファンクションは参照できません。
マテリアライズド・ビュー定義でエディション化PL/SQLファンクションを参照すると、マテリアライズド・ビューの実装の生成に失敗し、マテリアライズド・ビューが使用できなくなります。
マテリアライズド・ビューのPL/SQLファンクション・コールを同等のSQLに置換する方法の例は、「PL/SQLファンクションに対するSQL置換の例」を参照してください。
マテリアライズド・ビューでは、REFRESH FASTのかわりにREFRESH FORCEを使用する必要があります。FORCEオプションを使用すると、高速リフレッシュを使用できない状況で、完全リフレッシュを使用してマテリアライズド・ビューをフォールバックできます。
REFRESH FORCEオプションの詳細は、『Oracle Database SQL言語リファレンス 11g リリース2 (11.2)』を参照してください。
マテリアライズド・ビューの実装コンテンツがパッチ適用後に自動的にリフレッシュされる必要がある場合は、マテリアライズド・ビュー定義の問合せに/*AUTOREFRESH*/コメント・タグを組み込む必要があります。
リフレッシュに長時間を要する大規模なマテリアライズド・ビューには/*AUTOREFRESH*/タグを指定しないでください。これらのケースでは、パッチ適用のカットオーバー後に、コンカレント・プログラムを使用してマテリアライズド・ビューをリフレッシュします。
例: ビューFND_EXAMPLE_MV#を、/*AUTOREFRESH*/ ... ;を選択して作成または置換します。
高速リフレッシュが常に可能であると想定しないでください。オンライン・パッチ後、完全リフレッシュが必要な場合があります。マテリアライズド・ビューをリフレッシュする場合は、FASTではなくFORCE句を使用します。
FORCEオプションの詳細は、『Oracle Database SQL言語リファレンス 11g リリース2 (11.2)』を参照してください。
マテリアライズド・ビューに対して動的DDLを実行するにはAD_MVを使用します。次に、AD_MVパッケージを使用したマテリアライズド・ビューの作成例を示します。
--
-- Code Example: Create a materialized view using AD_MV interface.
--
-- Note:
-- when executed in the Run Edition, the MV is created immediately.
-- when executed in the Patch Edition, the MV is generated at CUTOVER.
--
begin
-- Create MV
ad_mv.create_mv('FND_EXAMPLE_MV',
'create materialized view FND_EXAMPLE_MV '||
' tablespace '||ad_mv.g_mv_data_tablespace||' '||
' build deferred refresh on demand as '||
'select /*AUTOREFRESH*/ '||
' upper(oracle_username) USERNAME '||
' , decode(read_only_flag,''C'',''pub'',''E'',''applsys'',''U'',''apps'') USERTYPE '||
'from fnd_oracle_userid '||
'where read_only_flag in (''C'',''E'',''U'') ');
end;
XDFを使用してマテリアライズド・ビューを配信します(GSCC File.Sql.82)。
XDF (XML定義ファイル)機能の使用方法の詳細は、「XML定義ファイル・ユーティリティ」を参照してください。
パッチ実行のクリーン・アップ・フェーズまで既存のマテリアライズド・ビューを削除しないでください。
パッチ・エディションのマテリアライズド・ビューに対して実装のアップグレード、リフレッシュまたはアクセスを実行しようとしないでください。MV実装はパッチ・エディションに表示できますが、カットオーバー・フェーズまで定義の実行エディションを実装し続けます。MVの実装は、カットオーバー・フェーズ時に必要に応じて自動的に再生成されます。
オンライン・パッチでMV実装のコンテンツを手動でリフレッシュする必要がある場合は、リフレッシュを実行するためのコンカレント要求を発行します。コンカレント要求は、カットオーバー後、したがってMV実装が再生成された後で実行されます。
MV定義に/*AUTOREFRESH*/コメント・タグを指定した場合、MVのコンテンツは、MVの実装が再生成されるたびに自動的にリフレッシュされます。
パッチ実行のクリーン・アップ・フェーズまで古いマテリアライズド・ビューを削除しないでください。
Oracle E-Business Suiteリリース12.2では、オンライン・パッチ適用アーキテクチャによって、開発者管理表に新しいエディショニング・ビュー(EV)層が導入されます。EV層では、オンライン・パッチ適用で物理格納列の名前が変更された場合でも、表情報の固定論理ビューがアプリケーションに提供されます。EVでは、各論理列名が、その属性に対する最新の改訂格納列にマップされます。ランタイム・アプリケーションは、この論理ビューを介して表データにアクセスする必要があります。
実質的エディション化表には、オンライン・パッチ適用技術を使用してパッチが適用され、このために、物理格納列名が時間経過とともに論理列名と異なるようになります。この論理列名と物理列名のマッピングは、通常の問合せおよびDML文の場合はアプリケーションに透過的ですが、アプリケーションでデータベース・データ・ディクショナリ・ビューを問い合せる場合には、名前を取得する目的に応じて、正しい(論理または物理)列名を選択するよう注意する必要があります。
列名を問合せまたはDML文(選択、挿入、更新または削除)を作成する目的で選択する場合は、論理列名を選択する必要があります。
列名を表のDDL文を作成する(例: 索引の作成)目的で選択する場合は、物理列名を選択する必要があります。通常、アプリケーション・ランタイム・コードで、オンライン・パッチ適用を介して管理される表は変更しないようにするため、この状況はあまり発生しません。
論理列と物理列の相違点は、表にエディショニング・ビューがある表の列に対してのみ存在します。エディショニング・ビューがないオブジェクトの列情報を取得している場合は、変更を加える必要はありません。変更する必要のない問合せは、次のとおりです。
Oracle E-Business Suiteリリース12.2アップグレードの一部として実行される問合せ。主なアップグレード・フェーズ時に、エディショニング・ビューはまだインストールされていないため、すべての既存のアップグレード・スクリプトが正しく動作します。
ビューの列情報に対する問合せ。
エディショニング・ビューがない表の列情報に対する問合せ。このカテゴリには、次が含まれます。
一時表。
アプリケーション管理(動的生成)表。アプリケーション管理表は、実行時にアプリケーション・ロジックで動的に作成され、管理されるデータベース表です。アプリケーションでこのような表を生成する場合は必ず、アプリケーション実行時に必要に応じてアプリケーションで表を変更、置換または削除する必要があります。アプリケーション管理表は、オンライン・パッチで直接変更されないようにする必要もあります。
アドバンスト・キュー表。
マテリアライズド・ビュー・コンテナ表。
索引構成表。
エディショニング・ビューが設定されていないその他の例外表。
このカテゴリのディクショナリ・ビューには、ビューの問合せ方法に応じて論理表列と物理表列の両方の情報が含まれます。これらのディクショナリ・ビューに対する各参照を検査し、論理列または物理列の情報を選択の対象とするかどうかを決定する必要があります。
ALL_TAB_COLUMNS、DBA_TAB_COLUMNS、USER_TAB_COLUMNS
ALL_TAB_COLS、DBA_TAB_COLS、USER_TAB_COLS
ALL_COL_COMMENTS、DBA_COL_COMMENTS、USER_COL_COMMENTS
ALL_OBJ_COLATTRS、DBA_OBJ_COLATTRS、USER_OBJ_COLATTRS
ALL_TRIGGER_COLS、DBA_TRIGGER_COLS、USER_TRIGGER_COLS
ALL_UPDATABLE_COLUMNS、DBA_UPDATABLE_COLUMNS、USER_UPDATABLE_COLUMNS
物理(表)列名を選択するには、特定の物理表名に対するディクショナリ・ビューから選択します(where table_name = x_table_name)。where table_name not like '%#を使用すると、論理ビュー以外のすべての表を検索できます。
論理(EV)列名を選択するには、特定のエディショニング・ビュー名に対するディクショナリ・ビューから選択します(where table_name = ad_zd_table.ev_view(x_table_name))。論理ビューの情報を取得する別の方法は、APPSシノニムから開始し、シノニムのtable_nameをディクショナリ・ビューに結合して正しい論理ビュー情報を取得することです。APPSシノニムは、EVが存在する場合はEVを指し、EVが存在しない場合は物理表を直接指します。いずれの場合も、正しい論理列の結果が提供されます。
/*
** This query returns logical columns for the table pointed to by APPS
** table synonym X_SYNONYM_NAME. Compatible with old releases.
*/
select col.column_name
from user_synonyms syn, all_tab_columns col
where syn.synonym_name = x_synonym_name
and col.owner = syn.table_owner
and col.table_name = syn.table_name
order by col.column_id
/
表を問い合せているかビューを問い合せているかわからない場合は、2つの考えられる問合せの結果を結合できます。
/*
** This query returns logical columns for X_OBJECT_NAME, and works whether
** the object is an APPS table synonym or view. Compatible with old releases.
*/
select col.column_name, col.data_type
from user_synonyms syn, all_tab_columns col
where syn.synonym_name = x_object_name
and col.owner = syn.table_owner
and col.table_name = syn.table_name
union
select col.column_name, col.data_type
from user_tab_columns col
where col.table_name = x_object_name
/
アプリケーション・ロジックで、入力としてAPPSオブジェクト名ではなく物理表名を使用する必要があり、表にエディショニング・ビューがあることが確実な場合は、ユーティリティ機能を使用して、表名を単にエディショニング・ビュー名に変換できます。
*
** This query returns logical columns for effectively editioned table
** X_OWNER.X_TABLE_NAME. Use this only if you cannot start from
** the APPS synonym name and are sure that the table has an EV.
** This query works on EBS 12.2 only.
*/
select col.column_name
from all_tab_columns col
where col.owner = x_owner
and col.table_name = ad_zd_table.ev_view(x_table_name)
order by col.column_id
/
ほとんどの一般的な(最悪の)ケースでは、アプリケーション・コードで、入力表名にEVがあることを保証できない場合があります。この場合、EV情報に外部結合して、論理列名が存在する場合は論理列名を提供し、論理列名が存在しない場合は物理列を提供できます。
/*
** This query returns the logical columns for table X_OWNER.X_TABLE_NAME.
** If the table has an editioning view, then the editioning view columns are
** returned, otherwise the physical table columns are returned.
** ONLY use this query if you must query by physical table name rather
** than APPS synonym name and the table might not have an EV.
** This query works on Release 12.2 only.
*/
select
col.owner
, col.table_name
, decode(ev.view_name, NULL, col.column_name, evc.view_column_name) logical_column_name
, col.column_name physical_column_name
from
all_tab_columns col
, all_editioning_views ev
, all_editioning_view_cols evc
where col.owner = x_owner
and col.table_name = x_table_name
and ev.owner(+) = col.owner
and ev.table_name(+) = col.table_name
and evc.owner(+) = ev.owner
and evc.view_name(+) = ev.view_name
and (ev.view_name is null or evc.table_column_name = col.column_name)
order by col.owner, col.table_name, evc.view_column_id
/
このカテゴリのディクショナリ・ビューでは、論理列に関する情報のみが提供されます。物理列名を自分自身で論理列名にマップしようとしている場合は、これらのビューに結合するのみです。
ALL_EDITIONING_VIEW_COLS、DBA_EDITIONING_VIEW_COLS、USER_EDITIONING_VIEW_COLS
ALL_EDITIONING_VIEW_COLS_AE、DBA_EDITIONING_VIEW_COLS_AE、USER_EDITIONING_VIEW_COLS_AE
次のディクショナリ・ビューでは、物理表列に関する情報が提供されます。これらのビューの使用は、実際の物理表を管理する目的の場合が多く、このような参照は論理列名を使用するように変換する必要はありません。ただし、チェックする価値はあります。
ALL_AUDIT_POLICY_COLUMNS、DBA_AUDIT_POLICY_COLUMNS、USER_AUDIT_POLICY_COLUMNS
ALL_CONS_COLUMNS、DBA_CONS_COLUMNS、USER_CONS_COLUMNS
ALL_IND_COLUMNS、DBA_IND_COLUMNS、USER_IND_COLUMNS
ALL_IND_EXPRESSIONS、DBA_IND_EXPRESSIONS、USER_IND_EXPRESSIONS
ALL_LOBS、DBA_LOBS、USER_LOBS
ALL_LOB_PARTITIONS、DBA_LOB_PARTITIONS、USER_LOB_PARTITIONS
ALL_LOB_SUBPARTITIONS、DBA_LOB_SUBPARTITIONS、USER_LOB_SUBPARTITIONS
ALL_PART_KEY_COLUMNS、DBA_PART_KEY_COLUMNS、USER_PART_KEY_COLUMNS
ALL_PART_LOBS、DBA_PART_LOBS、USER_PART_LOBS
ALL_STREAMS_COLUMNS、DBA_STREAMS_COLUMNS、USER_STREAMS_COLUMNS
ALL_SUBPART_KEY_COLUMNS、DBA_SUBPART_KEY_COLUMNS、USER_SUBPART_KEY_COLUMNS
ALL_UNUSED_COL_TABS、DBA_UNUSED_COL_TABS、USER_UNUSED_COL_TABS
ALL_XML_TAB_COLS、DBA_XML_TAB_COLS、USER_XML_TAB_COLS
非エディション化オブジェクトには、アプリケーション・エディション全体で共有される同じ定義があります。このようなオブジェクトには、実行中のアプリケーションに影響を与えないようにパッチを慎重に適用する必要があります。
順序の詳細は、『Oracle Database管理者ガイド 11g リリース2 (11.2)』を参照してください。
特別な考慮事項はありません。
特別な考慮事項はありません。
特別な考慮事項はありません。
実行中のアプリケーションと互換性のない方法で順序を変更しないでください。
パッチ実行のクリーン・アップ・フェーズまで順序は削除しないでください。
遅延削除の例は、「遅延削除のコード例」を参照してください。
タイプの詳細は、『Oracle Database PL/SQL言語リファレンス 11g リリース2 (11.2)』を参照してください。
タイプ所有者は、非エディション化APPSユーザーであるAPPS_NEである必要があります。
APPS_NEタイプを指すAPPSシノニムを作成します。
注意: 表列またはAQで参照される既存のユーザー定義タイプは、リリース12.2のアップグレード時に、非エディション化UDT標準に準拠するように自動的にアップグレードされます。
非エディション化オブジェクト(列またはアドバンスト・キュー・ペイロード定義)は、その完全修飾名であるAPPS_NE.<type_name>を使用して、非エディション化UDTを参照する必要があります。
エディション化オブジェクトは、そのAPPSシノニムを使用して非エディション化UDTを参照する必要があります。
適用はありません。
既存の非エディション化タイプは変更せずに、かわりに新しいタイプを作成してください。たとえば、<type_name>2を作成します。
パッチ実行のクリーン・アップ・フェーズまで非エディション化タイプは削除しないでください。
遅延削除の例は、「遅延削除のコード例」を参照してください。
特別な考慮事項はありません。
注意: 通常の表と異なり、一時表にはエディショニング・ビューはありません。
特別な考慮事項はありません。
特別な考慮事項はありません。
オンライン・パッチ中に既存の一時表定義を変更しないでください。
これを試行すると、エラー「ORA-14450: すでに使用されているトランザクション一時表にアクセスしようとしました。」が発生します。
かわりに、別の名前で新しい一時表を作成し、新しい一時表で元のAPPS表シノニムを指してください。
改訂一時表に<base_table_name><revision tag>という名前を設定します。
例: FND_TEMP_TABLE、FND_TEMP_TABLE1、FND_TEMP_TABLE2、...
元の一時表に索引がある場合は、改訂一時表にもこれらの同じ索引を(同じ名前で)作成します。
パッチ実行のクリーン・アップ・フェーズまで一時表は削除しないでください。
遅延削除の例は、「遅延削除のコード例」を参照してください。
Oracle Streams Advanced Queuingの詳細は、『Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイド 11g リリース2 (11.2)』を参照してください。
AQペイロード・タイプは、APPS_NEが所有する非エディション化UDTであり、その完全修飾名(例: APPS_NE.<type_name>)で参照する必要があります。
注意: エディション化ユーザー定義タイプを参照する既存のAQペイロード・タイプは、リリース12.2のアップグレード時に、対応する非エディション化ユーザー定義タイプを参照するように自動的にアップグレードされます。
特別な考慮事項はありません。
特別な考慮事項はありません。
実行中のアプリケーションと互換性のない方法で既存のAQを変更または削除しないでください。
アプリケーション・コンテキストの詳細は、『Oracle Databaseセキュリティ・ガイド 11g リリース2 (11.2)』を参照してください。
特別な考慮事項はありません。
特別な考慮事項はありません。
特別な考慮事項はありません。
既存のアプリケーション・コンテキスト定義を置換しないでください。必要に応じて、アプリケーション・コンテキストのPL/SQLパッケージを変更できます。
パッチ実行のクリーン・アップ・フェーズまで既存のアプリケーション・コンテキスト定義は削除しないでください。
XMLスキーマおよびOracle XML DBの詳細は、『Oracle XML DB開発者ガイド 11g リリース2 (11.2)』を参照してください。
XMLSCHEMA所有者は、非エディション化APPSユーザーであるAPPS_NEである必要があります。既存のXMLSCHEMAタイプは、リリース12.2のアップグレード時に、この標準に準拠するように自動的にアップグレードされます。
その完全修飾名であるAPPS_NE.<xmlschema_name>を使用してXMLSCHEMAを参照します。
特別な考慮事項はありません。
特別な考慮事項はありません。
実行中のアプリケーションに影響を与える場合は、XMLSCHEMA定義を変更または削除しないでください。
既存のXMLSCHEMAは変更せずに、かわりに新しいXMLSCHEMAを作成してください。
パッチ実行のクリーン・アップ・フェーズまで既存のXMLSCHEMAは削除しないでください。
データベース・リンクの作成方法の詳細は、『Oracle Database管理者ガイド 11g リリース2 (11.2)』を参照してください。
適用はありません。
データベース・リンクを介したオブジェクトのアクセスは、そのアクセスがパッチ・エディションからの場合でも、ターゲット・データベースの実行エディションが常に使用されます。
特別な考慮事項はありません。
適用はありません。
パーティションの詳細は、『Oracle Database概要 11g リリース2 (11.2)』を参照してください。
特別な考慮事項はありません。
特別な考慮事項はありません。
特別な考慮事項はありません。
外部データ・ファイルは、データベース内ではなく、ファイル・システム上に格納されるユーザー・データまたはビジネス・データです。外部データ・ファイルの例には、コンカレント・レポート出力、ログ・ファイル、データ・インポート/エクスポート・ファイル、およびファイルベースのシステム統合があります。外部データ・ファイルは、判読可能であるか、アプリケーション・コード・レベルにほとんど依存しない構造のいずれかです。これらのファイルには、Oracle E-Business Suiteによってパッチが直接適用されることはなく、(他のタイプのビジネス・データと同様に)エディション化しないでください。
Oracle E-Business Suiteリリース12.2では、APPL_TOPファイル・システムが現在はエディション化され、外部データ・ファイルの格納に適さなくなりました。このため、オンライン・パッチ適用アーキテクチャによって、外部データ・ファイルと他の非エディション化ファイルの格納を目的として、新しい非エディション化ファイル・システムが導入されます。
非エディション化ファイル・システムAPPL_TOP_NEで外部データ・ファイルに対して格納またはアクセスを実行するように、アプリケーションを構成します。
非エディション化ファイル・タイプには、次があります。
レポート、出力およびログ・ファイル
インポートおよびエクスポート・ファイル
ファイルベースのシステム統合
ランタイム・アプリケーションによって動的に生成または使用されるその他のデータ・ファイル
APPL_TOP_NEの構造は、標準のAPPL_TOPと同じです。
$APPL_TOP_NE/<product_short_name>/<directory_name_used_before>/
サブディレクトリは散在的に移入されます(必要に応じてのみ作成されます)。
APPL_TOP_NE環境変数を使用して、非エディション化APPL_TOPを参照します。
例: $APPL_TOP_NE/fnd/import
オンライン・パッチ適用中に機能を無効化するためのコード例を示します。
--
-- Test if online patching is in progress, if so, block execution
--
if ad_zd.get_edition('PATCH') is not null then
-- an online patch is in progress, return error
fnd_message.set_name('FND', 'AD_ZD_DISABLED_FEATURE');
raise_application_error ('-20000', fnd_message.get);
end if;
オンライン・パッチ適用の進行中にコンカレント・プログラムの実行をブロックするには、次のように、コンカレント・プログラムに対して非互換性ルールを定義する必要があります。
「コンカレント・プログラム」ウィンドウまたはページを使用して、コンカレント・プログラム定義を編集します。
「非互換」ボタンを選択して、「非互換プログラム」ウィンドウを開きます。
次のプログラムを使用して、対象のプログラムに対して新しいグローバル非互換性ルールを追加します。
アプリケーション名: アプリケーションDBA
プログラム名: Online Patching In Progress(内部名: ADZDPATCH)コンカレント・プログラム
APPSスキーマをエディション可能にするには、エディション化不可オブジェクトがエディション化可能オブジェクトに依存しないようにする必要があります。この要件を満たすために、データベース・オブジェクト開発標準では、マテリアライズド・ビュー(エディション化不可)で、PL/SQLファンクション(エディション化可能)をコールしないことが指定されています。
次の例では、マテリアライズド・ビューで、よく使用されるOracle Applications Technology PL/SQLファンクション・コールを同等のSQLに置換する方法を示します。upper()などのビルトインPL/SQLファンクションは引き続きコールできます。
置換前:
fnd_profile.value('MSC_HUB_REGION_INSTANCE')
置換後:
(select profile_option_value from fnd_profile_option_values
where level_id = 10001 and (profile_option_id, application_id) =
(select profile_option_id, application_id from fnd_profile_options
where profile_option_name = 'MSC_HUB_REGION_INSTANCE'))
注意:
この置換は、マテリアライズド・ビューでのみ有効です。fnd_profile.value()の他の使用については、通常のPL/SQLコールを引き続き使用してください。
プロファイル・オプション値をフェッチするための一般的なケースは非常に複雑であり、そのためにこれを実行するための専用のPL/SQLパッケージがあります。しかし、マテリアライズド・ビューの結果はあらゆるコンテキストで有効である必要があり、そのためマテリアライズド・ビューで参照されるプロファイル・オプションにはサイト・レベルの値のみが必要であり、置換SQLはサイト・レベルの値のフェッチのみをサポートする必要があります。
この置換SQLでは、サイト・レベルで設定されたプロファイル・オプション値のみが使用されます。
置換前:
fnd_message.get_string('MSC','MSC_HUB_UNASSIGNED')
置換後:
(select substrb(REPLACE(message_text, '&&', '&'),1,2000)
from fnd_new_messages m, fnd_application a
where m.message_name = 'MSC_HUB_UNASSIGNED'
and m.language_code = 'US'
and a.application_short_name = 'MSC'
and m.application_id = a.application_id)
注意:
この置換は、マテリアライズド・ビューでのみ有効です。fnd_message.get_string()の他の使用については、通常のPL/SQLコールを引き続き使用してください。
この置換SQLでは、US言語メッセージ・テキストのみが取得され、セッション言語の設定に影響されません。
マテリアライズド・ビューの問合せでは、メインのSELECT句内にsub-SELECTを含めることはできないため、MV SELECT句でファンクション・コールが使用された場合、置換SQLはより高度である必要があります。
置換前:
select fnd_message.get_string('FND', 'CANCEL')
from dual
where 1=1
/
置換後:
select fmgs.result
from dual
, (select substrb(REPLACE(message_text, '&&', '&'),1,2000) result
from fnd_new_messages m, fnd_application a
where m.message_name = 'CANCEL'
and m.language_code = 'US'
and a.application_short_name = 'FND'
and m.application_id = a.application_id) fmgs
where 1=1
/
置換前:
fnd_global.lookup_security_group('INTEREST_STATUS', 279)
置換後:
(select nvl(max(lt.security_group_id), 0)
from fnd_lookup_types lt
where lt.view_application_id = 279
and lt.lookup_type = 'INTEREST_STATUS'
and lt.security_group_id in (
0,
to_number(decode(substrb(userenv('CLIENT_INFO'),55,1),
' ', '0',
null, '0',
substrb(userenv('CLIENT_INFO'),55,10)))))
この置換は、マテリアライズド・ビューでのみ有効です。fnd_global.security_group()の他の使用については、通常のPL/SQLコールを引き続き使用してください。
遅延削除のコード例を示します。この例は表を対象としています。
REM dbdrv: sql ~PROD ~PATH ~FILE \
REM dbdrv: none none none sqlplus &phase=last \
REM dbdrv: checkfile:~PROD:~PATH:~FILE &un_fnd
-- Example logic to drop a table under online patching
--
-- Note: This script drops example table "APPLSYS.FND_EXAMPLE_TABLE".
-- To use this logic for another table, you must substitute "&un_fnd" with the
-- actual table owner token ("&un_<app_short_name>"), and
-- "FND_EXAMPLE_TABLE" with the actual table name.
--
-- Usage
-- @TABLE_DROP_SCRIPT <table_owner>
drop synonym FND_EXAMPLE_TABLE;
drop view &1..FND_EXAMPLE_TABLE#;
exec ad_zd.load_ddl('CLEANUP', 'drop table &1..FND_EXAMPLE_TABLE')
Copyright © 1995, 2013, Oracle and/or its affiliates. All rights reserved.