使用Oracle可傳輸表空間的特性複製資料(1)基礎概念
一、關於可傳輸表空間(Transportable Tablespaces)
可傳輸表空間的特性主要用於進行庫對庫的表空間複製,要進行傳輸的表空間必須置於read-only模式。如果生產庫不允許表空間置為只讀模式,沒關係,方法還是有的,通過RMAN備份也可以建立可傳輸表空間集。要使用可傳輸表空間的特性,oracle至少是8i企業版或更高版本。如果是相同作業系統平臺相互匯入,則8i及以上版本均可支援,但如果是不同作業系統平臺,資料庫版本至少10g。被傳輸的表空間即可以是字典管理,也可以是本地管理。並且自oracle9i開始,被傳輸表空間的block size可以與目標資料庫的block size不同。
可傳輸表空間(還有個集)最大的優勢是其速度比export/import或unload/load要快的多。因為可傳輸表空間主要是複製資料檔案到目標路徑,然後再使用export/import或Data Pump export/import等應用僅匯出/匯入表空間物件的後設資料到新資料庫。
提示:本節中將完全採用Data Pump(資料泵)做為匯入匯出的工具。(什麼是Data Pump,說來話短,Data Pump。。。。。其命令形式是impdp/expdp分別對應匯入/匯出功能,是自oracle10g開始提供的一種新的應用。功能和命令形式都與imp/exp極其類似,但其相互之間的匯出檔案並不相容)不過,Data Pump和常規的imp/exp同樣都能夠被transportable tablespaces特性支援。但是如果被傳輸的表空間包含XMLTypes,就必須使用imp/exp。
通常有兩種方式傳輸表空間:
l 手工操作。按本節中的步驟操作,含SQL*Plus, RMAN, IMP/EXP或Data Pump等各種指令操作。
l 使用OEM中的傳送表空間嚮導。
要執行傳送表空間嚮導:
1、使用具有EXP_FULL_DATABASE角色的使用者登陸到OEM中;
2、點選維護(Maintenance)連結;
3、點選標題下方的"Transport Tablespaces"。
二、關於跨平臺傳輸表空間
從oracle10g開始,你終於可以實現跨平臺傳輸表空間了。無數的dba歡呼著,雀躍著。。。。
儘管仍非全部,但已經有很多平臺可以支援跨平臺的傳送。可以通過查詢V$TRANSPORTABLE_PLATFORM檢視來確認哪些平臺可以支援,該檢視同時也可以獲取各平臺的ENDIAN_FORMAT(位元組順序byte ordering)
SQL> SELECT * FROM V$TRANSPORTABLE_PLATFORM ORDER BY PLATFORM_ID;
PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
----------- ---------------------------------------- --------------
1 Solaris[tm] OE (32-bit) Big
2 Solaris[tm] OE (64-bit) Big
3 HP-UX (64-bit) Big
4 HP-UX IA (64-bit) Big
5 HP Tru64 UNIX Little
6 AIX-Based Systems (64-bit) Big
7 Microsoft Windows IA (32-bit) Little
8 Microsoft Windows IA (64-bit) Little
9 IBM zSeries Based Linux Big
10 Linux IA (32-bit) Little
11 Linux IA (64-bit) Little
12 Microsoft Windows 64-bit for AMD Little
13 Linux 64-bit for AMD Little
15 HP Open VMS Little
16 Apple Mac OS Big
17 Solaris Operating System (x86) Little
18 IBM Power Based Linux Big
已選擇17行。
提示:關於位元組順序(byte ordering)
一些作業系統(包括 Windows)在低位記憶體地址中用最低有效位元組儲存多位元組二進位制資料;因此這種系統被稱為低地址低位元組序。相反,其它的作業系統(包括 Solaris)將最高有效位元組儲存在低位記憶體地址中,因此這種系統被稱為低地址高位元組序。當一個低地址高位元組序的系統試圖從一個低地址低位元組序的系統中讀取資料時,需要一個轉換過程— 否則,位元組順序將導致不能正確解釋讀取的資料。不過,當在相同位元組順序的平臺之間傳輸表空間時,不需要任何轉換。
如果平臺間的endian不同,那麼在執行匯入操作之之前必須首先轉換源平臺的表空間到目標格式,如果平臺間endian format相同,則可以跳過轉換的步驟,即使是不同平臺。當然前提是各平臺的資料庫版本都不低於10g。
在表空間可被傳輸到不同平臺之前,資料檔案的檔案頭必須能夠識別其所屬的原平臺是什麼,對於oracle資料庫初始化引數中COMPATIBLE置為10.0.0或更高之後,你必須至少將表空間置為read-write一次,這點非常重要,你現在還不知道我在說什麼?沒關係,很快就會知道的。
1、當你計劃進行傳輸表空間之前,你有必要了解下列的一些資訊:
l 源庫和目標庫的字符集和國家字符集必須相同。
l 要傳輸的表空間不能與目標伺服器現有表空間名稱重複。
l 有關聯關係的物件(比如物化檢視)或包含物件(比如表分割槽)一般情況下不能被傳送,除非所有的關聯物件都在表空間集(tablespace set)中。
l 自oracle10gR2開始,可以傳輸含XMLTypes的表空間,不過必須使用imp/exp而不能選擇資料泵(impdp/expdp)。並確保imp/exp命令的CONSTRAINTS和TRIGGERS引數設定為Y。
下列指令碼可以列出資料庫中哪些表空間含XMLTypes:
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
2、傳輸表空間的特性並非萬能的,還有些其它方面的限制:
l 高階佇列(Advanced Queues):可傳輸表空間的特性並不支援8.0相容的高階佇列
l 系統表空間(SYSTEM Tablespace Objects):不能傳輸SYSTEM表空間或者SYS使用者擁有的物件。
l 對映型別(Opaque Types):由應用指定並且對映到資料庫(如RAW,BFILE等)的型別可以被傳輸,但是它們並不會被做為跨平臺轉換的一部分。其實際型別是什麼只有指定它的應用清楚,所以必須保證這個應用解決讀取各種endian問題後再考慮將其傳輸到新平臺。
l 浮點資料(Floating-Point Numbers):BINARY_FLOAT和BINARY_DOUBLE型別可以使用資料泵匯入匯出但不支援EXP。
3、相容性
從oracle10g開始,不論目標庫執行在相同或不同的平臺,表空間都可以傳輸到相同或更高版本的oracle庫。但是如果生成傳輸表空間集oracle版本比目標庫oracle版本高的話,資料庫就會提示錯誤。
下表列出了源表空間和目標表空間之間在不同傳輸情況下oracle最低相容版本。
傳輸條件 |
源表空間資料庫 |
目標表空間資料庫 |
資料庫在相同平臺 |
8i |
8i |
源庫與目標庫的block size不同 |
9i |
9i |
資料庫在不同平臺 |
10g |
10g |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-119547/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【XTTS】使用XTTS傳輸表空間將Oracle11.2.0.4資料遷移至Oracle19CTTSOracle
- 複製建立已有資料庫使用者、表空間、許可權的指令碼資料庫指令碼
- 【XTTS】Oracle傳輸表空間xtts增量方式TTSOracle
- MySQL 傳輸表空間MySql
- 【資料遷移】XTTS跨平臺傳輸表空間(1.傳統方式)TTS
- mysql之 表空間傳輸MySql
- 用傳輸表空間跨平臺遷移資料
- MySQL innodb表使用表空間物理檔案複製表MySql
- MySQL傳輸表空間的簡單使用方法MySql
- Oracle資料泵建立使用者避坑(表空間配額、許可權)Oracle
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- oracle建立使用者,表空間,臨時表空間,分配許可權步驟詳解Oracle
- Oracle資料庫遷移 - 異構傳輸表空間TTS HP-UX遷移至Redhat Linux 7.7Oracle資料庫TTSRedhatLinux
- 【資料遷移】XTTS跨平臺傳輸表空間v4TTS
- Oracle新建使用者、表空間、表Oracle
- Oracle 18c新特性詳解 - 表和表空間相關的新特性Oracle
- Oracle表空間Oracle
- oracle 表空間Oracle
- Oracle 刪除使用者、表空間、資料檔案、使用者下的所有表Oracle
- oracle表空間的整理Oracle
- oracle 普通表空間資料檔案壞塊Oracle
- Oracle 19C OGG基礎運維-06增加複製表Oracle運維
- Oracle案例11——Oracle表空間資料庫檔案收縮Oracle資料庫
- 增加oracle表空間Oracle
- oracle temp 表空間Oracle
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- oracle 建立表空間和使用者Oracle
- Oracle建立表空間和使用者Oracle
- Oracle中新建表空間、使用者Oracle
- oracle表空間使用率查詢Oracle
- Oracle 19C OGG基礎運維-07減少複製表Oracle運維
- 清理oracle資料庫空間Oracle資料庫
- oracle 表移動表空間Oracle
- Oracle表移動表空間Oracle
- 【MOS】如何利用RMAN可傳輸表空間遷移資料庫到不同位元組序的平臺(文件 ID 1983639.1)資料庫
- Oracle 批量建表空間Oracle
- Oracle清理SYSAUX表空間OracleUX
- PostgreSQL:表空間-->資料庫-->表SQL資料庫
- Oracle的表空間quota詳解Oracle