この付録は次のノートを基準にしています。
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)