Oracle Databaseをダウングレードする場合のダウングレード後の作業

Oracle Databaseのリリースをダウングレードした後、互換性、コンポーネントおよびサポートされるプロトコルに影響する変更により、追加のタスクを完了する必要がある場合があります。

ダウングレード後のリリース更新およびその他のパッチの再適用

アップグレード後かつダウングレード前に、元のOracleホームに新しいパッチをインストールしていた場合は、ダウングレードが実行されて、catrelod.sqlが正常に完了したら、インストールしたパッチが適用されていることを確認します。

新しいパッチをインストールした場合、datapatchツールを実行して、ダウングレードしたデータベースにこれらのパッチを適用します。アップグレード後にOracleホームのバイナリおよびファイルを変更しなかった場合、catrelod.sqlを実行した後にdatapatchを実行する必要はありません。ただし、新しいパッチがインストールされているかどうか疑問がある場合は、datapatchを実行します。パッチがデータベースに適用されていることを確認するために必要な回数だけdatapatchを実行できない安全上の懸念はありません。

Oracle Databaseのダウングレード後のOracle RACの再有効化

ダウングレード後に、Oracle Real Application Clusters (Oracle RAC)を再度有効にできます。

ダウングレードにCLUSTER_DATABASE=FALSEを設定したOracle RACデータベースでのダウングレードでは、CLUSTER_DATABASE=TRUEを再度設定し、RACクラスタ内のすべてのインスタンスから開始できるようになりました。

Oracle Databaseのダウングレード後のOracle Database Vaultの再有効化

ダウングレード時にOracle Database Vaultを無効化するよう指示があった場合、これを実行する必要があります。

Oracle Database Vaultを使用している場合、ダウングレードする前にこれを無効にするように指示されている可能性があります。ダウングレード後にOracle Database Vaultを使用するには、登録して再度有効にする必要があります。

関連トピック

データベースのOracle Grid Infrastructure構成のダウングレード

ダウングレード後に、Oracle Grid Infrastructureの登録を変更して、以前のリリースのOracle Databaseホームでデータベース・リリースを起動する必要があります。

新しいリリースのOracle Grid Infrastructureは、以前のリリースのOracle Databaseを実行できます。特にOracle Grid Infrastructureに関連する問題が発生しないかぎり、Oracle Grid Infrastructureをダウングレードすることはお薦めしません。ただし、Oracle Databaesリリースをダウングレードした後は、コマンドsrvctl downgrade databaseを使用して、以前のリリースのOracleホームでデータベースを起動するようにOracle Clusterwareを構成する必要があります。

以前のリリースのOracleホームでデータベースを起動するようにOracle Clusterwareを構成するには、次のコマンド構文を使用します。$LATER_RELEASE_ORACLE_HOMEは新しいリリースのOracleホームへのパス(または環境変数)、old_release_oracle_homeは以前のリリースのOracleホームへのパス、old-releaseは以前のリリースのOracle Databaseリリースです。

$LATER_RELEASE_ORACLE_HOME/bin/srvctl downgrade database -d $ORACLE_UNQNAME -o old_release_oracle_home -t old-release

たとえば:

$ORACLE_HOME/bin/srvctl downgrade database -d $ORACLE_UNQNAME -o /u02/app/oracle/product/19/db_1/ -t 19.0.0

Oracle Databaseのダウングレード後のOracle Enterprise Managerのリストア

この項で説明されているリストア作業が必要になるのは、ダウングレードを実行する際に、Oracle Enterprise Managerがホストで構成されている場合のみです。

Oracle Enterprise Managerをリストアするには、最初にOracle Enterprise Manager Configuration Assistant (EMCA)を実行してから、emdwgrdユーティリティを実行します。

ダウングレード後のOracle Enterprise Managerのリストアの要件

12.1より前のリリースへのダウングレード後にOracle Enterprise Managerをリストアできるようにするには、アップグレード前にこれらの要件を満たす必要があります。

emca -restoreを使用してOracle Enterprise Managerを以前の状態にリストアするには、次の要件を満たす必要があります。

  • アップグレードの前に、Oracle Enterprise Managerの構成ファイルおよびデータのバックアップを保存していること

  • この手順で新しいOracle Databaseリリースのホームに存在するemcaバイナリを実行すること

Oracle Clusterwareシステムで、Oracle RACデータベースのOracle Enterprise Managerをリストアするには、emca -restoreを実行する前にsrvctlを使用してデータベースを登録しておく必要があります。emca -restoreは、データベースのダウングレード先となる以前のOracle DatabaseリリースのORACLE_HOME/binディレクトリから実行する必要があります。

