リプレイ・アップグレードを使用したOracle Databaseリリースのアップグレード
以前のリリースからアップグレードするには、リプレイ・アップグレード手順を使用して、非CDBをPDBに変換およびアップグレードします。
- リプレイ・アップグレードを使用したPDBのアップグレード
リプレイ・アップグレードを使用してコンテナ・データベース(CDB)全体およびそのプラガブル・データベース(PDB)をアップグレードすることも、個々のPDBをアップグレードすることもできます。 - リプレイ・アップグレードを無効または有効にする方法
デフォルトでは、PDBのアップグレードに対してリプレイ・アップグレードの方法が有効になります。ただし、この方法の使用を有効または無効にできます。 - リプレイ・アップグレードを使用した非CDBからPDBへのアップグレードについて
リプレイ・アップグレードの方法を使用すると、非CDBのOracle Databaseソフトウェアをマルチテナント・アーキテクチャにアップグレードする手順の一部を自動化できます。 - リプレイ・アップグレードを使用したPDBとしての非CDBの採用およびアップグレード
アップグレードを簡略化するには、リプレイ・アップグレードの方法を使用して、非CDBをPDBに変換およびアップグレードできます。 - 切断/接続アップグレードを使用した以前のリリースのアップグレード
自動リプレイ・アップグレードを使用して、以前のリリースのPDBをより新しいリリースのCDBに接続することでアップグレードできます。 - リプレイ・アップグレード・プロセスの失敗とリカバリのシナリオ
リプレイ・アップグレードのログ・ファイルおよびトレース・ファイルでエラーと問題を確認する方法について説明します。
リプレイ・アップグレードを使用したPDBのアップグレード
リプレイ・アップグレードを使用してコンテナ・データベース(CDB)全体およびそのプラガブル・データベース(PDB)をアップグレードすることも、個々のPDBをアップグレードすることもできます。
ノート:
クラシック・パラレル・アップグレードはリプレイ・アップグレードに置き換えられますが、このドキュメントの他の場所での指定に従って、アップグレード前およびアップグレード後のタスクを実行する必要があります。アップグレードを開始する前に、次のステップを実行する必要があります。
- 新しいリリースのOracle Databaseソフトウェアのインストール
- 新しいリリースで新しいCDBを作成するか、既存のCDBを使用します。
- このガイドの第2章の「Oracle Databaseのアップグレードの準備」の説明に従って、アップグレード前のアクティビティを実行します。
ノート:
リプレイ・アップグレードを使用してPDBを接続し、PDBオープン時にPDBをアップグレードする場合、アップグレードするPDBの数は、Oracle Databaseで使用できるCPUコア(プロセッサ)の数を指定するOracle Database初期化パラメータCPU_COUNT
の値の4分の1(¼)以下にすることをお薦めします。クラシック・パラレル・アップグレードでは、一度にアップグレードされるPDBのデフォルト数は、CPU_COUNT
の値の2分の1 (1⁄2)以下です。
アップグレードは、リプレイ・アップグレード方法を使用して完了できます。そのためには、PDBのオープン時にアップグレードを使用するか、AutoUpgradeユーティリティを使用します。
アップグレード後、第7章の「Oracle Databaseのアップグレード後の作業」の説明に従って、次の手順を実行する必要があります:
- Datapatchを実行して、新しいPDBにパッチを適用します。
- AutoUpgradeを使用して、アップグレード後のチェックを実行します。
PDBプラグインでの自動アップグレードを使用した新しいリリースのCDBへのリプレイ・アップグレード
以前のリリースのPDBを新しいリリースのCDBに接続すると、CDBはPDBのオープン時にPDBがCDBより以前のリリースであることを検出し、リプレイ・アップグレード・プロセスを自動的に開始します。PDBオープン時のアップグレードでは、リプレイ・アップグレード同期化機能を使用してPDBを自動的にアップグレードします。
リプレイ・アップグレードを有効または無効にする方法
デフォルトでは、PDBのアップグレードに対してリプレイ・アップグレードの方法が有効になります。ただし、この方法の使用を有効または無効にできます。
次のSQL問合せを使用すると、リプレイ・アップグレードがアクティブかどうかを判断できます:
select property_name, property_value
from database_properties
where property_name in ('UPGRADE_PDB_ON_OPEN');
リプレイ・アップグレードを無効にするには、CDB$ROOT
または特定のPDBで次のコマンドを実行します:
ALTER DATABASE UPGRADE SYNC OFF
リプレイ・アップグレードを無効にする場合は、AutoUpgradeを使用してPDBをアップグレードする必要があります。
リプレイ・アップグレードの動作を再度有効にするには、次のコマンドを入力します。
ALTER DATABASE UPGRADE SYNC ON
デフォルトでは、AutoUpgradeはリプレイ・アップグレードを使用しません。クラシック・パラレル・アップグレード・スクリプトが使用されます。AutoUpgradeでリプレイ・アップグレードを強制的に使用する場合は、次の内容をAutoUpgrade構成ファイルに追加します。prefix
は、構成ファイルでアップグレードに使用されるアップグレード接頭辞です:
prefix.replay=yes
ノート:
CDB$ROOT
に接続しているか、特定のPDBに接続しているかに応じて、個々のPDBに対するリプレイ・アップグレードの方法の使用を管理できます。
UPGRADE SYNC
がCDB$ROOT
でOFF
に設定されている場合、CDBに接続されているどのPDBにもリプレイ・アップグレード・メソッドは使用されません。UPGRADE SYNC
がCDB$ROOT
でON
に設定されているが、PDBでOFF
に設定されている場合、リプレイ・アップグレード・メソッドは、UPGRADE SYNC
がOFF
であるPDBに対して使用されません。ただし、リプレイ・アップグレード・メソッドは、CDBに接続されている他のすべてのPDBに対して使用されます。UPGRADE SYNC
がCDB$ROOT
でON
に設定され、すべてのPDBに対してON
に設定されている場合(デフォルト)、リプレイ・アップグレード・メソッドはCDBに接続されているすべてのPDBに対して使用されます。
リプレイ・アップグレードを使用した非CDBからPDBへのアップグレードについて
リプレイ・アップグレードの方法を使用して、非CDBのOracle Databaseソフトウェアをマルチテナント・アーキテクチャにアップグレードするステップの一部を自動化できます。
リプレイ・アップグレード・メソッドは、このOracle Databaseリリースへの直接アップグレードがサポートされている以前のOracle Databaseリリースからのアップグレードに対してデフォルトで有効になっています。リプレイ・アップグレード・プロセスは、noncdb_to_pdb.sql
などのスクリプトを実行する従来の方法とは異なります。非CDBの場合、DBMS_PDB.DESCRIBE
を実行して非CDBを記述した後、新しいOracle Database CDBに非CDBを接続します。アップグレードのためのリプレイ・アップグレード・メソッドは、次の2つのステップで完了します。
- 非CDBデータベースは、新しいOracle Databaseリリースにアップグレードされます。
- 非CDBデータ・ディクショナリは、PDBデータ・ディクショナリに変換されます。
これらのステップはいずれも、ALTER PLUGGABLE DATABASE OPEN
を実行するときにトリガーされます。どちらのステップも、ディクショナリに格納されたSQL文を自動的に再生し、PDBへの非CDBの採用と、新しいリリースへのデータベースのアップグレードのタスクを完了します。
リプレイ・アップグレード・メソッドを使用する利点は、PDBのアップグレードと変換のために実行する必要があるアップグレード・ワークフローを大幅に簡略化できることです。非CDBからPDBへの暗黙的な変換により、Oracle Database 21cより前の非CDBおよびPDBの両方のOracle Databaseリリースを新しいリリースのCDBのPDBに採用およびアップグレードするプロセスが簡略化されます。
リプレイ・アップグレードを使用したPDBとしての非CDBの採用およびアップグレード
アップグレードを簡素化するには、リプレイ・アップグレードの方法を使用して、非CDBをPDBに変換およびアップグレードします。
アップグレードを開始する前に、次のステップを実行する必要があります。
- 新しいリリースのOracle Databaseソフトウェアのインストール
- 新しいOracleホームを準備します。
- このガイドの第2章の「Oracle Databaseのアップグレードの準備」の説明に従って、アップグレード前のアクティビティを実行します。
DBMS_PDB
パッケージおよびリプレイ・アップグレード・メソッドを使用して非CDBをPDBとして採用するには、次の手順を実行します。
-
CDBが存在しない場合は作成するか、既存のCDBを使用します。
-
アップグレードの準備状況についてデータベースを分析します。AutoUpgradeを分析モードで実行し、サマリー・レポートで分析の結果を確認します。AutoUpgradeは、チェックの完了時にサマリー・レポートの場所を出力します。たとえば:
export ORACLE_SID=NCDB export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1 export ORACLE_TARGET_HOME=/u01/app/oracle/product/23.0.0/dbhome_1 java -jar autoupgrade.jar -config_values "target_cdb=CDB23" -mode analyze
-
アップグレード前の分析時に、AutoUpgradeは、アップグレードを開始する前に、データベースに変更が必要かどうかを検出します。修正モードでAutoUpgradeを起動して、それらの変更を実行します。たとえば:
export ORACLE_SID=NCDB export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1 export ORACLE_TARGET_HOME=/u01/app/oracle/product/23.0.0/dbhome_1 java -jar autoupgrade.jar -config_values "target_cdb=CDB23" -mode fixups
-
非CDBを読取り専用モードにします。
-
非CDBに接続し、
DBMS_PDB.DESCRIBE
プロシージャを実行して、非CDBを記述するXMLファイルを作成します。現行ユーザーには、
SYSDBA
管理権限が必要です。ユーザーは、接続時にAS SYSDBA
を使用して権限を行使する必要があります。たとえば、
ncdb.xml
という名前のXMLファイルを/disk1/oracle
ディレクトリに生成し、次のプロシージャを実行します。BEGIN DBMS_PDB.DESCRIBE( pdb_descr_file => '/disk1/oracle/ncdb.xml'); END; /
このプロシージャが正常に完了した後、XMLファイルおよび非CDBデータ・ファイルを使用して、非CDBをCDBに接続できます。
-
DBMS_PDB.CHECK_PLUG_COMPATIBILITY
ファンクションを実行して、非CDBがCDBと互換性があるかどうかを確認します。このファンクションを実行する場合は、次のパラメータを設定します。
-
pdb_descr_file
- このパラメータをデータベース記述XMLファイルへのフルパスに設定します。 -
pdb_name
- 新しいPDBの名前を指定します。このパラメータを省略した場合は、XMLファイル内のPDB名が使用されます。
たとえば、
/disk1/oracle/ncdb.xml
ファイルで記述されている非CDBが現在のCDBと互換性があるかどうかを確認するには、次のPL/SQLブロックを実行します。SET SERVEROUTPUT ON DECLARE compatible CONSTANT VARCHAR2(3) := CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY( pdb_descr_file => '/disk1/oracle/ncdb.xml', pdb_name => 'NCDB') WHEN TRUE THEN 'YES' ELSE 'NO' END; BEGIN DBMS_OUTPUT.PUT_LINE(compatible); END; /
出力が
YES
の場合は非CDBに互換性があり、次のステップに進むことができます。出力がNO
の場合は、非CDBには互換性がありません。互換性がない理由を確認するには、ビューPDB_PLUG_IN_VIOLATIONS
を確認します。続行する前に、すべての違反を修正する必要があります。たとえば、アップグレードを実行するか、datapatch
ユーティリティを実行して、バージョンまたはパッチの不一致をすべて解決する必要があります。違反を修正してから、DBMS_PDB.CHECK_PLUG_COMPATIBILITY
を再度実行して、非CDBがCDBと互換性があることを確認します。 -
-
非CDBを停止します。
-
非CDBを上位リリースのCDBに接続します。
たとえば、次のSQL文は非CDBをプラグインし、そのファイルを新しい場所にコピーして、非CDBから
tbs3
ユーザー表領域のみを含めます。CREATE PLUGGABLE DATABASE ncdb USING '/disk1/oracle/ncdb.xml' COPY FILE_NAME_CONVERT = ('/disk1/oracle/dbs/', '/disk2/oracle/ncdb/') USER_TABLESPACES=('tbs3');
違反がない場合は、新しいPDBをオープンしないでください。これは、後のステップで開きます。
USER_TABLESPACES
句を使用すると、非CDB内の複数のテナントに使用されたデータを異なるPDBに分けることができます。この句を指定したCREATE PLUGGABLE DATABASE
文を複数使用して、非CDBに存在する他の表領域のデータを含む別のPDBを作成できます。 -
リプレイ・アップグレードが有効になっていることを確認するには、次のように入力します:
select property_name, property_value from database_properties where property_name in('UPGRADE_PDB_ON_OPEN', 'CONVERT_NONCDB_ON_OPEN');
-
新しいPDBに接続して、それを開きます。PDBが開かれるときに、データベースはアップグレードされ、非CDBデータベース・データ・ディクショナリがPDBに変換されます。たとえば:
ALTER PLUGGABLE DATABASE OPEN
Oracle Databaseでデータベースのアップグレードを完了するには、新しいPDBを開く必要があります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。PDBが開かれるときに、非CDBがPDBに採用され、データ・ディクショナリが変換されて、新しいPDBがCDBに統合されます。リプレイ・アップグレードからのメッセージは、トレース・ディレクトリに置かれます。PDBがオープンされてリプレイ・アップグレードが完了すると、そのステータスは
NORMAL
になります。アップグレードのステータスを確認するには、次のビューを問い合せます。- リプレイ・アップグレード・エラーを確認するには、ビュー
DBA_REPLAY_UPGRADE_ERRORS
を使用します - 完全性をチェックするには、
DBA_APPLICATIONS
を使用します。app_name 'APP$CDB$CATALOG'
値のapp_version
値を確認します。この値は、PDBの新しいバージョンである必要があります。 - ビュー
DBA_APP_ERRORS
で文エラーをチェックします。このビューには、エラー・メッセージとエラーに関する文テキスト(app_statement
)が表示されます。成功したアップグレードでは、このビューにapp_name='APP$CDB$CATALOG'
の行が含まれていないことが必要です。
- リプレイ・アップグレード・エラーを確認するには、ビュー
-
Datapatchを実行して、新しいPDBにパッチを適用します:
datapatch -pdbs ncdb
-
AutoUpgradeを使用して次を指定し、アップグレード後の修正を実行します:
ORACLE_SID
は、ターゲット・コンテナ・データベースのシステム識別子を指定しますORACLE_HOME
は、ORACLE_SID
で指定されたデータベースのOracleホームです。inclusion_list
には、PDB (以前の非CDB)の名前が含まれます。必要に応じて、さらにPDBを指定できます。dir
オプションは、AutoUpgradeがログ・ファイルを格納できるディレクトリを指定します。
次の例では、
ORACLE_SID
はCDB23
、ORACLE_HOME
は/u01/app/oracle/product/23.0.0/dbhome_1
、ログ・ファイル・ディレクトリは/u01/app/oracle/cfgtoollogs/autoupgrade
、inclusion_list
はNCDB
と指定されています。export ORACLE_SID=CDB23 export ORACLE_HOME=/u01/app/oracle/product/23.0.0/dbhome_1 java -jar autoupgrade.jar -preupgrade "dir=/u01/app/oracle/cfgtoollogs/autoupgrade,inclusion_list=NCDB" -mode postfixups
-
PDBをバックアップします。
PDBをバックアップすることをお薦めします。バックアップされていないPDBは、非CDBからのプリプラグイン・バックアップとCDBからのバックアップの組合せを使用してリカバリできます。ただし、リカバリは、通常のリストア操作よりもはるかに煩雑で複雑です。
- 第7章の「Oracle Databaseのアップグレード後の作業」の説明に従って、アップグレード後の作業を実行します。
ノート:
PDBの作成時にエラーが返された場合は、作成されたPDBがUNUSABLE
状態である可能性があります。ビューCDB_PDBS
またはDBA_PDBS
を問い合せることで、PDBの状態を確認できます。PDB作成のエラーについてさらに学習するには、アラート・ログを確認してください。使用できないPDBは削除するしかありません。PDBが使用できない場合は、使用できないPDBと同じ名前のPDBを作成する前にPDBを削除する必要があります。
切断/接続アップグレードを使用した以前のリリースのアップグレード
以前のリリースのPDBは、自動リプレイ・アップグレードを使用してより新しいリリースのCDBに接続することでアップグレードできます。
一般的な前提条件
-
『Oracle Multitenant管理者ガイド』のPDB作成の一般的な前提条件で説明されている前提条件が満たされるようにしてください。
-
PDBについて記述しているXMLファイル、または
.pdb
アーカイブ・ファイルは、CDBにアクセスできる場所に存在する必要があります。USING
句でXMLファイルまたは.pdb
アーカイブ・ファイルを指定する必要があります。PDBのXMLファイルが使用できないか見つからない場合は、DBMS_PDB.RECOVER
プロシージャを使用して、PDBのデータ・ファイルでXMLファイルを生成できます。 -
USING
句にXMLファイル(.pdb
ファイルではなく)を指定する場合は、PDBに関連付けられたファイル(データファイルやウォレット・ファイルなど)が、CDBにアクセスできる場所に存在している必要があります。 -
接続操作のターゲット・データベースがOracle Data Guard構成内のプライマリ・データベースの場合は、接続されるPDBのファイルの場所をスタンバイ・データベースで特定できることを確認します。
スタンバイ・データベースで、
STANDBY_PDB_SOURCE_FILE_DIRECTORY
初期化パラメータを、PDBをインスタンス化するためのソース・データファイルが含まれている場所に設定します。ファイルが見つからない場合、スタンバイ・データベースはOMFの場所でファイルを探します。OMFの場所で見つからない場合は、データファイルをスタンバイ・データベースのOMFの場所にコピーし、スタンバイ・データベースに対するREDO適用を再起動する必要があります。 -
ソースCDBとターゲットCDBのプラットフォームは、次の要件を満たしている必要があります。
-
endiannessが同じである必要があります。
-
ソース・プラットフォームにインストールされているデータベース・オプションは、ターゲット・プラットフォームにインストールされているデータベース・オプションと同じか、サブセットである必要があります。
-
-
アプリケーションPDBを作成している場合、切断されたPDBのアプリケーション名およびバージョンは、アプリケーションPDBを接続するアプリケーション・コンテナのアプリケーション名およびバージョンと一致する必要があります。
ノート:
透過的データ暗号化で暗号化されたデータを含むPDBをプラグインする場合は、統一モードについてはOracle Database Advanced Securityガイド、分離モードについてはOracle Database Advanced Securityガイドの指示に従います。
文字セットの前提条件
文字セットを一致させるために、次の前提条件を満たす必要があります。
-
PDBが接続されるCDBの文字セットがAL32UTF8でない場合、切断されたPDBを含んでいたCDBとターゲットCDBには互換性のある文字セットおよび各国語文字セットが必要です。互換性を確保するには、文字セットと各国語文字セットが、『Oracle Databaseグローバリゼーション・サポート・ガイド』で指定されている要件を満たしている必要があります。
PDBが接続されるCDBの文字セットがAL32UTF8である場合、この要件は適用されません。
ノート:
Oracle Multitenantでは、あるコンテナのLOBに対する異なる文字セットのコンテナによるデータ・リンク、拡張データ・リンクまたは
CONTAINERS()
句を使用したアクセスはサポートされません。たとえば、CDBルートとsalespdb
の文字セットが異なる場合、CDBルートで実行されるCONTAINERS()
問合せはsalespdb
のLOBにアクセスできません。 -
アプリケーションPDBを作成している場合、アプリケーションPDBはアプリケーション・コンテナと同じ文字セットおよび各国語文字セットである必要があります。
CDBのデータベース文字セットがAL32UTF8の場合、アプリケーション・コンテナの文字セットおよび各国語文字セットはCDBと異なっていても構いません。ただし、アプリケーション・コンテナ内のすべてのアプリケーションPDBには、アプリケーション・コンテナと同じ文字セットおよび各国語文字セットが必要です。
前提条件が満たされているかどうかを判断するには、DBMS_PDB.CHECK_PLUG_COMPATIBILITY
関数を使用します。次の手順のステップ2では、このファンクションの使用方法を示しています。
-
SQL*Plusで、現在のコンテナがCDBルートまたはターゲットCDBのアプリケーション・ルートであることを確認します。
現在のコンテナがCDBルートの場合、PDBはCDBに作成されます。現在のコンテナがアプリケーション・ルートの場合、アプリケーションPDBはアプリケーション・コンテナ内に作成されます。
-
(オプション)
DBMS_PDB.CHECK_PLUG_COMPATIBILITY
ファンクションを実行して、切断されたPDBがCDBと互換性があるかどうかを確認します。-
PDBがまだ切断されていない場合は、
DBMS_PDB.DESCRIBE
プロシージャを実行して、そのPDBを記述するXMLファイルを作成します。PDBがすでに切断されている場合は、ステップ2bに進みます。
たとえば、
salespdb.xml
という名前のXMLファイルを/disk1/oracle
ディレクトリに生成し、次のプロシージャを実行します:BEGIN DBMS_PDB.DESCRIBE( pdb_descr_file => '/disk1/oracle/salespdb.xml', pdb_name => 'SALESPDB'); END; /
PDBがリモートCDBに存在している場合は、
pdb_name
パラメータに@database_link_name
を含めることができます。database_link_name
は、リモートCDBまたはPDBへの有効なデータベース・リンクの名前です。たとえば、リモートCDBへのデータベース・リンクの名前がrcdb
の場合、pdb_name
値にSALESPDB@rcdb
を設定します。 -
DBMS_PDB.CHECK_PLUG_COMPATIBILITY
ファンクションを実行します。このファンクションを実行する場合は、次のパラメータを設定します。
-
pdb_descr_file
- パラメータをXMLファイルへのフルパスに設定します。 -
pdb_name
- 新しいPDBの名前を指定します。このパラメータを省略した場合は、XMLファイル内のPDB名が使用されます。
たとえば、
/disk1/usr/salespdb.xml
ファイルで記述されているPDBが現在のCDBと互換性があるかどうかを確認するには、次のPL/SQLブロックを実行します。SET SERVEROUTPUT ON DECLARE compatible CONSTANT VARCHAR2(3) := CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY( pdb_descr_file => '/disk1/usr/salespdb.xml', pdb_name => 'SALESPDB') WHEN TRUE THEN 'YES' ELSE 'NO' END; BEGIN DBMS_OUTPUT.PUT_LINE(compatible); END; /
出力が
YES
の場合はPDBに互換性があり、次のステップに進むことができます。出力がNO
の場合はPDBに互換性がなく、PDB_PLUG_IN_VIOLATIONS
ビューをチェックして、互換性がない理由を確認します。 -
ノート:
.pdbアーカイブ・ファイルはpdb_descr_file
パラメータで指定できます。 -
-
PDBが切断されていない場合は、切断します。
-
CREATE PLUGGABLE DATABASE ... USING
文を実行し、USING
句でXMLファイルまたは.pdbアーカイブ・ファイルを指定します。他の句が必要な場合はそれらを指定します。作成したPDBはマウント・モードになり、そのステータスは
NEW
です。PDBのオープン・モードは、V$PDBS
ビューのOPEN_MODE
列を問い合せることで確認できます。CDB_PDBS
またはDBA_PDBS
ビューのSTATUS
列を問い合せて、PDBのステータスを表示できます。PDBの新しいデフォルト・サービスが作成されます。サービスの名前はPDBと同じになり、このサービスを使用してPDBにアクセスできます。このサービスにアクセスするクライアントには、Oracle Net Serviceが正しく構成されている必要があります。
-
新しいPDBを読取り/書込みモードでオープンします。
Oracle Databaseで新しいPDBをCDBに統合するには、PDBを読取り/書込みモードでオープンする必要があります。PDBを読取り専用モードでオープンしようとすると、エラーが返されます。PDBが読取り/書込みモードでオープンされると、そのステータスは
NORMAL
になります。PDBのオープン時に、PDBとCDBルートの間でバージョンの不一致があった場合は、自動的にアップグレードされます。PDBオープン時のリプレイ・アップグレードの最適化(デフォルト)により、取得表に格納されている文を再実行することによって、手動のエラー修正を回避できます。このメカニズムは、アプリケーションの同期で使用されるものと同じです。
PDBがオープンされると、データベースでリプレイ・アップグレードが自動的に実行されます。
-
リプレイ・アップグレードが完了したら、PDBをバックアップします。
注意:
PDBは、バックアップしないとリカバリできません。PDBおよびアプリケーション・コンテナの詳細は、『Oracle Multitenant管理者ガイド』を参照してください。
リプレイ・アップグレード・プロセスの失敗とリカバリのシナリオ
リプレイ・アップグレードのログ・ファイルおよびトレース・ファイル内のエラーと問題を確認する方法について説明します。
リプレイ・アップグレードが失敗した場合、PDB_UPGRADE_SYNC
プロパティはPDBに対して1つ減分されます。リプレイ・アップグレードが2回失敗すると、catctl.pl
は、アップグレードを完了するために従来のスクリプト・ベースのパラレル・アップグレード・プロシージャのメソッドを使用することになります。
値をチェックするには、次のSQL問合せを使用します:
select property_value
from database_properties
where property_name='PDB_UPGRADE_SYNC';
リプレイ・アップグレード・エラーの原因を特定するには、エラーが発生した文のアップグレード・ログを確認します。リプレイ・アップグレード・プロシージャの実行後、正常に実行されたかどうかに関係なく、問合せDBA_APP_ERRORS
が実行されます。その問合せの結果を確認して、エラーが発生した文の文テキストおよびエラー・メッセージを確認します。ログ内の特定のエラーを表示するには、grep
コマンドを使用して'^ORA-'
のテキスト文字列を検索し、アップグレード・ログを問い合せることもできます。
もう1つの診断オプションは、トレース・ファイル(.trc
)を確認することです。トレース・ファイルには、リプレイ・アップグレード・プロシージャ中に実行された各文の出力が含まれています。ファイルには、文テキスト、文が成功したか失敗したか、エラー・メッセージ(該当する場合)およびプロセス中の経過時間が示されます。接頭辞文字列Replay Upgrade, PDB ID
を含む行を探します。ここで、変数ID
はPDB IDです。たとえば、Replay Upgrade, PDB 15
です。