您好,登錄后才能下訂單哦!
這篇文章主要介紹Oracle 12C如何使用備份集執行只讀表空間的跨平臺傳輸,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
使用帶用for transport或to platform子句的backup命令來創建備份集來將只讀表空間從一個平臺傳輸到另一個平臺。當傳輸只讀表空間時,必須要導出這些表空間的元數據。這些元數據會在將表空間附加到目標數據庫時需要使用。當跨平臺傳輸表空間時,源平臺與目標平臺可以使用不同的字節序。可以還原跨平臺備份中的所有數據文件或表空間或者它們中的一部分。在還原這些對象之后,可以為被還原的數據文件指定路徑與名稱。
使用備份集執行跨平臺傳輸表空間的先決條件
.源數據庫與目標數據庫的spfile參數文件中的compatible參數必須設置為12.0.0或更高版本。
.被傳輸的表空間必須是自包含。執行dbms_tts.transport_set_check過程來檢查依賴性。如果transport_set_violations視圖包含指定表空間的相關行記錄,那么必須在創建跨平臺備份之前解決這種依賴性。
.被傳輸的表空間必須是只讀模式,除非在backup命令中使用了allow inconsistent子句。
下面的例子將Linux平臺上的RAC CDB中的jypdb的表空間tts與cs傳輸到windows平臺上的單實例CDB的jypdb數據庫中。使用備份集對只讀表空間執行跨平臺傳輸的操作如下:
1.檢查源數據庫與目標數據庫的compatible參數是否設置為12.0.0或更高版本
源數據庫
SQL> show parameter compatible NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ compatible string 12.2.0 noncdb_compatible boolean FALSE 目標數據庫 SQL> show parameter compatible NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ compatible string 12.2.0 noncdb_compatible boolean FALSE
2.對源數據庫中的要被傳輸的表空間tts與cs執行自包含檢查
SQL> alter session set container=jypdb; Session altered. SQL> exec sys.dbms_tts.transport_set_check('TTS,CS',true); PL/SQL procedure successfully completed. SQL> select * from sys.transport_set_violations; no rows selected
3.檢查源平臺與目標平臺的字節序
源平臺
SQL> select d.platform_name,endian_format from v$transportable_platform tp,v$database d where tp.platform_name=d.platform_name; PLATFORM_NAME ENDIAN_FORMAT ----------------------------------------------------------------------------------------------------- -------------- Linux x86 64-bit Little
目標平臺
SQL> select d.platform_name,endian_format from v$transportable_platform tp,v$database d where t PLATFORM_NAME ENDIAN_FORMAT -------------------------------------------------------------------------------- -------------- Microsoft Windows x86 64-bit Little
4.將要被傳輸的表空間(tts,cs)設置為只讀狀態
SQL> alter tablespace tts read only; Tablespace altered. SQL> alter tablespace cs read only; Tablespace altered. SQL> select tablespace_name,status from user_tablespaces; TABLESPACE_NAME STATUS ------------------------------ --------- SYSTEM ONLINE SYSAUX ONLINE UNDOTBS1 ONLINE TEMP ONLINE UNDO_2 ONLINE USERS ONLINE TEST ONLINE TTS READ ONLY CS READ ONLY 9 rows selected.
5.給RMAN備份輸出文件選擇命名方法,使用backup命令的format子句來為備份輸出文件選擇輸出方法。
6.啟動RMAN連接到源數據庫(整個RAC CDB)并將重啟源數據庫并以只讀方式打開
[oracle@jytest1 ~]$ rman target sys/abcd@jy catalog rco/abcd@jypdb_173 Recovery Manager: Release 12.2.0.1.0 - Production on Mon Feb 5 23:22:24 2018 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. connected to target database: JY (DBID=979425723) connected to recovery catalog database
7.在backup命令中使用for transport或to platform子句來備份表空間。下面的例子對表空間tts與cs創建跨平臺傳輸備份。備份可以被還原到Microsoft Windows IA (64-bit)平臺。Data Pump導出dump文件包含了附加表空間到目標數據庫中所需要的元數據。備份文件與dump文件存儲在/ora_backup/tts目錄中。
RMAN> backup to platform 'Microsoft Windows x86 64-bit' format '/ora_backup/tts/trans_ts.bck' datapump format '/ora_backup/tts/trans_ts_dmp.bck' tablespace JYPDB:'TTS',JYPDB:'CS'; Starting backup at 05-FEB-18 using channel ORA_DISK_1 Running TRANSPORT_SET_CHECK on specified tablespaces TRANSPORT_SET_CHECK completed successfully Performing export of metadata for specified tablespaces... EXPDP> Starting "SYS"."TRANSPORT_EXP_JY_xput": EXPDP> Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS EXPDP> Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS EXPDP> Processing object type TRANSPORTABLE_EXPORT/STATISTICS/MARKER EXPDP> Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK EXPDP> Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK EXPDP> Processing object type TRANSPORTABLE_EXPORT/TABLE EXPDP> Processing object type TRANSPORTABLE_EXPORT/INDEX/INDEX EXPDP> Master table "SYS"."TRANSPORT_EXP_JY_xput" successfully loaded/unloaded EXPDP> ****************************************************************************** EXPDP> Dump file set for SYS.TRANSPORT_EXP_JY_xput is: EXPDP> /u01/app/oracle/product/12.2.0/db/dbs/backup_tts_JY_38873.dmp EXPDP> ****************************************************************************** EXPDP> Datafiles required for transportable tablespace CS: EXPDP> +DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/cs.294.966380783 EXPDP> Datafiles required for transportable tablespace TTS: EXPDP> +DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/tts.257.966380353 EXPDP> Job "SYS"."TRANSPORT_EXP_JY_xput" successfully completed at Mon Feb 5 23:57:57 2018 elapsed 0 00:03:08 Export completed channel ORA_DISK_1: starting full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00022 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/tts.257.966380353 input datafile file number=00023 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/cs.294.966380783 channel ORA_DISK_1: starting piece 1 at 05-FEB-18 channel ORA_DISK_1: finished piece 1 at 05-FEB-18 piece handle=/ora_backup/tts/trans_ts.bck tag=TAG20180205T235319 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03 channel ORA_DISK_1: starting full datafile backup set input Data Pump dump file=/u01/app/oracle/product/12.2.0/db/dbs/backup_tts_JY_38873.dmp channel ORA_DISK_1: starting piece 1 at 05-FEB-18 channel ORA_DISK_1: finished piece 1 at 05-FEB-18 piece handle=/ora_backup/tts/trans_ts_dmp.bck tag=TAG20180205T235319 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 05-FEB-18 starting full resync of recovery catalog full resync complete [oracle@jytest1 tts]$ ls -lrt total 2472 -rw-r----- 1 oracle asmadmin 2318336 Feb 5 17:57 trans_ts.bck -rw-r----- 1 oracle asmadmin 212992 Feb 5 17:57 trans_ts_dmp.bck
因為在backup命令中使用了to platform子句,因此將數據文件轉換成目標平臺字節序的操作在源平臺執行。
8.將backup命令生成的備份集與Data Pump導出的dump文件傳輸到目標平臺的D:\app\oracle\oradata\tts目錄中
9.使用rman連接到目標數據庫(單實例CDB中的JYPDB)
C:\Users\Administrator>rman target sys/abcd@jypdb 恢復管理器: Release 12.2.0.1.0 - Production on 星期一 2月 5 00:22:31 2018 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. 已連接到目標數據庫: JY:JYPDB (DBID=4203494064)
10.使用有foreign tablespace子句的restore命令來還原從源平臺傳輸過來的備份集
RMAN> restore foreign tablespace TTS,CS to new from backupset 'D:\app\oracle\oradata\tts\trans_ts.bck' dump file from backupset 'D:\app\oracle\oradata\tts\trans_ts_dmp.bck'; 從位于 06-2月 -18 的 restore 開始 使用目標數據庫控制文件替代恢復目錄 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=8 設備類型=DISK 通道 ORA_DISK_1: 正在開始還原數據文件備份集 通道 ORA_DISK_1: 正在指定從備份集還原的數據文件 通道 ORA_DISK_1: 正在還原外部表空間 TTS 中的所有文件 通道 ORA_DISK_1: 正在還原外部表空間 CS 中的所有文件 通道 ORA_DISK_1: 正在讀取備份片段 D:\app\oracle\oradata\tts\trans_ts.bck 通道 ORA_DISK_1: 將外部文件 22 還原到 D:\APP\ORACLE\ORADATA\JY\5F9AC6865E87549FE053AB828A0ADE94\DATAFILE\O1_MF_TTS_F7K17RGW_.DBF 通道 ORA_DISK_1: 將外部文件 23 還原到 D:\APP\ORACLE\ORADATA\JY\5F9AC6865E87549FE053AB828A0ADE94\DATAFILE\O1_MF_CS_F7K17RHC_.DBF 通道 ORA_DISK_1: 外部片段句柄 = D:\app\oracle\oradata\tts\trans_ts.bck 通道 ORA_DISK_1: 已還原備份片段 1 通道 ORA_DISK_1: 還原完成, 用時: 00:00:02 通道 ORA_DISK_1: 正在開始還原數據文件備份集 通道 ORA_DISK_1: 正在指定從備份集還原的數據文件 通道 ORA_DISK_1: 正在將數據泵轉儲文件還原到 D:\app\oracle\product\12.2.0\dbhome_1/dbs/backup_tts_JY_38586.dmp 通道 ORA_DISK_1: 正在讀取備份片段 D:\app\oracle\oradata\tts\trans_ts_dmp.bck 通道 ORA_DISK_1: 外部片段句柄 = D:\app\oracle\oradata\tts\trans_ts_dmp.bck 通道 ORA_DISK_1: 已還原備份片段 1 通道 ORA_DISK_1: 還原完成, 用時: 00:00:02 正在執行元數據導入... IMPDP> 已成功加載/卸載了主表 "SYS"."TSPITR_IMP_JY_pfCp" IMPDP> 啟動 "SYS"."TSPITR_IMP_JY_pfCp": IMPDP> 處理對象類型 TRANSPORTABLE_EXPORT/PLUGTS_BLK IMPDP> 處理對象類型 TRANSPORTABLE_EXPORT/TABLE IMPDP> 處理對象類型 TRANSPORTABLE_EXPORT/INDEX/INDEX IMPDP> 處理對象類型 TRANSPORTABLE_EXPORT/INDEX_STATISTICS IMPDP> 處理對象類型 TRANSPORTABLE_EXPORT/TABLE_STATISTICS IMPDP> 處理對象類型 TRANSPORTABLE_EXPORT/STATISTICS/MARKER IMPDP> 處理對象類型 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK IMPDP> 作業 "SYS"."TSPITR_IMP_JY_pfCp" 已于 星期二 2月 6 00:24:02 2018 elapsed 0 00:00:33 成功完成 導入完畢 在 05-2月 -18 完成了 restore
11.在目標數據庫中查詢表tts.t1與cs.t2記錄是否與源數據庫中一致,如果一致說用表空間tts與cs跨平臺傳輸成功
源數據庫
SQL> alter session set container=jypdb; 會話已更改。 SQL> select count(*) from tts.t1; COUNT(*) ---------- 45 SQL> select count(*) from cs.t2; COUNT(*) ---------- 46
目標數據庫
SQL> alter session set container=jypdb; 會話已更改。 SQL> select count(*) from tts.t1; COUNT(*) ---------- 45 SQL> select count(*) from cs.t2; COUNT(*) ---------- 46
以上是“Oracle 12C如何使用備份集執行只讀表空間的跨平臺傳輸”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。