適切なオプションを指定してemca -restoreコマンドを実行し、Oracle Enterprise Manager Database ControlまたはOracle Enterprise Manager Grid Controlを古いOracleホームにリストアします。

ダウングレードするデータベースが単一インスタンス・データベースか、Oracle RACデータベースか、Oracle ASMデータベースかによって、emcaの異なるオプションを指定します。

EMCAの実行によるダウングレード後のOracle Enterprise Managerのリストア

これらのトピックを参照して、ダウングレード後にOracle Enterprise Managerをリストアするためのリストア・シナリオを選択します。

Oracle ASMがない単一インスタンスのOracle Databaseでのemcaの実行

Enterprise Manager Configuration Assistant (emca)を使用してデータベースを管理します。

このコマンドを使用してEnterprise Manager Configuration Assistantを実行します。

ORACLE_HOME/bin/emca -restore db

次の情報の入力を求められます。

  • リストアするデータベースのOracleホーム

  • データベースのSID

  • リスナー・ポート番号

Oracle ASMがないOracle RACデータベースでのEMCAの実行

Enterprise Manager Configuration Assistant (emca)を使用してデータベースを管理します。

この手順を使用してEnterprise Manager Configuration Assistantを実行します。

ORACLE_HOME/bin/emca -restore db -cluster

次の情報の入力を求められます。

  • リストアするデータベースのOracleホーム

  • データベースの一意の名前

  • リスナー・ポート番号

単一インスタンスのOracle ASMインスタンスでのEMCAの実行

Enterprise Manager Configuration Assistant (emca)を使用してデータベースとストレージを管理します。

このコマンドを使用してEnterprise Manager Configuration Assistantを実行します。

ORACLE_HOME/bin/emca -restore asm

次の情報の入力を求められます。

  • リストアするデータベースのOracleホーム

  • Oracle ASMポート

  • Oracle ASM SID

Oracle RACインスタンス上のOracle ASMでのemcaの実行

Enterprise Manager Configuration Assistant (emca)を使用してデータベースとストレージを管理します。

このコマンドを使用してEnterprise Manager Configuration Assistantを実行します。

ORACLE_HOME/bin/emca -restore asm -cluster

次の情報の入力を求められます。

  • リストアするデータベースのOracleホーム

  • Oracle ASMポート

Oracle ASMがある単一インスタンスのOracle Databaseでのemcaの実行

Enterprise Manager Configuration Assistant (emca)を使用してデータベースとストレージを管理します。

このコマンドを使用してEnterprise Manager Configuration Assistantを実行します。

ORACLE_HOME/bin/emca -restore db_asm

次の情報の入力を求められます。

  • リストアするOracle DatabaseのOracleホーム

  • データベースのSID

  • リスナー・ポート番号

  • Oracle ASMポート

  • Oracle ASMホーム

  • Oracle ASM SID [+ASM]

Oracle RACデータベースおよびOracle ASMインスタンスでのemcaの実行

Enterprise Manager Configuration Assistant (emca)を使用してデータベースとストレージを管理します。

このコマンドを使用してEnterprise Manager Configuration Assistantを実行します。

ORACLE_HOME/bin/emca -restore db_asm -cluster

次の情報の入力を求められます。

  • リストアするデータベースのOracleホーム

  • データベースの一意の名前

  • リスナー・ポート番号

  • Oracle ASMポート

  • Oracle ASM Oracleホーム

  • Oracle ASM SID [+ASM]

emcaの出力は、指定するオプションおよびプロンプトで入力する値によって様々です。Oracle RAC環境では、Oracle RACのすべてのクラスタ・メンバー・ノードでこのステップを繰り返す必要があります。

ここで、Oracle Enterprise Manager Database Controlおよびデータをリストアするためにemdwgrdユーティリティを実行する必要があります。

Enterprise Manager Database Controlをリストアするためのemdwgrdユーティリティの実行

Oracle Enterprise Manager Database Controlおよびデータをリストアするには、emca -restoreの実行後にemdwgrdユーティリティを使用します。

emdwgrdを使用するには、次の操作を実行する必要があります。

  • ORACLE_HOMEおよび他の環境変数を、アップグレードが実行されたOracleホームを指すように設定します。

  • 新しいOracle DatabaseリリースのOracleホームからemdwgrdユーティリティを実行します。

