日本語PDF

マルチテナント・アーキテクチャのOracle Databaseの手動アップグレード・シナリオ

手動アップグレードの準備のために、マルチテナント・アーキテクチャでデプロイされたOracle Databaseの手動アップグレード・シナリオおよび手順を参照してください。

Oracle Database 12c以上では、マルチテナント・アーキテクチャによって、プラガブル・データベース(PDB)を含むマルチテナント・コンテナ・データベース(CDB)を使用したOracle Databaseデプロイメントが可能になります。Oracle Database 12cリリース1 (12.1.0.1)より前のすべてのOracle Databaseリリースでは、非CDBアーキテクチャを使用します。

注意:

COMPATIBLE初期化パラメータを12.1.0.2以上のリリースに設定した後は、データベースをダウングレードできません。プラガブル・データベース(PDB)のダウングレードは、互換性が12.1.0.1に設定されている場合にのみ可能です。それでもダウングレードが制限される可能性があります。

アップグレードまたはダウングレードを開始する前に、ソース・データベースとターゲット・データベースを最新のリリース更新またはリリース更新リビジョンにアップグレードすることをお薦めします。

Oracle Multitenant Oracle Databaseのアップグレードについて

マルチテナント・アーキテクチャにインストールされたOracle Databaseをパラレルに、または順番にアップグレードできます。

Oracle Database 12cリリース1 (12.1)以上では、コンテナ・データベース(CDB)のプラガブル・データベース(PDB)の作成および管理ができるマルチテナント・アーキテクチャが提供されます。マルチテナント・アーキテクチャ・システムをアップグレードするには、Oracle Database Upgrade Assistant (DBUA)を使用するか、またはパラレル・アップグレード・ユーティリティを使用して手動アップグレードを実行します。

マルチテナント・アーキテクチャを使用するOracle Databaseをアップグレードする場合、次の2つの方法があります。

  • パラレル。この方法では、CDBをアップグレードする1つのアップグレード操作を実行してから、複数のPDBをパラレルにアップグレードします。

  • 順次。この方法では、新しいリリースのCDBをインストールし、PDBを準備して以前のリリースのCDBから切断し、新しいリリースのCDBに接続して、各PDBのアップグレードを完了します。

次の項では、各アップグレード方法の概要について説明します。

Oracle Multitenantのパラレル・アップグレード

パラレルの方法では、パラレル処理と可用性の程度を設定するパラメータを使用して、パラレル・アップグレード・ユーティリティ(catctl.pl)で最初にCDB$ROOTをアップグレードします。

  • -nパラメータは、アップグレードを実行するパラレル処理の数を定義します(最大8)。

  • -Mパラメータは、アップグレード全体を通じてCDB$ROOTUPGRADEモードのままにするか、CDBのアップグレードの完了後にアクセス可能にするかを指定します。-Mパラメータを使用してアップグレードを実行しない場合、CDB$ROOTのアップグレードが完了すると、PDBは、各PDBのアップグレードが完了すると同時にアクセスできるようになります。–Mパラメータを使用してアップグレードを実行する場合、CDB$ROOTUPGRADEモードのままとなり、PDBは、すべてのPDBのアップグレードが完了するまで使用できません。

Oracle Multitenantの順次アップグレード

順次の方法では、新しいリリースのマルチテナント・アーキテクチャCDBをインストールします。次に、以前のリリースのマルチテナント・アーキテクチャCDBで、SQLコマンドを発行してアップグレード前スクリプトを実行し、アップグレードする1つ以上のPDBを準備してからそれらを停止します。その後、PDBを切断し、それらを新しいリリースのマルチテナント・アーキテクチャCDBに接続して、PDBごとに順番にアップグレードを完了します。

マルチテナント・アップグレードを使用したプロキシPDBのアップグレードの調整

プロキシPDBとPDBターゲットのバージョンが同じになるようにCDBのアップグレードを調整します。

アップグレード時には、プロキシPDBをアップグレードしても、それに対応するターゲットPDBはアップグレードされません。ターゲットPDBのアップグレードは個別に実行する必要があります。

マルチテナント・コンテナOracle Database (CDB)の手動でのアップグレード

この項のステップでは、コマンドライン・プロシージャを使用してCDBを手動でアップグレードするためのステップを示します。

この手順を使用する前に、次のステップを完了しておく必要があります。

  • 新しいリリースのOracle Databaseソフトウェアのインストール

  • 新しいOracleホームを準備します。

  • アップグレード前情報ツールの実行

