異構OS平臺的不同點 - 位元組順序

tolywang發表於2012-07-20

不同平臺的檔案格式通常是不同的,不同平臺的檔案的差異主要在於
1, 檔案頭標誌
2, 位元組的高低位順序可能不一樣
在10g中,主要就是透過 RMAN 修改這兩個東西來實現跨平臺的遷移的

位元組順序和平臺
   資料檔案所以不能跨平臺,主要是由於不同平臺的位元組順序不同,這是計算機領域由來已久的問題之一,在各種計算機體系結構中,由於對於字、位元組等的儲存機制有所不同,通訊雙方交流的資訊單元(位元、位元組、字、雙字等)應該以什麼樣的順序進行傳送就成了一個問題,如果不達成一致的規則,通訊雙方將無法進行正確的編/譯碼從而導致通訊失敗。

 目前在各種體系的計算機中通常採用的位元組儲存機制主要有兩種:Big-Endian和Little-Endian 。

 一些作業系統(包括Windows)在低位記憶體地址中存放二進位制資料的最低有效位元組,因此這種系統被稱為Little Endian;一些作業系統(包括Solaris)將最高有效位元組儲存在低位記憶體地址中,因此這種系統被稱為Big Endian。

  舉一個簡單點的例子,假如1122這樣一個資料要存入不同系統,對於Little Endian的系統,儲存的順序就是2211,小頭在前;而對於Big Endian的系統來說,儲存順序就是1122,大頭在前,顯然Big Endian更符合我們通常的語言習慣。

    那麼跨平臺的問題就出現了,當一個Little Endian的系統試圖從一個Big Endian的系統中讀取資料時,就需要透過轉換,否則不同的位元組順序將導致資料不能被正確讀取。

資料庫所處平臺的位元組序可透過如下查詢得到 :
select * from v$transportable_platform

PLATFORM_ID PLATFORM_NAME                          ENDIAN_FORMAT
 ----------- -------------------------------------- --------------
           1 Solaris[tm] OE (32-bit)                Big
           7 Microsoft Windows IA (32-bit)          Little
          10 Linux IA (32-bit)                      Little
           6 AIX-Based Systems (64-bit)             Big
           4 HP-UX IA (64-bit)                      Big

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-767226/,如需轉載,請註明出處,否則將追究法律責任。

相關文章