ORA-30496错误

最近几天连着在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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/4227/viewspace-69134/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值