この付録は次のノートを基準にしています。
How To Change Oracle 11g Wordsize from 32-bit to 64-bit [ID 548978.1]
リポジトリのリカバリの詳細は、「How To Change Oracle 11g Wordsize from 32-bit to 64-bit [ID 548978.1]」を参照してください。
手順0の最後でwin32のolapデータがある場合は、Note [ID 386990.1]に示されている手順に従います。
この付録の内容は次のとおりです。
データベース11.1.0.7/10.2.0.5をMicrosoft Windows 32からMicrosoft Windows 64へリカバリするには、ソース・ホストで次の手順を実行します。
DB Oracleホームの<DB_HOME>\bin\sqlplus /NOLOG
に移動します。
次のコマンドを実行します。
SQL> CONNECT / AS SYSDBA
:
注意: 10.2.0.5データベースを使用している場合、<DB HOME>/admin/<SID>/udump に移動してこのバックアップをローカル・システム内で作成します。 |
次のコマンドを実行します。
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE
;
注意: 10.2.0.5データベースを使用している場合、トレース・ファイルが<DB HOME>/admin/<SID>/udump で生成されます。ファイルを、バックアップした<DB HOME>/admin/<SID>/udump と比較します。新規のトレース・ファイルがいくつか見つかります。新規のトレース・ファイルの1つには、後でWin64ホストで実行される手順が含まれます。 |
注意: 11.1データベースを使用している場合、コマンドによって新規の<sid>_ora_XX.trc ファイルが<DB_BASE>\diag\rdbms\<SID>\<SID>\trace\<sid>_ora_xx.trc 内に作成されます。次に例を示します。
このファイルは宛先ホストでの制御ファイルの作成に使用できます。 このファイルは 生成されたトレース・ファイルの詳細は、最後の数行に移動してください。 次に、アップグレードのための手順に従ったコンソールに移動します。「リポジトリ・バックアップ詳細の指定」を選択してから、特定したばかりのトレース・ファイルの作成日時を指定します。 |
データベースの全体オフライン・バックアップを実行します(オプション)。
注意: 10.2.0.5データベースを使用している場合、次のコマンドを実行します。
次に例を示します。
|
次のコマンドを実行します。
SQL> SHUTDOWN IMMEDIATE;
STARTUP;
注意: STARTUP コマンドは、手順6の後にも宛先ホストで実行してください。 |
データベース11.1.0.7/10.2.0.5をMicrosoft Windows 32からMicrosoft Windows 64へリカバリするには、宛先ホストで次の手順を実行します。
コンピュータ上でソフトウェアのみをインストールします。
注意: ここでインストール中のデータベースには、win32ホスト上のデータベースと同じパス名があることを確認してください。これによってリカバリの速度が向上します。 |
<DB_Base>\oradata
ディレクトリ全体をMicrosoft Windows 32から<DB_Base>\
ディレクトリにコピーします。
次のコマンドを実行します。
<DB_HOME>\bin\oradim -new -sid <SID> -maxusers <no. of users> -startmode auto -pfile <DB_HOME>\database\init<SID>.ora
注意: MAXUSERS はデータベース10.2.0.5で動作しない場合があります。 |
For example: C:\DB\db\BIN>oradim.exe -new -sid orcl -maxusers 3 -startmode auto -pfile C:\DB\db\database\initorcl.ora
注意: ここでエラーが表示される場合があります。このエラーは無視しても問題ありません。ただし、インスタンスが作成されることを確認してください。また、init<SID>.ora はここで作成されません。 |
<DB_Base>\admin
ディレクトリ全体をwin32から<DB_Base>\
ディレクトリにコピーします。
<DB_Base>\fast_recovery_area
ディレクトリ全体をwin32からwin64の<DB_Base>\
ディレクトリにコピーします。
<DBHOME>\database\*.*
ファイルをwin32からwin64の<DBHOME>\database\
にコピーします。
注意: 10.2.0.5データベースを使用している場合、<DB_HOME>\dbs\SPFILE<SID>.ORA をwin32からwin64の同じ場所にコピーします。このファイルの例は次のとおりです。
|
STARTUP;
次の環境変数を設定します。
set ORACLE_HOME=<DB_home>
set ORACLE_SID=<SID>
64ビットのDB_HOME\rdbms\admin
ディレクトリに移動します。
注意: この中でsqlplusを見つけられない場合は、<DB_HOME>\bin に移動します。 |
次のコマンドを実行します。
sqlplus /NOLOG
/as sysdba
に接続します。
次のコマンドを実行します。
SQL> create pfile from spfile;
注意: データベース10.2.0.5を使用している場合、次のコマンドを実行します。
For example: create pfile='C:\DB\db\database\initorcl.ora' from SPFILE='C:\DB\db\dbs\SPFILEORCL.ORA'; |
注意: データベース11.1.0.7を使用している場合、次のコマンドを実行します。
For example: create pfile='C:\DB\db\database\initorcl.ora' from SPFILE='C:\DB\db\database\SPFILEORCL.ORA'; |
<DB_HOME>\database\init<SID>.ora
を、_SYSTEM_TRIG_ENABLED=FALSE
を追加して編集します。
次のコマンドを実行します。
SQL> create spfile from pfile
spfile
が同じディレクトリ内で作成されます。
次のコマンドを実行します。
SQL> startup nomount
インスタンスがnomount
として起動します。
注意: 次のような失敗メッセージを受け取る場合があります。
これを修正するには、 pfileおよびspfileを編集するには、
続いて、次のコマンドを実行します。
|
0で特定されているMicrosoft Windows 32のファイル<sid>_ora_xx.trc
に移動します。手順15、16および17はこのファイルから実行されます。参考のため、これらの手順の例を次に示します。
SQL > CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 'C:\DB\ORADATA\ORCL\REDO01.LOG' SIZE 50M BLOCKSIZE 512, GROUP 2 'C:\DB\ORADATA\ORCL\REDO02.LOG' SIZE 50M BLOCKSIZE 512, GROUP 3 'C:\DB\ORADATA\ORCL\REDO03.LOG' SIZE 50M BLOCKSIZE 512 DATAFILE 'C:\DB\ORADATA\ORCL\SYSTEM01.DBF', 'C:\DB\ORADATA\ORCL\SYSAUX01.DBF', 'C:\DB\ORADATA\ORCL\UNDOTBS01.DBF', 'C:\DB\ORADATA\ORCL\USERS01.DBF', 'C:\DB\ORADATA\ORCL\MGMT_ECM_DEPOT1.DBF', 'C:\DB\ORADATA\ORCL\MGMT.DBF', 'C:\DB\ORADATA\ORCL\MGMT_AD4J.DBF' CHARACTER SET WE8MSWIN1252;
注意: ここでエラーが表示された場合は、次のコマンドを実行します。
|
次のコマンドを実行します。
SQL>ALTER DATABASE OPEN;
次のコマンドを実行します。
SQL>ALTER TABLESPACE TEMP ADD TEMPFILE 'C:\DB\ORADATA\ORCL\TEMP01.DBF' SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
このコマンドは一時表領域を更新します。
次のコマンドを実行します。
SQL> SHUTDOWN IMMEDIATE;
次のコマンドを実行します。
SQL> startup upgrade
;
次のコマンドを実行します。
SQL> SPOOL mig32-64.log;
次のコマンドを実行します。
SQL> SET ECHO ON;
次のコマンドを実行します。
SQL> @utlirp.sql;
注意: sqlplusを<DB_HOME>\bin\ から使用している場合、次のコマンドを実行します。
または
|
次のコマンドを実行します。
SQL> spool off;
次のコマンドを実行します。
SQL> shutdown immediate;
次のコマンドを実行します。
SQL> startup
次のスクリプトを実行します。スクリプトを実行するには、SQL>プロンプトに貼り付けて[Enter]を押します。
begin update obj$ set status=5 where obj#=(select obj# from obj$,javasnm$ where owner#=0 and type#=29 and short(+)=name and nvl(longdbcs,name)='oracle/aurora/rdbms/Compiler'); commit; declare cursor C1 is select 'DROP JAVA DATA "' || u.name || '"."' || o.name || '"' from obj$ o,user$ u where o.type#=56 and u.user#=o.owner#; ddl_statement varchar2(200); iterations number; previous_iterations number; loop_count number; my_err number; begin previous_iterations := 10000000; loop -- To make sure we eventually stop, pick a max number of iterations select count(*) into iterations from obj$ where type#=56; exit when iterations=0 or iterations >= previous_iterations; previous_iterations := iterations; loop_count := 0; open C1; loop begin fetch C1 into ddl_statement; exit when C1%NOTFOUND or loop_count > iterations; exception when others then my_err := sqlcode; if my_err = -1555 then -- snapshot too old, re-execute fetch query exit; else raise; end if; end; initjvmaux.exec(ddl_statement); loop_count := loop_count + 1; end loop; close C1; end loop; end; commit; initjvmaux.drp('delete from java$policy$shared$table'); update obj$ set status=1 where obj#=(select obj# from obj$,javasnm$ where owner#=0 and type#=29 and short(+)=name and nvl(longdbcs,name)='oracle/aurora/rdbms/Compiler'); commit; end; / create or replace java system; /
次のコマンドを実行します。
SQL> @utlrp.sql
注意: sqlplusを<DB_HOME>\bin\から使用している場合、次のコマンドを実行します。
または
|
成功した場合は0に進みます。エラーが表示された場合は次の手順を実行します。
次のコマンドを実行します。
SQL> alter system reset "_system_trig_enabled" scope = spfile;
エラーが表示された場合は無視して次の手順に進みます。
次のコマンドを実行してolapを削除します。
SQL> @?/olap/admin/catnoamd.sql
注意: 見つからないファイルに関連するエラーが、個々のファイルについて表示される場合は、次のコマンドを使用します。
ただし、エラーが発生した場合でも続行できます。 |
SQL> @?/olap/admin/catnoaps.sql
SQL> @?/olap/admin/catnoaps.sql
SQL> @?/olap/admin/olapidrp.plb
次のコマンドを実行してolapを追加します。
SQL> connect SYS as SYSDBA
SQL> spool olap.log
SQL> @?/olap/admin/olap.sql SYSAUX TEMP;
次のコマンドを再入力します。
SQl> @utlrp.sql
注意: sqlplusを<DB_HOME>\bin\から使用している場合、次のコマンドを実行します。
または
|
次の確認作業を行います(オプション)。
- 無効なOLAPSYS
オブジェクトについて、次のコマンドを実行します。
SQL> select owner, object_name, object_type, status from dba_objects where status = 'INVALID' and OWNER = 'OLAPSYS' ;
- DBA_REGISTRY
内のOLAP
コンポーネントについて、次のコマンドを実行します。
SQL> column comp_name format a35
SQL> SELECT comp_name, status, substr(version,1,10) as version from dba_registry;
SQL> Spool Off
手順11でinit<SID>.ora
の行_SYSTEM_TRIG_ENABLED=FALSE
を削除して、次のコマンドを実行します。
SQL> ALTER SYSTEM RESET "_system_trig_enabled" SCOPE=SPFILE sid='*';
commit;
shutdown immediate;
startup;
プロセスを完了するには、次の作業を行います。
Microsoft Windows 32コンピュータ上で、次の作業を行います。
<DB_HOME>\bin
に移動します。
sqlplus "/as sysdba"
SQL>startup;
次のコマンドを実行します。
<OMS_HOME>\bin>emctl config emkey -remove_from_repos
次に例を示します。
C:\Oracle\Middleware\oms11g\BIN>emctl config emkey -remove_from_repos
<DB_HOME>\bin
に移動します。
sqlplus "/as sysdba"
shutdown immediate;
startup;
Microsoft Windows 64コンピュータ上で、次の作業を行います。
次のコマンドを実行してリスナーを起動します。
<DB_HOME>\bin\listener.exe start
あるいは、次のコマンドを実行してリスナーを起動することもできます。
<DB_HOME>\bin\netca
この作業はリカバリの前または後に実行できます。
リスナーが起動しない場合、次のコマンドを<SID>
とともに実行します。
<DB_HOME>\bin\sqlplus "/as sysdba"
SQL>alter system register;
SQL>commit;
SQL>shutdown immediate;
SQL>startup;
まだ問題が発生する場合は、次の手順を実行します。
注意: これらの手順はデータベース10.2.0.5でテストされています。 |
次のコマンドを実行します。
<DB_HOME>\BIN\orapwd file=<DB_HOME>\database\PWDorcl.ora password=<enter_password> entries=30 FORCE=Y
tnsnames.ora
でエンティティの追加が必要になる場合があります。エンティティの例は次のとおりです。
ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = adc2111519.us.oracle.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl.us.oracle.com) ) ) Where, orcl is the SID.
次のコマンドを実行して、データベースをSQLPlusからバウンスします。
<DB_HOME>\bin\sqlplus "/as sysdba"
SQL>shutdown immediate;
SQL>startup;
次のコマンドを実行してリスナーをバウンスします。
<DB_HOME>\bin\listener.exe stop
<DB_HOME>\bin\listener.exe start
<DB_HOME>\bin\listener.exe status (to be repeated till you see the service name)