- ベストアンサー
Oracleのテーブルサイズ
Oracle(8.0.5以降)で、テーブル毎のサイズを知りたいのですが、どこにその情報はあるのでしょうか? テーブルが拡張されてそれぞれどの程度のサイズになっているのか、また、何%程度使用しているのか等が知りたいのです。 以前に、Oracleのシステムテーブルにそのような情報をもっていると聞いたことがあるのですが、わかりません。 どなたかわかる方がいましたら、よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
簡単に調べる方法があります。 以下のSQL文をSQL*Plus等で実行してみてください。 select segment_name,trunc(bytes/1024,0) kb from user_segment where segment_name='*****' / *****に目的のテーブル名を設定します。 テーブルのサイズがKバイト単位で表示されます。 バイト単位で知りたい場合は、trunc(bytes/1024,0)をbytesに 置き換えます。
その他の回答 (2)
- cse_ri
- ベストアンサー率29% (74/253)
No.2の回答に、一部記述の誤りがありました。 [誤] from user_segment [正] from user_segments "user_segments"以外に、"dba_segments"でもOKです。
- takataka111
- ベストアンサー率46% (23/50)
以下の方法で表示することができます。 以下の文をサーバマネージャもしくはSQL*Plusで流してください (1)以下のテーブルを作成する CREATE TABLE FSPACE (TABLESPACE_NAME VARCHAR2(30), ALLOCATED NUMBER, FREE_TODAY NUMBER, FREE_YESTERDAY NUMBER, PERCENT_CHANGED NUMBER, SYSTEM_DATE DATE) TABLESPACE usertsp PCTFREE 20 PCTUSED 40 STORAGE(INITIAL 1k NEXT 1k PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS UNLIMITED); (2)テーブルの分析を行う analyze table yosankanri estimate statistics sample 5 percent; (3)参照したい情報を表示する --テーブルの空領域、平均行長、追加できるおおよその行数(理論的) select table_name, empty_blocks*4096 empty_bytes, avg_row_len, empty_blocks*4096*(100-5)/100/avg_row_len more_rows_riron from sys.user_tables where table_name ='テーブル名'; --imageテーブルの空領域、平均行長、追加できるおおよその行数(現実的) select table_name, empty_blocks*4096 empty_bytes, num_rows*avg_row_len space_in_use, blocks*4096 space_allocated, (blocks*4096 - num_rows*avg_row_len)*(100 - 5)/100/avg_row_len more_rows_real from sys.user_tables where table_name ='テーブル名'; 以上のスクリプトを流してください。
お礼
ありがとうございました。 私が望んでいたそのままの回答でした。