2011-02-01 39 views
14

如果我無法訪問v$parameter視圖,是否有辦法告訴我的Oracle數據庫的塊大小?查詢我的塊大小oracle

謝謝!

f。

+0

注:Oracle支持每個tablespaspace不同的塊大小。所以v $參數中的valuse只是一個「默認」。 – ibre5041 2015-02-04 11:00:11

回答

16

你可以這樣做:

select distinct bytes/blocks from user_segments; 
+0

它做到了。謝謝。 – filippo 2011-02-01 15:18:12

+1

這個查詢是非常昂貴的,最好考慮一些類似於v $ parameter中的值的選擇,其中name ='db_block_size' – 2015-02-03 20:08:31

1

是的,那麼你有一個重大的問題。查詢user_segments可能非常慢,特別是在運行SAP或Infor BAAN時,它會創建數以千計的段並傾向於對數據字典進行分段。最好的方法是說服你的DBA以某種方式授予你訪問權限,也許通過v_ $的視圖。

另一種方式,它的性能更好:當你可以創建段時,你有一些表空間訪問(請注意,當你沒有任何段時,不同的表達式不起作用)。這份名單是一般較短,所以例如使用:

選擇字節/從user_ts_quotas

這仍然給你留下一個社會工程問題與當地DBA當用戶是如此的限制,它並沒有一個塊配額:-)

2

在oracle中,塊大小是爲每個表空間設置的。您可以查詢user_tablespaces或dba_tablespaces(如果您有權訪問)並查看每個表空間的塊大小;這些視圖通常會立即運行。

你也可以將2加入到dba_tables,user_tables或all_tables中,並將塊數乘以塊大小,以字節爲單位獲得表的總大小(除以1024 * 1024,以MB爲單位)等)

1

由於塊大小是爲每個表空間,你最好使用下面的查詢不同:

select block_size, tablespace_name from dba_tablespaces;