パラレル・アップグレード・ユーティリティを使用した手動アップグレード

手動で実行および管理するスクリプトを使用してアップグレードを実行するには、パラレル・アップグレード・ユーティリティ(catctl.pl)を使用できます。

Oracle Databaseのパラレル・アップグレード・ユーティリティについて(CATCTL.PLおよびDBUPGRADE)

パラレル・アップグレード・ユーティリティ(catctl.pl、およびdbupgrade スクリプト)によって、特定の順序でアップグレードを実行する必要のないコンポーネントを同時にアップグレードできます。

Oracle Database 12cリリース1 (12.1)には、パラレル・アップグレード・ユーティリティcatctl.plが導入されています。このユーティリティでは、データベース・ディクショナリをパラレルにロードし、データベースをアップグレードするために複数のSQLプロセスを使用することで、アップグレードの実行にかかる合計時間を短縮します。コンポーネントのパラレル・アップグレードを実行することで、CPU容量を十分に活用できます。手動によるアップグレードとDatabase Upgrade Assistant (DBUA)を使用して実行するアップグレードの両方でアップグレード処理を簡易化するための改善を引き続き行います。DBUAおよび手動アップグレード手順では、新しいパラレル・アップグレード・ユーティリティを活用します。

シェル・コマンド、dbupgradeを実行できます。このコマンドはcatctl.plをPerlから実行する必要がなく、コマンド・ラインから開始します。

dbupgradeシェル・コマンドはファイル・パス$ORACLE_HOME/bin (LinuxおよびUNIXの場合)、および%ORACLE_HOME%\bin (Windowsの場合)にあります。catctl.plに有効なコマンド引数をシェル・コマンドに指定できます。コマンドは新しいOracleホーム・パスから直接実行するか、またはユーザー環境変数を設定してそのファイル・パスをポイントします。

たとえば:

デフォルト値による実行:

$ ./dbupgrade

/tmpに配置されたログ・ディレクトリを指定して実行:

$ ./dbupgrade -l /tmp

優先度リストを使用して、パラレル・アップグレード・ユーティリティを実行することもできます。たとえば:

$ ./dbupgrade -L priority_list_name

優先度リストを使用する場合は、アップグレードでPDBの特定のリストを含めたり除外できます。

また、優先度エミュレーションを使用してパラレル・アップグレード・ユーティリティを実行し、実際にアップグレードを実行せずに優先度リストの読取り方法と実行方法を確認することもできます。たとえば:
$ ./dbupgrade -E 

パラレル・アップグレード・ユーティリティを実行するための一般的なステップ

参照してOracle Databaseのパラレル・アップグレード・ユーティリティの使用方法の概要を把握してください。

パラレル・アップグレード・ユーティリティ(catctl.pl、これはシェル・コマンドdbupgradeを使用して起動します)はデータ・ディクショナリとコンポーネントを並行でロードします。並行でロードすると全体的なアップグレード時間が短縮されます。パラレル・アップグレード・ユーティリティを実行する前に、アップグレード前に通常行うデータベースのバックアップ手順に従います。また、前提条件として、preupgrade句を使用してAutoUpgradeを実行し、アップグレードを続行する前にデータベース管理者が対処する必要がある問題を特定する必要があります。

