LOB导致临时表空间不释放

数据库版本11204RAC

执行占用temp表空间sql,发现执行sql后temp表空间不释放

SQL> select TABLESPACE_NAME,TABLESPACE_SIZE/1024/1024 ,FREE_SPACE/1024/1024 from dba_temp_free_space;

TABLESPACE_NAME                TABLESPACE_SIZE/1024/1024 FREE_SPACE/1024/1024
------------------------------ ------------------------- --------------------
TEMP                                                  50                   49


SQL> select wm_concat(id) from test;

WM_CONCAT(ID)
--------------------------------------------------------------------------------
20,46,28,15,29,3,25,41,54,40,26,17,13,9,43,51,38,7,56,19,14,6,44,21,45,35,5,23,4

 

SQL> select TABLESPACE_NAME,TABLESPACE_SIZE/1024/1024 ,FREE_SPACE/1024/1024 from dba_temp_free_space;

TABLESPACE_NAME                TABLESPACE_SIZE/1024/1024 FREE_SPACE/1024/1024
------------------------------ ------------------------- --------------------
TEMP                                                  50                    4


SQL>  select distinct(sid) from v$mystat;

       SID
----------
        69

查看执行sql的,发现是占用temp表空间数据类型为LOB_DATA

SQL>  select b.inst_id,a.sid,b.ktssosno serial#,b.ktssosqlid sql_id,b.ktssoblks*8/1024 mb,c.sql_text,d.tablespace,d.segtype from v$session a,x$ktsso b,v$sql c,v$sort_usage d where b.ktssoses=a.saddr and b.ktssosno=a.serial# and b.ktssosqlid=c.sql_id and d.session_addr=b.ktssoses and b.ktssosno=d.session_num;

   INST_ID        SID    SERIAL# SQL_ID                MB SQL_TEXT                       TABLESPACE                      SEGTYPE
---------- ---------- ---------- ------------- ---------- ------------------------------ ------------------------------- ---------
         1         69          7 63mbdmx49z7a5         45 select wm_concat(id) from test TEMP                            LOB_DATA

wm_concat() 函数在10g返回varchar 类型,在11g时返回clob类型,建议用listagg()替换wm_concat()。

解决方案

1、强制中断会话

SQL> select TABLESPACE_NAME,TABLESPACE_SIZE/1024/1024 ,FREE_SPACE/1024/1024 from dba_temp_free_space;

TABLESPACE_NAME                TABLESPACE_SIZE/1024/1024 FREE_SPACE/1024/1024
------------------------------ ------------------------- --------------------
TEMP                                                  50                    4

 

SQL>  select b.inst_id,a.sid,b.ktssosno serial#,b.ktssosqlid sql_id,b.ktssoblks*8/1024 mb,c.sql_text,d.tablespace,d.segtype from v$session a,x$ktsso b,v$sql c,v$sort_usage d where b.ktssoses=a.saddr and b.ktssosno=a.serial# and b.ktssosqlid=c.sql_id and d.session_addr=b.ktssoses and b.ktssosno=d.session_num;

   INST_ID        SID    SERIAL# SQL_ID                MB SQL_TEXT                       TABLESPACE                      SEGTYPE
---------- ---------- ---------- ------------- ---------- ------------------------------ ------------------------------- ---------
         1         69          7 63mbdmx49z7a5         45 select wm_concat(id) from test TEMP                            LOB_DATA

 

SQL>  alter system disconnect session '69,7' immediate;

System altered.

 

SQL>  select TABLESPACE_NAME,TABLESPACE_SIZE/1024/1024 ,FREE_SPACE/1024/1024 from dba_temp_free_space;

TABLESPACE_NAME                TABLESPACE_SIZE/1024/1024 FREE_SPACE/1024/1024
------------------------------ ------------------------- --------------------
TEMP                                                  50                   49

2、在执行语句之前设置session级别60025事件

SQL> select TABLESPACE_NAME,TABLESPACE_SIZE/1024/1024 ,FREE_SPACE/1024/1024 from dba_temp_free_space;

TABLESPACE_NAME                TABLESPACE_SIZE/1024/1024 FREE_SPACE/1024/1024
------------------------------ ------------------------- --------------------
TEMP                                                  50                   49

 

SQL> alter session set events '60025 trace name context forever';

Session altered.

 

SQL>  select wm_concat(id) from test;

WM_CONCAT(ID)
--------------------------------------------------------------------------------
20,46,28,15,29,3,25,41,54,40,26,17,13,9,43,51,38,7,56,19,14,6,44,21,45,35,5,23,4

 

SQL> select TABLESPACE_NAME,TABLESPACE_SIZE/1024/1024 ,FREE_SPACE/1024/1024 from dba_temp_free_space;

TABLESPACE_NAME                TABLESPACE_SIZE/1024/1024 FREE_SPACE/1024/1024
------------------------------ ------------------------- --------------------
TEMP                                                  50                   49

3 、使用DBMS_LOB.FREETEMPORARY

未做测试。

参考文档

How to Release the Temp LOB Space and Avoid Hitting ORA-1652 (文档 ID 802897.1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值