使用Oracle可傳輸表空間的特性複製資料(3)跨平臺的傳輸實踐
終於要進入實踐了,我們假設現有資料庫a:SID=jssweb做為源資料庫,資料庫b:SID=jsstts做為目標資料庫。從資料庫a複製表空間jssweb到資料庫b。下面是具體操作步驟:
一、確認平臺是否支援(Determine if Platforms are Supported and Endianness)
檢查平臺版本以及Endian,確認是否支援我們的傳輸條件。如果是不同平臺間的傳輸,本步操作必不可少。
例如:
E:\ORA10G>set oracle_sid=jssweb
首先連線到源資料庫。
E:\ORA10G>sqlplus "/ as sysdba"
SQL> col name heading '例項名' for a10
SQL> col version heading '資料庫版本' for a15
SQL> col platform_name heading '作業系統平臺' for a30
SQL> col endian_format heading '位元組順序' for a15
執行查詢,獲取平臺資訊
SQL> SELECT d.NAME, i.VERSION, d.PLATFORM_NAME, ENDIAN_FORMAT
2 FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d, V$INSTANCE i
3 WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME
4 and d.DB_UNIQUE_NAME = i.INSTANCE_NAME;
例項名 資料庫版本 作業系統平臺 位元組順序
---------- --------------- ------------------------------ ---------------
JSSWEB 10.2.0.1.0 Microsoft Windows IA (32-bit) Little
然後連線到目標資料庫,執行同樣的查詢。
[oracle@jsslinux ~]$ echo $ORACLE_SID
jsstts
[oracle@jsslinux ~]$ sqlplus "/ as sysdba"
SQL> col name heading '例項名' for a10
SQL> col version heading '資料庫版本' for a15
SQL> col platform_name heading '作業系統平臺' for a30
SQL> col endian_format heading '位元組順序' for a15
SQL> SELECT d.NAME, i.VERSION, d.PLATFORM_NAME, ENDIAN_FORMAT
2 FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d, V$INSTANCE i
3 WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME
4 and d.DB_UNIQUE_NAME = i.INSTANCE_NAME;
例項名 資料庫版本 作業系統平臺 位元組順序
---------- --------------- ------------------------------ ---------------
JSSTTS 10.2.0.1.0 Linux IA (32-bit) Little
SQL>
上述查詢可以得到資料庫版本、作業系統平臺以及ENDIAN。結合我們上節提供的傳輸版本對照表確認是否滿足我們的傳輸要求。呵呵,這裡我們運氣不錯,雖然是兩個不同的作業系統平臺,但由於都採用了oracle10g,並且位元組順序相同,不僅支援跨平臺傳輸而且還可以省掉位元組轉換的操作。
二、選擇自包含的表空間集(Pick a Self-Contained Set of Tablespaces)
待傳輸的表空間集中物件可能會存在與其它物件邏輯或物理上的關聯,但這裡我們要強調的就是可傳輸的表空間集必須是自包含的,前面我們提到使用DBMS_TTS包的TRANSPORT_SET_CHECK過程來驗證待傳輸表空間集是否自包含,TRANSPORT_SET_CHECK過程可以以兩種方式執行:非嚴格方式和嚴格方式。
提示,使用sys使用者執行DBMS_TTS包的過程,或者是被賦於EXECUTE_CATALOG_ROLE角色的使用者。
嚴格方式驗證就是在呼叫TRANSPORT_SET_CHECK過程時指定FULL_CHECK引數為TRUE。嚴格方式不只檢查表空間集引用的物件是否自包含,同時會檢查被其它表空間引用的物件,引用者是否在表空間集中。
文字太繞口,以本次演示中要傳輸的表空間為例。
表空間jssweb有表DEPT,其索引DEPT.IDX_DEPT_DEPTNO在users表空間。
SQL> exec dbms_tts.transport_set_check('jssweb', TRUE);
PL/SQL 過程已成功完成。
SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;
未選定行
如果表空間集滿足自包含檢查,則檢視返回空記錄。
執行嚴格方式的檢查:
SQL> exec dbms_tts.transport_set_check('jssweb', TRUE , TRUE);
PL/SQL 過程已成功完成。
SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;
VIOLATIONS
--------------------------------------------------------------------------------
Index JSS.IDX_DEPT_DEPTNO in tablespace USERS points to table JSS.DEPT in tables
pace JSSWEB
不滿足自包含驗證,SELECT語句返回違反的資訊,你可以根據其提示進行修正。
提示:如果要檢查的表空間有多個,相互之間以逗號分隔即可。
三、生成可傳輸表空間集(Generate a Transportable Tablespace Set)
執行export操作的使用者需要被賦於EXP_FULL_DATABASE 角色。
再次提示,生成可傳輸表空間集之前,必須將要傳輸的表空間置為read-only,不然你就得選擇通過RMAN備份生成表空間集了。
確認所選擇的表空間都是自包含之後,按照下列步驟進行操作。
1、將表空間置為READ-ONLY;
SQL> ALTER TABLESPACE JSSWEB READ ONLY;
表空間已更改。
2、使用Data Dump匯出表空間集後設資料
SQL> host
進入作業系統命令列
E:\ORA10G>expdp system/verysafe DUMPFILE=expdp_jssweb.dmp DIRECTORY=DATA
_PUMP_DIR TRANSPORT_TABLESPACES=jssweb
.....................................
.....................................
啟動 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01": system/******** DUMPFILE=expdp_jssweb.dmp DIRECTORY=DA
TA_PUMP_DIR TRANSPORT_TABLESPACES=jssweb
處理物件型別 TRANSPORTABLE_EXPORT/PLUGTS_BLK
處理物件型別 TRANSPORTABLE_EXPORT/TABLE
處理物件型別 TRANSPORTABLE_EXPORT/INDEX
處理物件型別 TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT
處理物件型別 TRANSPORTABLE_EXPORT/COMMENT
處理物件型別 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
已成功載入/解除安裝了主表 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01"
******************************************************************************
SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 的轉儲檔案集為:
E:\ORA10G\PRODUCT\10.2.0\ADMIN\JSSWEB\DPDUMP\EXPDP_JSSWEB.DMP
作業 "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" 已於 10:54:43 成功完成
這裡簡單介紹一下本例中呼叫的引數:
l DUMPFILE:表示匯出檔案的檔名
l DIRECTORY:這個DIRECTORY所指可並不是實際的物理目錄喲,它是物理路徑在oracle中的一個別名,這樣一旦你需要呼叫路徑就非常方便,不需要寫繁長的路徑,修改路徑的時候也同樣很方便,只需要修改directory別名這一處即可。在10g中預設建立了一個名為DATA_PUMP_DIR,其路徑指向到:$ORACLE_BASE\10.2.0\admin\SID NAME\dpdump,此處我們直接引用。
l TRANSPORT_TABLESPACES:對於TTS操作這是個必須指定的引數,指定要傳輸的表空間。
l TRANSPORT_FULL_CHECK:如果你希望執行嚴格自包含匯出的話,可以指定本引數值為Y。
EXPDP的引數還有很多,要檢視其全部引數,可以通過呼叫expdp help=y的方式獲得,如果想明確各引數的詳細解釋,可以參考Oracle® Database Utilities。
提示:EXPDP只是匯出的待傳輸表空間的目錄結構資訊(後設資料),並不包含實際資料,因此匯出的速度非常快,而且檔案也很小,所以千萬表看到它很小,就以為匯出的檔案有問題。
3、如果兩平臺間的位元組順序不一致的話,中間需要有個轉換過程,前章操作步驟裡也曾深入分析過,我們此次演示中不存在位元組順序不一致的問題,所以此步跳過,留待後續展現。
四、傳輸表空間集到目標庫(Transport the Tablespace Set)
複製表空間對應的資料檔案以及表空間後設資料匯出檔案到目標庫,這個技術含量是黑低的嘛,ftp(使用二進位制方式傳輸)、網路共享或拿個u盤等等都可行,條條大路通目標嘛。但是複製的時候需要注意路徑,複製目的地應該以目標庫為準,
比如DIRECTORY的指向路徑,如果你仍然想使用DATA_PUMP_DIR的話就得先確認目標庫是否存在這個物件,以及這個物件在目標庫中對應的物理路徑是什麼,表空間的後設資料匯出檔案應該複製到這個路徑下:
SQL> select * from dba_directories where directory_name='DATA_PUMP_DIR';
OWNER DIRECTORY_NAME DIRECTORY_PATH
---------- --------------- ----------------------------------------
SYS DATA_PUMP_DIR /opt/ora10g/admin/jsstts/dpdump/
資料檔案複製完之後,千萬表忘將源庫中的表空間狀態置為read-write,切記切記。
SQL> alter tablespace JSSWEB read write;
表空間已更改。
SQL> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME STATUS
------------------------------ ---------
SYSTEM ONLINE
UNDOTBS1 ONLINE
SYSAUX ONLINE
TEMP ONLINE
USERS ONLINE
JSSWEB ONLINE
已選擇6行。
五、匯入表空間集(Import the Tablespace Set)
注意,如果傳輸的表空間集block_size與目標庫的預設block_size不同,那你的第一步就得是設定目標庫中DB_nK_CACHE_SIZE的初始化引數。
1、匯入後設資料
[oracle@jsslinux ~]$ impdp system/verysafe DUMPFILE=EXPDP_JSSWEB.DMP DIRECTORY=DATA_PUMP_DIR TRANSPORT_DATAFILES=/opt/ora10g/oradata/jsstts/jssweb.dbf REMAP_SCHEMA=(jss:jssl)
Import: Release 10.2.0.1.0 - Production on 星期一, 05 11月, 2007 14:02:33
Copyright (c) 2003, 2005, Oracle. All rights reserved.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-136003/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用Oracle可傳輸表空間的特性複製資料(7)實戰RMAN備份傳輸表空間Oracle
- 使用Oracle可傳輸表空間的特性複製資料(5)實戰CONVERTOracle
- 使用Oracle可傳輸表空間的特性複製資料(1)基礎概念Oracle
- 使用Oracle可傳輸表空間的特性複製資料(2)操作步驟Oracle
- 用可傳輸表空間實現Oracle跨平臺移植Oracle
- 跨平臺表空間傳輸的實現
- RMAN跨平臺可傳輸表空間和資料庫資料庫
- 用傳輸表空間跨平臺遷移資料
- RMAN跨平臺傳輸資料庫和表空間資料庫
- 跨平臺表空間遷移(傳輸表空間)
- 10g新特性之-跨平臺表空間傳輸
- oracle跨版本與平臺執行傳輸表空間Oracle
- 12c跨平臺傳輸表空間
- 10g跨平臺傳輸表空間
- 利用可傳輸表空間跨平臺遷移 -RMAN CONVERT
- 使用RMAN實現可傳輸的表空間
- [zt]跨平臺表空間傳輸 (DB遷移)
- Ora10G跨平臺傳輸表空間
- RMAN跨平臺傳輸表空間(different Endian)
- RMAN跨平臺傳輸表空間(same endian)
- 【資料遷移】XTTS跨平臺傳輸表空間(1.傳統方式)TTS
- 10G新特性筆記之跨平臺傳輸表空間筆記
- 【傳輸表空間】使用 EXPDP/IMPDP工具的傳輸表空間完成資料遷移
- 【資料遷移】XTTS跨平臺傳輸表空間v4TTS
- 【資料遷移】XTTS跨平臺傳輸表空間v3(3.DFT方式)TTS
- Oracle資料庫同平臺與異構平臺下的表空間傳輸Oracle資料庫
- Oracle可傳輸表空間測試Oracle
- 【傳輸表空間】使用 EXPDP/IMPDP工具的傳輸表空間完成資料遷移[轉]
- 同位元組序跨平臺表空間傳輸的測試
- Oracle 表空間傳輸Oracle
- oracle表空間傳輸Oracle
- Oracle傳輸表空間Oracle
- 【資料遷移】XTTS跨平臺傳輸表空間v3(2.RMAN增量)TTS
- 5.7 mysql的可傳輸表空間MySql
- oracle可傳輸表空間TTS小結OracleTTS
- RMAN跨小版本跨平臺與位元組序傳輸表空間
- 關於oracle可傳輸表空間的總結Oracle
- Oracle 10g的可傳輸表空間操作Oracle 10g