ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORA-600(923)错误

ORA-600(923)错误

原创 Linux操作系统 作者:yangtingkun 时间:2007-08-30 00:00:00 0 删除 编辑

今天在调用DBMS_UTILITY包的GET_PARAMETER_VALUE过程时出现了ORA-600错误。


由于测试的用户没有查看V$PARAMETER视图的权限,因此通过DBMS_UTILITY包来获取相应的初始化参数信息,但是执行下面的语句报错:

SQL> DECLARE
2 V_NUMBER NUMBER;
3 V_STR VARCHAR2(4000);
4 V_RES NUMBER;
5 BEGIN
6 V_RES := DBMS_UTILITY.GET_PARAMETER_VALUE('DB_BLOCK_SIZE', V_NUMBER, V_STR);
7 DBMS_OUTPUT.PUT_LINE(V_NUMBER);
8 END;
9 /
DECLARE
*
ERROR at line 1:
ORA-20000: get_parameter_value: invalid or unsupported parameter "DB_BLOCK_SIZE"
ORA-00600: internal error code, arguments: [923], [DB_BLOCK_SIZE], [], [], [], [], [], []
ORA-06512: at "SYS.DBMS_UTILITY", line 104
ORA-06512: at line 6

如果输入参数名称改为小写则不会报错:

SQL> SET SERVEROUT ON
SQL> DECLARE
2 V_NUMBER NUMBER;
3 V_STR VARCHAR2(4000);
4 V_RES NUMBER;
5 BEGIN
6 V_RES := DBMS_UTILITY.GET_PARAMETER_VALUE('db_block_size', V_NUMBER, V_STR);
7 DBMS_OUTPUT.PUT_LINE(V_NUMBER);
8 END;
9 /
8192

PL/SQL procedure successfully completed.

查询了一下metalink,发现果然是参数大小写的问题,导致了Oracle在处理过程中抛出异常。

Bug No. 3091998中有详细的描述,这个bug10.1.0.2中被fixed

SQL> SET SERVEROUT ON
SQL> DECLARE
2 V_NUMBER NUMBER;
3 V_STR VARCHAR2(4000);
4 V_RES NUMBER;
5 BEGIN
6 V_RES := DBMS_UTILITY.GET_PARAMETER_VALUE('DB_BLOCK_SIZE', V_NUMBER, V_STR);
7 DBMS_OUTPUT.PUT_LINE(V_NUMBER);
8 END;
9 /
16384

PL/SQL 过程已成功完成。

SQL> SELECT * FROM V$VERSION;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-69406/,如需转载,请注明出处,否则将追究法律责任。

下一篇: ORA-24170错误
请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10486011