パラレル・アップグレード・ユーティリティを使用してデータベースをアップグレードするための一般的なステップは次のとおりです。

  1. 現行のデータベースをバックアップします。
  2. 新しいリリースのOracle Databaseソフトウェアをインストールします。
  3. ソース・データベースでpreupgradeパラメータを指定してAutoUpgradeを実行し、AutoUpgradeで修正されない問題を修正します。

  4. 現在のデータベースを停止します。
  5. 新しいリリースのデータベース・ソフトウェアにアクセスするように新しいOracleホーム環境を設定し、ディレクトリORACLE_HOME/rdbms/adminからSQL*Plusを起動します。
  6. SYSDBAシステム権限を使用してユーザー・アカウントにログインし、アップグレードするデータベースに接続します。
    CONNECT / AS SYSDBA
    
  7. データベースをアップグレード・モードで起動します。構成タイプに応じたコマンドを使用します。

    SQL> startup upgrade;
    SQL> alter pluggable database all open upgrade;  

    ノート:

    UPGRADEキーワードは、アップグレード用に環境を準備する操作を実行します。

    起動コマンドでPFILEオプションを使用して、初期化パラメータ・ファイルの場所を指定する必要があります。

    データベースをアップグレード・モードで起動すると、catctl.plスクリプトを実行するまでは、固定ビューへの問合せのみ、エラーにならずに実行できます。catctl.plを実行するまでは、PL/SQLの使用を試みたり、他のビューに問合せを実行しようとすると、エラーが返されます。

    サポートが終了した初期化パラメータを示すエラーが表示された場合は、そのサポートが終了した初期化パラメータをノートにとり、アップグレードを継続します。次回、データベースを停止したときに、そのサポートが終了した初期化パラメータを削除します。

  8. SQL*Plusを終了します。

  9. 新しいOracleホームからパラレル・アップグレード・ユーティリティを実行します。

    ユーティリティはシェル・コマンド(LinuxおよびUnixではdbupgrade、Microsoft Windowsの場合はdbupgrade.cmd)として、またはPerlコマンド(catctl.pl)として実行できます。

    たとえば、LinuxおよびUnixの場合は次のようにします。

    cd $ORACLE_HOME/bin
    ./dbupgrade

    たとえば、Microsoft Windowsでは次のように指定します。

    cd %ORACLE_HOME%\bin
    dbupgrade

    パラレル・アップグレード・ユーティリティによって、アップグレード処理が開始されます。

    ノート:

    パラレル・アップグレード・ユーティリティはアップグレードを実行するために他のファイルを使用します。LinuxおよびUnixシステムでは、これらのファイルにはcatconst.pmcatcom.pmsqlpatchsqlpatch.plまたはsqlpatch.pmおよびorahomeが含まれます。Windowsシステムでは、これらのファイルにはorahome.exeが含まれます。これらのファイルを変更または削除しないでください。

パラレル・アップグレード・ユーティリティ(catctl.pl)のパラメータ

パラレル・アップグレード・ユーティリティ(catctl.pl)の実行方法を制御します。これらの引数を使用してdbupgradeシェル・コマンドを実行することもできます。

ノート:

シェル・コマンド・ユーティリティdbupgradecatctl.plを開始します。dbupgradeユーティリティはORACLE_HOME/binディレクトリにあります。コマンド・プロンプトでシェル・コマンド・ユーティリティを使用して、パラレル・アップグレード・ユーティリティを起動できます。デフォルト値を使用してユーティリティを実行するか、catctl.plの入力パラメータを使用してパラレル・アップグレード・ユーティリティの引数を指定できます。

表4-1 パラレル・アップグレード・ユーティリティ(catctl.pl)のパラメータ

パラメータ 説明

-c

アップグレードするPDBの空白区切りの包含リストを指定します。たとえば、PDB1、PDB2、PDB3およびPDB4のあるOracle Multitenantデプロイメントで、PDB1とPDB2を含めながら、指定しないPDBを除外できます。PDB1とPDB2はアップグレードされますが、PDB3とPDB4はアップグレードされません。

LinuxおよびUNIX(一重引用符を使用):

-c 'PDB1 PDB2'

Windows (二重引用符を使用):

-c "PDB1 PDB2"

-C

アップグレードするPDBの空白区切りの除外リストを指定します。たとえば、PDB1、PDB2、PDB3およびPDB4のあるOracle Multitenantデプロイメントで、除外リストを使用してPDB1とPDB2を除外しながら、指定しないPDBを含めることができます。PDB1とPDB2はアップグレードされませんが、PDB3とPDB4はアップグレードされます。

LinuxおよびUNIX(一重引用符を使用):

-C 'PDB1 PDB2'

Windows (二重引用符を使用):

-C "PDB1 PDB2"

ノート: -c-Cは相互に排他的です。

-C 'CATCTL_LISTONLY'は、パラレル・アップグレード・ユーティリティで優先度リストのPDBのみを処理するように指定するオプションです。このオプションを-Lパラメータとともに使用して、リストを指定します。

-d

処理するファイルが含まれているディレクトリの場所を指定します。

-e

スクリプトの実行中にecho OFFに設定します。デフォルトはecho ONです。

-E

アップグレード・エミュレーションを実行できます。

-Eパラメータを使用してエミュレーション・モードでパラレル・アップグレード・ユーティリティを実行することで、優先度リストがどのように実行されるかをテストしたり、他のアップグレード・パラメータの選択がアップグレード中にどのように実行されるかをテストできます。たとえば、-nおよび-Nパラメータを使用して行うリソース割当ての選択がどのように実行されるかについて、詳細情報を取得するアップグレード・エミュレーションを実行できます。

