Oracle Databaseをダウングレードする場合のダウングレード後の作業
Oracle Databaseのリリースをダウングレードした後、互換性、コンポーネントおよびサポートされるプロトコルに影響する変更により、追加のタスクを完了する必要がある場合があります。
- ダウングレード後のリリース更新およびその他のパッチの再適用
アップグレード後かつダウングレード前に、元のOracleホームに新しいパッチをインストールしていた場合は、ダウングレードが実行されて、catrelod.sql
が正常に完了したら、インストールしたパッチが適用されていることを確認します。 - Oracle Databaseのダウングレード後のOracle RACの再有効化
ダウングレード後、Oracle Real Application Clusters (Oracle RAC)を再有効化できます。 - Oracle Databaseのダウングレード後のOracle Database Vaultの再有効化
ダウングレード時にOracle Database Vaultを無効化するよう指示があった場合、これを実行する必要があります。 - データベースのOracle Grid Infrastructure構成のダウングレード
ダウングレード後に、Oracle Grid Infrastructureの登録を変更して、以前のリリースのOracle Databaseホームでデータベース・リリースを起動する必要があります。 - Oracle Databaseのダウングレード後のOracle Enterprise Managerのリストア
この項で説明されているリストア作業が必要になるのは、ダウングレードを実行する際に、Oracle Enterprise Managerがホストで構成されている場合のみです。 - 以前のリリースへのOracle APEXのリストア
Oracle Databaseのアップグレードと同時にOracle APEX (以前のOracle Application Express)もアップグレードした場合、ダウングレード後に以前のリリースに戻すステップを実行する必要があります。 - ダウングレード後のディクショナリ統計の収集
ダウンロード後に高いパフォーマンスを保証するためには、次のプロシージャを使用してディクショナリ統計を収集します。 - ダウングレード後の修正したオブジェクト統計の再収集
ダウングレード後に、Oracle Databaseで代表的なワークロードを実行し、修正されたオブジェクト統計を再収集します。 - ダウングレード後の失効しているCBO統計の再収集
Oracle Databaseのダウングレードが完了した後に、Oracle Cost-Based Optimizer (CBO)統計を再収集することをお薦めします。 - ダウングレード後のレジストリ・コンポーネントの有効性の確認
レジストリ・コンポーネントの有効性を確認し、無効なコンポーネントを特定します。
ダウングレード後のリリース更新およびその他のパッチの再適用
アップグレード後かつダウングレード前に、元の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の実行によるダウングレード後のOracle Enterprise Managerのリストア
これらのトピックを参照して、ダウングレード後にOracle Enterprise Managerをリストアするためのリストア・シナリオを選択します。 - Enterprise Manager Database Controlをリストアするためのemdwgrdユーティリティの実行
Oracle Enterprise Manager Database Controlおよびデータをリストアするには、emca -restore
の実行後に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
)を使用してデータベースを管理します。 - Oracle ASMがないOracle RACデータベースでのEMCAの実行
Enterprise Manager Configuration Assistant (emca
)を使用してデータベースを管理します。 - 単一インスタンスのOracle ASMインスタンスでのEMCAの実行
Enterprise Manager Configuration Assistant (emca
)を使用してデータベースとストレージを管理します。 - Oracle RACインスタンス上のOracle ASMでのemcaの実行
Enterprise Manager Configuration Assistant (emca
)を使用してデータベースとストレージを管理します。 - Oracle ASMがある単一インスタンスのOracle Databaseでのemcaの実行
Enterprise Manager Configuration Assistant (emca
)を使用してデータベースとストレージを管理します。 - Oracle RACデータベースおよびOracle ASMインスタンスでのemcaの実行
Enterprise Manager Configuration Assistant (emca
)を使用してデータベースとストレージを管理します。
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で実行する場合は、emdwgrd
をemdwgrd.bat
に置き換えてください。
-
ORACLE_HOMEを、データベースがアップグレードされる前のOracleホームに設定します。
-
ORACLE_SIDを、アップグレード後にダウングレードされたデータベースのSIDに設定します。
-
データベースがアップグレードされる前のOracleホームを指すように、PATH、LD_LIBRARY_PATHおよびSHLIB_PATHを設定します。
-
新しいOracle DatabaseリリースのOracleホームに移動します。
cd $ORACLE_HOME/bin
-
次のいずれかの手順を使用して
emdwgrd
を実行します。-
単一インスタンス・データベースの場合は、次のコマンドを実行します。
SID
はアップグレード後にダウングレードされたデータベースのSIDで、save_directory
は、Database Controlのファイルおよびデータの保存時に選択した記憶域の場所へのパスです。emdwgrd -restore -sid SID -path save_directory -tempTablespace TEMP
-
Oracle RACデータベースの場合、クラスタ・ノード間のリモート・コピーが必要です。構成済のリモート・コピーを示す環境変数を定義します。たとえば:
setenv EM_REMCP /usr/bin/scp
その後、次のオプションを使用してemdwgrd -restoreを実行します。
emdwgrd -restore -tempTablespace TEMP -cluster -sid SID_OldHome -path save_directory
Oracleホームが共有デバイス上にある場合、-sharedを
emdwgrd
コマンドのオプションに追加します。
-
-
emdwgrd
により要求された場合は、SYSおよびSYSMANパスワードを入力します。 -
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_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;