Oracle Databaseのサポートされているリリースでは、最後にアップグレードしたリリースにデータベースをダウングレードできます。たとえば、最近、リリース11.2.0.4からOracle Database 12cにアップグレードし、互換性のある初期化パラメータを12.1以上に変更しなかった場合、リリース11.2.0.4にダウングレードできます。ご使用のOracle Database 12cがリリース12.1.0.2で、互換性のある初期化パラメータを12.1.0.2に変更しなかった場合、リリース12.1.0.1などにダウングレードできます。
この章の内容は次のとおりです。
関連項目: オペレーティング・システム固有のダウングレードの説明については、ご使用のオペレーティング・システムの『Oracle Databaseインストレーション・ガイド』を参照してください。 |
データベースがアップグレードされる前の元のOracle Databaseのリリースに基づいて、メジャー・リリースとパッチ・セット・リリースの両方をダウングレードできます。メジャー・リリースのダウングレードは、Oracle Database 11gリリース2 (11.2.0.2)と後続の11.2リリース、およびOracle Database 11gリリース1 (11.1.0.7)へのダウングレードがサポートされています。パッチ・セットのダウングレードは、Oracle Databaseリリース11.2のパッチ・セットへのダウングレードがサポートされています(リリース11.2.0.1は除く)。
表6-1に、ダウングレードでサポートされるリリースのサマリーを示します。この表を使用する際には、「Oracle Databaseをダウングレードするときの非互換性の確認」で互換性についても確認してください。
表6-1 ダウングレードがサポートされているリリースおよびエディション
Oracle Databaseのリリースまたはエディション | ダウングレード可能 | 注意 |
---|---|---|
12.1.0.2 |
Y |
COMPATIBLE初期化パラメータを12.1.0.2に設定すると、データベースをダウングレードできません。 互換性が12.1.0.1に設定されている場合のみ、プラガブル・データベース(PDB)に対するダウングレードが可能になります。 CDBのダウングレード、またはPDBの切断およびダウングレードには、パッチ・セット更新PSU4が必要です。PSUは、 Oracle Database 12cの最小の互換性設定は11.0であるため、リリース10.2.0.5にダウングレードすることはできません。 |
12.1.0.1 |
Y |
12.1.0.1 PDBを12.1.0.1データベースから切断し、同じPDBを12.1.0.2データベースに接続してアップグレードすると、12.1.0.2データベースの互換性のある初期化パラメータが12.1.0.1.0より後の場合はPDBをダウングレードできません。 Oracle Database 12cの最小の互換性設定は11.0であるため、リリース10.2.0.5にダウングレードすることはできません。 |
Oracle Enterprise Manager |
N |
サポートされている以前のリリースにダウングレードする場合、Oracle Enterprise Managerの制御を再構成する必要があります。「Oracle Databaseのダウングレード後のOracle Enterprise Managerのリストア」を参照してください。 |
Oracle Database Express Edition |
N |
Oracle Database Express Editionからアップグレードされたデータベースをダウングレードすることはできません。 |
重要: 次の情報は、ダウングレードできる場合に互換性に関して理解するためには、非常に重要です。
|
注意: Oracle Database 12cの最小の互換性設定は11.0であるため、リリース10.2.0.5にダウングレードすることはできません。また、Oracle Database Express Editionからアップグレードされたデータベースをダウングレードすることはできません。 |
サポートされている以前のリリースでは、Oracle Databaseのダウングレードについて、次の推奨事項があります。
このリリースにはマルチテナント・アーキテクチャが含まれ、マルチテナント・コンテナ・データベース(CDB)およびプラガブル・データベース(PDB)用の機能が提供されます。そのため、このリリースへのアップグレード後にCOMPATIBLE初期化パラメータを最上位レベルに設定すると、ダウングレードする機能が妨げられます。
このリリースでは、SELECT
に加えて、新しいオブジェクト権限READ
が含まれています。ダウングレード後に、次が行われます。
SELECT
およびREAD
オブジェクト権限がある場合、READ
権限が削除されます。
READ
オブジェクト権限のみがある場合、これはSELECT
オブジェクト権限に変換されます。
READ
およびSELECT
オブジェクト権限の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
ダウングレードできる最も古いリリースは、Oracle Databaseリリース11.1.0.7です。Oracle Database 12cの互換性の最低は11.0のため、リリース12.1にアップグレードした後に、互換性を11.0以上に設定する必要があります。互換性が設定されると、データベースのディスク上の構造が変更され、互換性設定によって制御される新しい機能が有効になります。そのため、11.1.0.7より前のリリースへのダウングレードは選択できません。
アップグレードするデータベースにOracle XML DBが存在しない場合は、ダウングレード時にOracle XML DBがアンインストールされます。たとえば、Oracle Database 11gリリース2 (11.2)とともにOracle XML DBをインストールしなかった場合、Oracle Database 12cへのアップグレード時にOracle XML DBがインストールされます(このリリースに含まれるため)。Oracle Database 11gリリース2 (11.2)へのダウングレード時には、Oracle XML DBは削除されます。
Oracle Database 12cへのアップグレード時に、Database (DB) Controlリポジトリは削除されます。ダウングレードする場合は、ダウングレードした以前のリリースでDatabase (DB) Controlを再び使用するために再構成する必要があります。「Oracle Enterprise Manager Database Controlの構成およびデータの保存」を参照してください。
Oracle Enterprise Managerのダウングレードはサポートされていません。サポートされている以前のリリースにダウングレードする場合、Oracle Enterprise Managerの制御を再構成する必要があります。「Oracle Databaseのダウングレード後のOracle Enterprise Managerのリストア」を参照してください。
Oracle Database 12cのOracle Clusterwareでは、Windows上でのOracle Databaseリリース10.2およびリリース11.1へのダウングレードはサポートされていません。リリース11.2より前のリリースには、フレッシュ・インストールが必要です。
ご使用のデータベースの互換性レベルをチェックして、非互換性があるかどうかを確認します(非互換性がある場合は、ダウングレードできません)。Oracle Database 12cデータベースの互換性レベルが12.1.0
の場合はダウングレードできません。
Oracle Database 11gリリース2 (11.2.0.2)、Oracle Database 11gリリース2 (11.2.0.3)またはOracle Database 11gリリース2 (11.2.0.4)にダウングレードする場合は、COMPATIBLE
初期化パラメータを11.2.0
以下に設定する必要があります。リリース11.2.0.1へのダウングレードはサポートされていません。
Oracle Database 11gリリース1(11.1.0.7)にダウングレードする場合は、COMPATIBLE
初期化パラメータを11.1.0
以下に設定する必要があります。Oracle Database 11gリリース1では、リリース11.1.0.7へのダウングレードのみがサポートされています。
注意: Oracle ASMディスク・グループでは、データベースのアップグレード時にディスク・グループの互換性を12.1.0.0.0に変更した場合は、以前のリリースへのダウングレード時にOracle ASMディスク・グループをマウントできなくなります。ダウングレードの前にOracle ASMディスク・グループの互換性を手動でリストアする必要があります。そうしない場合、ダウングレード後に、インスタンスはディスク・グループをマウントできません。 ASMディスク・グループの互換性の詳細は、『Oracle Automatic Storage Management管理者ガイド』を参照してください。 |
サポートされている以前のリリースにダウングレードする前に、Oracle Database 12cデータベースの完全バックアップを実行することを強くお薦めします。
関連項目: RMANバックアップの実行方法は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。 |
アップグレード前の以前のリリースにダウングレードする前に、必須の準備を完了する必要があります。たとえば、まず、データベース内のコンポーネントを無効にする必要があるかどうかを決定する必要があります。
ダウングレードの準備をするには、次の手順を実行します。
Oracle Databaseリリース12.1.0.2で、CDBをダウングレードするか、またはPDBを切断およびダウングレードする場合、最初にPSU4 (パッチ・セット更新4)を適用する必要があります。https://support.oracle.com/
にあるMy Oracle Supportにアクセスして、PSU4および必要な追加修正のセットを入手します。パッチ・セットの情報およびリンクは、MOSノート756671.1に掲載されています。「パッチと更新版」ページの一般検索ボックスで756671.1を検索します。これはダウングレードするための要件です。
Oracle Databaseリリース11.1にダウングレードする場合、ダウングレード手順を開始する前に、新しく作成するデータベース・リンクのパスワードを確認します。これらは、リリース11.2または12.1の実行中に作成した可能性があるデータベース・リンクです。Oracle Databaseリリース11.1にダウングレードした後でデータベース・リンク・パスワードをリセットする必要があるため、データベース・リンク・パスワードが必要です。詳細は、「ダウングレード後のデータベース・リンクのパスワードの問題」を参照してください。
データベースでOracle Database Vaultを有効化している場合は、データベースをダウングレードする前にOracle Database Vaultを無効化します。
Oracle Database Vaultが有効化されているかどうかを確認するには、次のようにV$OPTION
動的ビューを問い合せます。
この問合せに示すとおりの大文字/小文字を使用してOracle Database Vault
を入力します。出力がTRUE
の場合は、Oracle Database Vaultが有効化されているため、無効化する必要があります。手順は、『Oracle Database Vault管理者ガイド』を参照してください。
データベースでOracle Label Securityを使用していて、リリース11.2以前にダウングレードする場合、新しいOracle Database 12c
のOracleホームでOracle Label Security (OLS)事前処理ダウングレードolspredowngrade.sqlスクリプトを実行します。リリース12.1.0.2からリリース12.1.0.1にダウングレードする場合、olspredowngrade.sql
を実行する必要はありません。
重要: Oracle Label SecurityおよびOracle Database Vaultを使用するデータベースでは、Oracle Database 12c からデータベース・リリース11.2 (以前)にダウングレードする前に、olspredowngrade.sqlスクリプトを実行する必要があります。 |
Oracle Label Securityが有効化されているかどうかを確認するには、次のようにV$OPTION
動的ビューを問い合せます。
SQL> SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Oracle Label Security';
olspredowngrade.sql
スクリプトを実行します。
SQL> @ORACLE_HOME/rdbms/admin/olspredowngrade.sql
詳細は、Oracle Label Security管理者ガイドを参照してください。
統合監査が有効化されている場合は、統合監査証跡をオプションでバックアップおよび消去します。
統合監査レコードが存在するかどうかを確認します。
既存の監査データを表にバックアップします。次に例を示します。
SQL> CREATE TABLE UA_DATA AS (SELECT * FROM V$UNIFIED_AUDIT_TRAIL);
監査証跡をクリーンアップします。
EXEC DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, use_last_arch_timestamp => FALSE);
以前にタイムゾーン・ファイルの最新バージョンをインストールし、DBMS_DST
PL/SQLパッケージを使用してTIMESTAMP
WITH
TIME
ZONE
データをそのバージョンにアップグレードした場合は、ダウングレード先のリリースに同じバージョンのタイムゾーン・ファイルをインストールします。データベースのアップグレード後にDBMS_DST
を使用してTIMESTAMP
WITH
TIME
ZONE
データをそのタイム・ゾーン・ファイルの最新バージョンにアップグレードした場合は、ダウングレード先のリリースにこの最新バージョンのタイムゾーン・ファイルをインストールします。これにより、TIMESTAMP
WITH
TIME
ZONE
データが取得中に論理的に破損することがなくなります。
データベースで現在使用されているタイムゾーン・ファイルのバージョンを確認するには、次のようにV$TIMEZONE_FILE
に問い合せます。
SQL> select * from V$TIMEZONE_FILE;
現在のOracleホームからダウングレードするOracheホームにタイムゾーン・ファイルをコピーします。たとえば、問合せの結果を確認した後で、次から選択します。
%ORACLE_HOME%\oracore\zoneinfo\timezlrg_18.dat %ORACLE_HOME%\oracore\zoneinfo\timezone_18.dat
タイムゾーン・ファイルのアップグレードの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を、DBMS_DST
パッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
Oracle Database 12cへのアップグレード時にORA_TZFILE
環境変数をタイム・ゾーン・ファイルのフルパス名に設定した場合は、後でデータベースをダウングレードする際にその設定を解除する必要があります。
Oracleホーム・ディレクトリには、次の2つのタイムゾーン・ファイルがあります。
デフォルトのタイム・ゾーン・ファイル(データベース・サーバー用)は、次の場所にあります。
$ORACLE_HOME/oracore/zoneinfo/timezonelrg.dat
小規模なタイム・ゾーン・ファイルは(一般にクライアントで使用されます)、次の場所にあります。
$ORACLE_HOME/oracore/zoneinfo/timezone.dat
ORA_TZFILE
変数の設定を解除しなかった場合、小さい方のタイムゾーン・ファイルを使用してデータベースに接続すると、次のエラーが発生する可能性があります。
SP2-1503: Unable to initialize Oracle call interface SP2-0152: ORACLE may not be functioning properly
日時データ型およびタイムゾーン・サポートの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。
オプション: Oracle Database 11gリリース1 (11.1.0.7)にダウングレードする際にデータベースにOracle Application Expressがある場合は、Oracle Database 12c ORACLE_HOME/apex/
ディレクトリからOracleホーム外部のディレクトリ(システムの一時ディレクトリなど)にapxrelod.sql
ファイルをコピーする必要があります。
このファイルの新しい場所を記録します。この手順で後ほど必要になります。
固定オブジェクトに基づいてオブジェクトを作成した場合は、これらのオブジェクトを削除して、ORA-00600
エラーの発生を回避します。ダウングレード後にこれらのオブジェクトを再作成できます。
データベースにOracle Enterprise Managerが構成されている場合は、Enterprise Managerユーザーを削除します。
DROP USER sysman CASCADE;
注意: この手順を実行すると、MGMT*シノニムが無効になる場合があります。ダウングレードしたデータベースでOracle Enterprise Managerの制御を使用するには、Oracle Enterprise Managerを再構成する必要があります。 |
Oracle Database 12cデータベースを、サポートされているメジャー・リリースまたは関連するパッチ・セット・アップグレードにダウングレードするための手順が提供されています。リリース12.1.0.2以上からリリース12.1.0.1にダウングレードする場合、マルチテナント・コンテナ・データベース(CDB)またはCDB内の1つのプラガブル・データベース(PDB)にあるすべてのデータベースをダウングレードできます。Oracle Database 12cより前のOracle Databaseリリースでは、マルチテナント・アーキテクチャを使用しませんでした。1つのPDBをダウングレードするためのプロシージャについては、「単一のプラガブルOracle Database (PDB)のダウングレード」を参照してください。
この項の手順は、「Oracle Databaseのダウングレードがサポートされているリリース」を理解していることを前提としています。
CDBであるかどうかに関係なく、サポートされている以前のリリースにデータベースをダウングレードするには、次の手順を実行します。
Oracle Database 12cの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は自動的にcatcon_logsに出力をスプールするため、CDBの場合はこの手順をスキップできます。)
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の例では、catcon.pl
はcatdwgrd
とともに実行されます。最初にPERLを起動します。-dパラメータは、catcon.pl
にcatdwgrd
の入手先を指定します。-lパラメータは、ログ・ファイルの出力ディレクトリを指定します(rdbms/adminディレクトリに書き込むかわりとなります)。-r
パラメータを使用して、2つのスクリプトを一緒に実行する必要があります。
catdwgrd.sql
スクリプトまたは残りの手順のいずれかのスクリプトを実行中になんらかの問題が発生した場合は、問題を解決してスクリプトを再実行します。必要に応じて、この章で説明されているスクリプトのいずれかを実行できます。
注意: コンポーネントのダウングレードに失敗した場合、ORA-39709 エラーが表示され、SQL*Plusセッションは、Oracle Databaseデータ・ディクショナリをダウングレードせずに終了します。すべてのコンポーネントは、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 12c
データベースのすべての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
を使用したOracle Databaseインスタンスの管理の詳細は、Oracle Databaseプラットフォーム・ガイドfor Microsoft Windowsを参照してください。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 MANUAL -PFILE C:\ORANT\DATABASE\INITORCL.ORA
注意: ORADIM コマンドによって、Oracleホームのユーザー・アカウントのパスワードの入力が求められます。ORADIM を使用して、他のオプションを指定できます。
データベースをダウングレードする際に、Windowsレジストリの設定を変更する必要はありません。必要な変更は、すべて |
ダウングレード先のリリースの構成ファイル(パラメータ・ファイル、パスワード・ファイルなど)をリストアします。
Oracle RACデータベースの場合は、次のコマンドを実行して、データベースを単一インスタンス・モードに戻します。
SET CLUSTER_DATABASE=FALSE
注意: クラスタ・データベースをダウングレードしている場合は、このクラスタ・データベースのインスタンスが構成されているすべてのノードでこの手順を実行してください。CLUSTER_DATABASE 初期化パラメータをFALSE に設定します。ダウングレードが完了した後、この初期化パラメータの設定をTRUE に戻す必要があります。
Oracle RACでの初期化パラメータの使用の詳細は、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。 |
システム・プロンプトで、ダウングレードする以前のリリースのORACLE_HOME
/rdbms/admin
ディレクトリに移動します。
SQL*Plusを開始して、SYSDBA
権限を持つユーザーとして、データベース・インスタンスに接続します。
非CDBの場合:
SQL> CONNECT / AS SYSDBA SQL> STARTUP UPGRADE
CDBの場合:
connect / as sysdba startup database mount; alter database open upgrade; alter pluggable database all open upgrade;
オプション: 非CDBの場合、変更および問題を追跡するために、結果をログ・ファイルにスプールするようにシステムを設定します。この手順はCDBには必要ありません。
SQL> SPOOL reload.log
catrelod.sql
を実行します。
非CDBの場合:
SQL> @catrelod.sql
CDBの場合:
$ORACLE_HOME/perl/bin/perl catcon.pl -n 1 -e -b catrelod -d '''.''' catrelod.sql
catrelod.sql
スクリプトによって、ダウングレードしたデータベース内の各データベース・コンポーネントに該当するバージョンが再ロードされます。
Oracle Database 11gリリース1 (11.1.0.7)にダウングレードする際にデータベースにOracle Application Expressがある場合は、apxrelod.sql
スクリプトをコピーしたディレクトリに移動します。apxrelod.sql
スクリプトを実行して、Oracle Application Expressを手動で再ロードします。
SQL> @apxrelod.sql
apxrelod.sql
スクリプトを実行すると、次のエラーが原因でパッケージAPEX_030200.WWV_FLOW_HELP
がINVALID
になることを回避できます。
PLS-00201: identifier 'CTX_DDL' must be declared
非CDBでスプーリングをオンにした場合、スクリプト結果のログ・ファイルへのスプーリングをオフにします。
SQL> SPOOL OFF
次に、スプール・ファイルを確認して、すべてのパッケージおよびプロシージャのコンパイルが成功したかどうかを検証します。このログ・ファイルで見つけた問題を処理し、必要に応じて適切なスクリプトを再実行します。
通常の操作のために、インスタンスを停止し、再起動します。
SQL> SHUTDOWN IMMEDIATE SQL> STARTUP
PFILE
オプションを使用して、初期化パラメータ・ファイルの場所を指定する必要がある場合があります。初期化パラメータの起動時の指定および初期化パラメータ・ファイルの詳細は、『Oracle Database管理者ガイド』を参照してください。
データベースがOracle Label Security用に構成されている場合は、この手順を実行します。
olstrig.sql
スクリプトを、Oracle Database 12cのOracleホームからダウングレード後のデータベースのリリースのOracleホームにコピーします。
ダウングレード先のリリースのOracleホームからolstrig.sql
を実行し、Oracle Label Securityのポリシーを適用して、表のDMLトリガーを再作成します。
SQL> @olstrig.sql
Oracle Label Securityの詳細は、Oracle Label Security管理者ガイドを参照してください。
utlrp.sql
スクリプトを実行します。
非CDBの場合:
SQL> @utlrp.sql
CDBの場合、catcon.pl
を実行して、utlrp.sql
を起動し、残りのすべてのストアドPL/SQLおよびJavaコードを再コンパイルします。次の構文を使用します。
$ORACLE_HOME/perl/bin/perl catcon.pl -n 1 -e -b utlrp -d '''.''' utlrp.sql
utlrp.sql
スクリプトは、以前INVALID
状態だったパッケージ、プロシージャ、型などのすべての既存のPL/SQLモジュールを、再コンパイルします。ログ・ファイルutlrp0.log
は、再コンパイルの結果を記録して生成されます。
SQL*Plusを終了します。
クラスタ・データベースをダウングレードする場合は、次のコマンドを実行してOracle Clusterwareのデータベース構成をダウングレードする必要があります。
$ srvctl downgrade database -d db-unique-name -o oraclehome -t to_version
[ここで、db-unique-name
はインスタンス名ではなくデータベース名であり、oraclehome
は、ダウングレードされるデータベースの古いOracleホームの場所で、to_version
は、データベースがダウングレードされるデータベースのリリースです。(例: 11.2.0.3.0)]
注意: このコマンドは、データベースのダウングレード後のOracleホームからではなく、現在のOracle Database 12cのOracleホームから実行してください。 |
データベースがダウングレードされました。
Oracle Database 12cの最新リリースをダウングレードする場合、CDB全体をダウングレードせずに1つのPDBをダウングレードできます。たとえば、リリース12.1.0.2のCDBからPDBを切断し、それをダウングレードした後、リリース12.1.0.1のCDBに接続するか、そのデータベースをスタンドアロン・データベースに変換することができます。
この項の手順は、「Oracle Databaseのダウングレードがサポートされているリリース」を理解していることを前提としています。
この手順では、PDBをリリース12.1.0.1にダウングレードします。
リリース12.1.0.2の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
例では、catcon.pl
はcatdwgrd
とともに実行されます。最初にPERLを起動します。-d
パラメータは、catcon.pl
にcatdwgrd
の入手先を指定します。-l
パラメータは、ログ・ファイルの出力ディレクトリを指定します(rdbms/adminディレクトリに書き込むかわりとなります)。2つのスクリプトを同時に一緒に実行するには、-r
パラメータを使用する必要があります。
PDBを閉じます。
この手順では、ダウングレードされたPDBをリリース12.1.0.2のCDBから切断します。
12.1.0.2のCDBに接続します。
切断するPDBを閉じます。
SQL> alter pluggable database PDB1 close;
ダウングレードされた12.1.0.1のPDBを切断します。
SQL> alter pluggable database PDB1 unplug into 'path/PDB1.xml';
「プラガブル・データベースが変更されました。」
が表示されます。
この手順では、ダウングレードされた12.1.0.1のPDBを12.1.0.1のCDBに接続します。これを行うには、このCDBでPDBを作成する必要があります。この例では、PDB1を作成します。
12.1.0.1のCDBに接続します。
12.1.0.1の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 Databaseのダウングレード後に追加の作業が必要になる場合があります。
この項には次のトピックが含まれます:
ダイジェスト認証がサポートされていないOracle Database 12cより前のリリースにダウングレードする場合、ダイジェスト認証が無効化され、認証の選択肢として使用できなくなります。これは、Oracle XML DBリポジトリのHTTP認証に影響します。ダイジェスト認証を使用せず、かわりにデフォルトの構成を使用している場合は、これ以上のアクションは必要ありません。
関連項目: データベースのインストール、アップグレードおよびダウングレードに対するOracle XML DBを使用した認証の詳細は、『Oracle XML DB開発者ガイド』を参照してください。 |
Oracle Database 11gリリース1 (11.1.0.7)にダウングレードする場合は、ダウングレード手順の実行後にリスナーを再作成する必要があります。Oracle Net Managerを実行して古いリスナーを削除し、新しいリスナーを作成します。
Oracle Enterprise ManagerのコンソールからOracle Net Managerを起動するには、「ツール」メニューから「サービス管理」を選択し、「Oracle Net Manager」を選択します。
Windowsの場合、「スタート」メニューから「プログラム」を選択し、「Oracle - HOME_NAME」を選択します。次に、「Configuration and Migration Tools」を選択し、「Net Manager」を選択します。
関連項目: 『Oracle Database Net Services管理者ガイド』 |
Oracle Database Vaultを使用している場合は、データベースをダウングレードする前にこれを無効にするように指示されている場合があります。ダウングレード後にOracle Database Vaultを使用するには、これを再有効化する必要があります。
関連項目: 完全な手順は、『Oracle Database Vault管理者ガイド』を参照してください。 |
Oracle Clusterware構成をOracle Clusterware 12cリリース1 (12.1)のアップグレード前の状態にリストアできます。構成をリストアするには、アップグレード前のリリースをリストアする必要があります。Oracle Database 12cのアップグレード処理中またはアップグレード処理後に実行した構成変更は削除され、リカバリできません。
関連項目:
|
この項で説明するリストア・タスクは、なんらかの形式でダウングレード中であり、Oracle Enterprise Managerがホストに構成されている場合にのみ実行する必要があります。Oracle Enterprise Managerを以前の状態にリストアするには、Oracle Enterprise Managerの構成ファイルおよびデータをアップグレードの前に保存しておく必要があります。構成をリストアするには、まずこの項の説明に従ってOracle Enterprise Manager構成アシスタント(EMCA)を実行し、「Enterprise Manager Database Controlをリストアするためのemdwgrdユーティリティの実行」の説明に従ってemdwgrd
ユーティリティを実行します。
これがOracle Clusterwareを使用したOracle RACデータベースである場合は、emca -restoreコマンドを実行する前に
srvctl
を使用してデータベースを登録する必要があります。これは、ダウングレード後のデータベースのリリースのORACLE_HOME
/binから実行する必要があります。
関連項目: srvctlに関する詳細は、『Oracle Clusterware管理およびデプロイメント・ガイド』 を参照してください。 |
適切なオプションを指定してemca
-restore
コマンドを実行し、Oracle Enterprise Manager Database ControlまたはOracle Enterprise Manager Grid Controlを古いOracleホームにリストアします。重要: この手順では、Oracle Database 12cバージョンのemcaを使用します。emcaの詳細は、『Oracle Database管理者ガイド』を参照してください。
emca
に指定するオプションは、データベースがシングル・インスタンス・データベースか、Oracle RACデータベースか、Oracle ASMデータベースかによって異なります。
Oracle ASMがない単一インスタンスのOracle Databaseでのemcaの実行
ORACLE_HOME/bin/emca -restore db
次の情報の入力を求められます。
リストアするデータベースのOracleホーム
データベースSID
リスナー・ポート番号
Oracle ASMがないOracle RACデータベースでのemcaの実行
ORACLE_HOME/bin/emca -restore db -cluster
次の情報の入力を求められます。
リストアするデータベースのOracleホーム
データベースの一意の名前
リスナー・ポート番号
単一インスタンスのOracle ASMインスタンスでのemcaの実行
ORACLE_HOME/bin/emca -restore asm
次の情報の入力を求められます。
リストアするデータベースのOracleホーム
Oracle ASMポート
Oracle ASM SID
Oracle RACインスタンス上のOracle ASMでのemcaの実行
ORACLE_HOME/bin/emca -restore asm -cluster
次の情報の入力を求められます。
リストアするデータベースのOracleホーム
Oracle ASMポート
Oracle ASMがある単一インスタンスのOracle Databaseでのemcaの実行
ORACLE_HOME/bin/emca -restore db_asm
次の情報の入力を求められます。
リストアするデータベースのOracleホーム
データベースSID
リスナー・ポート番号
Oracle ASMポート
Oracle ASMホーム
Oracle ASM SID [+ASM]
Oracle RACデータベースおよびOracle ASMインスタンスでのemcaの実行
ORACLE_HOME/bin/emca -restore db_asm -cluster
次の情報の入力を求められます。
リストアするデータベースのOracleホーム
データベースの一意の名前
リスナー・ポート番号
Oracle ASMポート
Oracle ASM Oracleホーム
Oracle ASM SID [+ASM]
emca
の出力は、指定するオプションおよびプロンプトで入力する値によって様々です。この手順は、Oracle RAC環境内のすべてのノードに対して繰り返す必要があります。
ここで、Oracle Enterprise Manager Database Controlおよびデータをリストアするためにemdwgrd
ユーティリティを実行する必要があります。
emca
-restore
プロシージャの終了後に、emdwgrd
ユーティリティを使用して、Oracle Enterprise Manager Database Controlおよびデータをリストアする準備ができます。Oracle Database 12c
ホームからemdwgrdユーティリティを実行する必要があります。次に、ORACLE_HOME
および他の環境変数を、アップグレードが実行されたOracleホームを指すように設定する必要があります。
次の手順は、LinuxおよびUNIX用です。この手順をWindowsで実行する場合は、emdwgrd
をemdwgrd.bat
に置き換えてください。
次の手順に従って、Oracle Enterprise Manager Database Controlおよびデータをリストアします。
ORACLE_HOME
を、データベースがアップグレードされる前のOracleホームに設定します。
ORACLE_SID
を、アップグレード後にダウングレードされたデータベースのSIDに設定します。
データベースがアップグレードされる前のOracleホームを指すように、PATH
、LD_LIBRARY_PATH
およびSHLIB_PATH
を設定します。
Oracle Database 12cのOracleホームに移動します。
cd ORACLE_HOME/bin
次のいずれかを実行します。
単一インスタンス・データベースの場合は、次のコマンドを実行します。SID
はアップグレード後にダウングレードされたデータベースのSIDで、save_directory
は、Database Controlのファイルおよびデータの保存時に選択した記憶域の場所へのパスです。
emdwgrd -restore -sid SID -path save_sirectory -tempTablespace TEMP
Oracle RACデータベースの場合、クラスタ・ノード間のリモート・コピーが必要です。構成済のリモート・コピーを示す環境変数を定義します。次に例を示します。
setenv EM_REMCP /usr/bin/scp
その後、次のrestore
コマンドを実行します。
emdwgrd -restore -tempTablespace TEMP -cluster -sid SID10g -path save_directory
Oracleホームが共有デバイス上にある場合は、前述のコマンドラインに-shared
を追加します。
emdwgrd
により要求された場合は、SYSおよびSYSMANパスワードを入力します。
emdwgrd
が終了すると、Oracle Enterprise Manager Database Controlは古いOracleホームにダウングレードされます。
アップグレードされたデータベースに、バージョン4.2より前のバージョンのOracle Application Expressがある場合、データベースをダウングレードすると、Oracle Application Expressもダウングレードされます。以前のバージョンのOracle Application Expressソースから、SYS所有のオブジェクトWWV_FLOW_VAL
およびWWV_DBMS_SQL
をコンパイルする必要があります。
作業ディレクトリを、以前のバージョンのApplication Expressソースのコア・ディレクトリに変更します。
データベースにSYS/SYSDBAとして接続します。
次のスクリプトを表示されている順に実行します。
@wwv_flow_val.plb
@wwv_dbms_sql.sql
@wwv_dbms_sql.plb
Oracle XML DB Protocol Serverの埋込みPL/SQLゲートウェイを使用していた場合、次のように、イメージ・ディレクトリを以前のバージョンにリストアする必要があります。
作業ディレクトリを、以前のバージョンのApplication Expressソースに変更します。
次の例のように、以前のバージョンのソースへのパスを渡すSYS as SYSDBAとして接続されたapxldimg.sql
を起動します。
@apxldimg.sql /tmp/apex32
Oracleでは、Oracle Databaseをダウングレードする際に発生する可能性のある問題に関してトラブルシューティング情報を提供しています。この項では、発生する可能性のある既知の問題と必要な場合に対応するための回避策について説明します。
この項には次のトピックが含まれます:
Oracle Databaseをリリース12.1からリリース11.2.0.2にダウングレードする場合、リリース11.2.0.2に付属するimrelod.sql
スクリプトからエラーが発生する場合があります。
Oracle Databaseをリリース12.1からリリース11.2.0.3にダウングレードする場合に、Oracle Database Vaultを使用するデータベースで、リリース11.2.0.3に付属するdvrelod.sql
スクリプトからエラーが発生する場合があります。
Oracle Restartをダウングレードするには、構成解除してからOracle Grid Infrastructureを再インストールする必要があります。その後、データベースおよびサービスを戻すことができます。
関連項目:
|
Oracle ASM Cluster File System (Oracle ACFS)を使用していて、Oracle Grid Infrastructure 12c (クラスタまたはOracle Restartスタンドアロン・サーバーのどちらの場合も)にアップグレードする場合、Oracle Grid Infrastructure 11g リリース2 (11.2)へのダウングレードを選択し、リリース11.2のソフトウェア・スタックの開始を試みる前にリリース11.2のOracleホームからコマンドacfsroot
install
を実行する必要があります。
関連項目: ご使用のオペレーティング・システム・プラットフォームの問題および解決策の最新の情報については、『Oracle Databaseプラットフォーム共通日本語README』およびリリース・ノートを参照してください。 |
Oracle Databaseリリース11.1にダウングレードした後、リリース11.2または12.1で作成されたデータベース・リンクのパスワードをリセットする必要があります。「Oracle Data Pumpのエクスポートを使用した、既存のすべてのデータベース・リンクが含まれるダンプ・ファイルの作成」を参照してください。データベース・リンク・パスワードをリセットしないと、そのデータベース・リンクを使用しようとすると内部エラーが表示されます。なお、Oracleサーバーがデータベース・リンクのパスワードを取得できないときにOracleトレース・ファイルに記録される内部エラーは、「ORA-00600: [kzdlk_zt2 err], [18446744073709551601]」です。
リリース11.1にダウングレードした後にデータベース・リンクのパスワードをリセットするには、ALTER
DATABASE
LINK
コマンドを使用して元のパスワードをIDENTIFIED
BY
句に指定することで、パスワードを元のパスワードに戻します。ALTER
DATABASE
LINK
については『Oracle Database SQL言語リファレンス』を、データベース・リンクによって確立される接続の管理については『Oracle Database管理者ガイド』を参照してください。
このパスワードの問題がないOracle Databaseリリース11.2または12.1の実行中に新しいデータベース・リンクを作成する場合は、CREATE
DATABASE
LINK
コマンドのIDENTIFIED
BY
VALUES
句の使用方法について、Oracleサポートへお問い合せいただけます。
ダウングレードを実行する前に、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;
トラブルシューティング用のオプション手順です。ダウングレードの後、ダウングレードしたいずれかのデータベース・リンクが適切に動作していない(たとえば、内部エラーORA-00600が表示される)場合、次のように、これを削除してダンプ・ファイルからインポートすることで、その後は意図したとおりに動作するようになります。
$ impdp system/manager directory=dpump_dir dumpfile=saved_dblinks.dmp;