可傳輸資料表空間現在可以跨平台移植,從而使得資料發布更快更容易。此外,外部表格下載使得通過轉換進行資料轉移的任務更簡單更快。
您如何將資料從一個資料庫轉移到另一個資料庫?在現有的幾種方法中,有一種方法尤為出色:可傳輸資料表空間。在這種方法中,您使用一組自包含、唯讀資料表空間,只匯出中繼資料,在作業系統層將這些資料表空間的資料檔案拷貝至目標平台,並將中繼資料匯入資料字典 — 這個過程稱為插入。
作業系統檔案拷貝一般比其它傳統的資料轉移方法(如匯出/匯入或 SQL*Loader)要快得多。然而,在 Oracle9
i 資料庫和更低版本中,可傳輸資料表空間僅限於在目標資料庫和來源資料庫都運行在同一作業系統平台上的少數情況下才有用 — 例如,您不能在 Solaris 和 HP-UX 平台之間傳輸資料表空間。
在 Oracle 資料庫 10
g 中,這個局限消失了:只要作業系統位元組順序相同,您就可以在平台之間傳輸資料表空間。本文將不就位元組順序展開長篇的討論,但這裡只要提幾句話就足夠了:一些作業系統(包括 Windows)在低位記憶體位址中用最低有效位元組儲存多位元組位元據;因此這種系統被稱為
低地址低位元組序。相反,其它的作業系統(包括 Solaris)將最高有效位元組儲存在低位記憶體位址中,因此這種系統被稱為
低地址高位元組序。當一個低地址高位元組序的系統試圖從一個低地址低位元組序的系統中讀取資料時,需要一個轉換過程 — 否則,位元組順序將導致不能正確解釋讀取的資料.不過,當在相同位元組順序的平台之間傳輸資料表空間時,不需要任何轉換。
您怎麼知道哪一種作業系統採用哪一種位元組順序?不需猜測或搜尋互連網,相反只需簡單地執行以下查詢:
SQL> select * from v$transportable_platform order by platform_id;PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT----------- ----------------------------------- --------------1 Solaris[tm] OE (32-bit) Big2 Solaris[tm] OE (64-bit) Big3 HP-UX (64-bit) Big4 HP-UX IA (64-bit) Big5 HP Tru64 UNIX Little6 AIX-Based Systems (64-bit) Big7 Microsoft Windows IA (32-bit) Little8 Microsoft Windows IA (64-bit) Little9 IBM zSeries Based Linux Big10 Linux IA (32-bit) Little11 Linux IA (64-bit) Little12 Microsoft Windows 64-bit for AMD Little13 Linux 64-bit for AMD Little15 HP Open VMS Little16 Apple Mac OS Big
假設您想從一台在 Intel 體繫結構上運行 Linux 作業系統的主機 SRC1 中將一個資料表空間 USERS 傳輸到運行 Microsoft Windows 作業系統的電腦 TGT1 上。源平台和目標平台都是低地址低位元組序的。資料表空間 USERS 的資料檔案是 users_01.dbf。您將按照類似以下的方法來進行操作。
- 使資料表空間為唯讀:
alter tablespace users read only;
- 匯出資料表空間。在作業系統提示符下執行:
exp tablespaces=users transport_tablespace=y file=exp_ts_users.dmp
exp_ts_users.dmp 檔案只包含中繼資料(不是資料表空間 USERS 的內容)因此它將非常小。
- 將檔案 exp_ts_users.dmp 和 users_01.dbf 拷貝至主機 TGT1。如果您使用 FTP,那麼您將需要指定二進位選項。
- 將資料表空間插入到資料庫中。在作業系統命令提示字元下執行下面的語句:
imp tablespaces=users transport_tablespace=y file=exp_ts_users.dmp datafiles='users_01.dbf'
在第 4 步之後,目標資料庫將有一個名稱為 USERS 的資料表空間,並將提供該資料表空間的內容。
請記住,系統 SRC1 和 TGT1 分別是 Linux 和 Windows。到 Oracle9
i 為止,運行在 TGT1 上的資料庫不能識別第 4 步中的資料檔案 users_01.dbf,從而使得整個過程無用。您將必須求助其它一些方法(如常規的匯出和匯入、建立純文字檔案並通過 SQL*Loader 載入,或直接在不同的資料庫間串連載入插入)。
在 10
g 中,不再需要這些替代方法,因為目標資料庫能夠識別來自另一個平台的資料檔案。在我們的樣本中,源主機和目標主機啟動並執行作業系統的位元組順序是相同的(低地址低位元組序),因此不需要任何轉換。
這個功能在資料倉儲中特別有用,其中更小的物件導向的資料集市常常在重新整理之後從倉庫中進行填充。利用 10
g,這些資料集市現在能夠放在更小、更廉價的電腦(如運行 Linux 的 Intel boxes)中,而將資料倉儲伺服器放在更大的企業級電腦中。從本質上講,利用可傳輸資料表空間,您現在可以更好地利用各種硬體和作業系統的組合。