Oracle Database 12cでは、Oracle Databaseをプラガブル・データベースを含むマルチテナント・コンテナ・データベース(CDB)として機能させることができるマルチテナント・アーキテクチャが導入されています。DBUAを使用してCDBをアップグレードできますが、その処理で、CDBに連結されているすべてのプラガブル・データベースを同時にアップグレードします。または、Oracle Databaseのソフトウェアをインストールして新しいOracleホームを準備した後に、手動のコマンドライン・アップグレードに進むことができます。

  1. アップグレード前情報ツールをまだ実行していない場合、実行します。次に進む前に、アップグレード前情報ツールの出力を確認して、出力に記載されているすべての問題を修正します。

  2. ソース・データベースをバックアップします。

  3. 新しいOracleホームをまだ準備していない場合、準備します。

  4. (条件付き) Oracle RAC環境の場合のみ、次のコマンドを入力して、CLUSTER_DATABASEの初期化パラメータ値をFALSEに設定します。

    ALTER SYSTEM SET CLUSTER_DATABASE=FALSE SCOPE=SPFILE;

    CLUSTER_DATABASEパラメータを変更した後にデータベースを再起動します。

  5. データベースを停止します。(構文は、非CDBとCDBで同じです。)

    SQL> SHUTDOWN IMMEDIATE
    

    ノート:

    PDBを閉じるには、CDBルートから次のように指定できます: alter pluggable database PDBname close

  6. ご使用のオペレーティング・システムがWindowsの場合、次のステップを実行します。

    1. アップグレードするデータベースのOracleサービスOracleService SIDを停止します(SIDはインスタンスの名前です)。たとえば、SIDORCLの場合、コマンド・プロンプトで次のように入力します。

      C:\> NET STOP OracleServiceORCL
    2. コマンド・プロンプトで、ORADIMを使用してOracleサービスを削除します。

      自分のSIDORCLの場合、SIDを自分のSIDに置き換えて次のコマンドを入力します。

      C:\> ORADIM -DELETE -SID ORCL
      
    3. コマンド・プロンプトで新しいOracle DatabaseリリースのORADIMコマンドを使用して、新しいリリースのOracle Databaseのサービスを作成します。

      たとえば:

      C:\> ORADIM -NEW -SID SID -SYSPWD PASSWORD -MAXUSERS USERS
           -STARTMODE AUTO -PFILE ORACLE_HOME\DATABASE\INITSID.ORA
      

      ほとんどのOracle Databaseサービスは、Oracleホーム・ユーザーの権限を使用してシステムにログオンします。サービスは、このユーザーの権限を使用して実行されます。ORADIMコマンドは、このユーザー・アカウントのパスワードを要求します。ORADIMを使用して、他のオプションを指定できます。

      この例で、SIDの値がORCLpassword (SYSPWD)の値がTWxy5791、ユーザーの最大数(MAXUSERS)の値が10、およびOracleホーム・パスがC:\ORACLE\PRODUCT\19.1.0\DBの場合、次のコマンドを入力します。

      C:\> ORADIM -NEW -SID ORCL -SYSPWD TWxy5791 -MAXUSERS 10
      -STARTMODE AUTO -PFILE C:\ORACLE\PRODUCT\19.1.0\DB\DATABASE\INITORCL.ORA
      

      ORADIMによって、ORACLE_HOME\databaseディレクトリにログが書き込まれます。ログ・ファイルには、マルチテナント・データベース内のPDBの名前が含まれています。

  7. ご使用のオペレーティング・システムがLinuxまたはUNIXの場合は、次の内容を確認します。

    1. ORACLE_SIDが正しく設定されていること。

    2. oratabファイルがOracle Database 12cのOracleホームを指していること。

    3. 次の環境変数がOracle Database 12cのディレクトリを指していること。

      • ORACLE_HOME

      • PATH

    4. クライアントで$ORACLE_HOME環境変数を設定するために使用するどのスクリプトも、新しいOracleホームを指している必要があります。

    ノート:

    Oracle Real Application Clustersデータベースをアップグレードする場合、Oracle Real Application Clustersデータベースでインスタンスが構成されているすべてのノードでこれらのチェックを実行してください。

    参照:

    ご使用のオペレーティング・システムでのその他の重要な環境変数の設定に関する詳細は、Oracle DatabaseおよびOracle Clusterwareのインストレーション・ガイドを参照してください

  8. 新しいOracle DatabaseリリースのOracleホームの所有者として、システムにログインします。

  9. 新しいOracleホームのパスOracle_home/rdbms/adminディレクトリからSQL*Plusを起動します。

    たとえば:

    $ cd $ORACLE_HOME/rdbms/admin
    $ pwd
    /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin
    $ sqlplus

    Windowsプラットフォームでは、SQL*Plusにアクセスするには、ディレクトリを%ORACLE_HOME%/binに変更します

  10. SYSDBA権限を持つアカウントを使用して、アップグレードするデータベースに接続します。

    SQL> CONNECT / AS SYSDBA
    
  11. アップグレード・モードでCDBを開始します。

    SQL> startup upgrade
  12. SQL*Plusで次のコマンドを発行して、インスタンスを起動します。

    SQL> alter pluggable database all open upgrade;
    

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

    ノート:

    UPGRADEモードでデータベースを起動すると、次のことが実行されます。

    • 新しいバージョンのOracle Databaseインスタンスを使用してデータベースが起動されます

    • ログインがSYSDBAに限定されます

    • システム・トリガーが無効になります

    • アップグレード用にデータベースを準備する追加操作が実行されます

  13. SQL*Plusを終了したら、次のステップに進みます。

    たとえば:

    SQL> EXIT
  14. CDB全体をアップグレードするには、パラレル・アップグレード・ユーティリティ(catctl.pl)を新しいOracleホームから実行します。パラレル・アップグレード・ユーティリティでは、停止時間を短縮するパラレル・アップグレード・オプションが提供されます。コマンドライン・スクリプトdbupgradeを使用して、新しいOracleホームからコマンドを実行できます。

    たとえば:

    Linuxの場合:

    cd $ORACLE_HOME/bin
    ./dbupgrade 
    

    Windowsの場合:

    cd %ORACLE_HOME%\bin
    dbupgrade 
    

    ノート:

    • -dオプションを使用して、処理対象のファイルが含まれるディレクトリを指定します。-lオプションを使用して、スプール・ログ・ファイルに使用するディレクトリを指定します。

    • CDB全体をアップグレードしており、CDB$ROOTにエラーがある場合、アップグレードは強制終了されます。

  15. CDB内のPDBのサブセットをアップグレードするために、包含リストまたは除外リストのいずれかを指定します。

    • LinuxまたはUNIXシステム用の次の例では、包含リストを使用してPDB1のみをアップグレードします。

      cd $ORACLE_HOME/bin
      ./dbupgrade -c 'PDB1' 
      
    • Windowsシステム用の次の例では、除外リストを使用してPDB1を除くCDB内のすべてをアップグレードします。

      cd $ORACLE_HOME\bin
      dbupgrade -C "PDB1" 

    ノート:

    個別のPDBは、以前のリリースのCDBから切断し、それよりも新しいリリースのCDBに接続することによりアップグレードできます。

    Windowsの場合、包含オプション(-c)または除外オプション(-C)を指定してdbupgradeコマンドを実行するときに、CDBルート名およびPDBシード名を引用符で囲んでオプションを指定する必要があります。

    たとえば:

    ... -C "CDB$ROOT PDB$SEED"

  16. CDBでは、SYSDBAとしてCDBにログインし、コマンドalter pluggable database all openを実行してデータベースでコードを再コンパイルできるようにします。たとえば:

    $ sqlplus / as sysdba
    
    SQL> alter pluggable database all open;
  17. ログ・ファイル・ベース(-b)コマンドを使用してcatcon.plを実行し、ログ・ファイル・ベースをutlrpに設定します。このコマンドはutlrp.sqlを起動し、残っているストアドPL/SQLおよびJavaコードを再コンパイルします。

    たとえば:

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

    コマンドで-b utlrpが指定されているため、再コンパイルの結果はログ・ファイルutlrp0.logに格納されます。

  18. catconユーティリティを使用してpostupgrade_fixups.sqlを実行し、ログ・ファイル・ベースをpostupgrade_fixupsに設定します。

    たとえば:

    $ORACLE_HOME/perl/bin/perl catcon.pl -n 1 -e -b postupgrade_fixups -d '''.''' postupgrade_fixups.sql
  19. catconユーティリティを使用してutlusts.sqlを実行し、ログ・ファイル・ベースをutlu19sに設定します。このコマンドは、すべての問題が修正されたことを検証します。

    たとえば、CDBでは次のようになります。

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

    コマンドで-b utlu19sが指定されているため、アップグレードの結果はログ・ファイルutlu19s0.logに格納されます。

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

  20. DBMS_DST PL/SQLパッケージを使用してタイムゾーン・ファイルをアップグレードし、タイムゾーン・データファイルを最新の状態にします。アップグレード後にタイム・ゾーンを更新することもできます。タイムゾーンを更新する場合は、CDB$ROOTとPDBの両方でタイムゾーンを更新する必要があります。

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

    たとえば:

    SQL> EXIT
  22. (条件付き) Oracle Real Application Clustersデータベースをアップグレードする場合、次のコマンド構文を使用して、Oracle Clusterwareのデータベース構成をアップグレードします。

    $ srvctl upgrade database -db db-unique-name -oraclehome oraclehome

    この例で、db-unique-nameは(インスタンス名ではなく)割り当てられたデータベース名であり、oraclehomeは、データベースがアップグレードされるOracleホームの場所です。SRVCTLユーティリティでは、以前のリリースで使用されていた短いCLIオプションに加えて、GNUスタイルの長いオプションもサポートされます。

