暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DBA命令速查6: 临时表空间( Temporary Tablespace)的相关确认SQL

1282


编者按:留存一下供自己需要时查找。

【免责声明】本公众号文章仅代表个人观点,与任何公司无关,仅供参考。


编辑|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_management
FROM sys.dba_tablespaces d,
(select tablespace_name,
sum(bytes) bytes,
count(file_id) count
from dba_temp_files
group by tablespace_name) a,
(select ss.tablespace_name ,
sum((ss.used_blocks*ts.blocksize)) bytes
from gv$sort_segment ss,
sys.ts$ ts
where ss.tablespace_name = ts.name
group by ss.tablespace_name) t
WHERE d.tablespace_name = a.tablespace_name(+) AND
d.tablespace_name = t.tablespace_name(+) AND
d.extent_management like 'LOCAL' AND
d.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) TotalSpace
FROM dba_TEMP_files
GROUP BY tablespace_name) df,
(SELECT tablespace_name, ROUND(SUM(bytes_used) / 1024 / 1024) UsedSpace
FROM gV$temp_extent_pool
GROUP BY tablespace_name) fs WHERE df.tablespace_name = fs.tablespace_name(+)


查询实时使用temp表空间的sql_id和sid


set linesize 260 pagesize 1000
col machine for a40
col program for a40
SELECT se.username,
sid,
serial#,
se.sql_id
machine,
program,
tablespace,
segtype,
(su.BLOCKS*8/1024/1024) GB
FROM v$session se, v$sort_usage su
WHERE se.saddr = su.session_addr
order 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_text
FROM v$session a, v$tempseg_usage b, v$sqlarea c
WHERE a.saddr = b.session_addr
AND c.address= a.sql_address
AND c.hash_value = a.sql_hash_value
ORDER 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_HISTORY
where 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_HISTORY
where 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)) MB
from v$active_session_history a
where TEMP_SPACE_ALLOCATED is not null
and sample_time between
to_date('&date1', 'yyyy-mm-dd hh24:mi:ss') and
to_date('&date2', 'yyyy-mm-dd hh24:mi:ss')
group by a.sql_id,a.SAMPLE_TIME,a.PROGRAM
order 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.segtype
FROM gv$session vs,
( SELECT inst_id,
username,
session_addr,
segtype,
ROUND (SUM (blocks) * 8192 / 1024 / 1024 / 1024, 2)
tempseg_usage
FROM gv$tempseg_usage
GROUP BY inst_id,
username,
session_addr,
segtype
ORDER BY 4 DESC) vt
WHERE vs.inst_id = vt.inst_id AND vs.saddr = vt.session_addr
ORDER 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 Note
Note: 364417.1 How Can Temporary Segment Usage Be Monitored Over Time?
Note: 289894.1 Queries To Monitor Temporary Tablespace Usage
TEMPORARY 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:(常用命令&小技巧)

手动创建数据库及创建过程遇到的错误(踩到的坑)

数据库管理和维护常用操作和命令

RMAN相关基础操作

【常用命令】修改数据库字符集(仅供测试使用)

【常用命令】监视数据库的用户登录和注销会话信息

【常用命令】自动统计收集的停止(无效)和启动(有效)

【常用命令】获取数据库对象的定义(DDL)

【常用命令】修改数据库字符集(仅供测试使用)

【怎么办001】DROP USER ... CASCADE特别慢怎么办?

【怎么办002】想要获取数据库对象的定义(DDL)怎么办

【怎么办】003 如何加强Oracle数据库安全--监控数据导入导出操作

【怎么办】004 如何找到删库跑路的人--监控数据库用户登录

SQL*PLUS技巧:生成易读的HTML报表
【快问快答】如何判断OJVM是否被使用?
【快问快答】如何收集回看sql语句中传入的绑定变量值

【快问快答】事务异常或者instance abort时,如何估算事务rollback时间

使用PL/SQL发邮件相关的Oracle ACL (Access Control List)

DBA命令速查1:查看SQL的执行计划

DBA命令速查2:查看隐含参数值

DBA命令速查3:获取Oracle服务器IP的方法

DBA命令速查4:AWR报告相关命令

DBA命令速查4:Oracle 编译无效对象(Compile Invalid Objects)

文章转载自SQL和数据库技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论