社区首页 >问答首页 >清除Clob oracle占用的内存

清除Clob oracle占用的内存
EN

Stack Overflow用户
提问于 2018-12-04 12:05:56
回答 3查看 1.4K关注 0票数 1

我在java应用程序中使用下面的oracle select查询。

代码语言:javascript
代码运行次数:0
复制
select a.xmlrecord.getClobVal() xmlrecord from tablename where ID like 'ABC%' order by ID

执行select查询后,我将使用以下代码检索输出&关闭结果集和finally块中的连接

代码语言:javascript
代码运行次数:0
复制
Reader reader = new BufferedReader(orset.getCharacterStream("xmlrecord"));

突然,我遇到了下面的错误,如下所示

代码语言:javascript
代码运行次数:0
复制
   java.sql.SQLException: ORA-04068: existing state of packages has been discarded 
   ORA-04030: out of process memory when trying to allocate 107112 bytes 

我已经和我的数据库管理员核实过了,他坚持说这个错误是由于JDBC代码正在对xmltype调用getclobVal(),并且没有检查它是否是临时lob,也没有代码显式地释放它。

对于方法末尾的Clob对象,有什么我们需要关闭的吗?请注意,我只是在我的查询中使用了clobval(),没有在其他地方使用,我也没有在代码中创建任何Clob/lob对象。

请提供您对上述错误的输入。

EN

回答 3

Stack Overflow用户

发布于 2018-12-10 10:50:34

getClobVal()是一个SQL函数,它将在服务器上实例化一个LOB对象,并将适当的LOB定位器返回给客户端。

即使LOB最初是使用语句持续时间创建的,将定位器返回给客户端的操作也会将LOB转换为会话持续时间对象。

您需要更改Java代码以执行以下操作:

代码语言:javascript
代码运行次数:0
复制
Clob xmlrecord = orset.getClob("xmlrecord"));
Reader reader = new BufferedReader(xmlrecord.getCharacterStream());

然后你可以执行..。

代码语言:javascript
代码运行次数:0
复制
  xmlrecord.free();

根据您正在使用的版本,Oracle JDBC可能会为您释放对象,而无需干预,但无论如何,您都应该对此进行编码。如果对象已经被释放,那么它就是一个no-op,否则它将被关闭,如果是临时LOB,将调用freeTemporary()来释放服务器上的资源。

12.2.0.1中错误修复23205826,特别是18.1中的错误修复26335028可能会有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2018-12-04 23:24:44

您能指定您正在使用的JDBC版本吗?另外,您是否在temp lob上使用free()方法?

票数 0
EN

Stack Overflow用户

发布于 2018-12-05 03:58:04

您说您正在提取100,000行,每行有3MB?这就是300 GB的结果集?啊呀。因为这不是PL/SQL,所以没有什么可以免费的。我的猜测是,Oracle正在构造一个太大的结果集,而您正在超出您的PGA。

如果只检索一行,这是否有效?您可能需要分批获取结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53612619

复制
相关文章
Linux在windows上共享目录
一、linux安装samba yum -y install samba 二、备份配置文件 cp /etc/samba/smb.conf /etc/samba/smb.conf.backup 三、添加访
静谧星空TEL
2021/04/27
4.4K0
Linux在windows上共享目录
在Windows系统上的Linux容器
ghplvh
2018/01/09
4.9K0
在 Linux or windows 上后台运行服务
  此时可以访问 http://ip:8000 验证服务是否成功启动了(详细操作见另一篇文章-Python 一行搭建文件服务器)
