oracle nclob占用空间,Oracle clob占用临时表空间不释放的解决方案

如果自定义函数返回clob,在使用tomcat,weblogic这样中间件,都有连接池,使用的都是长连接,非常有可能导致Clob字段占用临时表空间不放,要加一句clob.free();

import java.sql.Clob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class TestReadBlob{ Connection con = null; PreparedStatement pre = null; ResultSet result = null; public void runTest() { try{ Class.forName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@11.11.5.54:1521:lcdb"; String user = "test"; String password = "test"; con = DriverManager.getConnection(url, user, password); String sql = "select funcId,en_clob_concat(distinct role_id) otherPostName "+ " from ROLE_RESOURCE where rownum <39490 group by resource_id"; pre = con.prepareStatement(sql); result = pre.executeQuery(); Clob clob ; while (result.next()){ System.out.println( result.getString("funcId")); clob =result.getClob("otherPostName"); clob.free(); } System.out.println("程序暂停开始"); Thread.sleep(20000); } catch (Exception e) { e.printStackTrace(); }//这里没有写finally就是模拟weblogic长连接不关闭连接的情况 } public static void main(String[] args) { TestReadBlob testReadBlob = new TestReadBlob(); testReadBlob.runTest(); } }

select s.BLOCKS * 8 / 1024 / 1024, s.* from v$tempseg_usage s where username = 'LCAM_SYS' --and s.SESSION_ADDR='0000001381EA0408' order by s.BLOCKS desc;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值