Oracle資料檔案型別分bigfile(大檔案)和smailfile(小檔案)
bigfile(大檔案):最大可以是4G個資料庫塊大小
bigfile:4G*block_size=4*1024*1024*1024*block_size
smailfile(小檔案):最大可以是4M個資料庫塊大小
smailfile:4M*block_size=4*1024*1024*block_size
但是每次計算總是有小數,那是因為實際最資料檔案最大的SIZE比官方提供的少幾個塊。官方給出解釋一般是少一個塊,但是實際linux環境下大檔案少三個塊,小檔案少了兩個塊。我百度非官方說是系統用了,但是不知道是不是。
下面是測驗陳述句:
--創建大資料檔案測驗
create bigfile tablespace csb datafile 'E:\APP\ZHANKY\ORADATA\ZHANKY\csb' size 1M autoextend on next 1m;
--查詢差幾個塊
(select c.bigfile,
(c.max_data-a.maxbytes)/c.block_size
from dba_data_files a,
--根據表空間型別、和資料庫塊大小算出單個資料檔案最大多少G
(select tablespace_name,block_size,bigfile,
case bigfile
when 'YES' then
4 *1024 * 1024 * 1024 * block_size
when 'NO' then
4 * 1024 * 1024 * block_size
end max_data
from dba_tablespaces) c
where a.tablespace_name = c.tablespace_name and a.tablespace_name in ('CSB','SYSTEM') )
各路大神發表一下意見,求教
uj5u.com熱心網友回復:
樓主你的少的塊數,從哪里查的?試試
dba_data_files
dba_free_space
uj5u.com熱心網友回復:
我是通過查詢dba_data_files里面的maxblock來確定單個資料檔案一共多少個塊。
官方檔案說小檔案是4M個塊,實際是4M-1個塊。所以上面我使用判斷如果是小檔案就用4m-1-maxblock但是還是多一個
uj5u.com熱心網友回復:
空檔案有的也有大小:
會不會是表檔案本身的大小
,
uj5u.com熱心網友回復:


應該就是了
uj5u.com熱心網友回復:
你說的是作業系統塊應該,但是創建Oracle資料檔案之后那個資料檔案是按照表空間的邏輯結構來的(段、區、塊)。創建檔案時指定初始大小,肯定會占用空間,但是這個占用空間應該是已擴展空間。
uj5u.com熱心網友回復:
表空間是資料檔案的邏輯集合,應該算的整個資料檔案的大小吧uj5u.com熱心網友回復:
是的,我說的就是小檔案表空間里面的單個資料檔案的大小。因為(官方檔案表示小檔案單個資料檔案有2^22-1個資料塊,減一就是因為由于Oracle的Rowid中使用22位來代表Block號。)
所以你可以看到 1056768-1048576=8192 剛好一個塊的大小。
其實我想表達的是,官方資料說小檔案資料檔案最大事4M-1個塊,但是實際我們發現4M-1個塊算出來比實際的值還大一個8192。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/43222.html
標籤:基礎和管理