これで、データベースがアップグレードされました。アップグレード後の手順を完了する準備が整いました。

注意:

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

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

参照:

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

優先度リスト付きのパラレル・アップグレード・ユーティリティを使用したPDBのアップグレードについて

Oracle Database 12.2以降では、あるPDBのセットを他のPDBより先にアップグレードするように優先度リストを使用してPDBをアップグレードできます(このアップグレード優先度は変更できます)。

優先度リストにより、その優先度に従ってPDBをグループ化してアップグレードできます。優先度リストは、アップグレード優先度の順序(数値の優先度グループ別のPDB)を定義するカンマ区切りリストが含まれたテキスト・ファイルです。優先度リストを使用してアップグレードを実行し、アップグレード実行時にそのリストを呼び出すには、-Lオプションを使用してパラレル・アップグレード・ユーティリティ(dbupgradedbupgrade.cmdまたはcatctl.pl)を実行します。

次の書式を使用してリストを作成します。この書式例で、変数numeralは数値で、pdbxはPDBの名前です。

Number, Pdb
    numeral,pdb1,pdb2,pdb3
    numeral,pdb4
    numeral,pdb5,pdb6,pdb7,pdb8
    .
    .
    .

数値はPDBの優先度を表します。

PDBの優先度は次のとおりです。

  1. CDB$ROOT: 優先度1。コンテナ・データベースを最初にアップグレードすることは、必須の優先度です。コンテナ・データベースのアップグレードの優先度を変更することはできません。CDB$ROOTは、常に最初に処理されます。

  2. PDB$SEED: 優先度1。PDBシード・データベースをアップグレードすることは、必須の優先度です。PDBシードのアップグレードの優先度を変更することはできません。PDB$SEEDは、常にCDB$ROOTの後に、PDBアップグレードの最初のバッチとともにアップグレードされます。

  3. 優先度リスト1のPDB: 優先度1は、ユーザー選択による最高の優先度です。これらのPDBは、CDB$ROOTの後で、PDB$SEED PDBがアップグレードされるバッチで2番目にアップグレードされます。

  4. 優先度リスト2のPDB: 優先度2は、2番目に高い優先度のPDBセットです。これらのPDBは、優先度1のPDBの後にアップグレードされます。

  5. 優先度リスト3のPDB: 優先度3は、3番目に高い優先度のPDBセットです。これらのPDBは、優先度2のPDBの後にアップグレードされます。

  6. 優先度リスト4のPDB: 優先度4は、4番目に高い優先度のPDBセットです。これらのPDBは、優先度3のPDBの後にアップグレードされます。

  7. 優先度リスト5のPDB: 優先度5は、5番目に高い優先度のPDBセットです。これらのPDBは、優先度4のPDBの後にアップグレードされます。

  8. 優先度リスト6のPDB: 優先度6は、6番目に高い優先度のPDBセットです。これらのPDBは、優先度5のPDBの後にアップグレードされます。

パラレル・アップグレード・ユーティリティを実行する場合、次の処理ルールが適用されます。

  • CDB$ROOTおよびPDB$SEEDは、優先度リストに存在しない場合でも、常に最初に処理されます。

  • 優先度リストに含まれるすべてのPDBは、優先度の順序で処理されます

  • 優先度リストに指定されていないPDBは、優先度リストに指定されているPDBの後に処理されます。

たとえば:

Number,Pdb
1,sales1,region2,receivables1
2,sales2
3,dss1,region3,region2,dss2,dss3

優先度リストを使用してパラレル・アップグレード・ユーティリティを実行するには、次の構文を使用します。

dbupgrade -L priority_list_name

たとえば、パラレル・アップグレード・ユーティリティのバッチ・コマンドとMy122Upgradeという名前の優先度リストを使用して、Windowsシステムでパラレル・アップグレード・ユーティリティを実行するには、次のコマンドを入力します。

C:>\u01\app\19.1.0\db_home1\rdbms\admin\dbupgrade -L MyUpgrade 

アップグレード優先度を設定する優先度リストを使用したアップグレードを完了した後、それらのPDB優先度の状態は、各PDB用にCDBで維持されます。次回のアップグレードでは、以前のアップグレードでPDB用に設定された優先度が考慮されます。

PDBのアップグレード優先度の状態を変更するには、次のSQLコマンド構文を使用します(PDBNameは変更するアップグレード優先度が設定されたPDBの名前で、PDBPriorityNumberは割り当てる新しい優先度の値です)。

SQL> alter session set container = CDB$ROOT
SQL> alter pluggable database PDBName upgrade priorityPDBPriorityNumber 

たとえば:

SQL> alter session set container = CDB$ROOT
SQL> alter pluggable database region2 upgrade priority 2

この例によって、前の例でアップグレード優先度1に設定されたregion 2という名前のPDBは、アップグレード優先度2に変更されます。

優先度リスト、包含リストおよび除外リストを使用したPDBのアップグレードについて

プラガブル・データベース(PDB)のアップグレード方法を制御するには、優先度リストを含む包含リストおよび除外リストを使用できます。

Oracle Database 12cリリース1 (12.1.0.2)以降のリリースでは、アップグレードがPDBに適用される順序を指定するために適した方法は、alter pluggable databaseupgrade priorityとともに使用してソースOracle Databaseで優先度を設定することです(pdbnameはPDB、numberはアップグレード用に割り当てる優先度)。


alter pluggable database pdbname upgrade priority number
たとえば:
alter pluggable database CDB1_PDB3 upgrade priority 2

ただし、ここで説明されている手順を使用して、アップグレード時に優先度リストを指定することもできます。

アップグレード処理およびリスト

