好的。讓我們先搞清楚蟾蜍在
得到你正在尋找的數字開始什麼
SELECT sum(bytes)/1024/1024/1024 size_in_gb,
sum(blocks) size_in_blocks
FROM dba_segments
WHERE owner = <<owner of table>>
AND segment_name = <<name of table>>
爲表的大小回報?
什麼
SELECT num_rows, blocks, empty_blocks, avg_row_len, last_analyzed
FROM all_tables
WHERE owner = <<owner of table>>
AND table_name = <<name of table>>
換取餐桌上的統計數據?
什麼
SELECT COUNT(*)
FROM <<owner of table>>.<<name of table>>
換取表中的行的實際數量?
什麼
DECLARE
l_unformatted_blocks number;
l_unformatted_bytes number;
l_fs1_blocks number;
l_fs1_bytes number;
l_fs2_blocks number;
l_fs2_bytes number;
l_fs3_blocks number;
l_fs3_bytes number;
l_fs4_blocks number;
l_fs4_bytes number;
l_full_blocks number;
l_full_bytes number;
BEGIN
dbms_space.space_usage (<<table owner>>, <<table name>>, 'TABLE',
l_unformatted_blocks, l_unformatted_bytes,
l_fs1_blocks, l_fs1_bytes, l_fs2_blocks, l_fs2_bytes,
l_fs3_blocks, l_fs3_bytes, l_fs4_blocks, l_fs4_bytes,
l_full_blocks, l_full_bytes);
dbms_output.put_line('Unformatted Blocks = '||l_unformatted_blocks);
dbms_output.put_line('FS1 Blocks = '||l_fs1_blocks);
dbms_output.put_line('FS2 Blocks = '||l_fs2_blocks);
dbms_output.put_line('FS3 Blocks = '||l_fs3_blocks);
dbms_output.put_line('FS4 Blocks = '||l_fs4_blocks);
dbms_output.put_line('Full Blocks = '||l_full_blocks);
END;
秀正在如何使用該表中的塊?
行更新後1月14日14:02:29?特別是,是否可能插入了一些相對較小的行,但隨後更新的規模要大得多?如果您重新收集表上的統計信息,是否會發生任何變化
BEGIN
dbms_stats.gather_table_stats(ownname => <<owner of table>>,
tabname => <<name of table>>,
estimate_percent => null,
granularity => 'ALL');
END;
您如何確定表的大小爲3.44 GB?你在看'ALL_SEGMENTS'嗎?你如何確定行數?通過執行「COUNT(*)」?或者通過查看'ALL_TABLES'中的'NUM_ROWS'?你如何確定塊的數量?此表中的統計數據是否準確並且是最新的?你看過這個對象的'DBMS_SPACE.SPACE_USAGE'的輸出嗎? – 2012-03-02 17:42:36
我從TOAD獲取數字。 (另外我忘了補充一下,這個表格是以前一種格式轉換表格創建的,所以不應該刪除任何東西,並且不應該有無人認領的空白空間。) – AFoglia 2012-03-02 17:59:46
如果我自己對dba_segments進行查詢,我獲得與TOAD匹配的3695181824字節的大小。我只是運行了一個'select count(*)',而且令人驚訝的是,它確實有所不同,1787088與TOADs 1784486不同。仍然不足以解釋我所看到的巨大差異。 – AFoglia 2012-03-02 18:10:16