确实是谁在使用临时表空间

找出是哪一条SQL语句将排序数据段中的空间用光了:

select s.sid || ',' || s.serial# sid_serial, s.username,
     o.blocks * t.block_size / 1024 / 1024 mb_used, o.tablespace,
     o.sqladdr address, h.hash_value, h.sql_text
     from v$sort_usage o, v$session s, v$sqlarea h, dba_tablespaces t
     where o.session_addr = s.saddr
     and o.sqladdr = h.address (+)
     and o.tablespace = t.tablespace_name
     order by s.sid;


找出是哪一个session使用了临时表空间,信息是以汇总的形式给出的:

select s.sid || ',' || s.serial# sid_serial, s.username, s.osuser, p.spid,
     s.module,s.program, 
     sum (o.blocks) * t.block_size / 1024 / 1024 mb_used, o.tablespace,
     count(*) sorts
     from v$sort_usage o, v$session s, dba_tablespaces t, v$process p
     where o.session_addr = s.saddr
     and s.paddr = p.addr
     and o.tablespace = t.tablespace_name
     group by s.sid, s.serial#, s.username, s.osuser, p.spid, s.module,
     s.program, t.block_size, o.tablespace
     order by sid_serial;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库中的临时表空间(Temporary Tablespace)主要用于存储SQL语句执行过程中生成的临时结果集和排序中间结果。它在数据库运行过程中起到了重要的作用。 Oracle数据库中的临时表空间使用历史可以追溯到早期版本的Oracle数据库。在Oracle 7中,临时表空间的引入就大大提高了数据库的性能和可伸缩性。在早期版本的Oracle数据库中,排序和临时结果集的存储通常是通过使用数据库内部的排序区(Sort Area)和排序段(Sort Segment)来完成的,这种方式对内存的需求较大,并且容易导致性能瓶颈。为了解决这个问题,Oracle引入了临时表空间的概念。 临时表空间的引入提供了一种从磁盘读取和写入排序结果的方法,从而减轻了内存的压力,并改善了排序操作的性能。临时表空间可以由系统管理员在数据库中手动创建,或者可以由自动管理的表空间管理(Automatic Storage Management)来创建和管理。 临时表空间使用方式通常是在SQL语句执行之前,临时表空间会被分配给用户会话。当SQL语句执行期间需要排序或者产生临时结果集时,数据被写入临时表空间。一旦排序或者查询结束,临时表空间会被释放,以便其他会话使用临时表空间的大小通常需要根据系统的负载和需求来决定,过小的临时表空间可能导致临时表空间不足的错误,而过大的临时表空间则会占用过多的磁盘空间。因此,管理者需要根据实际情况来调整临时表空间的大小。 总之,Oracle数据库中的临时表空间在SQL语句的执行过程中起到了重要的作用,它提供了一种存储临时结果集和排序结果的方法,并提升了数据库的性能和可伸缩性。通过合理地设置临时表空间的大小和管理,可以确保数据库的高效运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值