次の用語は、アップグレードのリスト処理のタイプを示します。

  • 優先度リスト: リスト内のPDBのアップグレード優先度を指定するカンマ区切りリスト。

  • 包含リスト: アップグレードするPDBを指定するカンマ区切りリスト。これらのリストのPDBは、優先度リストに指定されたPDBの後にアップグレードされます。

  • 除外リスト: アップグレードしないPDBを指定するカンマ区切りリスト。

包含リストと除外リストは、次のように使用できます。

  • アップグレードで独自にPDBのセットを含めたり除外することができます

  • 優先度リストと組み合せて、PDBのアップグレード順やアップグレードから除外するPDBを詳細に指定できます。

    包含リストを優先度リストと組み合せて使用すると、包含リストに指定されたPDBは、優先度リストで割り当てられている優先度の値に従ってアップグレードされます。包含リストに指定されているが、優先度リストに指定されていないPDBは、優先度リストのすべてのPDBがアップグレードされた後にアップグレードされます。

    除外リストを優先度リストと組み合せて使用すると、除外リストに指定されたPDBは、アップグレードされません。

ノート:

LinuxやUnixのviやMicrosoft Windowsのメモ帳などのプレーン・テキスト・エディタを使用して優先度リストを作成します。

このトピックの例では、cpu_countの値は2です。

デフォルト処理を使用するアップグレード優先度

デフォルト処理は、リストを使用してコンテナ・データベース(CDB)内のPDBをアップグレードする方法を指定しない場合に実行されるアップグレード処理です。

デフォルト処理では、CDB$ROOTがアップグレードされ、次にPDB$SEEDがアップグレードされます。設定した並列度に応じて、PDB$SEEDでは1つ以上のPDBを並行で更新できます。アップグレードが完了し、アップグレード・プロセッサが使用可能になると同時にPDBがアップグレードされます。

後続の例では、CDBおよびPDBで次のマルチテナント構成を使用します。

CDB$ROOT
PDB$SEED
CDB1_PDB1
CDB1_PDB2
CDB1_PDB3
CDB1_PDB4
CDB1_PDB5

デフォルト処理では、アップグレードするPDBやアップグレードから除外するPDBのプリファレンスは指定しません。デフォルト処理では、CDB$ROOTが最初にアップグレードされ、アップグレードされるPDBの最初のグループでPDB$SEEDが更新されます。

例4-3 完全なPDBアップグレード優先度の指定

次の優先度リストの例では、すべてのPDBの優先度がリストで設定されます。


1,CDB$ROOT
1,PDB$SEED
1,CDB1_PDB1
1,CDB1_PDB2
2,CDB1_PDB3
2,CDB1_PDB4
3,CDB1_PDB5

次に、優先度順にPDBをグループ化する同じリストの別の記述方法を示します。

1,CDB$ROOT
1,PDB$SEED
1,CDB1_PDB1,CDB1_PDB2
2,CDB1_PDB3,CDB1_PDB4
3,CDB1_PDB5

前述の例で、優先度1にリストされているPDBは、CDB1_PDB1およびCDB1_PDB2です。これらのPDBは、CDB1_PDB3およびCDB1_PDB4より先にアップグレードされます。

次に、コンテナIDの値(CON_ID)を使用して優先度順を設定する、同じリストの別の記述方法を示します。

1,CDB$ROOT
1,PDB$SEED
1,3,4
2,5,6
3,7

前述の例で、優先度1にリストされているPDBは、CDB1_PDB1 (CON_ID 3で指定)およびCDB1_PDB2 (CON_ID 4で指定)です。これらのPDBは、CDB1_PDB3 (CON_ID 5)およびCDB1_PDB4 (CON_ID 6)より先にアップグレードされます。

CON_IDメソッドを使用して優先度を指定する場合、最初の数値で、PDBのグループの優先度を指定します。2番目の数値で、その優先度グループに含まれるPDB (CON_ID)の数値を指定します。CDB$ROOTは、常に最初に更新され、PDB$SEEDは、常に最初のアップグレード優先度グループで更新されます。

これらの例は、すべて次の特性を持つ優先度リストのアップグレードを示します。

  • 除外処理: なし

  • 包含処理: なし

  • デフォルト処理: なし

アップグレード順序は、次の順番で実行されます。

  1. CDB$ROOT

  2. PDB$SEEDCDB1_PDB1

  3. CDB1_PDB2CDB1_PDB3

  4. CDB1_PDB4CDB1_PDB5

例4-4 PDBの優先度サブセットの指定およびデフォルト処理による他のPDBのアップグレード

次の例では、アップグレード用にPDBのサブセットを指定するpriority.lstという優先度リストを指定します。

catctl -L priority.lst catupgrd.sql
1,CDB$ROOT
1,PDB$SEED
1,CDB1_PDB1,CDB1_PDB2

この例は、次の特性を持つ優先度リストのアップグレードを示します。

  • 除外処理: なし

  • 包含処理: なし

  • デフォルト処理: CDB1_PDB3CDB1_PDB4CDB1_PDB5

アップグレード順序は、次の順番で実行されます。

  1. CDB$ROOT

  2. PDB$SEEDCDB1_PDB1

  3. CDB1_PDB2CDB1_PDB3

  4. CDB1_PDB4CDB1_PDB5

例4-5 PDBの優先度サブセットの指定および包含リストによる他のPDBのアップグレード

次の例では、アップグレード用にPDBの優先度サブセットを指定するpriority.lstという優先度リストを指定します:

catctl -L priority.lst -c 'CDB1_PDB2 CDB1_PDB4 CDB1_PDB5' catupgrd.sql

このコマンドは、次の優先度リストを参照します。

1,CDB$ROOT
1,PDB$SEED
1,CDB1_PDB2,CDB1_PDB4
2.CDB1_PDB5

この例は、次の特性を持つ優先度リストのアップグレードを示します。

  • 除外処理: なし

  • 包含処理: CDB1_PDB2CDB1_PDB4CDB1_PDB5

  • デフォルト処理: なし

アップグレード順序は、次の順番で実行されます。

  1. CDB1_PDB2CDB1_PDB4

  2. CDB1_PDB5

パラレル・アップグレード・ユーティリティは包含リストにあるPDBだけを、優先度リストの順に処理します。

例4-6 PDBの優先度サブセットの指定および除外リストによるCDB$ROOTの除外

次の例では、priority.lstという優先度リストを使用してcatctlを実行します。このコマンドを-Cオプション付きで実行するため、アップグレードからCDB$ROOTが除外されます。

catctl -L priority.lst -C 'CDB$ROOT' catupgrd.sql

優先度リストは次のとおりです。

1,CDB$ROOT
1,PDB$SEED
1,CDB1_PDB1,CDB1_PDB2
2,CDB1_PDB3,CDB1_PDB4
3,CDB1_PDB5

