テーブルの件数を取得


現時点のテーブルの件数一覧を取得するSQL

 SELECT
     TABLE_NAME as テーブル名,
     TO_NUMBER(
     EXTRACTVALUE(
         XMLTYPE(
           DBMS_XMLGEN.GETXML('SELECT COUNT(*) C FROM '||TABLE_NAME))
           ,'/ROWSET/ROW/C')) as 件数
FROM USER_TABLES
 WHERE TABLE_NAME NOT LIKE 'BIN$%'
 AND (IOT_TYPE != 'IOT_OVERFLOW' OR IOT_TYPE IS NULL)
 ORDER BY TABLE_NAME
 ;

EXTRACTVALUE関数は非推奨のため、いずれ使えなくなるかも



統計情報を取得した直後であればUSER_TABLESから取得も可能

SELECT  T.TABLE_NAME as テーブル名, 
         NVL(T.NUM_ROWS,0)   as 件数
FROM USER_TABLES T
 ORDER BY 2 desc,T.TABLE_NAME
 ;

動作確認環境:Oracle 10g