概述
oracle 從 10gR2 開始,Oracle 引入了 RMAN 的下一個神奇特性,它能夠將數據庫從一個平臺轉換到相同字節序格式的不同平臺。此功能稱為跨平臺數據庫遷移。現在這很容易,只需執行一些基本步驟即可將整個數據庫從一個平臺轉換到另一個平臺。下面的場景將使用RMAN的convert database命令,一步步講解數據庫從Windows OS(Source)遷移到Linux OS(Target)的機制。

以下是執行遷移過程的以下步驟。
過程
1、要將數據庫從一個平臺轉換到另一個平臺,兩個數據庫的字節序格式應該相同。因此,作為第一步,請檢查兩個平臺的 v$transportable_platform 視圖
- col platform_name for a35
- set pagesize 1000
- select * from v$transportable_platform order by 2;

從輸出中可以看出,Windows 和 Linux 操作系統都是Little格式。所以在這種情況下,可以很容易地使用RMAN來轉換整個數據庫。
2、數據庫置于掛載模式并使用只讀選項打開它。
- SQL>shutdown immediate
- SQL>startup mount
- SQL>alter database open read only;
- Database altered.
- SQL>
3、使用 dbms_tdb.check_db 函數檢查數據庫是否可以傳輸到目標平臺,使用 dbms_tdb.check_external 函數檢查外部對象、目錄和 BFILE 的存在。將目標平臺的名稱作為參數傳遞給第一個函數。函數的返回類型是boolean,所以聲明一個boolean類型的變量,調用函數如下:
- set serveroutput on
- declare
- v_return boolean;
- begin
- v_return:=dbms_tdb.check_db('Linux x86 64-bit');
- end;
- /
如果沒有返回任何內容,則表示數據庫已準備好傳輸到目標平臺。
現在調用第二個函數 dbms_tdb.check_external:
- declare
- v_return boolean;
- begin
- v_return:=dbms_tdb.check_external;
- end;
- /

4、創建pfile文件并運行convert database命令 將整個數據庫轉換為Linux平臺。
創建pfile文件
- create pfile from spfile;
運行convert database命令 將整個數據庫轉換為目標Linux平臺。rman target /
convert database new database 'orcl'
transport script 'c:\Clone\transport.sql'
db_file_name_convert 'C:\app\piyus\oradata\orcl'
'c:\Clone' to platform 'Linux x86 64-bit';

在執行轉換數據庫命令時,RMAN 不會將重做日志文件、控制文件、密碼文件和臨時表空間轉換和傳輸到目標平臺。RMAN 將所有數據文件轉換為目標平臺類型。
5、目標主機創建相關目錄
- cd $ORACLE_BASE
- mkdir -p admin/orcl/adump admin/orcl/bdump
- mkdir -p admin/orcl/cdump admin/orcl/udump
- mkdir -p oradata/orcl/
- mkdir -p fast_recovery_area/orcl
6、copy相關文件到目標主機
把所有數據文件、位于 $ORACLE_HOME/dbs 目錄中的參數文件和 創建數據庫的transport.sql 復制到目標主機,具體如下:
- 轉換生成的所有數據文件
- 生成的Pfile文件
- TRANSPORT.SQL
7、目標主機編輯pfile文件,具體如下:
- adump location
- control_files locations

8、編輯 transportscript.sqlfile
- change the locations of pdfile,
- redolog files
- data files
- tempfile

9、運行 transport.sql
現在再次檢查上面所做的所有更改,導出 ORACLE_SID 環境變量并從 SQL*Plus 運行 transport.sql 命令:
- SQL> @/tmp/TRANSPORT.SQ
通過運行這個 sql 文件,Oracle 執行以下步驟:
- 從提供的pfile(由 RMAN 生成)創建spfile
- 創建控制文件并使用resetlogs選項打開數據庫
- 創建臨時表空間
- 關閉數據庫,使用升級模式啟動它并運行utlirp.sql。此腳本以目標數據庫平臺所需的格式重新編譯所有 PL/SQL 對象。
- 運行 utlrp.sql文件,該文件重新編譯所有狀態無效的PL/SQL 對象 。
完成上述所有步驟后,即可成功使用數據庫。
原文鏈接:https://www.toutiao.com/a7050004705090470431/