アップグレードは、アップグレード優先度を指定する優先度リストを使用して処理されます。

  • 包含処理: なし

  • 除外処理: CDB$ROOT

  • 優先度処理: PDB$SEEDCDB1_PDB1CDB1_PDB2CDB1_PDB3CDB1_PDB4CDB1_PDB5

CDB$ROOTは除外されるため、優先度処理はシフトします。アップグレード順序は、次の順番で実行されます。

  1. PDB$SEEDCDB_PDB1

  2. CDB_PDB2CDB_PDB3

  3. CDB1_PDB4CDB1_PDB5

例4-7 CATCTL_LISTONLYを使用した除外リストの指定

次の例では、アップグレード用にPDBのサブセットを指定するpriority.lstという優先度リストを指定します。CATCTL_LISTONLYオプションを指定すると、優先度リストに含まれないPDBはアップグレードから除外されます。

catctl -L priority.lst -C 'CATCTL_LISTONLY' catupgrd.sql

優先度リスト:

1,CDB$ROOT
1,PDB$SEED
1,CDB1_PDB1,CDB1_PDB2
2,CDB1_PDB3
3,CDB1_PDB5
  • 除外処理: CATCTL_LISTONLY (包含優先度リストのみを処理)

  • 包含処理: なし

  • デフォルト処理: なし

アップグレード順序は、次の順番で実行されます。

  1. CDB$ROOT

  2. PDB$SEEDCDB1_PDB1CDB1_PDB2

  3. CDB1_PDB3CDB1_PDB5

ノート:

除外リストにキーワードCATCTL_LISTONLYを指定することで、優先度リストは包含優先度リストになります。リストのPDBのみが処理されます。このシナリオではデフォルト処理は発生しないため、この例ではCDB1_PDB4は処理されません。

例4-8 CON_ID値を使用した優先度リストの指定

次の例では、アップグレード用にPDBのサブセットを指定するpriority.lstという優先度リストを指定します。

catctl -L priority.lst -C 'CATCTL_LISTONLY' catupgrd.sql

アップグレード順序は、優先度リストの優先度値によって決まります。-Lパラメータによってコールされるリスト(priority.lst)で、アップグレード優先度値に続く数値は、PDB名に関連付けられたCON_ID値です。

1,3,4
2,5,CDB1_PDB4
3,7

前述のリスト例で、CON_ID値とPDB名を混在させて使用できることに注意してください。

優先度1にリストされているPDBは、CDB1_PDB1 (CON_ID 3で指定)およびCDB1_PDB2 (CON_ID 4で指定)です。これらのPDBは、CDB1_PDB3 (CON_ID 5)、CDB1_PDB4 (名前で指定)およびCDB1_PDB5 (CON_ID 7)より先にアップグレードされます。

  • 除外処理: -C CATCTL_LISTONLY (包含優先度リストのPDBのみを処理)

  • 除外処理: なし

  • 包含処理: priority.lstで指定

  • デフォルト処理: CDB$ROOTPDB$SEED

アップグレード順序は、PDBに関連付けられたCON_ID番号を使用する優先度リストによって決まります。

  1. CDB$ROOT

  2. PDB$SEEDCDB1_PDB1

  3. CDB1_PDB2CDB1_PDB3

  4. CDB1_PDB4CDB1_PDB5

ノート:

この例は、CON_IDメソッドを使用してPDBを指定する方法を示しており、優先度リストからCDB$ROOTおよびPDB$SEEDを省略しています。CDB$ROOTおよびPDB$SEEDは、デフォルト処理を使用して処理されます。

マルチテナント・アーキテクチャのパラレル・アップグレード

この方法を使用して、コンテナ・データベース(CDB)をアップグレードしてから複数のプラガブル・データベース(PDB)をパラレルにアップグレードして、マルチテナント・アーキテクチャOracle Databaseリリース(Oracle Database 12cリリース1 (12.1.0.1)以降)をアップグレードします。

プラガブル・データベース(PDB)のパラレル・アップグレードについて

パラレルの方法を使用して、コンテナ・データベース(CDB)をアップグレードしてからすぐにパラレルSQLプロセッサを使用してPDBをアップグレードできます。

CDBには、0 (ゼロ)、1またはそれ以上のPDBを含めることができます。デフォルトでは、パラレル・アップグレード・ユーティリティ(catctl.pl)により、CDBおよび同じアップグレード・ウィンドウ内のそのすべてのPDBが更新されます。パラレル・アップグレード・ユーティリティでは、コンピュータ処理装置(CPU)の数を使用して、同時にアップグレードするPDBの最大数を決定します。リプレイ・アップグレードを使用したアップグレードの場合(デフォルト)、パラレルにアップグレードされるPDBの数は、パラレルSQLプロセス数(-nオプション)をパラレルPDB SQLプロセス数(-Nオプション)で割って2で割ることで決定されます。クラシック・アップグレードの場合、同時に実行されるPDBアップグレードの最大数は、パラレルSQLプロセス数(-nオプション)をパラレルPDB SQLプロセス数(-Nオプション)で割った、パラレルにアップグレードされるPDBの数です。

ノート:

CDBの各PDBが提供するすべてのデータベース・サービスの一般的な停止時間に対応できるアップグレード・ウィンドウを計画する必要があります。

プラガブル・データベースのアップグレード構文

dbupgrade [-M] -n [-N] [-t]

  • -Mでは、CDB$ROOTをアップグレード・モードで維持するかどうか、またはそれをアップグレードの完了時に使用可能にするかどうかを指定します。

    • -Mパラメータを使用してパラレル・アップグレード・ユーティリティを実行する場合、アップグレードでは、CDB$ROOTとそのすべてのPDBがアップグレード・モードになり、合計アップグレード時間を短縮できます。ただし、CDBとそのすべてのPDBがアップグレードされるまで、どのPDBも起動できません。

    • -Mパラメータを使用してパラレル・アップグレード・ユーティリティを実行しない場合、CDB$ROOTがアップグレードされて標準モードで再起動され、標準のバックグラウンド・プロセスが起動されます。アップグレードが成功した後、CDB$ROOTのみが読取り/書込みモードで開かれます。PDBはすべてMOUNTモードのままになります。それぞれのPDBのアップグレード中に、他のPDBのアップグレードが進行中でも各PDBをオンラインにできます。

  • -nでは、PDBのパラレル・アップグレード・プロセッサの数を指定します。

    -nの値を指定しない場合、-nのデフォルトはCPU_COUNT値になります。

    -nの値を指定する場合、その値を使用してパラレルSQLプロセスの数が決定されます。最大値の制限はありません。最小値は4です。

  • -Nでは、PDBのアップグレード時に使用するSQLプロセッサの数を指定します。最大値は8です。最小値は1です。-Nの値を指定しない場合、デフォルト値は2になります。

    クラシック・アップグレードの場合、同時に実行されるPDBアップグレードの最大数は、クラシック・アップグレードの場合は-nの値で割られた-Nの値になり、リプレイ・アップグレードのデフォルトの場合は-nで割られた値を2で割った値になります。

  • -tリプレイ・アップグレードのデフォルトを使用するかわりに、AutoUpgradeを使用してクラシック・アップグレードを使用することを指定します。