我是胖虎啊
2022/06/27
3.2K0
在 Linux or windows 上后台运行服务
在Windows上搭建Go开发环境
在Windows上搭建Go开发环境
乐百川
2018/01/09
1.5K0
在Windows上搭建Go开发环境
BML CodeLab重磅更新:在Windows上可原生Linux AI开发
自从微软发布 WSL2(Windows Subsystem for Linux 2)之后,机器学习开发者、数据科学家就可以在 Windows 上做原生 Linux 开发了。
用户1386409
2021/03/09
1.2K0
BML CodeLab重磅更新:在Windows上可原生Linux AI开发
Linux的GUI程序在Windows上使用
一,在linux机上安装xorg-x11-xauth 如果没装,启动GUI程序会提示Canno open display。 方法: yum install xorg-x11-xauth 二、打开linux服务器的sshd的X11转发功能: vi /etc/ssh/sshd_config 配置: X11Forwarding yes 三、在Windows客户端上安装X11 Server程序 Xming是运行于Windows下的X 服务器,下载Xming:http://sourceforge.net/pro
韩伟
2018/03/05
4.5K0
Linux的GUI程序在Windows上使用
快速在 Windows 上搭建 Jekyll 开发环境
发布于 2018-03-04 05:30 更新于 2018-08-12 06:50
walterlv
2018/09/18
1.1K0
快速在 Windows 上搭建 Jekyll 开发环境
在 Windows 上使用 Python 进行 web 开发
我们建议在生成 web 应用程序时在 WSL 上安装 Python。 Python web 开发的许多教程和说明都是针对 Linux 用户编写的, 并使用基于 Linux 的打包和安装工具。 大多数 web 应用还部署在 Linux 上, 因此, 这将确保你的开发环境与生产环境之间的一致性。
葡萄城控件
2019/08/03
6.9K0
Flutter在Windows上搭建Android开发环境
Flutter 是谷歌基于 Dart 语言开发的一款开源、 免费、跨平台的移动端UI 框架,可以让我们快速的在 Android 和iOS 上构建高质量 App,它最大的特点就是跨平台、 以及高性能。
越陌度阡
2020/12/16
1.5K0
Flutter在Windows上搭建Android开发环境
windows上开发linux程序完美环境搭建
然后启动安装centos即可,注意安装过程中,需要把网络配置固定IP,避免每次启动虚拟机IP飘走。
mingjie
2022/05/12
2.2K0
windows上开发linux程序完美环境搭建
怎样在Linux上开发vue项目
将node.js的node可执行可执行文件与npm链接所在目录添加到环境变量,在文件/etc/profile文件末尾添加以下内容
极客开发者
2022/01/18
2.1K0
怎样在Linux上开发vue项目
WampServer – 在 Windows 上轻松搭建 PHP 开发环境
WampServer 是一个 Windows 上的 Apache + PHP + MySQL 开发环境。作为一名 WordPress 主题开发者,我一直使用 WampServer 搭建本地 PHP 开发环境。 WampServer 的安装流程十分简单,一路 Next 就行。
慕白
2018/08/03
1.3K0
WampServer – 在 Windows 上轻松搭建 PHP 开发环境
Linux上搭建Git服务,客户端在Windows
服务器 CentOS Linux release 7.4.1708 (Core) + git(version 1.8.3.1) 客户端 Windows7 + git(Git-2.9.3.2-64-bit.exe)
飞狗
2018/12/18
3K0
如何使用Homebrew在Linux和Windows上安装软件
长期以来,Homebrew软件一直是Mac用户的便捷工具,但仅适用于Mac用户。 该应用程序增加了Linux风格的软件包管理,使用户可以轻松安装命令行实用程序。 现在,在2.0.0及更高版本中,该应用程序不再是Mac专有的。
用户8704998
2021/06/08
3.8K0
在Windows 10上安装TensorFlow及PyCharm开发环境[通俗易懂]
有时候在查看官方文档时,常常看到很多的分支,所以作为开发者我们都喜欢把最佳实践总结出来。下面一起来看看如何在Windows 10上安装一个TensorFlow和PyCharm开发环境。
全栈程序员站长
2022/09/27
1.6K0
在Windows 10上安装TensorFlow及PyCharm开发环境[通俗易懂]
在 Windows 上安装 Composer
(2) 选中PHP安装目录下的php.exe,PHP的安装路径在环境变量 Path 中,则会自动选中,否则需要手动选中
很酷的站长
2023/02/17
2.1K0
在 Windows 上安装 Composer
MongoDB - 在Windows上安装
1 下载MongoDB社区版, 下载链接 http://www.mongodb.org/downloads?_ga=1.129742796.1997610832.1481940266 2 安装Mong
我思故我在
2018/05/11
2.3K0
在Windows上安装Jenkins
apache-tomcat/bin目录下的startup.bat在windows上启动。
清菡
2020/12/02
2.4K0
在Windows上安装Jenkins
在 Windows 玩 Linux!
之前了解过一些适用于linux的Windows子系统,最近又听人提起,于是在自己的Windows 10专业版上安装了一个Ubuntu。运行起来还真方便,以后在windows上开发Linux程序就不需要安装桌面虚拟化应用了。下面讲下具体的步骤。
Rookie
2020/04/23
4.2K0
在 Windows 玩 Linux!
怒删虚拟机,FPGA开发新宠-几步在Windows上安装桌面化Linux
Linux上运行Vivado这类EDA工具要比Window上快很多,大概就是优化的问题,所以选择Linux上开发是一个比较好的选择(主要是免费)。国内习惯了Win系统,所以用Linux比较少,那么有没有既可以在Windows上做一些文档之类的编写办公,同时在Linux上做FPGA开发呢?
碎碎思
2023/02/14
2.1K0
怒删虚拟机,FPGA开发新宠-几步在Windows上安装桌面化Linux

相似问题

如何在gatling模拟中运行多个空手道特征文件?

126

如何在Python中将参数传递给类?

11

如何在Gatling脚本中将变量传递给.get方法

10

如何在laravel中将数组传递给特征?

16

如何在Gatling中将地图列表传递给pebble模板?

26
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文