程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> oracle的塊 db_block_size

oracle的塊 db_block_size

編輯:Oracle數據庫基礎

DBA教材的第一部分就講到了一旦create   database,db_block_size就是不可更改的。因為Oracle是以塊為單位存儲數據的,任何一個存儲元素最少占用一個塊,如果你改變了db_block_size,必然導致部分塊不能正常使用。
其實在unix類操作系統中,文件塊和Oracle塊的關系非常緊密(建議相等),這樣才能保證數據庫的執行效率。在Windows下可能就不這麼講究了。建議使用8k以上的塊,我做過測試,同樣的配置,8k的塊比4k快大約40%,比2k快3倍以上(從hit_ratio來看)。

一般麼人都是8k,通過

sql語句:select value from v$parameter where name='db_block_size'  查看具體大小

非sql語句(在命令窗口中執行):show parameter block;

假設你的事物將對磁盤單元寫入32KB的數據,DB_BLOCK_SIZE參數就設為8KB。在這個例子中,Oracle必須執行四個I/O工作單元(32KB/8KB=4)來完成這一操作。

==============================================================

很不幸,你遇到了一個很難碰到的問題。很不幸,你現在一定心急火燎。能遇到這種錯誤的人絕不是一般人。那麼你一定不是一個凡人,you are special。

呵呵,不和你開玩笑了。現在就分析這個問題的原因。

oracle支持的文件大小和他的db_block_size和db_block的數量決定的。在oracle 9i以前,oracle 的db_block的數量最大只能為2的22次方個,而我們通過Oracle默認的模板建的數據庫實例的db_block_size是8K。所以oracle 9i以前支持的單個文件的默認大小是32GB。雖然在Oracle 11g沒有這個限制,但是它默認的能力也是這麼多。所以我在前面講如果你遇到這個問題,說明你不是一般人,你在創建一個單個文件超過32GB的表空間。

那麼怎麼解決這個問題呢,我這裡提供三個參考方案,你使用選擇其中對你合適的,呵呵:

一)不要創建單個文件超過32GB的表空間

如果你創建的表空間超過32GB,請把這個表空間存儲為多個數據文件,每個文件不大於32GB。這樣,就可以成功的創建表空間。

二)擴大db_block_size

根據Oracle的算法,我們很容易想到這個解決方法。數目衡定,但是db_block_size可以更改(db_block_size的最大大小為32KB)。如果把db_block_size擴大到32KB(32位系統好像是16KB,我在Red Hat 企業版的操作系統創建32KB的block_size失敗。),那麼我們的系統就可以支持單個數據文件最大128GB。

這個方案聽起來好像很迷人,但是實際上並不是那麼回事。因為要修改db_block_size並不是很容易的事。因為這個db_block_size在創建實例的時候就要指定。而且不能通過簡單修改參數來指定db_block_size。創建更大的db_block_size的數據庫實例我會在以後講。

三)創建bigfile表空間

在oracle11g中引進了bigfile表空間,他充分利用了64位CPU的尋址能力,使Oracle可以管理的數據文件總量達到8EB。單個數據文件的大小達到128TB,即使默認8K的db_block_size也達到了32TB。

創建bigfile的表空間使用的sql語句也很簡單。

create bigfile tablespace...

後面的語句和普通的語句完全一樣。

需要注意的是使用bigfile表空間,他只能支持一個數據文件。也就是說這個文件的最大大小就是表空間最大大小,你不可能通過增加數據文件來擴大該表空間的大小。所以Oracle說,如果你的這個文件沒有剩余空間的話,你還是不要使用bigfile表空間了,這個表空間你沒有擴展的余地了,呵呵。

Oracle也同樣告訴你了,建議你使用lvm或者別的軟件管理磁盤,以使你的空間可以動態擴大。呵呵,先講到這裡,如果還有不明白的,請告訴我。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved