DB: sysmaster に対して以下のような SQL を実行することで取得できる
- あと何個テーブルスペースに extent を取れるかのみ取得する SQL
select {+ ordered, index(a, syspaghdridx) } -- necessary c.tabname, -- the table or index c.dbsname, -- the database b.name, -- the dbspace trunc(a.pg_frcnt / 8) frext -- the free extents from sysmaster:sysdbspaces b, sysmaster:syspaghdr a, sysmaster:systabnames c where a.pg_partnum = sysmaster:partaddr(b.dbsnum, 1) and sysmaster:bitval(a.pg_flags, 2) = 1 and a.pg_nslots = 5 and c.partnum = sysmaster:partaddr(b.dbsnum, a.pg_pagenum) order by 4 asc
- 現在の extent の数を集計する SQL
select st.dbsname[1,25] as dbname, st.tabname[1,35] as dbobject, count(*) num_of_extents, trunc((pgh.pg_frcnt/8),0) additional_extents from sysptnext ptn, sysptnhdr pth, syspaghdr pgh, systabnames st where st.partnum = ptn.pe_partnum and st.partnum = pth.partnum and pgh.pg_partnum = ((trunc(st.partnum/1048576,0)*1048576)+1) and pgh.pg_pagenum = (st.partnum-(trunc(st.partnum/1048576,0)*1048576)) and st.dbsname not like "hoge%" -- 含めたくない領域名を指定する and st.dbsname not like ... group by 1, 2, 4 order by 4, 1, 2