调试存储过程时提示ORA-20000: ORU-10027: buffer overflow
下午的时候在 PL/SQl Developer 10.0.5.1710 上调试壹個存储过程,在调试的时候使用了比较多的 DBMS_OUTPUT.PUT_LINE 作为打印日志的方式,结果没过多久 PLSQL 客户端就开始提示如下错误:ORA-20000: ORU-10027: buffer overflow, limit of 10000 bytes,分析下来是因为函数DBMS_OUTPUT.PUT_LINE()是在循环体中打印结果的,因此,循环执行多少次,这個函数就会执行多少次, 导致缓冲区很快爆满。具体的错误信息如下图所示。

于是果断 Google 了关键字"ORA-20000: ORU-10027: buffer overflow, limit of 10000 bytes",查询结果的前两条就是来自 Oracle Forum 论坛的解决方法。两個链接分别是https://community.oracle.com/message/977489 和 https://community.oracle.com/thread/308557 ,解决的方法也很简单,就是在我们的存储过程的方法体开始的时候增加如下内容:DBMS_OUTPUT.ENABLE(1000000); 使输出的缓冲区的容量达到壹千万個字节,这样就不怕它的容量爆表了。具体的参考代码如下所示:
CREATE OR REPLACE PROCEDURE SAMPLE_PROC
IS
--各种临时变量和游标的定义
CURSOR CURSOR_SAMPLE IS SELECT ... FROM TABLE_NAME WHERE ...;
BEGIN
--方法体从这里开始
DBMS_OUTPUT.ENABLE(1000000);
FOR I IN CURSOR_SAMPLE LOOP
--输出语句样例
DBMS_OUTPUT.PUT_LINE(...);
END LOOP;
--其它内容
END;
/
如果是在命令行下编写存储过程,可以直接使用语句 SET SERVEROUTPUT ON size '1000000'; 来设置缓冲区的最大容量。
当然,如果你需要输出的日志容量真的很大,建议还是不要使用 DBMS_OUTPUT,而是使用 UTL_FILE 输出到指定的日志文件,详细的参考样例见于
http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/u_file.htm#ARPLS70903 ,后者基于 UNIX 系统,不过也可以很容易的照搬到 Windows 平台。
调试存储过程时提示ORA-20000: ORU-10027: buffer overflow的更多相关文章
- LINUX下IDEA等工具调试项目时提示:Unable to open debugger port
在Ubuntu下调试项目时使用TOMCAT容器,在设置好相应的TOMCAT LOCAL 路径及相关信息后,点击调试项目出现: Unable to open debugger port : java.n ...
- firebug调试js时提示调试器未激活处理办法
firebug是web开发中最常用的分析调试软件,不过我今天使用在调试百度在线编辑器UEditor时一直提示调试器未激活. 从使用经验来看不应该啊,我都下了断点了为什么会提示调试器未激活呢!多次载入网 ...
- 使用HBuilder编辑器进行真机调试运行时提示Waiting for debugger!
在使用HBuilder编辑器创建mui项目进行真机调试的时候,手机总是提示Waiting for debugger! 现在终于找到了解决办法: 手机 设置 -> 开发人员选项 -> USB ...
- otl使用存储过程或是LEFT JOIN时提示输出类型未知的问题
otl_stream的构造函数或成员函数open的第四个参数const int implicit_select 默认是otl_explicit_select.当使用存储过程时,必须指定为otl_imp ...
- SQL SERVER使用ODBC 驱动建立的链接服务器调用存储过程时参数不能为NULL值
我们知道SQL SERVER建立链接服务器(Linked Server)可以选择的驱动程序非常多,最近发现使用ODBC 的 Microsoft OLE DB 驱动程序建立的链接服务器(Linked S ...
- 【转】Win7 64bit Oracle 11g 使用PL/SQL Developer 连接时提示“SQL*Net not properly installed”
转载:http://www.cnblogs.com/xihuaodc/p/3189257.html 因为之前的Oracle不能用了,所以重新安装了64位的Oracle,安装一路正常 完了之后安装了P ...
- 在Ubuntu 12.04 - 64bit中安装CodeSourcery时提示错误
安装时提示错误,Your 64-bit Linux host is missing the 32-bit libraries requied to install and use Sourcery C ...
- 启动Oracle时提示:ORA-01078:failure in processing system parameters
一.使用环境操作系统:CentOS release 6.2 (Final) 数据库:Oracle 12g数据库主目录:/ora12/product/product/12.1.0/db_1 二.问题描述 ...
- 使用IDEA进行Lua代码调试、自动提示、代码跳转、智能重命名
试了几个Lua IDE后,Lua Studio.Lua Glider.VS+babelua插件.Sublime都不是特别满意.直到发现了国人自创的另一个神奇工具:基于IDEA的EmmyLua插件.该插 ...
随机推荐
- 游戏开场镜头拉近(Unity3D开发之四)
猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/? p=553 今天看了个Demo.发现 ...
- C#Base64加密
using System;using System.Collections.Generic;using System.Text;using System.Security.Cryptography;u ...
- log4j.xml配置示例
这是log4j1.x版本讲解,log4j-1.2.16.jar 1. 一般的log4j.xml的两种配置方式: 1.Logger 完成日志信息的处理定义输出的层次和决定信息是否输出DEBUG&l ...
- UITextField键盘类型
UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //初始化textfield并 ...
- STL模板_容器概念
一.STL(Standard Template Library,标准模板库)概述1.容器:基于泛型的数据结构.2.算法:基于泛型的常用算法.3.迭代器:以泛型的方式访问容器中的元素,是泛型的算法可以应 ...
- csapp lab3 bufbomb 缓存区溢出攻击 《深入理解计算机系统》
这个实验主要是熟悉栈,和了解数据缓存区溢出的问题. 数据缓存区溢出:程序每次调用函数时,会把当前的eip指针保存在栈里面,作为被调用函数返回时的程序指针.在被调用程序里面,栈是向下增长的.所有局部变量 ...
- BZOJ 1297: [SCOI2009]迷路( dp + 矩阵快速幂 )
递推式很明显...但是要做矩阵乘法就得拆点..我一开始很脑残地对于每一条权值v>1的边都新建v-1个节点去转移...然后就TLE了...把每个点拆成9个就可以了...时间复杂度O((9N)^3* ...
- php mysql 数据库写入与读取取文件
近期的项目由于特殊原因,需要将文件存到数据库中.今天特地测试,首先在php网站上传文件,将文件读取出来——再存入到MySQL数据库中. 一.首先创建php 代码如下(网上找了段代码进行过修改):源代码 ...
- MapReuce 编程总结-多MapReduce执行
学习hadoop,必不可少的就是写MapReduce程序,当然,对于简单的分析程序,我们只需一个MapReduce就能搞定,这里就不提单MapReuce的情况了,网上例子很多,大家可以百度Google ...
- java核心技术学习笔记之一程序设计概述
Java 核心技术之一程序设计概述 一. Java语言的特点 简单行 :取经于C++,排除了C++不常用的指针.结构等,增加垃圾回收. 面向对象:与C++不同是单继承,但是可以继承多接口.完全面向 ...