日本語PDF

マルチテナント・コンテナ・データベースのパラレル・アップグレード

この方法を使用して、1回のアップグレード操作でCDB$ROOT、PDB$SEED、およびCDB内のすべてのPDBをアップグレードします。

これはアップグレードの直接的な手順であり、メンテナンスが簡単になるため、停止時間をスケジュールできる場合はこのアプローチを使用することをお薦めします。この手順を使用すると、サーバーの使用可能なプロセッサ(CPU)に応じてマルチテナント・アーキテクチャ・コンテナ・データベースのすべてのPDBがパラレルにアップグレードされます。

注意:

パラレル・アップグレード方式を使用してコンテナ全体をアップグレードする場合は、すべてのPDBを停止する必要があります。すべてのPDBを停止できるように、アップグレードはスケジュールされたアップグレード期間に実行します。

注意:

  • 構成の変更を開始する前に、既存のデータベースのバックアップを必ず作成してください。

  • COMPATIBLE初期化パラメータを設定した後は、データベースをダウングレードできません。

  • アップグレードを開始する前には、ソース・データベースとターゲット・データベースを最新のバンドル・パッチまたはパッチ・セット更新(BPまたはPSU)にアップグレードし、ダウングレードを開始する前には、ソース・データベースとターゲット・データベースを最新のリリース更新にアップグレードすることをお薦めします。

  1. 適切なバックアップ計画が準備されていることを確認します。
  2. すべてのPDBをオープンします。

    次に例を示します。

    SQL> alter pluggable database all open;
    
  3. 次の構文を使用してアップグレード前情報ツール(preupgrade.jar)を実行します。
    /java -jar $New_release_Oracle_home/rdbms/admin/preupgrade.jar [TERMINAL|FILE|DIR outputdir] [TEXT|XML] [-c InclusionListOfPDBs] [-C ExclusionListOfPDBs]

    リストはスペースで区切ります。LinuxとUNIXでは、リスト項目を単一引用符 'で囲んでリストを定義します。Windowsシステムでは、リスト項目を二重引用符 "で囲んでリストを定義します。

    たとえば、次のコマンドを実行してPDBのPDB1からPDB25までにアップグレード前情報ツールを実行します(Oracle DatabaseのOracleホームの環境変数$ORACLE_HOME_12.2/u01/app/oracle/product/12.2.0/dbhome_1/に設定し、新しいOracle DatabaseのOracleホームの環境変数$ORACLE_HOME_19.1/u01/app/oracle/product/19.1.0/dbhome_1/に設定している場合)。

    LinuxおよびUNIXの場合:

    java -jar $ORACLE_HOME_19.1/rdbms/admin/preupgrade.jar \
    -c 'pdb1 pdb2 pdb3 pdb4 pdb5 pdb6 pdb7 pdb8 pdb9 pdb10 pdb11 pdb12 pdb13\
    pdb14 pdb15 pdb16 pdb17 pdb18 pdb19 pdb20 pdb21 pdb22 pdb23 pdb24 pdb25'

    Windowsの場合:

    java -jar %ORACLE_HOME_19.1%/rdbms/admin/preupgrade.jar \
    -c "pdb1 pdb2 pdb3 pdb4 pdb5 pdb6 pdb7 pdb8 pdb9 pdb10 pdb11 pdb12 pdb13\
    pdb14 pdb15 pdb16 pdb17 pdb18 pdb19 pdb20 pdb21 pdb22 pdb23 pdb24 pdb25"

    注意:

    アップグレード前情報ツールを実行するには、Java 1.5以上を使用する必要があります。デフォルトでは、直接アップグレード可能なOracle DatabaseリリースのJavaリリースでは、このツールがサポートされます。

  4. 生成された修正スクリプトおよびログ・ファイルを確認します。

    ORACLE_BASEが定義されている場合はデフォルトで、修正ファイルが次のいずれかのパスに配置されます。

    • LinuxおよびUNIXの場合:

      $ORACLE_BASE/cfgtoollogs/db_unique_name/preupgrade

    • Windowsの場合:

      %ORACLE_BASE%\cfgtoollogs\db_unique_name\preupgrade

    ORACLE_BASEが定義されていない場合は、修正ファイルが次のいずれかのパスに配置されます。

    • LinuxおよびUNIXの場合:

      $ORACLE_HOME/cfgtoollogs/db_unique_name/preupgrade

    • Windowsの場合:

      %ORACLE_HOME\cfgtoollogs\db_unique_name\preupgrade

    マルチテナント・アーキテクチャOracle Databaseでは、アップグレード前情報ツールは統合されたpreupgrade_fixups.sqlスクリプトも作成します。統合された修正スクリプトはcatcon.plを使用して実行できます。統合された修正スクリプトは、preupgrade.jarコマンドを実行したときにオープンされた各コンテナで実行されます。

  5. preupgrade_fixupsスクリプト、または個別のPDBスクリプトを実行します。preupgrade_fixups SQLスクリプトは、preupgradeスクリプトによってレポートされたいくつかの問題を解決します。

    マルチテナント環境のOracle Databaseデプロイメントでは、ソース・データベースでpreupgrade_fixupspdb-name.sqlスクリプトを実行できます(pdb-nameはPDBの名前です)。PDBの修正スクリプトを生成する場合は、PDBの名前が修正ファイル名に付加されます。

    個々のPDB修正スクリプトに加え、catcon.plを使用して、統合されたpreupgrade_fixups.sqlスクリプトを実行できます。統合スクリプトは、preupgrade.jarを実行したときにオープンされた各コンテナで実行されます。

    注意:

    $はオペレーティング・システムで予約された記号であるため、PDB$SEEDの修正スクリプトは、preupgrade_fixups_pdb_seed.sqlになります。

    アップグレード前情報ツールによって特定された他のアップグレード前の作業をすべて完了します。

  6. (条件付き) Oracle RACデータベースの場合、クラスタ・データベース初期化パラメータをfalseに設定します。

    次に例を示します。

    ALTER SYSTEM SET cluster_database=FALSE SCOPE=spfile;
  7. 古いOracleホームのデータベースを停止します。

    たとえば、db_unique_nameはデータベース名です。

    $ srvctl stop database -d db_unique_name
  8. PFILEまたはSPFILEを古いOracleホームから新しいOracleホームにコピーします。
  9. SQL*Plusと接続:
    sqlplus / as sysdba
  10. CDB$ROOTインスタンスをアップグレード・モードに移行します。
    STARTUP UPGRADE
  11. すべてのPDBをアップグレード・モードに移行します。
    ALTER PLUGGABLE DATABASE ALL OPEN UPGRADE;
  12. PDBのステータスをチェックし、アップグレードの準備が完了していることを確認します。
    SHOW PDBS
    すべてのPDBについて、ステータスがMIGRATEに設定されていることを確認します。
  13. SQL*Plusを終了して、ディレクトリを新しいOracleホームの$ORACLE_HOME/rdbms/adminに変更します。
    SQL> EXIT
    $ ORACLE_HOME/bin 
  14. パラレル・アップグレード・ユーティリティ(catctl.pl、シェル・コマンドdbupgradeを使用)を実行し、アップグレードを開始します(-dでディレクトリの場所を指定します)。
    dbupgrade -d $ORACLE_HOME/rdbms/admin

    パラメータを指定しない場合、パラレル・アップグレード・ユーティリティは、CPUの数を2で割った数に等しい数のPDBに対してパラレル・アップグレードを実行します。64個のCPUを持つサーバーでは、64を2で割った数に等しい32のPDBが、PDBごとに2つのSQLプロセッサを使用してパラレルにアップグレードされます。CDB$ROOTは、アップグレードの継続中はNORMALモードのままです。

  15. upg_summary.logでアップグレードが成功したことを確認します。必要に応じて他のログを確認します。
  16. データベースを再コンパイルできるように、すべてのPDBをオープンします。
    ALTER PLUGGABLE DATABASE ALL OPEN;
  17. SQL*Plusを終了して、ディレクトリを新しいOracleホーム・パスの$ORACLE_HOME/rdbms/adminに変更します。
    SQL> EXIT
    cd $ORACLE_HOME/rdbms/admin
  18. catcon.plスクリプトと、新しいリリースのOracle Databaseに付属するpostupgrade_fixups.sqlスクリプトを実行します。

    次の例は、catcon.plを実行するためのコマンド文字列を示しており、PDBごとに1つのパラレル・プロセッサを指定する-nパラメータ、実行するアップグレード前スクリプトが存在するパスを指定する-dパラメータ、スクリプトでログ・ファイルを配置する場所を指定する-lパラメータ、およびpostupgrade_fixups.sqlスクリプトのログ・ファイル接頭辞を指定する-bフラグを使用しています。

    $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -n 1 -d \
    $ORACLE_HOME/cfgtoollogs/cdbupgr/preupgrade -l /home/oracle/upgrdDBA -b \
    postupgrade_fixups postupgrade_fixups.sql
  19. postupgrade_fixups.sqlを実行します。

    非CDB:

    SQL> @rdbms/admin/postupgrade_fixups.sql

    CDB:

    $ORACLE_HOME/perl/bin/perl catcon.pl -n 1 -e -b postupgradefixups -d '''.''' postupgradefixups.sql
  20. utlusts.sqlを実行して、アップグレードの問題がないことを確認します。

    非CDB:

    SQL> @rdbms/admin/utlusts.sql
    

    CDB:

    $ORACLE_HOME/perl/bin/perl catcon.pl -n 1 -e -b utlu122s -d '''.''' utlusts.sql

    catcon.plを使用してutlusts.sqlを実行する場合、ログ・ファイルutlu122s0.logが生成されます。このログ・ファイルにはアップグレードの結果が含まれます。アップグレード・レポートのupg_summary.logを確認することもできます。

    データベースの状態に関する情報を確認するには、アップグレードの完了後、いつでも必要な回数だけutlusts.sqlを実行します。utlusts.sqlスクリプトがエラーを返したり、ステータスがVALIDではないコンポーネントを表示した場合や、コンポーネントに対してリストされたバージョンが最新のリリースではない場合、トラブルシューティングを実行してください。

  21. (条件付き) Oracle RAC環境の場合のみ、次のコマンドを入力してCLUSTER_DATABASEの初期化パラメータ値をTRUEに設定し、Oracle RACデータベースを起動します(dbnameはOracle RACデータベースの名前)。
    ALTER SYSTEM SET CLUSTER_DATABASE=TRUE SCOPE=SPFILE;
    srvctl start database -db db_unique_name

    これで、データベースがアップグレードされました。

    注意:

    古いOracleソフトウェアを保持している場合、古いソフトウェアを使用してアップグレードしたデータベースを起動しないでください。必ず新しいOracle Databaseホームで起動コマンドを使用してOracle Databaseを起動します。

    古いOracle環境を削除する前に、その環境のデータファイルをすべて新しいOracle Database環境に再配置してください。

    関連項目:

    データファイルの再配置の詳細は、『Oracle Database管理者ガイド』を参照してください