用可傳輸表空間實現Oracle跨平臺移植
如何將資料從一個資料庫轉移到另一個資料庫?在現有的幾種方法中,有一種方法尤為出色:可傳輸表空間。在這種方法中,使用一組自包含、只讀的表空間,只匯出後設資料,在作業系統層將這些表空間的資料檔案複製至目標平臺,並將後設資料匯入資料字典 — 這個過程稱為插入。
作業系統檔案複製一般比其它傳統的資料轉移方法(如匯出/匯入或 SQL*Loader)要快得多。然而,在 9i 資料庫和更低版本中,可傳輸表空間僅限於在目標資料庫和源資料庫都執行在同一作業系統平臺上的少數情況下才有用 — 例如,不能在 Solaris 和 HP-UX 平臺之間傳輸表空間。 as03q95jfas technetchina.com
在 資料庫 10g 中,這個侷限消失了:只要作業系統位元組順序相同,就可以在平臺之間傳輸表空間。本文將不就位元組順序展開長篇的討論,但這裡只要提幾句話就足夠了:一些作業系統(包括 Windows)在低位記憶體地址中用最低有效位元組儲存多位元組二進位制資料;因此這種系統被稱為低地址低位元組序。相反,其它的作業系統(包括 Solaris)將最高有效位元組儲存在低位記憶體地址中,因此這種系統被稱為低地址高位元組序。當一個低地址高位元組序的系統試圖從一個低地址低位元組序的系統中讀取資料時,需要一個轉換過程 — 否則,位元組順序將導致不能正確解釋讀取的資料。(有關位元組順序的詳細說明,請閱讀嵌入式系統程式設計的 2002 年 1 月刊中的一篇極好的文章“位元組順序介紹”。)不過,當在相同位元組順序的平臺之間傳輸表空間時,不需要任何轉換。 akvjd;lasij technetchina.com
怎麼知道哪一種作業系統採用哪一種位元組順序?不需猜測或搜尋網際網路,相反只需簡單地執行以下查詢:
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 as03q95jfas technetchina.com |
假設想從一臺在 Intel 體系結構上執行 Linux 作業系統的主機 SRC1 中將一個表空間 USERS 傳輸到執行 Microsoft Windows 作業系統的計算機 TGT1 上。源平臺和目標平臺都是低地址低位元組序的。表空間 USERS 的資料檔案是 users_01.dbf。將按照類似以下的方法來進行操作。 /.amfjspofa technetchina.com
使表空間為只讀:
alter tablespace users read only; |
匯出表空間。在作業系統提示符下執行: x,mvzl;jdfa technetchina.com
exp tablespaces=users transport_tablespace=y file=exp_ts_users.dmp alksjfdosa8 technetchina.com |
exp_ts_users.dmp 檔案只包含後設資料(不是表空間 USERS 的內容)因此它將非常小。將檔案 exp_ts_users.dmp 和 users_01.dbf 複製至主機 TGT1。如果使用 FTP,那麼將需要指定二進位制選項。 vdknadsjfda technetchina.com
將表空間插入到資料庫中。在作業系統命令提示符下執行下面的語句: as03q95jfas technetchina.com
imp tablespaces=users transport_tablespace=y
file=exp_ts_users.dmp datafiles='users_01.dbf' akvjd;lasij technetchina.com |
在第 4 步之後,目標資料庫將有一個名稱為 USERS 的表空間,並將提供該表空間的內容。請記住,系統 SRC1 和 TGT1 分別是 Linux 和 Windows。到 9i 為止,執行在 TGT1 上的資料庫不能識別第 4 步中的資料檔案 users_01.dbf,從而使得整個過程無用。您將必須求助其它一些方法(如常規的匯出和匯入、建立純文字檔案並透過 SQL*Loader 載入,或直接在不同的資料庫間連線載入插入)。 在 10g 中,不再需要這些替代方法,因為目標資料庫能夠識別來自另一個平臺的資料檔案。在我們的示例中,源主機和目標主機執行的作業系統的位元組順序是相同的(低地址低位元組序),因此不需要任何轉換。 akvjd;lasij technetchina.com
這個功能在資料倉儲中特別有用,其中更小的物件導向的資料集市常常在重新整理之後從倉庫中進行填充。利用 10g,這些資料集市現在能夠放在更小、更廉價的計算機(如執行 Linux 的 Intel boxes)中,而將資料倉儲伺服器放在更大的企業級計算機中。從本質上講,利用可傳輸表空間,現在可以更好地利用各種硬體和作業系統的組合。
lqjereodsad technetchina.com
跨不同位元組順序的平臺 akvjd;lasij technetchina.com
如果平臺是不同位元組順序的,那麼將如何實現可傳輸性?正如我之前說明的,目標計算機的位元組順序如果與源計算機的位元組順序不同,那麼將不能正確地讀取資料檔案,因而不可能簡單地複製資料檔案。但別灰心,在 10g RMAN 實用程式中提供了幫助,它支援將資料檔案從一種位元組順序向另一種位元組順序轉換。
在上面的例子中,如果主機 SRC1 執行在 Linux 上(低地址低位元組序),而目標主機 TGT1 執行在 HP-UX 上(低地址高位元組序),那麼需要在第 3 步和第 4 步之間引入另一個步驟,以進行轉換。利用 RMAN,您將在源計算機 SRC1 上把資料檔案從 Linux 轉換成 HP-UX 格式(假定已經使表空間變為只讀):
vdknadsjfda technetchina.com
/.amfjspofa technetchina.com
RMAN> convert tablespace users 2> to platform 'HP-UX (64-bit)' 3> format='/home/oracle/rman_bkups/%N_%f'; Starting backup at 14-MAR-04 using channel ORA_DISK_1 channel ORA_DISK_1:starting datafile conversion input datafile fno=00004 name=/usr/oradata/dw/starz10/users01.dbf converted datafile=/home/oracle/rman_bkups/USERS_4 channel ORA_DISK_1:datafile conversion complete, elapsed time: 00:00:07 Finished backup at 14-MAR-04 |
這個步驟在目錄 /home/oracle/rman_bkups 中建立了一個標準 RMAN 檔案格式 _ 的檔案。注意我們沒有觸及表空間 USERS 的資料檔案;而是為 HP-UX 建立了一個新檔案。現在可以將這個檔案複製至目標系統,剩下的步驟很簡單。
4vcm;lafdfs technetchina.com
這個 RMAN 轉換命令非常強大。按照上面給定的形式,它可以按順序建立資料檔案。對於包含多個資料檔案的表空間,可以命令同時轉換並執行多個資料檔案。要實現這一目的,將需要在上述命令中新增一個子句: 4vcm;lafdfs technetchina.com
4vcm;lafdfs technetchina.com
parallelism = 4 |
該子句建立四個 RMAN 通道,每一個通道處理一個資料檔案。不過,一種更有用的方法是用一個步驟轉換大量的表空間,在這種情況下並行轉換將真正帶來很大的幫助。下面我們將兩個表空間 USERS 和 MAINTS 轉換至 HP-UX:
akvjd;lasij technetchina.com
3oi43fdoisj technetchina.com
RMAN> convert tablespace users, maints 2> to platform 'HP-UX (64-bit)' 3> format='/home/oracle/rman_bkups/%N_%f' 4> parallelism = 5; Starting backup at 14-MAR-04 using target database controlfile instead of recovery catalog allocated channel:ORA_DISK_1 channel ORA_DISK_1:sid=244 devtype=DISK allocated channel:ORA_DISK_2 channel ORA_DISK_2:sid=243 devtype=DISK allocated channel:ORA_DISK_3 channel ORA_DISK_3:sid=245 devtype=DISK allocated channel:ORA_DISK_4 channel ORA_DISK_4:sid=272 devtype=DISK allocated channel:ORA_DISK_5 channel ORA_DISK_5:sid=253 devtype=DISK channel ORA_DISK_1:starting datafile conversion input datafile fno=00004 name=/usr/oradata/dw10/dw10/users01.dbf channel ORA_DISK_2:starting datafile conversion input datafile fno=00005 name=/usr/oradata/dw10/dw10/users02.dbf channel ORA_DISK_3:starting datafile conversion input datafile fno=00006 name=/usr/oradata/dw10/dw10/maints01.dbf channel ORA_DISK_4:starting datafile conversion input datafile fno=00007 name=/usr/oradata/dw10/dw10/maints02.dbf converted datafile=/home/oracle/rman_bkups/USERS_4 channel ORA_DISK_1:datafile conversion complete, elapsed time: 00:00:03 converted datafile=/home/oracle/rman_bkups/USERS_5 channel ORA_DISK_2:datafile conversion complete, elapsed time: 00:00:00 converted datafile=/home/oracle/rman_bkups/MAINTS_6 channel ORA_DISK_3:datafile conversion complete, elapsed time: 00:00:01 converted datafile=/home/oracle/rman_bkups/MAINTS_7 channel ORA_DISK_4:datafile conversion complete, elapsed time: 00:00:01 Finished backup at 14-MAR-04 4vcm;lafdfs technetchina.com |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-84662/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 跨平臺表空間傳輸的實現
- 跨平臺表空間遷移(傳輸表空間)
- RMAN跨平臺可傳輸表空間和資料庫資料庫
- oracle跨版本與平臺執行傳輸表空間Oracle
- 使用Oracle可傳輸表空間的特性複製資料(3)跨平臺的傳輸實踐Oracle
- 用傳輸表空間跨平臺遷移資料
- 12c跨平臺傳輸表空間
- 10g跨平臺傳輸表空間
- 利用可傳輸表空間跨平臺遷移 -RMAN CONVERT
- [zt]跨平臺表空間傳輸 (DB遷移)
- Ora10G跨平臺傳輸表空間
- RMAN跨平臺傳輸表空間(different Endian)
- RMAN跨平臺傳輸表空間(same endian)
- RMAN跨平臺傳輸資料庫和表空間資料庫
- RMAN跨小版本跨平臺與位元組序傳輸表空間
- 10g新特性之-跨平臺表空間傳輸
- 使用RMAN實現可傳輸的表空間
- Oracle可傳輸表空間測試Oracle
- 同位元組序跨平臺表空間傳輸的測試
- oracle可傳輸表空間TTS小結OracleTTS
- 【資料遷移】XTTS跨平臺傳輸表空間v4TTS
- 10G新特性筆記之跨平臺傳輸表空間筆記
- 【資料遷移】XTTS跨平臺傳輸表空間(1.傳統方式)TTS
- Oracle 表空間傳輸Oracle
- oracle表空間傳輸Oracle
- Oracle傳輸表空間Oracle
- readwrite狀態下實現可傳輸表空間
- 利用CONVERT實現跨平臺表空間遷移
- 聊聊Oracle可傳輸表空間(Transportable Tablespace)(上)Oracle
- 聊聊Oracle可傳輸表空間(Transportable Tablespace)(中)Oracle
- 聊聊Oracle可傳輸表空間(Transportable Tablespace)(下)Oracle
- 使用Oracle可傳輸表空間的特性複製資料(7)實戰RMAN備份傳輸表空間Oracle
- Oracle 12C使用備份集執行只讀表空間的跨平臺傳輸Oracle
- 傳輸表空間操作-OracleOracle
- Oracle傳輸表空間(TTS)OracleTTS
- Oracle 傳輸表空間-RmanOracle
- Oracle資料庫同平臺與異構平臺下的表空間傳輸Oracle資料庫
- 關於oracle可傳輸表空間的總結Oracle