编者按:留存一下供自己需要时查找。
【免责声明】本公众号文章仅代表个人观点,与任何公司无关,仅供参考。

编辑|SQL和数据库技术(ID:SQLplusDB)
临时表空间表空间信息
select * from dba_temp_free_space;
临时表空间的使用量
SELECT d.tablespace_name "Name" ,NVL(a.bytes / 1024 / 1024, 0) "Size(MB)",NVL(t.bytes, 0) / 1024 / 1024 "Used(MB)",NVL(t.bytes / a.bytes * 100, 0) "Used(%)",NVL(a.bytes - NVL(t.bytes, 0), 0)/1024/1024 "Free(MB)",d.status,a.count,d.contents,d.extent_management,d.segment_space_managementFROM sys.dba_tablespaces d,(select tablespace_name,sum(bytes) bytes,count(file_id) countfrom dba_temp_filesgroup by tablespace_name) a,(select ss.tablespace_name ,sum((ss.used_blocks*ts.blocksize)) bytesfrom gv$sort_segment ss,sys.ts$ tswhere ss.tablespace_name = ts.namegroup by ss.tablespace_name) tWHERE d.tablespace_name = a.tablespace_name(+) ANDd.tablespace_name = t.tablespace_name(+) ANDd.extent_management like 'LOCAL' ANDd.contents like 'TEMPORARY';
查询temp表空间使用率
select df.tablespace_name "Tablespace",df.totalspace "Total(MB)",nvl(FS.UsedSpace, 0) "Used(MB)",(df.totalspace - nvl(FS.UsedSpace, 0)) "Free(MB)",round(100 * (1-( nvl(fs.UsedSpace, 0) / df.totalspace)), 2) "Pct. Free(%)"FROM (SELECT tablespace_name, round(SUM(bytes) / 1048576) TotalSpaceFROM dba_TEMP_filesGROUP BY tablespace_name) df,(SELECT tablespace_name, ROUND(SUM(bytes_used) / 1024 / 1024) UsedSpaceFROM gV$temp_extent_poolGROUP BY tablespace_name) fs WHERE df.tablespace_name = fs.tablespace_name(+)
查询实时使用temp表空间的sql_id和sid
set linesize 260 pagesize 1000col machine for a40col program for a40SELECT se.username,sid,serial#,se.sql_idmachine,program,tablespace,segtype,(su.BLOCKS*8/1024/1024) GBFROM v$session se, v$sort_usage suWHERE se.saddr = su.session_addrorder by su.BLOCKS desc;/*需要注意的是这里查询sql_id要用v$session视图的sql_id,而不要用v$sort_usage视图的sql_id,v$sort_usage视图里面的sql_id是不准确的*/
SQL执行时候的临时表空间使用量
SELECT a.username, a.sid, a.serial#, a.osuser, b.tablespace, b.segtype, b.blocks, c.sql_textFROM v$session a, v$tempseg_usage b, v$sqlarea cWHERE a.saddr = b.session_addrAND c.address= a.sql_addressAND c.hash_value = a.sql_hash_valueORDER BY b.tablespace, b.blocks;※blocks列是块数,大小计算如下例:blocks*block_size
查看历史临时表空间的使用
---某SQL历史临时表空间的使用
select distinct sample_time, session_id,program,TEMP_SPACE_ALLOCATED,sql_id,sql_exec_start from DBA_HIST_ACTIVE_SESS_HISTORYwhere sql_id='<SQL_ID>' order by sample_time;
select distinct sample_time, session_id,program,TEMP_SPACE_ALLOCATED,sql_id,sql_exec_start from GV$ACTIVE_SESSION_HISTORYwhere sql_id='<SQL_ID>' order by sample_time;
查询历史的temp表空间的使用的SQL_ID
select a.SQL_ID,a.SAMPLE_TIME,a.program,sum(trunc(a.TEMP_SPACE_ALLOCATED / 1024 / 1024)) MBfrom v$active_session_history awhere TEMP_SPACE_ALLOCATED is not nulland sample_time betweento_date('&date1', 'yyyy-mm-dd hh24:mi:ss') andto_date('&date2', 'yyyy-mm-dd hh24:mi:ss')group by a.sql_id,a.SAMPLE_TIME,a.PROGRAMorder by 2 asc,4 desc;
查看临时表空间都是被什么SQL占用?
SELECT vt.inst_id,vs.sid,vs.serial#,vs.machine,vs.saddr,vs.program,vs.module,vs.logon_time,vt.tempseg_usage,vt.segtypeFROM gv$session vs,( SELECT inst_id,username,session_addr,segtype,ROUND (SUM (blocks) * 8192 / 1024 / 1024 / 1024, 2)tempseg_usageFROM gv$tempseg_usageGROUP BY inst_id,username,session_addr,segtypeORDER BY 4 DESC) vtWHERE vs.inst_id = vt.inst_id AND vs.saddr = vt.session_addrORDER BY tempseg_usage DESC;
查询使用临时表空间会话
SELECT SE.USERNAME,SE.SID,SE.SERIAL#,SE.SQL_ADDRESS,SE.MACHINE,SE.PROGRAM,SU.TABLESPACE,SU.SEGTYPE,SU.CONTENTS FROM V$SESSION SE,V$SORT_USAGE SU WHERE SE.SADDR = SU.SESSION_ADDR;
有用的MOS相关文章
Note: 67534.1 VIEW: "V$SORT_USAGE" Reference NoteNote: 364417.1 How Can Temporary Segment Usage Be Monitored Over Time?Note: 289894.1 Queries To Monitor Temporary Tablespace UsageTEMPORARY Tablespaces : Tempfiles or Datafiles ? (Doc ID 160426.1)Master Note: Troubleshooting Oracle Temporary Tablespaces (Doc ID 1524594.1)Master Note: Overview of Oracle Temporary Tablespaces (Doc ID 1498442.1)How Do You Find Who And What SQL Is Using Temp Segments [ID 317441.1]How Can Temporary Segment Usage Be Monitored Over Time? (Doc ID 364417.1)ORA-1652の主な発生原因とその対処方法について(KROWN:68738) (Doc ID 1723269.1)[10g 新機能] 一時表領域グループ(KROWN:84881) (Doc ID 1727040.1)11g: ローカル管理一時表領域の縮小(SHRINKコマンド)(KROWN:127335) (Doc ID 1741644.1)一時表領域(KDS:7252) (Doc ID 1772113.1)表領域の管理(KDS:3137) (Doc ID 1771502.1)ORA-1652 On A Temporary Tablespace With Autoextensible Files (Doc ID 303930.1)
Hands On:(常用命令&小技巧)
【怎么办001】DROP USER ... CASCADE特别慢怎么办?
【怎么办】003 如何加强Oracle数据库安全--监控数据导入导出操作
【怎么办】004 如何找到删库跑路的人--监控数据库用户登录
SQL*PLUS技巧:生成易读的HTML报表
【快问快答】如何判断OJVM是否被使用?
【快问快答】如何收集回看sql语句中传入的绑定变量值
【快问快答】事务异常或者instance abort时,如何估算事务rollback时间
文章转载自SQL和数据库技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




