本ガイドでは、以下の手順でデータベースとOracle Databaseのダウングレードを行っていきます。
1. 各バージョンに応じたPatchの適用 2. データベースのダウングレードの実行 3. アップグレード後の確認事項
1.各バージョンに応じたPatchの適用
ダウングレードを実行する前の事前準備として、アップグレード前のバージョンに応じた Patch を適用する必要が あります。また、Patch を適用する場合、Opatch のバージョンが最新であることをご確認ください。アップグレード 前のバージョンに応じた適用するPatchは次の通りです。
・11.2.0.1の場合:Patch 9967451を適用
・11.2.0.2の場合:Patch11811073を適用
Patchを適用する場合は次の手順を実行してください。
・11.2.0.1 の場合、Patch 9967451 を適用する必要があります。Patch を MOS からダウンロードしてください。
なお、Patchが保存されたディレクトリを <PATCH_TOP_DIR>とします。
1-1.次のように環境変数をセットしてください。
・ORACLE_HOME=<BASE_DB_HOME>
・PATH=<BASE_DB_HOME>/OPatch:$PATH
1-2.ダウングロードしたZIPファイルを解凍します。
1-3.解凍後、Patchのディレクトリに移動します。
$ unzip -d <PATCH_TOP_DIR>/p9967451_112010_Generic.zip
$ cd <PATCH_TOP_DIR>/9967451
$ export ORACLE_HOME=<BASE_DB_HOME>
$ export PATH=<BASE_DB_HOME>/OPatch:$PATH
1-4.Patchを適用します。
・11.2.0.2 の場合 Patch11811073 を適用する必要があります。Patch を MOS からダウンロードしてください。
なお、Patchが保存されたディレクトリを <PATCH_TOP_DIR>とします。
1-1.次のように環境変数をセットしてください。
・ORACLE_HOME=<BASE_DB_HOME>
・PATH=<BASE_DB_HOME>/OPatch:$PATH
1-2.ZIPファイルでダウングロードしたPatchを解凍します。
1-3.解凍後、Patchのディレクトリに移動します。
1-4.Patchを適用します。
$ opatch apply
$ unzip -d <PATCH_TOP_DIR>/p11811073_112020_Generic.zip
$ cd <PATCH_TOP_DIR>/11811073
$ opatch apply
$ export ORACLE_HOME=<BASE_DB_HOME>
$ export PATH=<BASE_DB_HOME>/OPatch:$PATH
2.データベースのダウングレードの実行
Oracle Databaseのインストール・ユーザーでシステムにログインします。
タイム・ゾーン・ファイルの確認をします。
アップグレード前のバージョンが 11.2.0.1 以前のバージョンでデータベースのアップグレード時にタイム・
ゾーンのアップグレードを行った場合、ダウングレードを実行する際にタイム・ゾーン・ファイルのコピーが必 要 と なり ます 。 こ れ は 、 タイ ム ・ ゾ ー ン の ダ ウ ン グ レ ー ドが 行 え ない ため です 。 次 の デ ィレ ク ト リ に timezlrg_14.datとtimezone_14.dat以前のバージョン(1から13まで) のファイルが存在するかを確認し ます。
timezlrg_14.datとtimezone_14.dat以前のバージョン(1 から13まで)までのファイルが存在しない場合 は、<11203_DB_HOME>/oracore/zoneinfo からファイルのコピーを実行してください。次のコマンドはコ ピーが必要な場合、複数回実行してください。
Database Controlが構成済みの場合、Database Controlを停止します。
次のように環境変数をセットしてください。
・ORACLE_HOME=<11203_DB_HOME>
・ORACLE_SID=<DBインスタンス名>
・PATH=<11203_DB_HOME>/bin:$PATH
$ export ORACLE_UNQNAME=<db_unque_name>
$ <11203_DB_HOME>/bin/emctl stop dbconsole
$ export ORACLE_HOME=<11203_DB_HOME>
$ export ORACLE_SID=<DB インスタンス名>
$ export PATH=<11203_DB_HOME>/bin:$PATH
$ su - oracle
$ cp <11203_DB_HOME>/oracore/zoneinfo/timezlrg_<version_number>.dat \
<BASE_DB_HOME>/oracore/zoneinfo/timezlrg_<version_number>.dat
$ cp <11203_DB_HOME>/oracore/zoneinfo/timezone_<version_number>.dat \
<BASE_DB_HOME>/oracore/zoneinfo/timezone_<version_number>.dat
<BASE_DB_HOME>/oracore/zoneinfo
この後の手順でcatdwgrd.sqlを実行するため、<11203_DB_HOME>/rdbms/adminディレクトリへ移動し ます。
SQL*PlusでSYSDBA権限を持つユーザーとして、データベース・インスタンスに接続します。
ダウングレードモードでインスタンスを起動します。既にデータベースが起動している場合はインスタンスを 停止してから、ダウングレードモードでインスタンスを再起動します。
Database Controlが構成されている場合は、SYSMANユーザーを削除します。
ダウングレード結果の取得を開始します。
catdwgrd.sqlを実行します。
ダウングレード結果の取得を終了します。
インスタンスを停止します。
SQL*Plusを終了します。
次のように環境変数をセットします。
・ORACLE_HOME=<BASE_DB_HOME>
SQL> STARTUP DOWNGRADE
SQL> DROP USER sysman CASCADE;
SQL> SPOOL downgrade.log
SQL> @catdwgrd.sql
SQL> SPOOL OFF
SQL> EXIT
$ sqlplus / as sysdba
$ cd <11203_DB_HOME>/rdbms/admin
SQL> SHUTDOWN IMMEDIATE
バックアップを取得したアップグレード前のバージョンの構成ファイルをリストアします。その後、アップグ レード前の初期化パラメーター・ファイルをリストアします。
・SQL*PlusでSYSDAB権限を持つユーザーとしてデータベース・インスタンスに接続します。
・アップグレード時にバックアップを取ったpfileからspfileを再作成します。
この後の手順でcatrelod.sqlを実行するため、<BASE_DB_HOME >/rdbms/adminディレクトリへ移動し ます。
SQL*PlusでSYSDBA権限を持つユーザーとして、データベース・インスタンスに接続します。
アップグレード・モードでインスタンスを起動します。
リロード結果の取得を開始します。
catrelod.sql を実行して、ダウングレードしたデータベース内の該当するバージョンのすべてのデータベー ス・コンポーネントをリロードします。
リロード結果の取得を終了します。
インスタンスを再起動します。
SQL> STARTUP UPGRADE
SQL> SPOOL reload.log
SQL> @catrelod.sql
SQL> SHUTDOWN IMMEDIATE SQL> STARTUP
$ cd <BASE_DB_HOME>/rdbms/admin
$ sqlplus / as sysdba
$ sqlplus / as sysdba
SQL> CREATE SPFILE[=’<spfile_path>’] FROM PFILE[=’<pfile_path>’];
SQL> EXIT
SQL> SPOOL OFF
utlrp.sqlを実行して、残りのすべてのストアドPL/SQLおよびJavaコードを再コンパイルします。
ダウングレード後、データベースのバージョンが11.2.0.2であることを確認します。
SQL> @utlrp.sql
SQL> SELECT * FROM V$VERSION;
BANNER
--- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production PL/SQL Release 11.2.0.2.0 - Production
CORE 11.2.0.2.0 Production
TNS for Linux: Version 11.2.0.2.0 - Production NLSRTL Version 11.2.0.2.0 - Production
*11.2.0.3から11.2.0.1または11.2.0.2へダウングレードする場合のみ、実行します。
Oracle Clusterwareのデータベースの構成情報をダウングレードします。11.2.0.3のOracle Databaseの Oracleホームから、Oracle Databaseのインストール・ユーザーで実行します。
$ <11203_DB_HOME>/srvctl downgrade database -d <db_unique_name> \ -o <BASE_DB_HOME> -t <BASE_DATABASE_VERSION>
次は、11.2.0.2 へのダウングレードの実行です。 ここでは、<db_unique_name>を orcl、
<BASE_DB_HOME>を/u01/app/oracle/product/11.2.0.2/dbhome_1、
<BASE_DATABASE_VERSION>を 11.2.0.2 とします。
$ /u01/app/oracle/product/11.2.0.3/dbhome_1/bin/srvctl downgrade database \ -d orcl –o /u01/app/oracle/product/11.2.0.2/dbhome_1 -t 11.2.0.2
3.Database Controlのデータをリストアします。
Database Controlをアップグレード前のOracleホームにリストアします。
注:Database Controlが起動した状態で行います。
注:コマンドを実行すると、次の情報の入力を求められます。
・アップグレード前のOracle DatabaseのOracleホーム
・データベース・インスタンス名
・リスナー・ポート 番号
・ASMインスタンスをリスニングしているリスナー・ポート番号
・アップグレード前のASMのOracleホーム
・ASMインスタンス名
・SYSユーザーのパスワード
・ASMSNMPユーザーのパスワード
次の環境変数を追加します。
・LD_LIBRARY_PATH=<BASE_DB_HOME>/lib:$LD_LIBRARY_PATH
・SHLIB_PATH=<BASE_DB_HOME>/lib:$SHLIB_PATH
11.2.0.3のOracleホームのbinディレクトリに移動します。
アップグレード時に作成したDatabase Controlデータのバックアップを、emdwgrdユーティリティを用いて、
リストアします。
注:アップグレード前のリスナーを起動しておく必要があります。
注:emdwgrdユーティリティを実行中に、SYSユーザーのパスワード、SYSMANユーザーのパスワードが 求められます。
$ <11203_DB_HOME>/bin/emca –restore db_asm
$ export LD_LIBRARY_PATH=<BASE_DB_HOME>/lib:$LD_LIBRARY_PATH
$ export SHLIB_PATH=<BASE_DB_HOME>/lib:$SHLIB_PATH
$ cd <11203_DB_HOME>/bin
$ emdwgrd -restore -sid <DB インスタンス名> -path <Save_Direcroty> \ -tempTablespace TEMP
2 Oracle Grid Infrastructure のダウングレード
Oracle Grid Infrastructureのダウングレードは、アップグレード前のバージョンにより、ダウングレード方法が異 なるため、アップグレード前のバージョンごとにダウングレード方法を記載します。
2.1 10g Release 2 または 11g Release 1 への Oracle Grid Infrastructure の ダウングレード
本項では、Oracle Restart構成のOracle Grid Infrastructureを11.2.0.3から10g R2または11g R2へダウ ングレードする手順について記載します。この手順は、データベースとOracle Databaseのダウングレードが終了 してから実行してください。
Oracle Grid Infrastructureのインストール・ユーザーでシステムにログインします。
次のように環境変数をセットします。
・ORACLE_HOME=<BASE_DB_HOME>
・PATH=<BASE_DB_HOME>/bin:$PATH
11.2.0.3のOracle Grid InfrastructureのOracleホームで、Database Control、データベース・インスタン ス、ディスク・グループ、ASMインスタンスおよびリスナーを停止します。なお、ディスク・グループ、ASMイ ンスタンス、リスナーはSRVCTLコマンドを使用して停止します。
・Database Controlを停止します。
・SQL*Plusを起動し、SYSDBA権限を持つユーザーとして、データベース・インスタンスに接続します。
・データベース・インスタンスを停止します。
・SQL*Plusを終了します。
$ export ORACLE_UNQNAME=<db_unique_name>
$ <11203_ORACLE_HOME>/bin/emctl stop dbconsole
SQL> SHUTDOWN IMMEDIATE
$ export ORACLE_HOME=<BASE_GI_HOME>
$ export PATH=<BASE_GI_HOME>/bin:$PATH
$ sqlplus / as sysdba
SQL> EXIT
$ su - oracle
・次のように環境変数をセットします。
・ORACLE_HOME=<11203_GI_HOME>
・PATH=<11203_GI _HOME>/bin:$PATH
・ASMディスク・グループを停止します。
・ASMインスタンスを停止します。
・リスナーを停止します。
Oracle Restart構成を解除するため、rootユーザーにログインし、roothas.plを実行します。
ASMリソースを再作成するため、rootユーザーでlocalconfigを実行し、ASMのOracleホームにリソース を追加します。
注:localconfig addが失敗した場合は、resetオプションの後にアップグレード前のASMのOracleホームを指 定して既存のリソースをリセットします。
ASMのpfileおよびlisterner.oraがアップグレード前のASMのOracleホームに存在することを確認しま す。
/etc/oratabがアップグレード前のバージョンを指しているか確認します。
$ srvctl stop diskgroup -g <DiskGroup 名>
$ srvctl stop asm
$ srvctl stop listener
$ su -
# <11203_GI_HOME>/crs/install/roothas.pl -deconfig
# <BASE_ASM_HOME>/bin/localconfig add
$export ORACLE_HOME=<11203_GI_HOME>
$export PATH=<11203_GI_HOME>/bin:$PATH
# <BASE_ASM_HOME>/bin/localconfig reset <BASE_ASM_HOME>
データベース・インスタンス、ASM インスタンス、リスナーが 11g R2 の ASM ホームおよび Oracle DatabaseのOracleホームで動作することを確認します。
・ユーザーをOracle Databaseのインストール・ユーザーに変更し、次のように環境変数をセットします。
・ORACLE_HOME=<BASE_ASM_HOME>
・ORACLE_SID=<ASMインスタンス名>
・PATH=<BASE_ASM_HOME>/bin:$PATH
・LSNRCTLコマンドを使用し、リスナー名「LISTENER」を起動します。
・SQL*Plus でSYSASM権限を持つユーザーとしてASMインスタンスに接続します。
・ASMインスタンスを起動します。
・SQL*Plusを終了します。
SQL> STARTUP
# su - oracle
$ export ORACLE_HOME=<BASE_ASM_HOME>
$ export ORACLE_SID=<ASM インスタンス名>
$ export PATH=<BASE_ASM_HOME>/bin:$PATH
$ lsnrctl LSNRCTL> START LSNRCTL> EXIT
SQL> EXIT
$ sqlplus / as sysasm