街中で見かけて「グッときた人」の思い出

表領域のサイズと使用量を抽出するSQLを作成しています。
上は自動拡張サイズと現サイズを抽出するSQL、下は現在の使用量を抽出するSQLです。この二つを一つのSQLで作成ってできないでしょうか??

(1)自動拡張と現サイズを算出
select sysdate syoribi,
a.tablespace_name,
to_char(sum(a.MAXBYTES)/1024/1024, '999,999,990') jidou,
to_char(sum(a.BYTES)/1024/1024, '9,999,990.9') gensaize
from dba_data_files a
group by a.tablespace_name

(2)使用量を算出
select sysdate syoribi,
b.tablespace_name,
to_char(sum(b.BYTES)/1024/1024, '9,999,990.9') siyoryo
from dba_segments b
group by b.tablespace_name

どうかよろしくお願いします。

A 回答 (2件)

select sysdate syoribi,z.tablespace_name,x.jidou,x.gensaize,y.siyoryo


from dba_tablespace z,
(
select a.tablespace_name,
to_char(sum(a.MAXBYTES)/1024/1024, '999,999,990') jidou,
to_char(sum(a.BYTES)/1024/1024, '9,999,990.9') gensaize
from dba_data_files a
group by a.tablespace_name
) x,
(
select b.tablespace_name,
to_char(sum(b.BYTES)/1024/1024, '9,999,990.9') siyoryo
from dba_segments b
group by b.tablespace_name
) y
where
z.tablespace_name=x.tablespace_name(+) and
z.tablespace_name=y.tablespace_name(+)
;

どう違うのか判らないので推測するしかないけど、外部結合なら良いんじゃないかな。
    • good
    • 0
この回答へのお礼

k_o_r_o_c_h_a_nさんの教えていただいた方法でうまく抽出ができました!感激です^^どうもありがとうございました♪

お礼日時:2009/05/31 06:44

それぞれがテーブルスペース毎に集計されるSQLなのだから、


テーブルスペース名で結合すれば良いだけでは?

select * from ( (1)のSQL ) x,( (2)のSQL ) y
where x.tablespace_name=y.tablespace_name
;
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

そうなんです。回答いただいた方法でtablespace_nameのwhere条件を指定したのですが個別に実行した結果と求める値が違ってしまいます。
ご回答いただいた方法以外で一つのSQLで実行する方法ってないでしょうか??

お礼日時:2009/05/28 07:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報