アップグレード・エミュレーションを実行するには、パラレル・アップグレード・ユーティリティを実行する前にすべてのアップグレードの準備を完了してから、-Eを使用してコマンドを実行します。

-Eパラメータ付きでパラレル・アップグレード・ユーティリティを実行し、-Lパラメータを使用してコマンドの一部として優先度リストを呼び出すと、ユーティリティによってcatctl_priority_run.lstファイルにアップグレード順序が書き込まれます。このリストは、-lパラメータで指定するファイル・パスに配置されるか、または別の出力ファイル・パスを指定しない場合はデフォルトのログ・ファイル領域に配置されます。

-F

以前のアップグレード・エラーを強制的にクリーンアップします。

非CDBデータベースでは、-Fパラメータのみが必要です。CDBでは、空白区切りの包含リスト(-cで指定)でこのオプションを使用します。

-i

スプール・ログ・ファイルの作成時に使用する識別子を指定します。

-l

スプール・ログ・ファイルで使用するディレクトリの場所を指定します。

デフォルトの場所はOracle_base/cfgtoollogs/dbname/upgradedatetimeです。dateおよびtime文字列の書式はYYYYMMDDHHMMSCです。YYYYは年、MMは月、DDは日、HHは時間、MMは分、SCは秒を表します。

/adminディレクトリにはログ・ファイルを書き込まないことを強くお薦めします。

-L

Oracle Database のアップグレード中に優先度リストを使用してPDBをアップグレードし、優先度リスト名を指定します。優先度リストによって、アップグレード中にデータベースの優先度ステータスが更新されます。この優先度リストは、将来のアップグレードでも維持されます。

デフォルトで、CDB$ROOTおよびPDB$SEEDデータベースは、常に最初に処理されます。これらは、優先度リストに追加されていなくても、最初に処理されます。優先度リストに含まれるすべてのPDBは、優先度リストに含まれないPDBより先に処理されます。

-M

PDBのアップグレード中にCDB$ROOTをUPGRADEモードで維持します。

非CDBでは、このパラメータは無視されます。

CDBのアップグレードでこのパラメータ設定を使用すると、CDBとそのすべてのPDBがアップグレード・モードになり、合計アップグレード時間が短縮できます。ただし、CDBとそのすべてのPDBがアップグレードされるまで、どのPDBも起動できません。

デフォルトでは、-Mパラメータ設定を使用しない場合、CDB$ROOTがアップグレードされて標準モードで再起動され、標準のバックグラウンド・プロセスが起動されます。それぞれのPDBのアップグレード中に、他のPDBのアップグレードが進行中にPDBをオンラインにすることができます。

-n

パラレル操作で使用する処理の数を指定します。

非CDBの場合: -nパラメータはデータベースをアップグレードするときに使用するSQLプロセスの数を指定します。

マルチテナント・アーキテクチャ・データベース(CDB)の場合: 同時にアップグレードされるPDBの数は-nパラメータの値により制御されます。複数のPDBアップグレードが一緒に処理されます。Oracle Database 12c以上では、マルチテナント・アーキテクチャ・データベースのデフォルト値は、システムのCPUの数です。24に等しいcpu_countは、-nのデフォルト値である24と同じです。

-nパラメータの値:

非CDBの場合: -nの最大値は8です。最小値は1です。デフォルト値は4です。

マルチテナント・アーキテクチャ・データベース(CDB)の場合: -nの最大値に制限はありません。最小値は4です。同時実行されるPDBアップグレードの最大数は、-Nの値で割られた-nの値になります。

-N

データベースをアップグレードする時に使用するSQL処理の数を指定します。

非CDBでは、このパラメータは無視されます。

CDBでは、最大値は8です。最小値は1です。デフォルト値は2です。

-p

指定したフェーズから再開します。アップグレードを再実行する場合、正常に完了しているフェーズは再開されません。

-P

指定したフェーズから停止します。

-R

失敗したフェーズからアップグレードを再開します。実行されていないアップグレード・フェーズだけが再実行されるように、-Rパラメータを指定することで、失敗した時点からアップグレードを再開できます。

-s

セッションを初期化するSQLスクリプトを指定します。

-S

パラレルではなく、シリアル・アップグレードを指定します。

Oracle Database 12.2以降では、-Sオプションを使用したcatupgrd.sqlはサポートされなくなりました。

-T

ユーザー・スキーマベースの表領域をオフラインにします。

-u

ユーザー名を指定し、パスワードを要求します。

