ホーム » ブログ » オラクル全てのテーブル名、レコード数及び各テーブル容量を確認する方法
このエントリーをはてなブックマークに追加
@2016/03/30
本日の作業中で、データベースでのすべてのテーブル名称、レコード数及び各テーブルの使用容量を確認することがあった。
グーグルしたら、沢山の記事があった。しかし、皆は似ている記事を掲載している(笑)。
検索結果の3ページまで閲覧したが、結局、みんなは同一SQL文となる。
残念ながら、そのSQLは効率がかなり低く、SQLを実施したら、なんと3分以上がかかってしまい(テーブルデータ量が多いから)。
ここでは、かなり軽いSQL文を掲載します。
僕が実験した結果は、SQL処理時間は元の1/200ぐらい短くした。
では、データベースでのすべてのテーブル名称、レコード数及び各テーブルの使用容量を確認するSQL文です。

SELECT 
      a.table_name --テーブル名称
      ,a.num_rows --テーブルのレコード数
      , b.MB -- テーブルの利用容量
FROM user_tables a -- 全てのテーブル
      , (Select Segment_Name,Sum(bytes)/1024/1024 MB From user_segments Group By Segment_Name) b --テーブル名称&容量の集合
WHERE a.table_name = b.Segment_Name
ORDER BY a.num_rows desc, b.MB desc;

上記のコードはあまり考えずに作ったので、もっとカスタマイズすれば、より効率がよいSQL文を作れるかも。

最後、他記事でのSQL文も提示します。

SELECT
distinct table_name,
TO_NUMBER(
extractvalue(
xmltype(
dbms_xmlgen.getxml('SELECT COUNT(*) c FROM '||table_name))
,'/ROWSET/ROW/C')) rec_ccount,
trunc(bytes/1024/1024,0) tablesize
FROM user_tables
join user_segments on user_segments.segment_name = user_tables.table_name
order by rec_ccount desc;

以上。



♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
1人
このエントリーをはてなブックマークに追加


◎zanmai.netサイト記事の転載・複製(コピー)は、zanmai.netへのリンクであることを明記してください!
◎本記事URL: http://www.zanmai.net/blog/data/252.html

お名前:

 

EMAIL:

 

URL:

 

認証コード:

zanmai.net-safecode

 


※会員の方は認証コードを要らないから、新規登録をオススメ!

アーカイブ @zanmai.net
check