次に、PDBのパラレル・アップグレードの方法で使用する手順の概要を示します。

  1. バックアップ計画が完了していることを確認します。

  2. preupgrade句を使用してAutoUpgradeを実行し、アップグレードを開始する前に修正する必要がある問題があるかどうかを確認します。レポートされた問題をすべて修正します。

    たとえば:

    java -jar autoupgrade.jar -preupgrade "dir=/tmp,oh=/u01/app/product/12.2.0/dbhome_1,sid=db122,target_version=21" -mode analyze
  3. AutoUpgradeユーティリティを実行します。次のアップグレードが順番に実行されます。

    1. サイクル1: CDB$ROOTが新しいOracleリリースにアップグレードされます

    2. サイクル2からサイクルx: -nを使用して指定したパラメータ設定により決定されるアップグレードのサイクル数で、x: PDB$SEEDおよびPDBがパラレルにアップグレードされます。

  4. アップグレード後のステップを完了します。

例4-9 デフォルトを使用したマルチテナント・アーキテクチャのアップグレードの例(パラメータ・セットなし)

このシナリオでは、CPU_COUNT値は24です。-nオプションを使用してパラレルPDBプロセッサの値を指定しない場合、パラレルPDBプロセッサ(-n)のデフォルト値は24になります。-Nの値を指定しない場合、SQLプロセッサの数(-N)のデフォルト値は2です。

結果:

リプレイ・アップグレードの場合、6つのPDBがパラレルにアップグレードされます([CPU_COUNTを2で割る]、2で割る、または12を2で割る)。PDBごとに2個のパラレルSQLプロセスが割り当てられます。

従来のアップグレードの場合、12のPDBがパラレルにアップグレードされます(CPU_COUNTを2で割るか、24を2で割る)。PDBごとに2個のパラレルSQLプロセスが割り当てられます。

例4-10 64個のPDBのパラレル・アップグレード・プロセッサおよび4個のパラレルSQLプロセスを使用したマルチテナント・アーキテクチャのアップグレードの例

このシナリオでは、オプション-n 64を指定して、パラレルPDBアップグレード・プロセッサの値を64に設定します。オプション-N 4を指定して、パラレルSQLプロセッサの値を4に指定します。

結果:

リプレイ・アップグレードの場合、8つのPDBがパラレルにアップグレードされます([64を4で割る]/2)。PDBごとに4個のパラレルSQLプロセスが存在します。

従来のアップグレードの場合、16のPDBがパラレルにアップグレードされます(64を4で割る)。PDBごとに4個のパラレルSQLプロセスが存在します。

例4-11 20個のPDBのパラレル・アップグレード・プロセッサおよび2個のパラレルSQLプロセスを使用したマルチテナント・アーキテクチャのアップグレードの例

このシナリオでは、オプション-n 20を指定して、パラレルPDBアップグレード・プロセッサの値を20に設定します。オプション-N 2を指定して、パラレルSQLプロセッサの値を2に指定します。

結果:

リプレイ・アップグレードの場合、5つのPDBがパラレルにアップグレードされます([20を2で割る]、2で割る)。PDBごとに2個のパラレルSQLプロセスが存在します。

クラシック・アップグレードの場合、10のPDBがパラレルにアップグレードされます(20を2で割る)。PDBごとに2つのパラレルSQLプロセスがあります。

例4-12 10個のPDBのパラレル・アップグレード・プロセッサおよび4個のパラレルSQLプロセスを使用したマルチテナント・アーキテクチャのアップグレードの例

このシナリオでは、オプション-n 10を指定して、パラレルPDBアップグレード・プロセッサの値を10に設定します。オプション-N 4を指定して、パラレルSQLプロセッサの値を2に指定します。

結果:

リプレイ・アップグレードの場合、1つのPDBがアップグレードされます([10を4で割る]、2で割る)。PDBには4つのパラレルSQLプロセスがあります。

クラシック・アップグレードの場合、2つのPDBがパラレルにアップグレードされます(10を4で割る)。PDBごとに4個のパラレルSQLプロセスが存在します。

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

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

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

ノート:

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

注意:

  • 構成の変更を開始する前に、既存のデータベースのバックアップを必ず作成してください。
  • compatible初期化パラメータを設定した後は、データベースをダウングレードできません。
  • アップグレードを開始する前には、ソースおよびターゲット・データベースを最新のリリース更新(RU)またはリリース更新リビジョン(RUR)にアップグレードし、ダウングレードを開始する前には最新のリリース更新にアップグレードすることをお薦めします。
  1. 適切なバックアップ計画が準備されていることを確認します。
  2. すべてのPDBをオープンします。

    たとえば:

    SQL> alter pluggable database all open;
    
  3. アップグレードの準備状況を確認するには、preupgradeパラメータを使用してAutoUpgradeを実行し、dirオプションを使用して出力ログ・ディレクトリを指定します。
    java -jar autoupgrade.jar -preupgrade "dir=/tmp,oh=/u01/app/product/12.2.0/dbhome_1,sid=db122,target_version=21" -mode analyze
  4. ログ・ディレクトリのupgrade.xmlファイルを確認します。

    マルチテナント・アーキテクチャのOracleデータベースでは、fixupsモードでpreupgradeパラメータを使用してAutoUpgradeを実行すると、AutoUpgradeの実行時に開いていたすべてのコンテナで修正が実行されます。これらのスクリプトによって、AutoUpgradeで識別されるいくつかの問題が解決されます。

    upgrade.xmlファイルで特定されたその他のアップグレード前タスクを完了します。

  5. (条件付き) Oracle RACデータベースの場合は、SQL*Plusを使用してクラスタ・データベース初期化パラメータをFALSEに設定します。

    たとえば:

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

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

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

    Oracle Database 21c以降、デフォルトでは、dbupgradeスクリプトはリプレイ・アップグレードをコールします。これにより、並列度はCPUの数を4で割った数に設定されます。パラレル・アップグレードされるPDBの数は、常にレガシー・アップグレードで以前に使用された値の半分です。64個のCPUを持つサーバーでは、64を4で割った数に等しい16個のPDBがパラレルにアップグレードされます。

    ノート:

    クラシック・アップグレードを使用してアップグレードを実行する場合は、-tオプションを使用してdbupgradeを起動します。たとえば:

    dbupgrade -t -d $ORACLE_HOME/rdbms/admin

    AutoUpgradeを使用する場合は、AutoUpgradeスクリプトの指示を参照してください。

  14. upg_summary.logを確認してアップグレードが成功したことを確認します。必要に応じて他のログを確認します。
  15. SQL*Plusを使用してすべてのPDBをオープンし、データベースを再コンパイルできるようにします。
    ALTER PLUGGABLE DATABASE ALL OPEN;
  16. SQL*Plusを終了して、ディレクトリを新しいOracleホーム・パスの$ORACLE_HOME/rdbms/adminに変更します。
    EXIT
    cd $ORACLE_HOME/rdbms/admin
  17. preupgradeパラメータを指定してAutoUpgradeをpostfixupsモードで実行します。AutoUpgradeはすべてのデータベース・チェックを実行し、その結果に基づいて自動的に修正を実行します。

    たとえば:

    java -jar autoupgrade.jar -preupgrade "dir=/tmp,oh=u01/app/product/12.2.0/dbhome_1,sid=db122,target_home=/databases/product/19c/dbhome_1" -mode postfixups
  18. utlusts.sqlを実行して、アップグレードに関する問題がないことを確認します。

    たとえば、catconユーティリティを使用してutlusts.sqlを実行するCDBでは、フラグ-bを使用してアップグレードのログ・ファイル・ベースをutlu19sに設定します。

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

    コマンドで-b utlu19sが指定されているため、アップグレードの結果はログ・ファイルutlu19s0.logに格納されます。

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

  19. (条件付き) Oracle RAC環境の場合のみ、次のコマンドを入力して、CLUSTER_DATABASEの初期化パラメータ値をTRUEに設定します。
    ALTER SYSTEM SET CLUSTER_DATABASE=TRUE SCOPE=SPFILE;
    
  20. Oracle Databaseを起動します。dbnameはデータベースの名前です。
    srvctl upgrade database -db db-unique-name -oraclehome oraclehome
    srvctl enable database -db db-unique-name
  21. SQL*Plusを使用してデータベースを停止します。
    
    SHUTDOWN IMMEDIATE
    
  22. srvctlを使用して、データベースを起動します。
    srvctl start database -db db-unique-name

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