-y

フェーズのみを表示します。

-z

catcon.pmの本番デバッグ情報を有効にします。

-Z

catctl.plのデバッグ・トレース情報を戻します。

たとえば、1に設定する場合、-Z 1を入力します。

パラレル・アップグレード・ユーティリティの使用例

この例を使用して、パラレル・アップグレード・ユーティリティを手動で実行してアップグレードを実行する方法を理解してください。

パラレル・アップグレード・ユーティリティ(catctl.pl)は、AutoUpgradeおよびDBUAと統合されています。catctl.pl Perlスクリプトでは、クラシック・アップグレードを使用してCDB$ROOTをアップグレードします。パラレル・アップグレード・ユーティリティは、コマンドライン・スクリプトdbupgradeを使用して手動で実行することもできます。コマンドライン・パラメータを使用してパラレル・アップグレード・ユーティリティを実行し、アップグレードの実行方法を指定します。たとえば、パラレル操作を使用せずにシリアル・モードでユーティリティを実行するには、-n 1オプションを指定します。

例4-1 CDBおよび非CDBでのパラメータを使用したパラレル・アップグレード・ユーティリティの実行

パラレル・アップグレード・ユーティリティの実行時に-n 4オプションを使用すると、アップグレード処理によってcatupgrd0.logcatupgrd1.logcatupgrd2.logおよびcatupgrd3.logが作成されます。すべてのcatupgrd#.logファイルをチェックして、アップグレードが成功したことを確認してください。アップグレードに失敗し、問題を修正してパラレル・アップグレード・ユーティリティを再実行した場合、以前のログ・ファイルは上書きされます(-lパラメータを使用して別のログ・ディレクトリを指定した場合を除く)。

たとえば:

cd $ORACLE_HOME/bin
dbupgrade -n 4 -l $ORACLE_HOME/diagnostics

例4-2 パラレル・アップグレード・ユーティリティを使用した複数のプラガブル・データベース(PDB)に対するパラレル・アップグレードの実行

これらの例では、パラメータ設定によって、パラレル・アップグレード・ユーティリティによる複数のPDBに対するアップグレードの実行方法がどのように変化するかを示します。

ノート:

アップグレード計画では、次のことに注意してください。
  • CDB$ROOTは、SQLプロセスの最小値が4に、最大値が8にデフォルトで設定されます

  • -Nのデフォルト値は2です。

  • PDB$SEEDは、アップグレード・サイクルでは常に1つのPDBとしてカウントされます

  • パラレル・アップグレード・ユーティリティのパラメータ-nのデフォルトは、CPU_COUNTパラメータの値です

次の例のシステムは、CPU_COUNTの値が24であるOracle Multitenant Oracle Databaseシステムです。

パラメータ-nおよび-Nの値を指定せずに(つまり、-Nのデフォルト値2を受け入れ、-nのデフォルト値をCPU_COUNTパラメータの値24として受け入れます)、パラレル・アップグレード・ユーティリティを実行します。次のパラレル処理が発生します。

  • 12のPDBがパラレルにアップグレードされます(CPU_COUNTを2で割る)

  • 1つのPDBに対して2つのパラレル処理が実行されます

-nの値を64に、-Nを4に指定します。次のパラレル処理が発生します。

  • 16のPDBがまとめてアップグレードされます(64を4で割る)

  • 1つのPDBに対して4つのパラレル処理が実行されます

-nの値を20に、-Nを2に指定します。次のパラレル処理が発生します。

  • 10のPDBがまとめてアップグレードされます(20を2で割る)

  • 1つのPDBに対して2つのパラレル処理が実行されます

-nの値を10に、-Nを4に指定します。次のパラレル処理が発生します。

  • 2つのPDBがまとめてアップグレードされます(10を4で割って切捨て)。

  • 1つのPDBに対して4つのパラレル処理が実行されます

-nの値を指定せずに(つまり、-nのデフォルト値(CPU_COUNTパラメータの値)を受け入れます)、-Nの値を1と指定します。次のパラレル処理が発生します。

  • 24のPDBがまとめてアップグレードされます(CPU_COUNT値を1で割る)

  • 1つのPDBに対して1つの処理が実行されます

-nの値を20に指定し、-Nの値を指定しません(つまり、-Nのデフォルト値である2を受け入れます)。次のパラレル処理が発生します。

  • 10のPDBがまとめてアップグレードされます(20を2で割る)

  • 1つのPDBに対して2つのパラレル処理が実行されます