Может кто-нибудь помочь мне в поиске временного табличного пространства используемого размера? Какой запрос вернет правильное значение снизу?
SELECT t.tablespace_name,df.allocated_bytes as ALLOCATED_BYTES,decode(sign(df.allocated_bytes-NVL(f.used_bytes,0)),1,df.allocated_bytes - NVL(f.used_bytes,0),0) as FREE_BYTES,decode(sign(df.allocated_bytes-NVL(f.used_bytes,0)),1,NVL(f.used_bytes,0),df.allocated_bytes) as USED_BYTES,decode(sign(NVL(df.allocated_blocks,0)-NVL(f.used_blocks,0)),1,NVL(df.allocated_blocks,0)-NVL(f.used_blocks,0),0) FREEBLOCKS,NVL(df.allocated_blocks,0) ALLOCATEDBLOCKS FROM sys.dba_tablespaces t,(SELECT h.tablespace_name, ROUND(sum((ss.used_blocks*tt.block_size)),2) used_bytes, SUM(NVL(ss.used_blocks, 0)) used_blocks FROM V$TEMP_SPACE_HEADER h,***v$sort_segment*** ss,sys.dba_tablespaces tt where ss.tablespace_name(+)=h.tablespace_name and ss.tablespace_name(+)=tt.tablespace_name and ss.con_id = (select con_id from v$mystat where rownum=1) GROUP BY h.tablespace_name) f,(select tablespace_name,sum(decode(sign(maxbytes-bytes),1,maxbytes,bytes)) allocated_bytes,sum(blocks) allocated_blocks from dba_temp_files group by tablespace_name) df WHERE t.contents='TEMPORARY' and t.tablespace_name = f.tablespace_name(+) and t.tablespace_name=df.tablespace_name(+) order by t.tablespace_name
или
SELECT t.tablespace_name,df.allocated_bytes as ALLOCATED_BYTES,decode(sign(df.allocated_bytes-NVL(f.used_bytes,0)),1,df.allocated_bytes - NVL(f.used_bytes,0),0) as FREE_BYTES,decode(sign(df.allocated_bytes-NVL(f.used_bytes,0)),1,NVL(f.used_bytes,0),df.allocated_bytes) as USED_BYTES,decode(sign(NVL(df.allocated_blocks,0)-NVL(f.used_blocks,0)),1,NVL(df.allocated_blocks,0)-NVL(f.used_blocks,0),0) FREEBLOCKS,NVL(df.allocated_blocks,0) ALLOCATEDBLOCKS FROM sys.dba_tablespaces t,(SELECT h.tablespace_name, SUM(NVL(p.bytes_used, 0)) used_bytes, SUM(NVL(ss.used_blocks, 0)) used_blocks FROM V$TEMP_SPACE_HEADER h,***V$TEMP_EXTENT_POOL p***,v$sort_segment ss where p.tablespace_name(+)=h.tablespace_name and ss.tablespace_name(+)=h.tablespace_name GROUP BY h.tablespace_name) f,(select tablespace_name,sum(decode(sign(maxbytes-bytes),1,maxbytes,bytes)) allocated_bytes,sum(blocks) allocated_blocks from dba_temp_files group by tablespace_name) df WHERE t.contents='TEMPORARY' and t.tablespace_name = f.tablespace_name(+) and t.tablespace_name=df.tablespace_name(+) order by t.tablespace_name
Спасибо!