-pを使用して失敗したアップグレードを特定のフェーズから再開する

このオプションを使用して、エラーの修正後にアップグレードを完了します。

パラレル・アップグレード・ユーティリティ(catctl.pl、またはシェル・スクリプトのdbupgradeあるいはdbupgrade.cmd)を、-pオプションを使用して実行すると、アップグレードを再実行し、すでに正常に実行されているアップグレード・フェーズをスキップできます。失敗したフェーズの修正をテストするために、1つのフェーズに対してアップグレードを再実行することもできます。

再開するフェーズの番号を確認するには、アップグレード・ログで最初のエラーが発生した場所とフェーズを特定します。その後、エラーの原因を修正して、その修正をテストするか、アップグレードを再実行して完了できます。

失敗したフェーズのCDBログ・ファイルの表示

ログ・ファイルの場所を特定し、CDBとPDBのログ・ファイルを確認します

自動診断リポジトリ(ADR)とアップグレード・スクリプトによって作成される診断ログ・ファイルの場所は、環境変数およびパラメータ設定に応じて異なります。

ログ・ファイルのパスを設定するには、パラレル・アップグレード・ユーティリティ(catctl)の実行時に-lオプションを設定してログ・ファイル・パスを定義します。

CDB$ROOT (CDB)のログ・ファイルの範囲は、catupgrd0...catupgrd7.logです。プラガブル・データベース(PDB)のログ・ファイルは、PDBコンテナ名(dbname)によって識別され、その範囲はcatupgrdpdbname0...catupgrdpdbname7.logです。

失敗したフェーズの非CDBログ・ファイルの表示

ログ・ファイルの場所を特定し、非CDBログ・ファイルを確認します。

自動診断リポジトリ(ADR)とアップグレード・スクリプトによって作成される診断ログ・ファイルの場所は、環境変数およびパラメータ設定に応じて異なります。

ログ・ファイルのパスを設定するには、パラレル・アップグレード・ユーティリティ(catctl)の実行時に-lオプションを設定してログ・ファイル・パスを定義します。

注意:

Oracle Database 12cリリース1 (12.1)以上では、非CDBアーキテクチャは非推奨です。今後のリリースでサポートが終了する可能性があります。

ログ・ファイルの範囲は、catupgrd0...catupgrd7.logです。

失敗したフェーズからのマルチテナント・アップグレードの特定および再開の手順

失敗したフェーズからマルチテナント・アップグレードを再開するには、まずエラーが発生したPDBを特定し、そのエラーに関する適切なログ・ファイルを検索します。

マルチテナント・アップグレードのエラーの原因のPDBを特定するには、アップグレード・サマリー・レポートを確認するか、catupgrd0.logを参照します。このログ・ファイルの最後に、アップグレード・サマリー・レポートが記載されています。
次の手順に従い、各ログ・ファイルをチェックしてエラーを探します。
  1. エラーのあるログ・ファイルを特定します。

    次に例を示します。

    LinuxおよびUNIX

    $ grep -i 'error at line' catupgrd*.log 
    

    Windows

    C:\> find /I "error at line" catupgrd*.log
    
    grepまたはfindコマンドを使用すると、エラーが発見されたログ・ファイルのファイル名が表示されます。
  2. エラーのあるログ・ファイルをチェックし、最初のエラーが発生した場所を特定します。任意のエディタを使用して、ログ・ファイルを表示します。最初の文字列「error at line」を検索します。文字列を発見したら、エラーからさかのぼって、PHASE_TIME___STARTを検索します(逆方向検索)。

    次に例を示します。

    PHASE_TIME___START 15 15-01-16 08:49:41
    

    PHASE_TIME___STARTの後の数字が、エラーの発生したフェーズ番号です。この例では、フェーズ番号は15です。

    各ログ・ファイルにエラーがあります。文字列PHASE_TIME___STARTの検索を繰り返して、すべてのログ・ファイルでエラーのあるフェーズ番号を特定し、最も小さいフェーズ番号が含まれるログ・ファイルを特定します。

    最も小さいフェーズ番号が含まれるログ・ファイルが、再開フェーズ番号(アップグレードを再開する起点となるフェーズ番号)です。

    次に例を示します。

    catupgrd0.log error occurred in phase 15:
    
    PHASE_TIME___START 15 15-01-16 08:49:41
    
    catupgrd1.log error occurred in phase 19:
    
    PHASE_TIME___START 19 15-01-16 08:50:01
    

    この例では、フェーズ番号15から再開します。すべてのログ・ファイルを検証して最初のエラーを探し、アップグレードを再開するフェーズを特定してください。

  3. パラレル・アップグレード・ユーティリティ(catctl.pl、LinuxおよびUNIXの場合はdbupgradeを使用して、Windowsの場合はdbupgrade.cmdを使用してコマンドラインから実行可能)の実行ディレクトリに変更し、失敗したフェーズからアップグレードを再開します。-pフラグを使用して、いずれかのフェーズからアップグレードを再開することを示し、再開フェーズ番号を指定します。マルチテナント・データベースでは、-c 'PDBname'という構文を通じて-cフラグも使用します(PDBnameは障害が発生したPDBの名前)。

    次に例を示します。

    LinuxまたはUNIXシステムの非CDB Oracle Databaseの場合:

    cd $ORACLE_HOME/bin
    dbupgrade -p 15

    WindowsシステムのマルチテナントOracle Database (CDB)のPDBの場合:

    cd $ORACLE_HOME/bin
    dbupgrade -p 15 -c 'PDB1'
    いずれの例でも、アップグレードは、-pフラグを使用して特定されたフェーズ15から再開されます。マルチテナントの例では、エラーの発生したPDBは、-cフラグで特定されます。
    これらの例で、アップグレードはフェーズ15から再開され、最後までアップグレードが実行されます。
  4. (オプション) -Pフラグを使用して停止フェーズを指定することで、エラーを含むフェーズを実行することもできます。停止フェーズを使用すると、エラーが発生したフェーズのみを再実行できます。アップグレード全体を実行することなく、エラーが発生したフェーズのみで実行することで、エラーが修正されたかどうかを迅速に特定できます。

    たとえば、Perlスクリプトのパラレル・アップグレード・ユーティリティのコマンド・オプションを使用する場合、次のようになります。

    cd $ORACLE_HOME/rdbms/admin
    $ORACLE_HOME/perl/bin/perl catctl.pl -p 15 -P 15 -c 'PDB1' 
    エラーの発生したフェーズでエラーが修正されたことを確認したら、その後のフェーズのアップグレードを中止できます。

    たとえば、マルチテナント・データベースPDB1のアップグレードのフェーズ15で発生したエラーが修正されたことを確認したら、LinuxおよびUNIXシステムで次のコマンドを使用してフェーズ16からアップグレードを継続できます。

    cd $ORACLE_HOME/bin dbupgrade -p 16 -c 'PDB1'