資料庫和表空間資料移動
跨平臺可傳輸表空間
在資料倉儲之間簡單的資料分佈
允許資料庫從一個平臺到另一個平臺的遷移
最小相容水平
源資料庫和目標資料庫必須相容到10.0.0或者更高
資料檔案頭是platform-aware
在Oracle中有不同的endian的區別,不同的平臺有不同的endian,究竟什麼是endian,在網上找到關於Big-endian和Little-endian的區別,其實Big-endian和Little-endian就是位元組排序。
Big-Endian 和 Little-Endian 位元組排序
必須注意的是:表中一個Word的長度是16位,一個Byte的長度是8位。如果一個數超過一個Word的長度,必須先按Word分成若干部分,然後每一部分(即每個Word內部)按Big-Endian或者Little-Endian的不同操作來處理位元組。一個例子:如果我們將0x1234abcd寫入到以0x0000開始的記憶體中,則結果為 |
疑問:為什麼要以一個Word為基礎單位來分割而不是一個DoubleWord或者Byte?究竟就是這麼定義的還是跟具體的CPU有關,跟具體的模式(比如說16位模式、32位模式、64位模式的LE和BE定義會不同)有關?我實在是不清楚,望知道的大俠不吝指點,也希望有這方面資料(文章、程式碼)的朋友貼一些上來。 網友“問題男”回覆: 目前的儲存器,多以byte為訪問的最小單元,於是endian的問題應運而生了,當一個邏輯上的整理必須分割為物理上的若干單元時就存在了先放誰後放誰的問題 存在“如果說"跟word或者說字長根本就沒關係",假設有一資料檔案裡面有N多數順序排布,如果想以Little-Endian format讀入記憶體某區域,那麼應該怎麼讀?怎麼排?”這樣的問題是由於對於endian的實質理解的偏差,endian指的是當物理上的最小單元比邏輯上的最小單元小時,邏輯到物理的單元排布關係。這裡的“有一資料檔案裡面有N多數順序排布”,這個“有一資料”顯然不是邏輯上的最小單元,而其中的“N多數”的一個才是邏輯最小單元,於是可應用樓主表格中的原則排列,而“N多數”之間的順序則是由這“N多數”的宿主決定的,比如是你寫的程式,這個順序由你決定 剛才談到了,endian指的是當物理上的最小單元比邏輯上的最小單元小時,邏輯到物理的單元排布關係。我們們接觸到的物理單元最小都是byte,在通訊領域中,這裡往往是bit,不過原理也是類似的。 實踐可以給你更多的經驗,比如在一個嵌入式系統的通訊協議中,從底層射頻驅動到上層的協議棧全部需要實現,那麼很可能遇到多個endian的問題,底層的bit序、協議層的byte序、應用層的byte序,這些都是不同的概念 網友“rovershen ”回覆: 沒記錯的話,除了moto的68K系列和dec的sparc是big endian外,常見的cpu都是little endian。ARM同時支援big和little,實際應用中通常使用little endian。我所說的指標轉換,實際上指編譯器的隱式處理。 假設有個32位的整數,地址是0x10000000,現在要將它作為16位整數處理,忽略高位,如果是little endian,則直接從0x10000000取得,而如果是big endian,則要從0x10000002取得。 網友“穿越無邊”回覆: 這兩個術語來自於 Jonathan Swift 的《《格利佛遊記》其中交戰的兩個派別無法就應該從哪一端--小端還是大端--開啟一個半熟的雞蛋達成一致。:) 在那個時代,Swift是在諷刺英國和法國之間的持續衝突,Danny Cohen,一位網路協議的早期開創者,第一次使用這兩個術語來指代位元組順序,後來這個術語被廣泛接納了 摘自《深入理解計算機系統》 很好的一本書:) |
“endian”這個詞出自《格列佛遊記》。小人國的內戰就源於吃雞蛋時是究竟從大頭(Big-Endian)敲開還是從小頭(Little-Endian)敲開,由此曾發生過六次叛亂,其中一個皇帝送了命,另一個丟了王位。 我們一般將endian翻譯成“位元組序”,將big endian和little endian稱作“大尾”和“小尾”。 |
可以透過查詢檢視v$transportable_platform來確定當前資料庫的endian。例如在Windows平臺上可以看到他的時litter。
SQL> SELECT tp.endian_format 2 FROM v$transportable_platform tp, 3 v$database d 4 WHERE tp.platform_name = d.platform_name 5 SQL> / ENDIAN_FORMAT -------------- Little |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/222350/viewspace-907890/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在資料庫之間移動表空間資料庫
- 資料庫物件遷移表空間資料庫物件
- 怎樣移動Oracle資料庫的表空間Oracle資料庫
- 資料檔案,表空間的移動
- PostgreSQL:表空間-->資料庫-->表SQL資料庫
- 【資料遷移】使用傳輸表空間遷移資料
- 表空間online移動資料檔案
- 檢視資料庫表空間資料庫
- oracle清除資料庫表空間Oracle資料庫
- 刪除資料庫表空間資料庫
- 將ORACLE資料庫審計相關的表移動到其他表空間Oracle資料庫
- 達夢(DM)資料庫的表空間建立和遷移維護資料庫
- PostgreSQL在不同的表空間移動資料檔案SQL
- 達夢資料庫系統表空間資料檔案遷移過程資料庫
- 線上遷移表空間資料檔案
- Oracle 表空間資料檔案遷移Oracle
- 改變資料庫undo表空間資料庫
- 移動資料檔案、系統表空間檔案、臨時表空間檔案
- ORACLE資料庫中刪除表資料後,資料庫表空間已使用不會自動減少Oracle資料庫
- 檢視Oracle資料庫表空間大小,是否需要增加表空間的資料檔案Oracle資料庫
- 表空間和資料檔案管理
- InnoDB資料表空間檔案平滑遷移
- Oracle資料庫表空間的資料檔案大小上限。Oracle資料庫
- RMAN跨平臺傳輸資料庫和表空間資料庫
- 建立表空間、使用者、擴容、移動資料檔案
- 使用exp/imp來移動表空間到另一個資料庫中的例子資料庫
- 表空間中有資料也可以壓縮表空間(資料檔案)大小
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- (個人)Oracle 表空間資料檔案遷移(轉)Oracle
- 海量資料遷移之傳輸表空間(一)
- [轉帖]達夢資料庫-統計資料表資料量及空間表大小資料庫
- 表空間和資料檔案的管理
- RMAN跨平臺可傳輸表空間和資料庫資料庫
- 如何檢視Oracle資料庫表空間大小(空閒、已使用),是否要增加表空間的資料檔案...Oracle資料庫
- DB2建立資料庫,建立表空間DB2資料庫
- mysql 資料庫或者表空間使用查詢MySql資料庫
- 資料庫表空間不夠,需要擴容資料庫
- 誤刪oracle資料庫表空間檔案Oracle資料庫