次の手順は、LinuxおよびUNIX用です。これをWindowsで実行する場合は、emdwgrdemdwgrd.batに置き換えてください。

  1. ORACLE_HOMEを、データベースがアップグレードされる前のOracleホームに設定します。

  2. ORACLE_SIDを、アップグレード後にダウングレードされたデータベースのSIDに設定します。

  3. データベースがアップグレードされる前のOracleホームを指すように、PATHLD_LIBRARY_PATHおよびSHLIB_PATHを設定します。

  4. 新しいOracle DatabaseリリースのOracleホームに移動します。

    cd $ORACLE_HOME/bin
    
  5. 次のいずれかの手順を使用してemdwgrdを実行します。

    1. 単一インスタンス・データベースの場合は、次のコマンドを実行します。SIDはアップグレード後にダウングレードされたデータベースのSIDで、save_directoryは、Database Controlのファイルおよびデータの保存時に選択した記憶域の場所へのパスです。

      emdwgrd -restore -sid SID -path save_directory -tempTablespace TEMP
      
    2. Oracle RACデータベースの場合、クラスタ・ノード間のリモート・コピーが必要です。構成済のリモート・コピーを示す環境変数を定義します。たとえば:

      setenv EM_REMCP /usr/bin/scp
      

      その後、次のオプションを使用してemdwgrd -restoreを実行します。

      emdwgrd -restore -tempTablespace TEMP -cluster -sid SID_OldHome -path save_directory
      

      Oracleホームが共有デバイス上にある場合、-sharedemdwgrdコマンドのオプションに追加します。

  6. emdwgrdにより要求された場合は、SYSおよびSYSMANパスワードを入力します。

  7. emdwgrdが終了すると、Oracle Enterprise Manager Database Controlは古いOracleホームにダウングレードされます。

以前のリリースへのOracle APEXのリストア

Oracle Databaseのアップグレードと同時にOracle APEX (以前のOracle Application Express)もアップグレードした場合、ダウングレード後に以前のリリースに戻すステップを実行する必要があります。

データベースのダウングレード後にOracle APEXのダウングレードを完了するには、Oracle APEXインストレーション・ガイドにリストされたすべてのステップを実行して、お使いのOracle APEXのリリースを以前のリリースに戻します。戻すためのステップは、お使いのアーキテクチャが非CDBか、またはマルチテナント・アーキテクチャ(CDB) Oracle Databaseかによって異なります。

ノート:

データベースをアップグレードしたとき、同時にOracle APEXをアップグレードした場合、実行する必要があるのはこのステップのみです。

ダウングレード後のディクショナリ統計の収集

ダウンロード後に高いパフォーマンスを保証するためには、次のプロシージャを使用してディクショナリ統計を収集します。

ダウングレードしたリリースのデータ・ディクショナリ表の統計が収集されるように、データベースのダウングレード後にディクショナリ統計を収集することをお薦めします。

ノート:

ダウングレード・プロセスの後、データ・ディクショナリにはダウングレード済のディクショナリに保持されている変更が存在する可能性があることに注意してください。これらの変更は重要ではありません。ダウングレード済のデータ・ディクショナリは、以前のリリースのデータ・ディクショナリと機能的に同等です。

  • 非CDBのOracle Databaseの場合: DBMS_STATS.GATHER_DICTIONARY_STATSプロシージャを使用して、統計を収集することをお薦めします。たとえば、次のSQL文を入力します。

    SQL> EXEC DBMS_STATS.GATHER_DICTIONARY_STATS;
    
  • CDB (マルチテナント・アーキテクチャ) Oracle Databaseの場合: catconを使用して、マルチテナント・アーキテクチャ全体のデータ・ディクショナリ統計を収集することをお薦めします。

    コンテナ・データベースのすべてのPDBのディクショナリ統計を収集するには、次の構文を使用します。

    $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -l /tmp -b gatherstats -- --x"exec dbms_stats.gather_dictionary_stats"

    特定のPDBに関するディクショナリ統計を収集するには、次のような構文を使用します。

    $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -l /tmp -c
    'SALES1' -b gatherstats -- --x"exec dbms_stats.gather_dictionary_stats"

    前述の例では、SALES1というデータベースを指定することにより、実行するコマンドのPDB包含リストを-c SALES1オプションで指定しています。オプション-b gatherstatsでは、ログの基底名を指定します。オプション--xは、実行するSQLコマンドを指定します。SQLコマンドそのものは、引用符で囲みます。

ダウングレード後の修正したオブジェクト統計の再収集

ダウングレード後に、Oracle Databaseで代表的なワークロードを実行し、修正されたオブジェクト統計を再収集します。

