ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORA-30496错误

ORA-30496错误

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

最近几天连着在PUB上看到两次这个错误了,这里记载一下。


错误发生在Oracle9201CURSOR_SHARING设置为SIMILAR时:

SQL> SELECT * FROM V$VERSION;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 -
Production PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production

SQL> SHOW PARAMETER CURSOR_SHARING

NAME TYPE VALUE
-------------------------- ---------------------- -----------------
cursor_sharing string SIMILAR
SQL> DESC T
名称 是否为空? 类型
--------------------------------------- -------- -----------------
ID CHAR(2)
NAME VARCHAR2(30)

SQL> ALTER TABLE T MODIFY (ID CHAR(4));
ALTER TABLE T MODIFY (ID CHAR(4))
*
1 行出现错误:
ORA-30496:
参数应该是常数。

解决错误的方法很简单,将CURSOR_SHARING设置为EXACT就可以了。

SQL> ALTER SESSION SET CURSOR_SHARING = EXACT;

会话已更改。

SQL> ALTER TABLE T MODIFY (ID CHAR(4));

表已更改。

问题很简单,解决也很容易。值得一提的是,Oracle的官方文档错误参考文档上没有包括30496错误号。在METALINK上查询,没有这个bug描述和具体解决方法,有人提过这个问题,但最终不了了之。

最后补充一句,如果先在EXACT设置下进行ALTER TABLE MODIFY的操作,可能将CURSOR_SHARING修改为SIMILAR后,仍然无法模拟出错误。这时通过刷新共享池就可以使这个错误出现。

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

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10385625