删除临时表空ora-25152错误

本文详细介绍了如何通过SQL查询找出并结束占用Oracle数据库中临时表空间的会话,进而实现对临时表空间的有效管理。包括使用`gv$session`, `gv$sort_usage`, `gv$process`和`gv$parameter`视图进行会话查找,以及提供批量结束会话的SQL语句。同时,推荐了一种更便捷的方法来批量释放临时表空间资源,有效提高数据库性能。

删除临时表空间,或者收缩临时表空间经常会出现表空间占用等情况。

下面我们就对这种情况进行处理,

首先查找被锁的sid:

SELECT a.INST_ID,b.TABLESPACE
, b.segfile#
, b.segblk#
, ROUND ( ( ( b.blocks * p.VALUE ) / 1024 / 1024 ), 2 ) size_mb
, a.SID
, a.serial#
, a.username
, a.osuser
, a.program
, a.status
FROM gv$session a
, gv$sort_usage b
, gv$process c
, gv$parameter p
WHERE p.NAME = 'db_block_size'
AND a.saddr = b.session_addr
AND a.paddr = c.addr
ORDER BY b.TABLESPACE
, b.segfile#
, b.segblk#
, b.blocks;

通过查找就可以找到相关临时表空间的sid,和serial#

然后同过ALTER system kill session ‘sid,serial#'删除。

下面就可以删除临时表空间或者收缩临时表空间。

下面介绍一种更为方便的方法

select 'alter system kill session '''||a.sid||','||a.serial#||''' immediate;'
from 
   v$session    a,
   v$sort_usage b,
   v$process    c,
   v$parameter  d
where 
   d.name = 'db_block_size'
and 
   a.saddr = b.session_addr
and 
   a.paddr = c.addr
and 
   b.tablespace='TEMP' -- 需要收缩或者删除的临时表空间名称
order by 
   b.tablespace,
   b.segfile#,
   b.segblk#,
   b.blocks;

可以批量的结束临时表空间的占用。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值