注意:

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

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

切断/接続を使用したマルチテナント・アーキテクチャの順次アップグレード

以前のリリースのマルチテナント・コンテナ・データベース(CDB) (Oracle Databaseリリース12c (12.1.0.1)以降)に存在するプラガブル・データベース(PDB)をアップグレードするには、以前のリリースのCDBからPDBを切断し、PDBを新しいリリースのCDBに接続できます。

プラガブル・データベース(PDB)の順次アップグレードについて

パラレル・アップグレード・ユーティリティを使用してPDBを手動でアップグレードするには、以前のリリースのCDBからPDBを切断し、そのPDBを新しいリリースのCDBに接続してから新しいリリースにアップグレードします。

PDBのアップグレードに使用できるオプションが複数あります。CDBには、0 (ゼロ)、1またはそれ以上のプラガブル・データベース(PDB)を含めることができます。新しいOracle Databaseリリースをインストールするか、またはCDB (CDB$ROOT)をアップグレードした後に、CDB上のすべてのPDBをアップグレードせずに1つ以上のPDBをアップグレードできます。

サービス・デリバリのニーズを満たすアップグレード計画を選択できます。たとえば、AutoUpgradeユーティリティを使用してPDBをアップグレードしたり、手動のパラレル・アップグレード・ユーティリティを使用してPDBを個別にアップグレードしたり、包含リストまたは除外リストを使用してアップグレードすることができます。CDBとすべてのPDBをアップグレードすることも(パラレル手動アップグレード)、CDBをアップグレードしてから包含リストや除外リストを使用して個別にまたはセットでPDBを順次アップグレードすることもできます。データベース・アップグレード・ユーティリティ(DBUA)も引き続き使用できます。ただし、Oracle Databaseのアップグレードには、AutoUpgradeユーティリティを使用することをお薦めします。

パラレル・アップグレード・ユーティリティを使用してアップグレードを実行し、手動の切断/接続アップグレードを実行することにした場合、パラレル・アップグレード・ユーティリティを使用したPDBの順次アップグレードに必要なステップの概要は次のとおりです。

  1. 以前のリリースのPDBを以前のリリースのCDBから切断します。
  2. CDBからPDBを削除します。
  3. 以前のリリースのPDBを新しいリリースのCDBに接続します。
  4. 以前のリリースのPDBを新しいリリースにアップグレードします。
パラレル・アップグレード・ユーティリティを使用して手動でアップグレードすることにした場合は、リストを使用してPDBのアップグレードを管理できます。
  • 優先度リスト: PDBのアップグレード順序を設定します

  • 包含リスト: 優先度リストに指定されたPDBがアップグレードされた後にアップグレードするPDBのセットを指定できます

  • 除外リスト: アップグレードしないPDBのセットを指定できます

ノート:

PDBは、バックアップしないとリカバリできません。CDBを作成してPDBに接続する方法でアップグレードした後は、必ずPDBをバックアップしてください。

以前のリリースのPDBの以前のリリースのCDBからの切断

PDBのアップグレードを準備するには、この手順を使用して以前のリリースのCDBからPDBを切断します。

  1. データベースのアップグレード準備が整っているかどうかを確認するには、preupgradeパラメータを指定してAutoUpgradeをanalyzeモードで実行します。たとえば、データベースsalespdbがOracleホーム/u01/app/oracle/product/12.2.0/dbhome1にある場合、Oracle Database 19cにアップグレードする準備状況を確認します。

    1. setenv ORACLE_HOME /u01/app/oracle/product/12.2.0/dbhome1を実行します。
    2. setenv ORACLE_SID salespdbを実行します。
    3. java -jar autoupgrade.jar -preupgrade "target_version=19,dir=/autoupgrade/test/log" –mode fixupsを実行します。
    4. ディレクトリ/autoupgrade/test/log/salespdb/prefixupsの下のprefixups.xmlを確認します。
  2. 自動的に修正できなかったAutoUpgradeで検出された問題を修正します。

  3. 切断するPDBをクローズします。

    たとえば、PDB salespdbをクローズするには、次のコマンドを使用します。

    SQL> ALTER PLUGGABLE DATABASE salespdb CLOSE;
    
  4. もう一度CDB$ROOTにログインします。
    CONNECT / AS SYSDBA
    SQL> ALTER SESSION SET CONTAINER=CDB$ROOT;
    
  5. 次のSQLコマンド構文を使用して以前のリリースのPDBを切断します(pdbはPDBの名前で、pathはPDB XMLファイルの場所です)。

    ALTER PLUGGABLE DATABASE pdb UNPLUG INTO 'path/pdb.xml';

    たとえば、pdbの名前がsalespdbで、パスが/home/oracle/salespdb.xmlの場合:

    SQL> ALTER PLUGGABLE DATABASE salespdb UNPLUG INTO '/home/oracle/salespdb.xml';
    

    コマンドが完了すると、次のレスポンスが表示されます。

    Pluggable database altered
  6. プラガブル・データベースsalespdbは削除しますが、データ・ファイルは保持します。

    CDBビューに残っている情報をクリーン・アップし、将来の問題を回避するために、この手順の後にsalespdbを削除することをお薦めします。ベスト・プラクティス・ガイドラインとして、まず対象CDBのPDBをバックアップし、その後にソースでDROPコマンドを発行します。

    注意:

    DROPコマンドによりバックアップ・ファイルが削除されるため、元のCDBからPDBを削除した後は、先に行ったバックアップを使用して元に戻すことはできません。

    プラガブル・データベースを削除するには、次のコマンドを入力します。

    SQL> DROP PLUGGABLE DATABASE salespdb KEEP DATAFILES; 
  7. 終了します。