固定オブジェクトは、X$表とその索引です。V$パフォーマンス・ビューは、X$を通じて定義されます。ダウングレード後に、修正したオブジェクト統計を再収集して、リストアしたデータベースのオプティマイザが正しい実行計画を生成できるようにします。こうした実行計画により、データベースのパフォーマンスを改善できます。代表的な統計を取得しないと、実行計画が最適ではなくなる可能性があり、パフォーマンス問題が発生する場合があります。

固定オブジェクトの統計を収集するには、DBMS_STATS.GATHER_FIXED_OBJECTS_STATS PL/SQLプロシージャを使用します。DBMS_STATS.GATHER_FIXED_OBJECTS_STATSでは、init.ora/spfileおよびSPFILEからすべての非表示またはアンダースコアのパラメータおよびイベントを削除するための推奨事項も表示されます。

固定オブジェクトの統計を収集するには、次のPL/SQLプロシージャを実行します。

SQL> execute dbms_stats.gather_fixed_objects_stats;

参照:

GATHER_FIXED_OBJECTS_STATSプロシージャの使用の詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

ダウングレード後の失効しているCBO統計の再収集

Oracle Databaseのダウングレードが完了した後に、Oracle Cost-Based Optimizer (CBO)統計を再収集することをお薦めします。

Oracle Databaseをアップグレードし、新しいCBO統計を収集すると、アップグレードしたデータベースは新しいデータベース統計を持ちます。アップグレードしたデータベースは新しいヒストグラム・タイプも含むことができます。このため、データベースをダウングレードしたときには、新しいリリースで収集した統計は前のリリースとは異なる可能性があります。この問題はデータ・ディクショナリ表と一般のユーザー表の両方に当てはまります。

GATHER_DATABASE_STATSか、または通常、ディクショナリおよびアプリケーション・スキーマで失効している統計を更新するのに使用する収集コマンドを使用して、失効している統計を再収集します。

たとえば、ダウングレード後は次のようになります。

  • 非CDBのOracle Databaseの場合: 統計を再収集するには、GATHER_DATABASE_STATSプロシージャを、オプション'GATHER STALE'を指定して使用することをお薦めします。たとえば:

    SQL> execute dbms_stats.gather_database_stats(options=>'GATHER STALE');
  • CDB (マルチテナント・アーキテクチャ) Oracle Databaseの場合: マルチテナント・アーキテクチャ全体にわたるデータ・ディクショナリ統計を再収集するには、catconの使用をお薦めします。

    コンテナ・データベースのすべてのPDBの失効しているディクショナリ統計を収集するには、次の構文を使用します。

    $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -l /tmp -b gatherstats -- --x"exec dbms_stats.gather_database_stats(options=>'GATHER STALE')"

    特定のPDBに関するディクショナリ統計を収集するには、次のような構文を使用します。

    $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -l /tmp -c
    'SALES1' -b gatherstats -- --x"exec dbms_stats.gather_database_stats(options=>'GATHER STALE')"

    前述の例では、SALES1というデータベースを指定することにより、実行するコマンドのPDB包含リストを-c SALES1オプションで指定しています。オプション-b gatherstatsでは、ログの基底名を指定します。オプション--xは、実行するSQLコマンドを指定します。SQLコマンドそのものは、引用符で囲みます。

ダウングレード後のレジストリ・コンポーネントの有効性の確認

レジストリ・コンポーネントの有効性を確認し、無効なコンポーネントを特定します。

ダウングレード後に、データベース内のコンポーネントの状態を確認します。完全なCDBをダウングレードする場合は、CDB_REGISTRYビューを使用できます。DBA_REGISTRYを使用して個々のPDBを確認することもできます。すべてのコンポーネントがVALIDまたはOPTION OFFのいずれかであることを確認します。

例10-1 CDB_REGISTRYビューを使用したCDBでのレジストリの確認


set line 200
set pages 1000
col COMP_ID format a8
col COMP_NAME format a34
col SCHEMA format a12
col STATUS format a10
col VERSION format a12
col CON_ID format 99

select CON_ID, COMP_ID, comp_name, schema, status, version from CDB_REGISTRY order by 1,2;

例10-2 DBA_REGISTRYビューを使用したPDBでのレジストリの確認


set line 200
set pages 1000
col COMP_ID format a8
col COMP_NAME format a34
col SCHEMA format a12
col STATUS format a10
col VERSION format a12

select COMP_ID, comp_name, schema, status, version from DBA_REGISTRY order by 1;