oracle10g下使用AIX5.3邏輯卷作為資料檔案注意點

yezhibin發表於2010-05-28
      在AIX平臺上建立LV時候,block size=4k,邏輯卷的第一個4K用於儲存邏輯卷的資訊,其餘儲存使用者資料,所以將資料庫資料檔案從檔案系統形式轉化成裸裝置的時候,需要跳過第一個4K,具體命令如下:

   # dd if =/path/FS.dbf  f=/dev/rlv_name bs=4k seek=1

    但如果卷組中的多個PV進行條帶化,oracle10g安裝文件中,建立lv必須採用以下命令:

    #mklv -y lv_name -T O -w n -s n -r n vgname PPs

      其中 -T O 表示邏輯卷第一個4K可以直接儲存使用者資料,而不是儲存邏輯卷資訊,為什麼需要這種設定呢?   
    
     通常我們資料庫db_block_size=8K,意味著資料庫的一個block佔用邏輯卷的2個blocks( lv block size=4k),stripe size的大小無論設定多大,都有可能造成資料庫的某個block跨兩個不同的PV,例如兩個PV盤的條帶化是16K,建立32K的lv,則第一個16K位於PV1,第二個16K位於PV2,因為LV的第一個block size=4K是給系統用,則第一個PV1只剩下12K給資料庫用,但資料庫的db_block_size=8K,造成了資料庫的第二個db block的前4K儲存PV1,後面4k儲存在PV2,其存在的風險是資料庫強制關閉,可能造成資料塊的損壞。如果db_block_size=4K就不存在上述問題。

       同樣的道理,如果一個lv跨多個PV(no stripe),在建立lv的時候,因為卷組中PP得大小是8K的整數倍,所以建立LV需要使用-T O引數,確保資料塊不會分裂到兩個PV中,而不採用-T O引數建立LV的時候,LV佔用第一個PV的大小是先減去4K,所得值不能被8K整除,使得LV佔用第一個PV上的空間,最後一個資料塊前4K,在PV1,後面4K在第二個PV中,造成資料塊的割裂。

      我們一旦採用-T O引數時候,檔案系統轉化成裸裝置命令要修改為:
      # dd if =/path/FS.dbf  f=/dev/rlv_name bs=4k

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

相關文章