6 以前のリリースへのOracle Databaseのダウングレード
Oracle Databaseのサポートされているリリースでは、最後にアップグレードしたリリースにデータベースをダウングレードできます。
たとえば、最近、リリース11.2.0.4からOracle Database 12cリリース2 (12.2)にアップグレードし、COMPATIBLE初期化パラメータを12.1以上に変更しなかった場合、リリース11.2.0.4にダウングレードできます。Oracle Database 12cのリリースを12.1.0.2から12.2.0.1にアップグレードし、COMPATIBLE初期化パラメータを12.2.0.1に変更しなかった場合、リリース12.1.0.2にダウングレードできます。
参照:
オペレーティング・プラットフォームに固有のダウングレード情報は、ご使用のオペレーティング・システムの『Oracle Databaseインストレーション・ガイド』を参照してください
トピック:
- Oracle Databaseのダウングレードがサポートされているリリース
データベースがアップグレードされる前の元のOracle Databaseのリリースに基づいて、メジャー・リリースとパッチ・セット・リリースの両方をダウングレードできます。 - Oracle Databaseのダウングレード時の非互換性の確認
データベースのダウングレードの障害となる可能性のある非互換性の有無を判断するには、データベースの互換性レベルを確認してください。 - Oracle Databaseのダウングレード前の全体バックアップの実行
サポートされている以前のリリースにダウングレードする前に、Oracle Database 12cデータベースの完全バックアップを実行することをお薦めします。 - Oracle Databaseをダウングレードする前に必要なステップの実行
アップグレード前の以前のリリースにOracle Databaseをダウングレードする前に、ここに説明されている必要な準備ステップを完了します。 - CDBまたは非CDBのOracle Databaseのダウングレード
catdwgrd.sql
を実行して、Oracle Database 12cデータベースをサポートされているメジャー・リリースまたは関連するパッチ・セット・アップグレードにダウングレードします。 - 単一のプラガブルOracle Database (PDB)のダウングレード
最新リリースのOracle Database 12cをダウングレードする場合、CDB全体をダウングレードせずに1つのPDBをダウングレードできます。 - Oracle Application Expressが含まれるPDBのダウングレード
このプロシージャを使用すると、Oracle Application Expressが含まれるPDBをダウングレードするときにINVALID OBJECTS OWNED BY APEX_050000エラーを回避できます。 - Oracle Databaseのダウングレードのダウングレード後の作業
変更が、互換性、コンポーネントおよびサポートされるプロトコルに影響するため、Oracle Databaseのダウングレード後に追加の作業が必要になる場合があります。 - Oracle Databaseのダウングレードのトラブルシューティング
このトラブルシューティング情報を使用して、Oracle Databaseのダウングレード時に発生する可能性のある問題に対処します。
Oracle Databaseのダウングレードがサポートされているリリース
データベースがアップグレードされる前の元のOracle Databaseのリリースに基づいて、メジャー・リリースとパッチ・セット・リリースの両方をダウングレードできます。
非PDB Oracle Databaseは、Oracle Database 12cリリース2 (12.2)からOracle Database 12cリリース12.1.0.2および12.1.0.1にダウングレードでき、Oracle Database 11gリリース11.2.0.4および11.2.0.3にダウングレードできます。
PDBは、Oracle Database 12cリリース2 (12.2)からOracle Database 12cリリース12.1.0.2にダウングレードできますが、12.1.0.1にはダウングレードできません。
CDBは、Oracle Database 12cリリース2 (12.2)から12.1.0.2にダウングレードできますが、12.1.0.1にはダウングレードできません。
注意:
Oracle Database 12cリリース1 (12.1)以上では、非CDBアーキテクチャは非推奨です。今後のリリースでサポートが終了する可能性があります。
次の表に、ダウングレードがサポートされているリリースに関する追加情報を示します。この表を使用する際には、「Oracle Databaseをダウングレードするときの非互換性の確認」で互換性についても確認してください。
表6-1 ダウングレードがサポートされているリリースおよびエディション
Oracle Databaseのリリースまたはエディション | ダウングレード(可/不可) | 備考 |
---|---|---|
12.1.0.2 |
可 |
COMPATIBLE初期化パラメータを12.1.0.2に設定した後は、データベースをダウングレードできません。 非CDBは、12.2から12.1.0.2、12.1.0.1、11.2.0.4、11.2.0.3 (サポートされているすべてのアップグレード・リリース).にダウングレードできます PDBは、12.2から12.1.0.2にダウングレードできますが、12.1.0.1にはダウングレードできません CDBは、12.2から12.1.0.2にダウングレードできますが、12.1.0.1にはダウングレードできません CDBをダウングレードする前に、またはPDBを切断してダウングレードする前に、最新のバンドル・パッチまたはパッチ・セット更新 (BPまたはPSU)をインストールします。パッチ(PSU、BP)は、My Oracle Supportでダウンロードできます。My Oracle Support Note 756671.1を参照して、最新のパッチ・セットを取得してください。 新しいOracle Databaseリリースの最小の互換性設定より前のリリースにダウングレードすることはできません。 |
12.1.0.1 |
はい(非CDB) いいえ(CDBとPDB) |
Oracle Database 12cリリース1 (12.1.0.1)のPDBを12.1.0.1データベースから切断し、同じPDBを12.1.0.2データベースに接続してアップグレードすると、12.1.0.2データベースのCOMPATIBLE初期化パラメータが12.1.0.1.0より大きい場合はこのPDBをダウングレードできません。 PDBは、12.2から12.1.0.1にダウングレードできません。 CDBは、12.2から12.1.0.1にダウングレードできません。 |
Oracle Enterprise Manager |
不可 |
サポートされている以前のリリースにダウングレードする場合、Oracle Enterprise Managerの制御を再構成する必要があります。 アップグレードを開始する前に、 |
Oracle Database Express Edition |
不可 |
Oracle Database Express Editionからアップグレードされたデータベースをダウングレードすることはできません。 |
サポートされている以前のリリースでは、Oracle Databaseのダウングレードについて、次の推奨事項があります。
-
このリリースにはマルチテナント・アーキテクチャが含まれ、マルチテナント・コンテナ・データベース(CDB)およびプラガブル・データベース(PDB)用のアーキテクチャ機能が提供されます。このようなアーキテクチャの変更のため、このリリースへのアップグレード後にCOMPATIBLE初期化パラメータを最大レベルに設定すると、ダウングレードできなくなります。
-
このリリースでは、
SELECT
に加えて、新しいオブジェクト権限READ
が含まれています。アップグレード後、このオブジェクト権限の次の影響に注意してください。-
SELECT
およびREAD
オブジェクト権限を持っている場合、READ
権限は削除されます。 -
前に
READ
オブジェクト権限のみを持っていた場合、READ
オブジェクト権限はSELECT
オブジェクト権限に変換されます。
READおよびSELECTオブジェクト権限の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
-
-
アップグレードするデータベースにOracle XML DBがインストールされていない場合、ダウングレード中にOracle XML DBはアンインストールされます。たとえば、Oracle Database 11gリリース2 (11.2)とともにOracle XML DBをインストールしなかった場合、XML DBはOracle Database 12cとともにインストールされます。データベースをダウンロードする場合は、ダウングレードの一部としてOracle XML DBがアンインストールされます。Oracle XML DBはOracle Database 12cリリース1 (12.1)以降のリリースでは、デフォルトで組み込まれています。
-
Oracle Database 12cへのアップグレード時に、Database (DB) Controlリポジトリは削除されます。以前のリリースにダウングレードする場合、Database (DB) Controlを再構成してダウングレード後も使用できるようにする必要があります。
-
Oracle Enterprise Managerのダウングレードはサポートされていません。サポートされている以前のリリースにダウングレードする場合、Oracle Enterprise Managerの制御を再構成する必要があります。
注意:
アップグレードを開始する前に、ダウングレードが可能になるように、互換性に関する次の情報を理解しておく必要があります。
-
COMPATIBLE初期化パラメータを12.1.0.2に設定した後は、データベースをダウングレードできません。
-
プラガブル・データベース(PDB)をダウングレードできるのは、互換性が12.1.0.1に設定されている場合のみです。
-
リリース12.1.0.1のPDBを12.1.0.1データベースから切断した後、このPDBをリリース12.1.0.2データベースに接続した場合、このPDBをダウングレードすることはできません。
-
CDBのダウングレード、またはPDBを切断してダウングレードを試行する前に、最新のバンドル・パッチまたはパッチ・セット更新 (BPまたはPSU)をインストールします。My Oracle Supportノート756671.1を参照して、最新のパッチ・セットを取得してください。
Oracle Databaseのダウングレード時の非互換性の確認
データベースのダウングレードの障害となる可能性のある非互換性の有無を判断するには、データベースの互換性レベルを確認してください。
Oracle Database 12cデータベースの互換性レベルが12.2.0
に設定されている場合はダウングレードできません。
Oracle Database 11gリリース2にダウングレードする場合は、COMPATIBLE
初期化パラメータを11.2.0
以下に設定します。
注意:
Oracle ASMディスク・グループの場合、アップグレード後にcompatible.asmパラメータをアップグレードされたリリース値に変更した場合、前のリリースにダウングレードすると、Oracle ASMディスク・グループをマウントできません。compatible.asmの値は、ディスク・グループをマウントできるOracle ASMの最低限のリリースを設定します。
ダウングレードの一部として、ダウングレードされたリリース・レベルに新しいディスク・グループを作成し、ダウングレードされた互換性のあるASMディスク・グループにデータをリストアする必要があります。
参照:
Oracle ASMディスク・グループの互換性の詳細は、Oracle Automatic Storage Management管理者ガイドを参照してください
Oracle Databaseのダウングレード前の全体バックアップの実行
サポートされている以前のリリースにダウングレードする前に、Oracle Database 12cデータベースの完全バックアップを実行することを強くお薦めします。
参照:
RMANバックアップの実行方法は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
Oracle Databaseをダウングレードする前に必要なステップの実行
アップグレード前の以前のリリースにOracle Databaseをダウングレードする前に、ここに説明されている必要な準備ステップを完了します。
ダウングレードを開始する前に、データベース・リリース間の非互換性を解決しておく必要があります。たとえば、状況に応じて、ダウングレードを開始する前に、データベースのコンポーネントを無効化する必要があるかどうかを判断します。
-
Oracle Databaseで、CDBをダウングレードするか、またはPDBを切断およびダウングレードする場合、最初に最新のバンドル・パッチまたはパッチ・セット更新(BPまたはPSU)を適用し、その後にMy Oracle Supportノート756671.1にある必要な追加のフィックス・セットを適用する必要があります。
-
オンプレミス・データベースをダウングレードする場合で、かつアップグレード済のホームから実行中のソース・データベースにパッチが適用されている場合、ダウングレード・プロセスを開始する前にこれらのパッチをロールバックします。
パッチをアンインストールおよびロールバックするステップは、当該パッチのReadmeで説明しています。パッチをアンインストールおよびロールバックしない場合、ディクショナリ・オブジェクトなどのダウングレードに失敗する可能性があります。この失敗は再検証できません。
次に例を示します。
-
パッチをアンインストールします。
patchnumber
はアンインストールするパッチ番号です。$ opatch auto /u01/app/oracle/patches/patchnumber -rollback
-
パッチ・アプリケーションの一部として適用されたSQLをロールバックします。
SQL_bundle
はロールバックするSQLバンドルであり、SID
はソース・データベースです。SQL> @rdbms/admin/SQL_bundleSID_ROLLBACK.sql
-
-
データベースでOracle Database Vaultを有効化している場合は、データベースをダウングレードする前にOracle Database Vaultを無効化します。
DBA_DV_STATUSを使用して、Oracle Database Vaultが有効になっているかどうかを確認します。
SQL> SELECT * FROM DBA_DV_STATUS;
出力がTRUEの場合は、Oracle Database Vaultが有効化されているため、無効化する必要があります。
マルチシステム・アーキテクチャOracle Databaseシステムで、CDB$ROOTにCDB_DV_STATUSを使用して、CDBに接続されているすべてのPDBのOracle Database Vaultステータスを検出します。
SQL> SELECT * FROM CDB_DV_STATUS;
-
データベースでOracle Label Securityを使用していて、リリース11.2にダウングレードする場合、新しいOracle Database 12cのOracleホームでOracle Label Security (OLS)事前処理ダウングレード・スクリプト
olspredowngrade.sql
を実行します。注意:
Oracle Database 12cからOracle Label SecurityおよびOracle Database Vaultを使用するデータベースのデータベース・リリース11.2にダウングレードする前に、
olspredowngrade.sql
を実行します。-
V$OPTION
動的ビューに問い合せます。Oracle Label Securityが有効化されているかどうかを判断します。次に例を示します。SQL> SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Oracle Label Security';
-
olspredowngrade.sql
スクリプトを実行します。SQL> @ORACLE_HOME/rdbms/admin/olspredowngrade.sql
-
-
統合監査が有効化されている場合は、統合監査証跡をバックアップおよび消去できます。
-
統合監査レコードが存在するかどうかを確認します。
SQL> SELECT COUNT(*) FROM UNIFIED_AUDIT_TRAIL;
-
既存の監査データを表にバックアップします。次に例を示します。
SQL> CREATE TABLE UA_DATA AS (SELECT * FROM UNIFIED_AUDIT_TRAIL);
-
監査証跡をクリーンアップします。
EXEC DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, use_last_arch_timestamp => FALSE);
-
-
ダウングレードする前に、データベースで使用しているタイム・ゾーン・ファイルのバージョンがダウングレード対象のデータベースのOracleホームに含まれていることを確認します。
データベースで現在使用されているタイムゾーン・ファイルのバージョンを確認するには、次のコマンドを使用して
V$TIMEZONE_FILE
を問い合せます。SQL> select * from V$TIMEZONE_FILE;
次に例を示します。
問合せにより列
V$TIMEZONE_FILE.FILENAME
にtimezlrg_18.dat
が返されたら、対象のOracleホームにそのファイルが存在するかどうかを確認します。LinuxおよびUNIX
$ORACLE_HOME/oracore/zoneinfo/timezlrg_18.dat
Windows
%ORACLE_HOME%\oracore\zoneinfo\timezlrg_18.dat
必要なタイム・ゾーン、ファイルが対象のOracleホームにない場合は次のいずれかを実行します。
-
現在のバージョンのタイム・ゾーン・ファイルをパッチとしてインストールしており、パッチ番号を覚えている場合は、その同じパッチ番号を使用して、My Oracle Support Webサイトから対象リリースに対応するタイム・ゾーン・ファイルをダウンロードします。
-
My Oracle Support Webサイトのパッチ検索機能を使用して、正しいパッチを見つけてください。入力する検索基準は次のとおりです。「製品」に「Oracle Database」、「リリース」にターゲット・リリース、そして「説明に次を含む」に「DST」
-
My Oracle Support Webサイトでパッチが見つからない場合は、Oracle Supportでサービス・リクエストを記録します。
必要なパッチを見つけてダウンロードしたら、対象のOracleホームにそれをインストールします。
-
-
固定オブジェクトに基づいてオブジェクトを作成した場合は、これらのオブジェクトを削除して、ORA-00600エラーの発生を回避します。ダウングレード後にこれらのオブジェクトを再作成できます。
-
データベースにOracle Enterprise Managerが構成されている場合は、Enterprise Managerユーザーを削除します。
DROP USER sysman CASCADE;
注意:
Enterprise Managerユーザーを削除すると、
MGMT*
シノニムが無効になる場合があります。ダウングレードしたデータベースでOracle Enterprise Managerの制御を使用するには、Oracle Enterprise Managerを再構成する必要があります。 -
JSONバンドル・パッチが適用され、かつ、Simple Oracle Document Access (SODA)を使用するOracle Database 12cリリース1 (12.1.0.2)にダウングレードしている場合は、必ずJSONバンドル・パッチ(JSONパッチ・バンドル1またはJSONパッチ・バンドル2)をOracle Database 12.1.0.2バイナリに適用してください。詳細は、次のMy Oracle Supportのノートを参照してください。
-
サーバーのオペレーティング・システムに適したARUを、使用しているリリース用にリストされたPSEから取得します。ダウングレードを開始する前に、リストされた以前のリリースのすべてのパッチをダウンロードし、インストールします。
-
My Oracle Supportにログインします。
-
「パッチと更新版」を選択します。「パッチ検索」フレームで、使用リリース用にリストされているバグ番号とサーバーのプラットフォームを指定します。
-
パッチをダウンロードしてインストールします
-
サーバーに必要なすべてのパッチをインストールするまで繰り返します。
使用しているリリース用のパッチを取得します。
12.2.0.1.0からCDBおよびPDBを持つ12.1.0.2.0へのダウングレード
-
20594149: DATABASE BUNDLE PATCH 12.1.0.2.7、または最新の12.1.0.2バンドル・パッチ・セット更新版
-
20898997: XMLTYPESUP: QCTOXSNLBではスナップショット・サイズをチェックしない
-
20348910: PRVTAQJI.SQLのALTER TYPE REPLACEはCREATE OR REPLACE TYPEに置き換えられる
-
20958816: 12.2.0.1から12.1.0.2にダウングレードした後の無効なオブジェクト
12.2.0.1.0から12.1.0.2.0 (非CDB)へのダウングレード
-
20594149: DATABASE BUNDLE PATCH 12.1.0.2.7、または最新の12.1.0.2バンドル・パッチ・セット更新版
-
21856522: 12.1から12.2へのアップグレードにより、XOQコンポーネントが無効になる
-
20898997: XMLTYPESUP: QCTOXSNLBではスナップショット・サイズをチェックしない
-
20348910: PRVTAQJI.SQLのALTER TYPE REPLACEはCREATE OR REPLACE TYPEに置き換えられる
-
20958816: 12.2.0.1から12.1.0.2にダウングレードした後の無効なオブジェクト
12.2.0.1.0から12.1.0.1.0 (非CDB)へのダウングレード
-
23054354: データベース・パッチ・セット更新12.1.0.1
-
20898997: XMLTYPESUP: QCTOXSNLBではスナップショット・サイズをチェックしない
-
20348910: PRVTAQJI.SQLのALTER TYPE REPLACEはCREATE OR REPLACE TYPEに置き換えられる
12.2.0.1.0から11.2.0.4.0へのダウングレード
-
23054359: データベース・パッチ・セット更新11.2.0.4
-
20898997: XMLTYPESUP: QCTOXSNLBではスナップショット・サイズをチェックしない
-
20348910: PRVTAQJI.SQLのALTER TYPE REPLACEはCREATE OR REPLACE TYPEに置き換えられる
12.2.0.1.0から11.2.0.3.0へのダウングレード
-
20299017: データベース・パッチ・セット更新11.2.0.3.14 (CPUAPR2015を含む)
-
20898997: XMLTYPESUP: QCTOXSNLBではスナップショット・サイズをチェックしない
-
20348910: PRVTAQJI.SQLのALTER TYPE REPLACEはCREATE OR REPLACE TYPEに置き換えられる
-
CDBまたは非CDBのOracle Databaseのダウングレード
catdwgrd.sql
を実行して、Oracle Database 12cデータベースをサポートされているメジャー・リリースまたは関連するパッチ・セット・アップグレードにダウングレードします。
注意:
Oracle Database 12cリリース1 (12.1)以上では、非CDBアーキテクチャは非推奨です。今後のリリースでサポートが終了する可能性があります。
リリース12.2からリリース12.1にダウングレードする場合、マルチテナント・コンテナ・データベース(CDB)またはCDB内の1つのプラガブル・データベース(PDB)にあるすべてのデータベースをダウングレードできます。Oracle Database 12cより前のOracle Databaseリリースでは、マルチテナント・アーキテクチャを使用しませんでした。
-
Oracle DatabaseのOracleホーム・ディレクトリの所有者として、システムにログインします。
-
システム・プロンプトで、
ORACLE_HOME/rdbms/admin
ディレクトリへ移動します(ORACLE_HOME
はシステムのOracleホームです)。注意:
クラスタ・データベースをダウングレードしている場合は、データベースを完全に停止し、
CLUSTER_DATABASE
初期化パラメータをFALSE
に設定します。ダウングレードが完了した後、このパラメータの設定をTRUE
に戻します。 -
SQL*Plusを使用して、
SYSDBA
権限を持つユーザーとして、データベース・インスタンスに接続します。sqlplus sys as sysdba Enter password: password
-
新しいOracle Database 12cのOracleホームの所有者として、システムにログインします。
-
ディレクトリを
ORACLE_HOME/rdbms/admin
に変更し、SQL*Plusを起動します。 -
DBA権限を持つアカウントを使用して、アップグレードするデータベースに接続します。
CONNECT / AS SYSDBA
-
使用するOracle Databaseインスタンス・タイプに応じて、SQL*Plusで次のコマンドを発行し、ダウングレード・モードでインスタンスを起動します。
PFILE
オプションを使用して、初期化パラメータ・ファイルの場所を指定するように求められる場合があります。非CDBインスタンス:
SQL> startup downgrade pfile=pfile_name
CDBインスタンス:
SQL> startup downgrade pfile=pfile_name
SQL> alter pluggable database all open downgrade;
初期化パラメータ・ファイル
PFILE
の場所を指定します。参照:
初期化パラメータの起動時の指定および初期化パラメータ・ファイルの詳細は、『Oracle Database管理者ガイド』を参照してください
-
(オプション)非CDBをダウングレードする場合、変更および問題を追跡するために、結果をログ・ファイルにスプールするようにシステムを設定できます。
CDBをダウングレードしている場合、次のステップを実行する必要はありません。CDBは自動的に出力を
catcon_logs
にスプールします。CDB以外の場合は、次のコマンドを入力して結果をログ・ファイルにスプールします(
downgrade.log
はログ・ファイルの名前です)。SQL> SPOOL downgrade.log
-
構成に応じて、次のコマンドを使用してダウングレードを開始します。
非CDB:
SQL> @catdwgrd.sql
CDB:
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -d $ORACLE_HOME/rdbms/admin -e -b catdwgrd -l output directory -r catdwgrd.sql
CDBの例で、
catdwgrd.sql
はcatcon.pl
を使用してコンテナに対して実行されます。catcon.pl
ユーティリティを使用してコマンドを実行するには、まずPerlを起動します。-d
パラメータは、catcon.pl
にcatdwgrd
の入手先を指定します。-l
パラメータは、ログ・ファイルの出力ディレクトリを指定します(rdbms/admin
ディレクトリに書き込むかわりとなります)。-r
パラメータを指定すると、catdwgrd
はまずPDBで実行され、次にCDB_ROOTで実行されます。CDBをダウングレードするときには
-r
パラメータを使用してcatdwgrd
を実行してください。–r
パラメータはスクリプトが実行されるデフォルトの順番を変更し、まずすべてのPDBでスクリプトが実行され、その後にCDB_ROOTで実行されます。注意:
-
Oracle Database 12cに付属する
catdwgrd.sql
スクリプトのバージョンを使用します。 -
CDBをダウングレードするときには
-r
パラメータを使用してcatdwgrd
を実行する必要があります。 -
Oracle Database 12c環境で
catdwgrd.sql
を実行します。 -
catdwgrd.sql
スクリプトはOracle Databaseのデータベース内のすべてのコンポーネントを、アップグレード前のリリースにダウングレードします。ダウングレードはアップグレード前のサポートされているメジャー・リリースか、またはアップグレード前のパッチ・リリースのいずれかです。
マルチテナント環境のデータベースにダウングレードしており、
catdwgrd.sql
コマンドでエラーが発生した場合は、エラー・メッセージを確認します。続行する前に、CDB$ROOTまたはPDBにどのような問題があるかを調べます。「Oracle Databaseのダウングレードのトラブルシューティング」の項を確認します。エラーで指摘された問題を修正します。エラーを解決した後、構文catcon.pl -c 'cdb,pdb' -r
を使用して、catcon.pl
ユーティリティを指定したcatdgwrd.sq
を再実行します。注意:
コンポーネントのダウングレードが失敗すると、
ORA-39709
エラーが表示されます。Oracle Databaseデータ・ディレクトリをダウングレードせずにSQL*Plusセッションが終了します。すべてのコンポーネントは、Oracle Databaseのデータ・ディクショナリをダウングレードする前に、正常にダウングレードする必要があります。catdwgrd.sql
スクリプトを再実行する前に、問題を特定して修正します。 -
-
非CDBの場合のみ、スプールをオンにしていた場合は、スクリプト結果のログ・ファイルへのスプーリングをオフにします。
SQL> SPOOL OFF
次に、スプール・ファイルを確認して、ダウングレード中にエラーが発生しなかったかどうかを検証します。ステップ8で、スプール・ファイル名を
downgrade.log
としました。このファイルで検出された問題は、すべて修正します。必要に応じて、ダウングレード・スクリプトを再実行します。注意:
ダウングレード・スクリプトの最初の実行時から結果を保存できます。ダウングレード・スクリプトを再実行する前に、
downgrade.log
ファイルの名前を変更し、スクリプトを再実行したときにファイルが上書きされないようにします。 -
インスタンスを停止します。
SQL> SHUTDOWN IMMEDIATE
-
SQL*Plusを終了します。
-
ご使用のオペレーティング・システムがLinuxまたはUNIXの場合、次の環境変数がダウングレード先のリリースのディレクトリを指定するように変更してください。
-
ORACLE_HOME
-
PATH
また、
oratab
ファイル、およびORACLE_HOME
値を設定するすべてのクライアント・スクリプトが、ダウングレードされたOracleホームを指していることを確認します。参照:
ご使用のオペレーティング・システムでのその他の重要な環境変数の設定に関する詳細は、ご使用のオペレーティング・システムの『Oracle Databaseインストレーション・ガイド』を参照してください。
-
-
ご使用のオペレーティング・システムがWindowsの場合、次のステップを実行します。
-
Oracle Database 12
cデータベースのすべてのOracleサービス(OracleService
SID Oracleサービスなど)を停止します(SID
はインスタンスの名前)。たとえば、SIDが
ORCL
の場合、コマンド・プロンプトで次のように入力します。C:\> NET STOP OracleServiceORCL
参照:
WindowsでのOracleサービスの停止の詳細は、『Oracle Databaseプラットフォーム・ガイドfor Microsoft Windows』を参照してください
-
コマンド・プロンプトでコマンド
ORADIM
を発行して、Oracleサービスを削除します。たとえば、SIDが
ORCL
の場合、次のコマンドを入力します。C:\> ORADIM -DELETE -SID ORCL
-
コマンド・プロンプトでコマンド
ORADIM
を使用して、ダウングレードするデータベースのOracleサービスを作成します。C:\> ORADIM -NEW -SID SID -INTPWD PASSWORD -MAXUSERS USERS -STARTMODE MANUAL -PFILE ORACLE_HOME\DATABASE\INITSID.ORA
ORADIM
の構文には次の変数が含まれます。変数 説明 SID
ダウングレードするデータベースのSIDと同じシステム識別子(SID)名です。
PASSWORD
データベース・インスタンスのパスワードです。このパスワードは
SYSDBA
権限で接続するユーザー用のパスワードです。-INTPWD
オプションは必須ではありません。パスワードの入力を求められた場合は、このWindowsプラットフォームの標準のユーザー・アカウントのパスワードを使用します。USERS
SYSDBA
権限およびSYSOPER
権限を付与できるユーザーの最大数です。ORACLE_HOME
ダウングレード先のデータベースのOracleホーム・ディレクトリです。
-PFILE
オプションを使用して、(Oracleホーム・ディレクトリがマウントされているドライブを含む)フルパス名を指定する必要があります。初期化パラメータの起動時の指定および初期化パラメータ・ファイルの詳細は、『Oracle Database管理者ガイド』を参照してください。
たとえば、SIDが
ORCL
、PASSWORDがTWxy5791
、USERSの最大数が10
、ORACLE_HOMEディレクトリがC:\ORANT
の場合、次のコマンドを入力します。C:\> ORADIM -NEW -SID ORCL -INTPWD TWxy5791 -MAXUSERS 10 -STARTMODE AUTO -PFILE C:\ORANT\DATABASE\INITORCL.ORA
注意:
ORADIM
コマンドによって、Oracleホームのユーザー・アカウントのパスワードの入力が求められます。ORADIM
を使用して、他のオプションを指定できます。データベースをダウングレードする際に、Windowsレジストリの設定を変更する必要はありません。必要な変更は、すべて
ORADIM
ユーティリティによって自動的に行われます。参照:
ORADIM
を使用したOracle Databaseインスタンスの管理の詳細は、『Oracle Databaseプラットフォーム・ガイドfor Microsoft Windows』を参照してください
-
-
ダウングレード先のリリースの構成ファイル(パラメータ・ファイル、パスワード・ファイルなど)をリストアします。
データベースがOracle RACデータベースの場合は、次のコマンドを実行して、データベースを単一インスタンス・モードに戻します。
SET CLUSTER_DATABASE=FALSE
注意:
クラスタ・データベースをダウングレードしている場合は、このクラスタ・データベースのインスタンスが構成されているすべてのノードでこのステップを実行してください。初期化パラメータ
CLUSTER_DATABASE
の値をFALSE
に設定します。ダウングレードが完了した後、この初期化パラメータの設定をTRUE
に戻します。参照:
Oracle RACでの初期化パラメータの使用の詳細は、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください
-
システム・プロンプトで、ダウンロード先である以前のリリースのOracleホーム・ディレクトリの
admin
ディレクトリに変更します。(ORACLE_HOME/rdbms/admin
。ORACLE_HOME
は以前のリリースのOracleホームのパスです。) -
SQL*Plusを開始して、SYSDBA権限を持つユーザーとして、データベース・インスタンスに接続します。
非CDBの場合:
SQL> CONNECT / AS SYSDBA SQL> STARTUP UPGRADE
CDBの場合:
connect / as sysdba startup upgrade; alter pluggable database all open upgrade;
-
(オプション) 非CDBの場合、変更および問題を追跡するために、結果をログ・ファイルにスプールするようにシステムを設定します。このステップはCDBには必要ありません。
SQL> SPOOL reload.log
-
非CDBデータベースで
catrelod.sql
を実行するか、またはcatcon.pl
を使用してCDBデータベースでutlrp.sql
を実行します。非CDBの場合:
SQL> $ORACLE_HOME/rdbms/admin/catrelod.sql
CDBの場合:
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -n 1 -e -b catrelod -d $ORACLE_HOME/rdbms/admin catrelod.sql
ダウングレードしたデータベース内の各データベース・コンポーネントに該当するバージョンが再ロードされます。
-
非CDBでスプーリングをオンにした場合、スクリプト結果のログ・ファイルへのスプーリングをオフにします。
SQL> SPOOL OFF
スプール・ファイルをチェックし、パッケージとプロシージャのコンパイルが成功したかどうかを確認します。このログ・ファイルで見つけた問題を処理し、必要に応じて適切なスクリプトを再実行します。
-
通常の操作のために、インスタンスを停止し、再起動します。
SQL> SHUTDOWN IMMEDIATE SQL> STARTUP
オプション
PFILE
を使用して、初期化パラメータ・ファイルの場所を指定するように求められる場合があります。参照:
初期化パラメータの起動時の指定および初期化パラメータ・ファイルの詳細は、『Oracle Database管理者ガイド』を参照してください
-
Oracle Label Securityを使用するようにデータベースを構成した場合、このステップを完了します。Oracle Label Securityを使用するようにデータベースを構成しなかった場合、次のステップに進みます。
-
olstrig.sql
スクリプトを、Oracle Database 12cのOracleホームから、データベースをダウングレードするリリース番号のOracleホームにコピーします。 -
ダウングレード・リリースのOracleホームから
olstrig.sql
を実行し、Oracle Label Securityのポリシーを適用して、表のDMLトリガーを再作成します。SQL> @olstrig.sql
-
-
(オプション) 非CDBの場合、変更および問題を追跡するために、結果をログ・ファイルにスプールするようにシステムを設定します。このステップはCDBには必要ありません。例:
SQL> SPOOL utlrp.log
-
utlrp.sql
スクリプトを実行して、残りのすべてのストアドPL/SQLおよびJavaコードを再コンパイルします。使用している構成に対応する手順を使用します。非CDB:
SQL> $ORACLE_HOME/rdbms/admin/utlrp.sql
CDB:
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -n 1 -e -b utlrp -d $ORACLE_HOME/rdbms/admin utlrp.sql
utlrp.sql
スクリプトは、以前INVALID
状態だったパッケージ、プロシージャ、型などのすべての既存のPL/SQLモジュールを、再コンパイルします。ログ・ファイルutlrp0.log
が生成されます。そのログ・ファイルには再コンパイルの結果がリストされます。 -
utlrp.sql
を実行するときに非CDBのスプーリングをオフにする場合は、ログ・ファイルへのスクリプトの結果のスプールをオフにします。SQL> SPOOL OFF
スプール・ファイルをチェックし、パッケージとプロシージャのコンパイルが成功したかどうかを確認します。このログ・ファイルで検出された問題は、すべて修正します。必要に応じて、該当するスクリプトを再実行します。
-
SQL*Plusを終了します。
-
クラスタ・データベースをダウングレードする場合は、次のコマンドを実行してOracle Clusterwareのデータベース構成をダウングレードする必要があります。
$ srvctl downgrade database -d db-unique-name -o oraclehome -t to_version
この構文例の変数を、お使いのシステム値に置き換えます。
-
db-unique-name
はデータベース名です(インスタンス名ではありません)。 -
oraclehome
はダウングレードしたデータベースの古いOracleホームの場所です。 -
to_version
は、データベースのダウングレード後のデータベース・リリースです。(例: 12.1.0.2.0)
注意:
このコマンドは、データベースのダウングレード後のOracleホームからではなく、現在のOracle Database 12cのOracleホームから実行してください。
-
このプロシージャの完了時に、データベースがダウングレードされます。
単一のプラガブルOracle Database (PDB)のダウングレード
最新リリースのOracle Database 12cをダウングレードする場合、CDB全体をダウングレードせずに1つのPDBをダウングレードできます。
たとえば、リリース12.2.0.1のCDBからPDBを切断し、それをダウングレードした後、リリース12.1.0.2のCDBに接続するか、そのデータベースをスタンドアロン・データベースに変換することができます。
PDBのダウングレード
この手順では、PDBをリリース12.1.0.2にダウングレードします。
-
リリース12.2.0.1のPDBをDOWNGRADEモードで起動します。これを行うとき、CDBは標準モードになります。
SQL> alter pluggable database CDB1_PDB1 open downgrade;
-
catdwgrd
を実行してPDBをダウングレードします。この例ではPDB1
です。次のように
catdwgrd
を実行します。$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -d $ORACLE_HOME/rdbms/admin -n 1 -l <output directory> -e -b catdwgrd -c 'PDB1' catdwgrd.sql
例では、
catdwgrd
はcatcon.pl
とともに実行されます。-d
パラメータは、catcon.pl
にcatdwgrd
の入手先を指定します。-l
パラメータは、ログ・ファイルの出力ディレクトリを指定します(rdbms/admin
ディレクトリに書き込むかわりとなります)。2つのスクリプトを同時に一緒に実行するには、-r
パラメータを使用する必要があります。 -
PDBをクローズします。
PDBのCDBからの切断
このステップでは、ダウングレードされたPDBをリリース12.2.0.1のCDBから切断します。
-
12.2.0.1のCDBに接続します。
-
切断するPDBをクローズします。
SQL> alter pluggable database PDB1 close;
-
ダウングレードした12.1.0.2 PDBを切断し、変数
path
システムのパスに置き換えます。SQL> alter pluggable database PDB1 unplug into 'path/pdb1.xml';
切断が完了すると、次のレスポンスが表示されます。
Pluggable database altered
ダウングレードされた12.1.0.2 PDBの接続
このステップでは、ダウングレードされた12.1.0.2のPDBを12.1.0.2のCDBに接続します。これを行うには、このCDBでPDBを作成する必要があります。次の例は、PDB1というプラガブル・データベースの作成方法を示しています。
-
12.1.0.2のCDBに接続します。
-
12.1.0.2のPDBを接続します。
SQL> create pluggable database PDB1 using 'path/pdb1.xml';
「プラガブル・データベースが作成されました。」
が表示されます。 -
PDBをアップグレード・モードで開きます。
SQL> alter pluggable database PDB1 open upgrade;
-
PDBに接続します。
SQL> alter session set container=PDB1;
-
PDBで
catrelod
を実行します。SQL> @$ORACLE_HOME/rdbms/admin/catrelod.sql
catrelod.sql
スクリプトによって、ダウングレードしたデータベース内の各データベース・コンポーネントに該当するバージョンが再ロードされます。 -
PDBで
utlrp
を実行します。SQL> @$ORACLE_HOME/rdbms/admin/utlrp.sql
utlrp.sql
スクリプトは、以前INVALID
状態だったパッケージ、プロシージャ、型などのすべての既存のPL/SQLモジュールを、再コンパイルします。
Oracle Application Expressが含まれるPDBのダウングレード
このプロシージャを使用すると、Oracle Application Expressが含まれるPDBをダウングレードするときにINVALID OBJECTS OWNED BY APEX_050000エラーを回避できます。
PDBを以前のリリースにダウングレードした後、次のようなSQL文を入力してOracle Application Expressユーザーを削除します。
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -b drop_apex5
-c 'PDB1' -- --x'drop user apex_050000 cascade'
この例では、PDB名は「PDB1」
です。
Oracle Databaseをダウングレードする場合のダウングレード後の作業
変更が、互換性、コンポーネントおよびサポートされるプロトコルに影響するため、Oracle Databaseのダウングレード後に追加の作業が必要になる場合があります。
- Oracle DatabaseダウングレードでのOracle XML DB認証の推奨事項
12.1より前のリリースからアップグレードすると、ダイジェスト認証が無効になります。 - Oracle Databaseのダウングレード後のOracle Database Vaultの再有効化
ダウングレード時にOracle Database Vaultを無効化するよう指示があった場合、これを実行する必要があります。 - Oracle Clusterwareの構成のリストア
構成をリストアするには、アップグレード前のリリースをリストアする必要があります。 - Oracle Databaseのダウングレード後のOracle Enterprise Managerのリストア
この項で説明されているリストア作業が必要になるのは、ダウングレードを実行する際に、Oracle Enterprise Managerがホストで構成されている場合のみです。 - 以前のリリースへのOracle Application Expressのリストア
Oracle Databaseのアップグレードと同時にOracle Application Expressもアップグレードした場合、ダウングレード後に以前のリリースのOracle Application Expressに戻すステップを実行する必要があります。 - ダウングレード後のディクショナリ統計の収集
ダウンロード後に高いパフォーマンスを保証するためには、次のプロシージャを使用してディクショナリ統計を収集します。 - ダウングレード後の修正したオブジェクト統計の再収集
ダウングレード後に、Oracle Databaseで代表的なワークロードを実行し、修正されたオブジェクト統計を再収集します。 - ダウングレード後の失効しているCBO統計の再収集
Oracle Databaseの12cリリース2 (12.2)からのダウングレードが完了した後に、Oracle Cost-Based Optimizer (CBO)統計を再収集することをお薦めします。
Oracle DatabaseダウングレードでのOracle XML DB認証の推奨事項
12.1より前のリリースからアップグレードすると、ダイジェスト認証が無効になります。
ダイジェスト認証がサポートされていないOracle Database 12cより前のリリースにダウングレードする場合、ダイジェスト認証が無効化され、認証の選択肢として使用できなくなります。これは、Oracle XML DBリポジトリのHTTP認証に影響します。ダイジェスト認証を使用せず、かわりにデフォルトの構成を使用している場合は、これ以上のアクションは必要ありません。
参照:
データベースのインストール、アップグレードおよびダウングレードに対するOracle XML DBを使用した認証の詳細は、『Oracle XML DB開発者ガイド』を参照してください。
Oracle Databaseのダウングレード後のOracle Database Vaultの再有効化
ダウングレード時にOracle Database Vaultを無効化するよう指示があった場合、これを実行する必要があります。
Oracle Database Vaultを使用している場合は、データベースをダウングレードする前にこれを無効にするように指示されている場合があります。ダウングレード後にOracle Database Vaultを使用するには、これを再有効化する必要があります。
参照:
Oracle Database Vaultを再有効化する手順は、『Oracle Database Vault管理者ガイド』を参照してください
Oracle Clusterwareの構成のリストア
構成をリストアするには、アップグレード前のリリースをリストアする必要があります。
Oracle Clusterware構成をOracle Clusterware 12cリリース2 (12.2)のアップグレード前の状態にリストアできます。Oracle Database 12cのアップグレード処理中またはアップグレード処理後に実行した構成変更は削除され、リカバリできません。
参照:
使用しているプラットフォームに合った『Oracle Grid Infrastructureインストレーションおよびアップグレード・ガイド』を参照してください。
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 12cのOracleホームに存在する
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
の異なるオプションを指定します。
参照:
srvctl
に関する詳細は、『Oracle Clusterware管理およびデプロイメント・ガイド』を参照してください。
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 12cホームから
emdwgrd
ユーティリティを実行します
次の手順は、LinuxおよびUNIX用です。これをWindowsで実行する場合は、emdwgrd
をemdwgrd.bat
に置き換えてください。
-
ORACLE_HOMEを、データベースがアップグレードされる前のOracleホームに設定します。
-
ORACLE_SIDを、アップグレード後にダウングレードされたデータベースのSIDに設定します。
-
データベースがアップグレードされる前のOracleホームを指すように、PATH、LD_LIBRARY_PATHおよびSHLIB_PATHを設定します。
-
Oracle Database 12cの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 Application Expressのリストア
Oracle Databaseのアップグレードと同時にOracle Application Expressもアップグレードした場合、ダウングレード後に以前のリリースのOracle Application Expressに戻すステップを実行する必要があります。
データベースのダウングレード後にOracle Application Expressのダウングレードを完了するには、『Oracle Application Expressインストレーション・ガイド』にリストされたすべてのステップを実行して、お使いのOracle Application Expressのリリースを以前のリリースに戻します。戻すためのステップは、お使いのアーキテクチャが非CDBか、またはマルチテナント・アーキテクチャ(CDB) Oracle Databaseかによって異なります。
注意:
データベースをアップグレードしたとき、同時にOracle Application Expressをアップグレードした場合、実行する必要があるのはこのステップだけです。
ダウングレード後のディクショナリ統計の収集
ダウンロード後に高いパフォーマンスを保証するためには、次のプロシージャを使用してディクショナリ統計を収集します。
ダウングレードしたリリースのデータ・ディクショナリ表の統計が収集されるように、データベースのダウングレード後にディクショナリ統計を収集することをお薦めします。
-
非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の12cリリース2 (12.2)からのダウングレードが完了した後に、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コマンドそのものは、引用符で囲みます。
Oracle Databaseのダウングレードのトラブルシューティング
このトラブルシューティング情報を使用して、Oracle Databaseのダウングレード時に発生する可能性のある問題に対処します。
この項には、ダウングレード時に発生する可能性のある既知のエラーと、それらのエラーに対処するための回避策が含まれます。
- catdwgrd.sqlスクリプトを使用したOracle Databaseコンポーネントのダウングレード中のエラー
この項を使用して、ダウングレード中にcatdwgrd.sql
スクリプトを実行するときに発生するエラー(ORA-20001
: ダウングレードを続行できませんなど)のトラブルシューティングを行います。 - Oracle Multimediaのダウングレードおよびimrelod.sqlスクリプトのエラー
ORA-20000: 「レジストリ内のOracle ORDIMコンポーネントのステータスがDOWNGRADEDです」が発生した場合に参照してください。 - Oracle Database Vaultおよびdvrelod.sqlスクリプトのエラー
ORA-31011: 「XML解析に失敗しました」が発生した場合に参照してください。 - アップグレードの成功または失敗後のOracle Grid Infrastructure (Oracle Restart)のダウングレード
Oracle Restartをダウングレードするには、Oracle Grid Infrastructureを構成解除してから再インストールする必要があります。その後、データベースおよびサービスを戻すことができます。 - Oracle ACFSおよびOracle Grid Infrastructureの11gリリース2 (11.2)へのダウングレード
ソフトウェア・スタックの開始を試みる前に、acfsroot install
を実行する必要があります。 - Oracle Database 11gリリース1 (11.1)へのダウングレード後のデータベース・リンク・パスワード
リリース11.2または12.1で作成されたデータベース・リンクのパスワードをリセットします。
catdwgrd.sqlスクリプトを使用したOracle Databaseコンポーネントのダウングレード中のエラー
この項を使用して、ダウングレード中にcatdwgrd.sql
スクリプトを実行するときに発生するエラー(ORA-20001
: ダウングレードを続行できませんなど)のトラブルシューティングを行います。
catdwgrd.sql
スクリプトはOracle Databaseのデータベース内のすべてのコンポーネントを、アップグレード前の当初のメジャー・リリースにダウングレードします。このスクリプトはデータ・ディクショナリをダウングレードする前に実行する必要があります。スクリプトの実行時に何か問題が発生した場合は、問題の原因を修正してからスクリプトを再実行します。
発生する可能性のあるエラーには、「ORA-39709
: コンポーネントのダウングレードが不完全です; stringのダウングレードは中断されました」および「ORA-06512
」があります。これらのエラーが発生した場合、ダウングレードを続行できません。
-
原因: データ・ディクショナリのダウングレード前にダウングレードする必要のある1つ以上のコンポーネントがダウングレードされていません。
-
処置: ログ・ファイルを確認して、catdwgrd.sqlスクリプトが停止し、ダウングレードが中断する前に、どのようなエラーが発生したかを判断します。
これらの例を確認して、この問題の修正方法を理解します。
例6-1 ORA-06512によるORA-20001エラー
ダウングレードが中止されました。ログ・ファイルを確認したところ、catdwgrd.sql
がこのエラーで終了したことがわかりました。
DECLARE * ERROR at line 1: ORA-20001: Downgrade cannot proceed -
Unified Audit Trail data exists. Please clean up the data first
using DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL. ORA-06512: at line 65
ORA-06512: at line 42
エラーには一般に、ダウングレードの完了を妨げている問題を修正するために何をする必要があるかが説明されています。エラー・メッセージの説明に従ってください。エラーの原因を修正した後に、catdwgrd.sql
スクリプトを再実行します。
チェックによりCDB$ROOTのダウングレード中にCDBのダウングレードが失敗した場合は、エラー・メッセージの説明に従って、条件エラーを修正します。エラーを修正した後に、catcon.pl
を指定してcatdwgrd.sql
を再実行します。-c
オプションを使用して、包含リスト'CDB$ROOT PDB1'
でコマンドを実行します。-r
オプションを使用して、コマンドを最初にPDBで、次にCDB$ROOTで実行します。次に例を示します。
$ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -d $ORACLE_HOME/rdbms/admin -e -b catdwgrd -l /scratch/rac/downgradeLogs -c 'CDB$ROOT' -r catdwgrd.sql
Oracle Multimediaのダウングレードおよびimrelod.sqlスクリプトのエラー
ORA-20000: 「レジストリ内のOracle ORDIMコンポーネントのステータスがDOWNGRADEDです」が発生した場合に参照してください。
Oracle Databaseをリリース12.1からリリース11.2.0.2にダウングレードする場合、リリース11.2.0.2に付属するimrelod.sql
スクリプトからエラーが発生する場合があります。
ORA-20000: レジストリ内のOracle ORDIMコンポーネントのステータスがDOWNGRADEDです。Oracle Multimediaをアップグレード、ダウングレードまたはパッチ適用する前にOracle ORDIMをインストールし、有効化しておく必要があります。
-
原因
imrelod.sql
スクリプトがORDIMのステータスを認識していないために、このエラーが発生します。 -
処置 処置は必要ありません。このエラーは無視できます。
Oracle Database Vaultおよびdvrelod.sqlスクリプトのエラー
ORA-31011: 「XML解析に失敗しました」が発生した場合に参照してください。
Oracle Databaseをリリース12.1からリリース11.2.0.3にダウングレードする場合に、Oracle Database Vaultを使用するデータベースで、リリース11.2.0.3に付属するdvrelod.sql
スクリプトの結果として次のエラーが発生する場合があります。
ORA-31011: XML parsing failed; Oracle Database Vault downgrade to release 11.2.0.3
-
原因
dvrelod.sql
スクリプトはXML解析のステータスを認識していません。処置 処置は必要ありません。このメッセージは無視できます。
アップグレードの成功または失敗後のOracle Grid Infrastructure (Oracle Restart)のダウングレード
Oracle Restartをダウングレードするには、Oracle Grid Infrastructureを構成解除してから再インストールする必要があります。その後、データベースおよびサービスを戻すことができます。
Oracle ACFSおよびOracle Grid Infrastructureの11gリリース2 (11.2)へのダウングレード
ソフトウェア・スタックの開始を試みる前に、acfsroot install
を実行する必要があります。
Oracle ASM Cluster File System (Oracle ACFS)を使用しており、クラスタまたはOracle Restartスタンドアロン・サーバーでOracle Grid Infrastructure 12cにアップグレードし、Oracle Grid Infrastructure 11gリリース2 (11.2)へのダウングレードを選択する場合、リリース11.2のソフトウェア・スタックの開始を試みる前に、リリース11.2のOracle Grid InfrastructureのOracleホーム(Gridホーム)からコマンドacfsroot install
を実行する必要があります。
参照:
使用しているオペレーティング・システム・プラットフォームの問題および解決策の最新の情報については、『Oracle Databaseプラットフォーム共通日本語README』およびリリース・ノートを参照してください
Oracle Database 11gリリース1 (11.1)へのダウングレード後のデータベース・リンク・パスワード
リリース11.2または12.1で作成されたデータベース・リンクのパスワードをリセットします。
Oracle Databaseリリース11.1にダウングレードした後、リリース11.2または12.1で作成されたデータベース・リンクのパスワードをリセットする必要があります。
- Oracle Database 11.1リリース1へのダウングレード後のデータベース・リンク・パスワードでのORA-00600エラー
このエラーは、データベース・リンクのパスワードをリセットしない場合に発生する可能性があります。 - Oracle Data Pumpのエクスポートを使用した、既存のすべてのデータベース・リンクが含まれるダンプ・ファイルの作成
ダウングレードを実行する前に、このOracle Data Pumpのエクスポート手順を使用して、既存のすべてのデータベース・リンクが含まれるダンプ・ファイルを作成します。
Oracle Database 11.1リリース1へのダウングレード後のデータベース・リンク・パスワードでのORA-00600エラー
このエラーは、データベース・リンクのパスワードをリセットしない場合に発生する可能性があります。
ORA-00600: [kzdlk_zt2 err], [18446744073709551601]
リリース11.1にダウングレードした後にデータベース・リンクのパスワードをリセットするには、ALTER DATABASE LINK
コマンドを使用して元のパスワードをIDENTIFIED BY句に指定することで、パスワードを元のパスワードに戻します。
Oracle Databaseリリース11.2または12.1の実行中に、このパスワードの問題がない新しいデータベース・リンクを作成するには、CREATE DATABASE LINK
コマンドのIDENTIFIED BY VALUES句の使用方法についてOracleサポートに問い合せてください。
参照:
ALTER
DATABASE
LINK
の詳細は、『Oracle Database SQL言語リファレンス』を参照してください
データベース・リンクによって確立される接続の制御の詳細は、『Oracle Database管理者ガイド』を参照してください
Oracle Data Pumpのエクスポートを使用した、既存のすべてのデータベース・リンクが含まれるダンプ・ファイルの作成
ダウングレードを実行する前に、このOracle Data Pumpのエクスポート手順を使用して、既存のすべてのデータベース・リンクが含まれるダンプ・ファイルを作成します。
作成するダンプ・ファイルには、新しく作成されたデータベース・リンクがすべて含まれます。この手順では、expdp
コマンドでFULL=YおよびINCLUDE=DB_LINKパラメータを使用します。
-
SQL*Plusにログインします。
次に例を示します。
sqlplus system/manager
-
ダンプ・ディレクトリが存在する場合は削除します。
次に例を示します。
SQL> DROP DIRECTORY dpump_dir; SQL> CREATE DIRECTORY dpump_dir AS '/location_to_write_datapump_dump_file';
-
データベース・リンクをエクスポートします。
次に例を示します。
$ expdp system/manager FULL=Y directory=dpump_dir dumpfile=saved_dblinks.dmp INCLUDE=DB_LINK;
-
ダウングレード後に、ダウングレードしたデータベース・リンクのいずれかが正しく機能しない場合は、そうしたリンクを削除し、ダンプ・ファイルからインポートします。
$ impdp system/manager directory=dpump_dir dumpfile=saved_dblinks.dmp;
たとえば、リンクが内部エラーORA-00600であると表示された場合は、リンクを削除し、ダンプ・ファイルからインポートすることにより、意図したようにそれらのリンクが機能するようになります。