`
degree38
  • 浏览: 33508 次
  • 性别: Icon_minigender_2
  • 来自: 天津
社区版块
存档分类
最新评论

PLS-00123:程序太大【转】

阅读更多

PLS-00123:程序太大,是否是ORACLE潜伏多年的小BUG呢?

来源:http://zhang41082.itpub.net/post/7167/484069

 

     一哥们给我提了个问题,说一个PACKAGE,通过PL/SQL DEVELOPER进行编写和调试的,大概超过5000行左右,编译的时候会报错,报错的信息是“PLS-00123:程序太大”,才5000行就太大,ORACLE不至于这么弱吧?首先想到的就是PL/SQL DEVELOPER上有什么限制,把菜单栏=》TOOLS=>PERFERENCES中所有选项挖地三尺,没地方限制啊。GOOGLE了一下,解决的办法很简单:在TOOLS=>PERFERENCES=>ORACLE=>DEBUGGER=>ADD DEBUG INFORMAION WHEN COMPILING,在这个地方把这个勾取消,然后就可以编译通过了。那么下面来仔细看看这个东东是干啥的呢?


        在PL/SQL DEVELOPER的官方文档中这么描述的:
Add debug information when compiling.
When this option is enabled, each compilation in PL/SQL Developer will automatically add debug information, so that variable values can always be viewed and set during a debug session. If you disable this option, you can manually add debug information from the Browser.
        就是说,编译的时候是否添加调试信息进去,那调试信息又是干啥用的呢?

在ORACLE的官方文档(Application Developer's Guide - Fundamentals 10g Release 2 (10.2) B14251-01)有这么一段:
        To be able to either display and change private variables or breakpoint and execute code lines step by step, the debugging connection must be granted DEBUG privilege on the relevant code
In addition to these privilege requirements, the ability to stop on individual code lines and debugger access to variables are allowed only in code compiled with debug information generated. The PLSQL_DEBUG parameter and the DEBUG keyword on commands such as ALTER PACKAGE can be used to control whether the PL/SQL compiler includes debug information in its results. If it does not, variables will not be accessible, and neither stepping nor breakpoints will stop on code lines. The PL/SQL compiler will never generate debug information for code that has been obfuscated using the PL/SQL wrap utility.
        也就是说,这些DEBUG信息可以使得你调试的时候查看变量的值、步进调试、设置断点,如果你编译的时候不加这些选项,那么这些常用的调试功能是没办法使用的,而且这点在那哥们实验中也得到证实,编译是通过了,可是没办法调试,这不是要命啊!

那既然是太长了,限制是多少呢?为什么会有这样的问题呢?后来还是在ORACLE的文档(还是上面的文档)中,找到这么一句:
        PL/SQL Object Size Limitation
The size limitation for PL/SQL stored database objects such as procedures, functions,triggers, and packages is the size of the DIANA (Descriptive Intermediate Attributed Notation for Ada) code in the shared pool in bytes. The UNIX limit on the size of the flattened DIANA/pcode size is 64K but the limit may be 32K on desktop platforms.The most closely related number that a user can access is the PARSED_SIZE in thedata dictionary view USER_OBJECT_SIZE. That gives the size of the DIANA in bytes as stored in the SYS.IDL_xxx$ tables. This is not the size in the shared pool. The size of the DIANA part of PL/SQL code (used during compilation) is significantly larger in the shared pool than it is in the system table.

       这玩意看着也费劲,就看见了64K和32K俩数字,那5000行不至于啊。很多人都是说,因为添加了DEBUG信息后,整个程序的SIZE变大,超过了ORACLE的限制,所以有问题,那也不至于添加这么多的调试信息进去啊。

后来在PL/SQL DEVELOPER的官方网站上找到了下面的链接,说是ORACLE的一个BUG:
http://www.allroundautomations.com/threads/ubbthreads.php?ubb=showflat&Number=15426&Searchpage=1&Main=4213&Words=PLS-00123&Search=true#Post15426

        尝试在SQLPLUS中手工编译,不带DEBUG参数编译通过,带DEBUG参数,编译的时候报Warning: Package altered with compilation errors,真不知道ORACLE的那些内部的PACKAGE都是怎么编译调试的呢?

在METALINK上确实找到了这个BUG,709811,在98年的8.0.5版本中汇报的BUG,FIX的版本居然是11.1.0.2,这BUG居然跨越这么多版本,潜伏这么多年,也真不容易啊。


BTW:那哥们的数据库是10G的

分享到:
评论
1 楼 fengandfan 2012-11-10  
刚好遇到,受教了

相关推荐

    ORA-00904: "WM_CONCAT": 标识符无效

    在Oracle数据库中,"ORA-00904"是一个常见的错误代码,它表示尝试引用一个不存在或无效的标识符。在这个场景下,错误信息提到的是"WM_CONCAT"函数,这表明在Oracle 19c数据库环境中,用户尝试使用WM_CONCAT函数,但...

    11.zip_DA算法_matlab PLS-DA_pls_pls da_pls-da算法

    这是一个KNN算法和pls-da算法希望能够帮助您,不喜勿喷

    Oracle报存储过程中调用DBLink同义词出现错误:PLS-00201: 必须声明标识符

    前几天编写一个存储过程,需要访问远程数据库的字段,于是建立一个dbLink并建了同义词: CREATE PUBLIC DATABASE LINK orcl@dbc CONNECT TO orcl ...调用后发现提示:错误:PLS-00201: 必须声明标识符 ‘MTB.

    matlab中存档算法代码-pls-da:适用于MATLAB的硬PLS-DA和软PLS-DA的实现

    matlab中存档算法代码适用于MATLAB的硬PLS-DA和软PLS-DA的实现(v.0.9.4) 我们介绍的软件实现。 该工具箱提供了用于数据预处理以及分类模型的解释和可视化的工具。 主类PLSDAModel负责逻辑,并且包含这两种方法以及...

    PLS-K-60 激光测距模块 产品手册.pdf

    PLS-K-60激光测距模块是上海派欧机电设备有限公司研发的一款高精度测距设备,它具备了高测量精度、快速测量速度以及安装和操作简便的特性,广泛适用于家装测量、工业控制等众多领域。以下是对PLS-K-60激光测距模块的...

    PLC技术应用 源程序4-4-1:使用PLS指令实现步进电机控制.swf

    PLC技术应用 源程序4-4-1:使用PLS指令实现步进电机控制.swf 学习资料 复习资料 教学资源

    偏最小二乘路径建模 (PLS-PM)算法 的Python 3 实现

    plspm是一个 Python 3 包,专门用于偏最小二乘路径建模 (PLS-PM) 分析。它是 R 包 plspm 的一个端口,具有从 R 包 seminr采用的附加功能 PLSPM(偏最小二乘路径建模)是一种基于相关性的结构方程建模 (SEM) 算法。它...

    Oracle数据库操作常见错误及解决方案

    Oracle数据库在日常操作中可能会遇到各种错误,这些错误通常是由于资源不足、配置不当或系统问题导致的。本文将深入解析两个常见的Oracle错误及其解决方案:ORA-01650和ORA-01652,并提供相关的排查和解决策略。...

    PLS.rar_PLS-DA_pls_pls-svr_偏最小二乘_偏最小二乘 matlab

    PLS方法有多个变种,包括PLS回归(PLS Regression)、PLS判别分析(PLS-DA)和PLS支持向量机(PLS-SVR)。 PLS-DA是PLS的一个重要应用,全称是Partial Least Squares Discriminant Analysis,主要用于分类问题。它...

    基于stm32f4 PLS-K-60激光测量实验可读数版本.rar

    在本实验中,我们将深入探讨基于STM32F4微控制器的PLS-K-60激光测量技术。STM32F4系列是意法半导体(STMicroelectronics)推出的高性能、低功耗的ARM Cortex-M4内核微控制器,广泛应用于各种嵌入式系统设计,特别是...

    PLC技术应用 源程序4-4-3:使用PLS指令实现灯泡的亮度控制.pdf

    中断程序是在特定事件发生时暂停主程序执行,转而处理该事件的代码段。在这个例子中,中断可能是由定时器或计数器触发,每当达到预设条件时,就会改变PWM脉冲的宽度,进而调整灯泡亮度。例如,如果接收到一个增加...

    调试器PLS-UDE操作手册电子版

    "调试器PLS-UDE操作手册电子版" 本资源为PLS-UDE操作手册电子版,主要介绍了Universal Debug Engine(通用调试引擎)的使用和操作。该手册适用于C166、ST10、XC166、XE166、XC2000、TriCore、PowerPC、ARM、XScale...

    PLS-VIO.pdf

    鉴于这些挑战,提出了一种名为PLS-VIO(Stereo Vision-inertial Odometry Based on Point and Line Features)的双目视觉-惯性里程计系统,该系统结合了点和线特征,采用了紧耦合的前端点线特征跟踪和后端位姿优化双...

    PLC技术应用 源程序4-4-2:使用PLS指令产生脉宽变化的PWM信号.pdf

    PLC(可编程逻辑控制器)技术在工业自动化领域扮演着至关重要的角色...随着工业自动化水平的不断提高,对PLC程序设计人员的要求也越来越高,熟练运用PLS指令和其他高级功能,将有助于设计出更加高效、可靠的控制系统。

    基于PLS-SEM的互联网人群生存质量量表的信度效度评价.pdf

    本文是一篇关于通过偏最小二乘法结构方程模型(PLS-SEM)对互联网人群生存质量量表进行信度与效度评价的研究。信度和效度是衡量量表或测量工具质量的重要指标,信度关注的是测量的一致性和稳定性,效度则是关于测量...

    ORACLE8I数据库应用EXP工具时ORA-06553报错的解决方法.pdf

    ORACLE8I数据库应用EXP工具时ORA-06553报错的解决方法 摘要:本文主要解决ORACLE 8I数据库应用EXP工具时ORA-06553报错的问题,分析出现问题的原因,并提供了正确的解决方法和措施。 知识点1:Oracle 8I数据库EXP...

    MATLAB中PLS的原理及算法应用

    在MATLAB中,偏最小二乘法(Partial Least Squares, PLS)是一种广泛应用的数据分析技术,尤其在化学计量学、统计建模和机器学习领域。它结合了主成分分析(PCA)的思想与回归分析的方法,旨在寻找能够最大化变量间...

Global site tag (gtag.js) - Google Analytics