5.9.1 作業用コピーについて

作業用コピーについて説明します。

作業用コピーを使用すると、開発者はアプリケーションの特殊なコピーを作成し、そのコピーに変更を加え、その変更をメインの開発アプリケーション(メイン・アプリケーション)にマージできます。同様に、メイン・アプリケーションから作業用コピーに変更内容をマージすることもできます。エクスポート・プロセス中に、作業用コピーとメイン・アプリケーションの比較(または差分)を表示して、マージする変更を選択できます。

この機能の一般的なユース・ケースは、最初にページで変更をテストしてから、その変更をメイン・アプリケーションにマージして戻す場合です。

比較プロセスについて

作業用コピーをメイン・アプリケーションと比較すると、両方のアプリケーションの分割YAMLエクスポートが取得され、個別のファイルにチェックサムが生成されます。作業用コピーは元のIDでエクスポートされ、両方のアプリケーションでIDが同じことを保証します。その後、チェックサムが比較され、2つのアプリケーションの差異が識別されます。

ノート:

両方のアプリケーションのYAMLエクスポートは、バックグラウンド・ジョブで実行されます。そのため、データベースでJOB_QUEUE_PROCESSESが有効になっている必要があります(つまり、JOB_QUEUE_PROCESSESにはゼロより大きい値が必要です)。ジョブ・キューが無効になっている場合、プログレス・バーに進行状況は表示されません。マルチテナント・データベースの場合はCDBのJOB_QUEUE_PROCESSES設定によってPDB設定をオーバーライドできるため、両方をチェックする必要があることに注意してください。JOB_QUEUE_PROCESSESについてさらに学習するには、『Oracle APEXインストレーション・ガイド』同時ジョブの数の制御を参照してください。

作業用コピーをメイン・アプリケーションと比較するときは、現在のアプリケーションが作業用コピーである場合はMAIN_APP_ID置換文字列を使用してメイン・アプリケーションのIDを特定します。

マージ・プロセスについて

マージ・プロセスでは、作業用コピーからページと共有コンポーネントのサブセットを取得して、それらをメイン・アプリケーションにインポートします。ページまたは共有コンポーネントが存在する場合は、置き換えられます。そのため、作業用コピーに含まれていないメイン・アプリケーションの変更は、作業用コピーのマージによって上書きされます。

サポートされていないコンポーネント・タイプ

次のコンポーネント・タイプの自動マージは、作業用コピーではサポートされていません

  • 翻訳
  • テーマ
  • テーマ・テンプレート
  • サポートするオブジェクト
  • アプリケーションのプロパティ
  • ワークスペースレベルのコンポーネント(アプリケーション・グループ、資格証明、リモート・サーバーなど)

サポートされていないコンポーネント・タイプについて、Oracleの提案は、開発者が作業用コピーをマージし、その作業用コピーを削除してから、サポートされていないコンポーネント・タイプの追加または変更を手動で適用することです。

作業用コピーの制限

作業用コピーには、次のような制限があります:

  • 作業用コピーの作業用コピーは作成できません。

  • 削除した作業用コピーのページまたは共有コンポーネントは、メイン・アプリケーションで手動で削除する必要があります。

  • 欠落としてリストされたコンポーネントは、作業用コピーで削除されているか、メイン・アプリケーションにのみ存在している可能性があります。

  • 作業用コピーが作成されると、すべての自動化が無効に設定されます。自動化がメイン・アプリケーションで有効になっている場合は、比較またはマージの間にそれらが差分レポートで表示されます。

    アプリケーションに自動化が含まれている場合は、マージ前に自動化の選択を解除するか、マージ後に手動で自動化を再有効化することをお薦めします。

作業用コピーに関する既知の問題

作業用コピーに関する既知の問題を次に示します:
  • 「サーバー・エラー」メッセージ - Oracle Databaseリリース19cでAPEXを実行しており、作業用コピー機能を使用している場合は、アクション「メインにマージ」メインからリフレッシュまたは「変更の比較」を選択すると、基にあるORA-00600エラー・メッセージが原因で、「サーバー・エラー」メッセージが表示されることがあります。たとえば:

    ORA-00600: internal error code, arguments: [qjsnplsDecDomRefCnt:noValP], [], [], [], [], [], [], [], [], [], [], []

    このエラーを修正するには、Oracle Databaseリリース19.16以上にアップグレードしてください。

  • マージ中のORA-00001エラー - 作業用コピー機能では、一意でないコンポーネント名に変更した場合にその変更内容をマージしようとすると、ORA-00001一意制約エラーが発生します。このエラーの発生を防ぐために、作業用コピーとメイン・アプリケーションの間で共有コンポーネントのネーミングを調整することが重要です。