以前のリリースのPDBの新しいリリースのCDBへの接続

以前のリリースのCDBから新しいリリースのCDBにPDBを接続するには、CREATE PLUGGABLE DATABASEコマンドを使用します。

次の手順例では、Oracle管理ファイルを使用しているときのPDBへの接続方法を示しています。PDBの接続の詳細は、『Oracle Database管理者ガイド』を参照してください。

  1. 新しいリリースのCDBに接続します。

  2. 次のSQLコマンドを使用して以前のリリースのPDBに接続します(pdbはPDBの名前で、pathはPDB XMLファイルが存在するパスです)。

    CREATE PLUGGABLE DATABASE pdb USING 'path/pdb.xml';

    たとえば:

    SQL> CREATE PLUGGABLE DATABASE salespdb USING '/home/oracle/salespdb.xml';
    

    コマンドが完了すると、次のレスポンスが表示されます。

    Pluggable database created.

ノート:

以前のリリースのPDBに接続するときには、PDBは制限モードです。アップグレードの場合にのみ、PDBをオープンできます。

以前のリリースのPDBの新しいリリースへのアップグレード

UPGRADEモードでのPDBのオープンでは、パラレル・アップグレード・ユーティリティを使用して、以前のリリースのPDBをCDBのリリース・レベルにアップグレードします。

  1. 必要に応じて、アップグレードするPDBに切り替えます。たとえば、PDB salespdbに切り替えるには、次のコマンドを入力します。

    SQL> ALTER SESSION SET CONTAINER=salespdb;
  2. PDBをUPGRADEモードで開きます。

    SQL> ALTER PLUGGABLE DATABASE OPEN UPGRADE;
    
  3. パラレル・アップグレード・ユーティリティ・コマンド(catctl.pl、またはシェル・ユーティリティdbupgrade)を使用してPDBをアップグレードします。

    PDBをアップグレードする場合、パラレル・アップグレード・ユーティリティで通常使用するコマンドを使用します。ただし、アップグレードするPDBを指定するためにオプション-c PDBnameも追加します。salespdbという名前のPDBを使用する次の例に示すとおり、PDBの名前を大文字にします。

    $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catctl.pl -d  \
    $ORACLE_HOME/rdbms/admin -c 'salespdb' -l $ORACLE_BASE catupgrd.sql
  4. 結果を確認します。

    ログのデフォルトのファイル・パスはOracle_base/cfgtoollogs/dbname/upgradedatetimeです。Oracle_baseはOracleベース・パス、dbnameはデータベース名、upgradedatetimeはアップグレードの日時です。日時の文字列の書式はYYYYMMDDHHMMSCで、YYYYは年、MMは月、DDは日、HHは時間、MMは分、SCは秒を表します。

    たとえば:

    $ORACLE_BASE/cfgtoollogs/salespdb/upgrade20181015120001/upg_summary.log
    
  5. アップグレード後修正を実行し、databaseUseのINVALIDオブジェクトを再コンパイルするには、ユーティリティcatcon.plを使用してスクリプトpostupgrade_fixups.sqlを実行します。

    $ORACLE_HOME/perl/bin/perl catcon.pl –c 'salespdb' -n 1 -e -b postfixups -d '''.''' /tmp/cfgtoollogs/salespdb/preupgrade/postupgrade_fixups.sql
  6. $ORACLE_HOME/rdbms/adminディレクトリから、ユーティリティcatcon.plを使用してutlrp.sqlを実行します。

    $ORACLE_HOME/perl/bin/perl catcon.pl –c 'salespdb'-n 1 -e -b comp -d '''.''' utlrp.sql

    このスクリプトは、データベース内のINVALIDオブジェクトを再コンパイルし、現在のディレクトリにcomp0.logという名前のログ・ファイルを配置します。

PDBのアップグレードに包含リストまたは除外リストを使用する

以前のリリースのPDBのサブセットをアップグレードする場合は、包含リストまたは除外リストを使用して、新しいリリース・レベルのCDBまたはPDBを再度アップグレードしないようにします。

アップグレードするコンテナを記録し、包含リストまたは除外リストを使用して、これらのコンテナが連続バルク・アップグレードから除外されるようにします。アップグレードしたコンテナを連続バルク・アップグレードから除外することで、アップグレードが必要なPDBでのみアップグレードが実行されることが保証されます。再アップグレードを回避することでアップグレード時間全体が短縮され、不要なダウン時間を避けることになります。

たとえば、マルチテナント・アーキテクチャ・デプロイメントを使用してOracle Databaseをインストールした場合は、コンテナCDB$ROOTPDB$SEED、およびCDBが作成されたときに作成された他のPDBは、新しいリリースのマルチテナント・アーキテクチャの一部です。CDBおよび、同時に一連のPDBを新しいリリースにアップグレードした場合は、CDBコンテナも、アップグレードしたPDBも再度アップグレードする必要はありません。

どちらの場合でも、以前のリリースのPDBに接続し、それらをアップグレードするときに、除外リストか包含リストを使用してPDBをアップグレードします。
  • アップグレードするPDBセットだけを指定するには、包含リストを使用します。

  • すでにアップグレードしたCDBおよびPDBを除外するには、除外リストを使用します。

アップグレード範囲を制限するための包含リストも除外リストも使用しない場合、パラレル・アップグレード・ユーティリティ(catctl.pl)は、アップグレードが必要なPDBだけではなく、CDB全体をアップグレードしようとします。アップグレード処理中、システムには不要なダウンタイムがあります。包含リスト・オプションと除外リスト・オプションは相互に排他的です。