使用RMAN完成跨平臺資料遷移

xypincle發表於2017-03-25

1、  在源資料庫上設定為只讀模式(必須是在歸檔模式下)

Sql>shutdown immediate;

Sql>startup mount;

Sql>alter database open read only;

  2、  利用dbms_tdb包檢查資料庫能否被傳輸以及列出外部表和DIRECTORY等無法傳輸的物件資訊(本例從windows2003x64遷移至redhat 5.8x64平臺;例項是全庫遷移,這個檢查實際上並不起到實際的作用):

檢查ORACLE支援轉換的平臺資訊:

Sql> select * from V$TRANSPORTABLE_PLATFORM order by 3;

Sql>set serveroutput on

Sql>declare

           Db_ready Boolean;

Bein

                    Db_ready:=dbms_tdb.check(‘Linux x86 64-bit’,dbms_tdb.skip_none);

End;

/

結果為如下表示正常:

PL/SQL procedure successfully completed.

 Sql>declare

           External Boolean;

           Begin

                    external := dbms_tdb.check_external;

           end;

           /

如下結果只是SYS表物件可以不用考慮:

The following directories exist in the database:

SYS.DATA_PUMP_DIR, SYS.ORACLE_OCM_CONFIG_DIR, SYS.ADMIN_DIR, SYS.WORK_DIR,

SYS.EXPDIR

 

PL/SQL procedure successfully completed.

 

3、  開始進行資料檔案轉換(在源庫中進行,需要先在陣列上建立目錄f:\oralinux):

Rman target /

RMAN>convert database new database ‘ora92’

         transport script ‘f:\oralinux\transportdb.sql’

         to platform ‘Linux x86 64-bit’

         db_file_name_convert ‘f:\oracle\ora92\’ ‘f:\oralinux\’;

 

4、  修改f:\oralinux\transportdb.sql指令碼,將源庫中的涉及到的路徑全部修改為LINUX對應的路徑名稱;

 

5、  將目標庫上的ORACLE停止(之前已經在LINUX上建立過ora92例項),並且將原/u01/app/oracle/ora92更名為/u01/app/oracle/ora92local

 

6、  複製資料檔案(f:\oralinux\*.*)linux的相應目錄中(/u01/app/oracle/ora92),採用mput *.* .方式,之前先加入prompt以取消提示分個上傳方式。

 

7、  開始恢復目標庫(執行上傳的指令碼檔案/u01/app/oracle/ora92/transportdb.sql建立控制檔案內容,本例忽略建立SPFILE過程)

$sqlplus /nolog

Sql>startup nomount;

Sql>create controlfile reuse set database ‘ora92’

Resetlogs noarchivelog

……;

 

8、  重新啟動資料庫並執行開啟資料庫(可參閱transportdb.sql指令碼內容):

Sql>shutdown immediate;

Sql>startup mount;

Sql>alter database open resetlogs;

--開始建立源庫中的臨時表空間

Sql>alter tablespace temp add tempfile size 2G autoextend on next 655360 maxsize 32767M;

Sql>alter tablespace zltooltmp add tempfile size 2G autoextend on next 655360 maxsize 32767M;

 

9、  最後還必須執行資料庫特殊指令碼:

Sql>shutdown immediate;

Sql>startup upgrade;

Sql>@?/rdbms/admin/utlirp.sql;      --注意指令碼名稱:utlirp.sql

Sql>shutdown immediate;

Sql>startup;

Sql>@?/rdbms/adminutlrp.sql;        --注意指令碼名稱:utlrp.sql

 

至此跨平臺同版本同位元組資料庫遷移完成。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28878983/viewspace-2136073/,如需轉載,請註明出處,否則將追究法律責任。

相關文章