通過RMAN的Transportable平臺間轉移資料
首先檢視可以使用RMAN的transportable功能的平臺:
SQL> COLUMN PLATFORM_NAME FORMAT A32
SQL> SELECT * FROM V$TRANSPORTABLE_PLATFORM;
PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
----------- -------------------------------- --------------
1 Solaris[tm] OE (32-bit) Big
2 Solaris[tm] OE (64-bit) Big
7 Microsoft Windows IA (32-bit) Little
10 Linux IA (32-bit) Little
6 AIX-Based Systems (64-bit) Big
3 HP-UX (64-bit) Big
5 HP Tru64 UNIX Little
4 HP-UX IA (64-bit) Big
11 Linux IA (64-bit) Little
15 HP Open VMS Little
8 Microsoft Windows IA (64-bit) Little
9 IBM zSeries Based Linux Big
13 Linux 64-bit for AMD Little
16 Apple Mac OS Big
12 Microsoft Windows 64-bit for AMD Little
17 Solaris Operating System (x86) Little
在以上的支援的平臺列表中,如果source platform和target platform平臺版本不一致的話就還需要額外的步驟就是在source platform和target platfrom平臺上執行convert,在開始轉儲之前。
當然如果你的目標平臺和源平臺都一樣的話以上步驟就可以免去了。
[@more@]此功能的限制
1、兩個平臺的字符集應該一致
2、如果目標平臺和源平臺的表空間將要轉儲的表空間名稱有一致的那麼也不行,但是你可以通過修改兩邊平臺的任意一個的表空間名來避免這種問題的存在。
3、所有的物件應該都在將要轉儲的表空間內
4、將要轉儲的表空間所屬局schema必須也在目標平臺上存在
5、如果所要轉儲的表空間內包含XMLType型別的資料,那麼在轉儲的工具的選擇上你只能使用EXP和IMP不能使用10g提供的資料泵工具,如果你使用的EXP和IMP那麼在轉儲的時候不要忘了將CONSTRAINTS 和TRIGGERS 兩個引數設定為Y。
可以通過以下的查詢,找出是否包含XMLType:
select distinct p.tablespace_name
from dba_tablespaces p, dba_xml_tables x, dba_users u, all_all_tables t
where t.table_name=x.table_name and
t.tablespace_name=p.tablespace_name and
x.owner=u.username
轉儲包含XMLType型別的表空間時,包含了以下的一些限制:
a、目標庫內也要安裝了XML DB
B、schema所引用的XMLType表不能是XML DB的標準schema
c、schema所引用的XMLType表,不能包含cyclic dependencies.
d、一些行級的加密資料可能在imp的時候丟失
e、如果所要傳輸的XMLType型別的表所引用的schema沒有宣告,那麼在匯入的時候就會自動建立並註冊,但是如果要傳入的庫內已經存在了對應的schema那麼如果你沒有指定ignore=y的情況下就會報錯
5、含有高階佇列的表空間不能相容8.0-compatible
6、你不能傳輸SYSTEM表空間以及屬於SYS使用者的物件。
7、那些不透明的物件例如:such as RAW, BFILE, and the AnyTypes也可以被傳輸,但是傳輸的時候將不會有平臺之間的convert,
8、浮點數也可以被傳輸,但是要使用10g提供的資料泵工具而不是原始的EXP工具。
=======================================
傳輸EXP/IMP ASM表空間:
*使用RMAN進行CONVER
對於傳輸ASM檔案來說 沒有直接的辦法,可以通過RMAN來完成:
執行以下步驟:
1、預處理將要匯出的表空間:
*檢查表空間內的物件是否都屬於要傳輸的物件
SQL>execute sys.dbms_tts.transport_set_check('TBS1,TBS2', true);
SQL> select * from sys.transport_set_violations;
如果有輸出,則在傳輸之前必須將這些問題解決掉。
* 將要傳輸的表空間置為只讀模式
SQL> ALTER TABLESPACE TBS1 READ ONLY;
SQL> ALTER TABLESPACE TBS2 READ ONLY;
2、匯出基礎資料
*使用原始的工具匯出
exp userid='sys/sys as sysdba' file=tbs_exp.dmp log=tba_exp.log
transport_tablespace=y tablespaces=TBS1,TBS2
*使用資料泵工具匯出
CREATE OR REPLACE DIRECTORY dpump_dir AS '/tmp/subdir' ;
GRANT READ,WRITE ON DIRECTORY dpump_dir TO system;
expdp system/password DUMPFILE=expdat.dmp DIRECTORY=dpump_dir
TRANSPORT_TABLESPACES = TBS1,TBS2
如果你想同時對要轉出的表空間進行一次嚴格的檢查可以加入如下引數:TRANSPORT_FULL_CHECK parameter:
expdp system/password DUMPFILE=expdat.dmp DIRECTORY = dpump_dir
TRANSPORT_TABLESPACES= TBS1,TBS2 TRANSPORT_FULL_CHECK=Y
如果要轉出的表空間裡面包含的並非完全是當前要轉出的schema的資料,那麼就會有錯誤報出。
3、查詢目標平臺的平臺名
可以通過查詢V$TRANSPORTABLE_PLATFORM 來得到目標資料庫平臺的平臺名:
SELECT tp.platform_id,substr(d.PLATFORM_NAME,2,30), ENDIAN_FORMAT
FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;
4、生成系統級的檔案以便進行轉儲
RMAN> CONVERT TABLESPACE TBS1
TO PLATFORM 'HP-UX (64-bit)' FORMAT '/tmp/%U';
RMAN> CONVERT TABLESPACE TBS2
TO PLATFORM 'HP-UX (64-bit)' FORMAT '/tmp/%U';
5、將上面生成的檔案拷貝到目標平臺
6、匯入以上匯出的檔案到目標平臺
*使用原始的工具:
imp userid='sys/sys as sysdba' file=tbs_exp.dmp log=tba_imp.log
transport_tablespace=y datafiles='/tmp/....','/tmp/...'
*使用資料泵工具:
CREATE OR REPLACE DIRECTORY dpump_dir AS '/tmp/subdir' ;
GRANT READ,WRITE ON DIRECTORY dpump_dir TO system;
impdp system/password DUMPFILE=expdat.dmp DIRECTORY=dpump_dir
TRANSPORT_DATAFILES='/tmp/....','/tmp/...'
REMAP_SCHEMA=(source:target) REMAP_SCHEMA=(source_sch2:target_schema_sch2)
如果你要匯入的schema不是你當初匯出的schema那麼你可以通過REMAP_SCHEMA來進行轉換。
7、設定表空間為讀寫模式
SQL> ALTER TABLESPACE TBS1 READ WRITE;
SQL> ALTER TABLESPACE TBS2 READ WRITE;
如果你僅僅是將ASM的表空間轉儲到普通的檔案系統,那麼執行完以上的步驟後工作就算完成,但是如果你是將ASM的表空間轉儲到其他ASM上那麼還要繼續一下的工作。
8、通過RMAN拷貝以上的資料檔案到ASM內:
rman nocatalog target /
RMAN> backup as copy datafile '/tmp/....dbf' format '+DGROUPA';
+DGGROUPA是ASM的名字
9、切換到新拷貝的資料檔案
如果10g的資料庫是open狀態的,那麼你首先要將資料檔案offline:
SQL> alter database datafile '/tmp/....dbf' offline;
進行切換:
rman nocatalog target /
RMAN> switch datafile '/tmp/....dbf' to copy;
以下的是列出了拷貝後生成的新的檔案:
# ex. '+DGROUPA/s101/datafile/tts.270.5'
10、設定資料檔案為online模式,但是首先需要對其進行恢復:
SQL> recover datafile '+DGROUPA/s101/datafile/tts.270.5';
SQL> alter database datafile '+DGROUPA/s101/datafile/tts.270.5' online;
11、檢視是否新拷貝的資料檔案已經在資料檔案列表:
SQL> select name, status from v$datafile;
+DGROUPA/s101/datafile/tts.270.5 ONLINE
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10130206/viewspace-1040714/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 應用RMAN Transportable Database進行資料庫跨平臺遷移Database資料庫
- 使用RMAN完成跨平臺資料遷移
- 利用RMAN跨平臺遷移資料庫資料庫
- rman進行跨平臺資料遷移
- 通過RMAN遷移資料並升級資料庫10.2.0.3->11.2.0.3【相同位數與平臺版】資料庫
- 通過RMAN異機遷移資料庫並修改儲存路徑【相同位數與平臺版】資料庫
- 利用oracle10g_rman_convert_transportable tablespace遷移表空間Oracle
- RMAN跨平臺傳輸資料庫和表空間資料庫
- 【資料遷移】XTTS跨平臺傳輸表空間v3(2.RMAN增量)TTS
- RMAN跨平臺可傳輸表空間和資料庫資料庫
- RMAN同位元組序跨平臺跨版本遷移資料庫資料庫
- 利用RMAN Convert database特性進行跨平臺遷移資料Database
- 用傳輸表空間跨平臺遷移資料
- rman將linux平臺資料庫遷移到window平臺資料庫Linux資料庫
- RMAN同位元組序跨平臺跨版本遷移資料庫(一)資料庫
- RMAN同位元組序跨平臺跨版本遷移資料庫(二)資料庫
- 利用可傳輸表空間跨平臺遷移 -RMAN CONVERT
- RMAN中CONVERT跨平臺傳輸資料庫時整庫轉換不通過的問題資料庫
- rman通過之前的incarnation恢復資料庫!資料庫
- 通過oracle10g exp/imp在不同表空間間遷移資料Oracle
- 安全信得過!天翼雲資料安全管理平臺通過評測
- 【RMAN】windows2008 Oracle通過rman增量遷移WindowsOracle
- 如何利用 RMAN 可傳輸表空間遷移資料庫到不同位元組序的平臺 (文件 ID 1983639.1)資料庫
- 從linux平臺移值資料庫到windows平臺Linux資料庫Windows
- 利用rman來實現linux平臺資料庫複製到windows平臺資料庫Linux資料庫Windows
- Oracle 不同平臺間表空間遷移Oracle
- 【資料遷移】XTTS跨平臺傳輸表空間v4TTS
- 透過rman全庫備份遷移資料庫資料庫
- 資料遷移(1)——通過資料泵表結構批量遷移
- 先進級!阿里雲大資料+AI平臺通過信通院資料平臺整體解決方案最高等級評測阿里大資料AI
- 【MOS】如何利用RMAN可傳輸表空間遷移資料庫到不同位元組序的平臺(文件 ID 1983639.1)資料庫
- 【RMAN】oracle11g單機資料通過RMAN恢復至RACOracle
- 跨平臺遷移oracle資料庫指南Oracle資料庫
- hp-ux利用rman將資料庫跨平臺遷移到aix平臺上UX資料庫AI
- 【遷移】使用rman遷移資料庫資料庫
- 海量資料遷移之通過shell估算資料量
- windows平臺下Oracle10.2 RMAN資料庫遷移至Linux平臺下WindowsOracle資料庫Linux
- 用rman遷移資料庫資料庫