ORA-900错误

一个客户碰到ORA-900错误。

 

 

ORA-900: invalid SQL statement.这个错误比较奇怪,从错误信息上看似乎比较无害,但是事实却并非如此。

如果是在PL/SQL中执行动态SQL,而SQL语法出现错误,则这种错误确实没有什么危害,比如:

SQL> begin
  2  execute immediate 'abde';
  3  end;
  4  /
begin
*
ERROR at line 1:
ORA-00900: invalid SQL statement
ORA-06512: at line 2

还有一种情况,就不那么简单了,如果为了修改数据库的NLS_CHARACTERSET而手工修改了SYS.PROPS$表,且修改的值出现错误并不符合任何一个存在的NLS_CHARACTERSET的值,那么重启数据库时就会出现这个ORA-900错误。

这时出现的ORA-900错误就是致命的,数据库将无法打开。而且很可能即使存在备份也无济于事,因为如果数据库很长时间没有重启,那么可能所有的可用备份都是修改PROPS$表之后的。即使存在修改PROPS$之前的备份,也会导致所有修改PROPS$语句后的数据库修改丢失。

客户很不幸就是第二种情况,在一次机房掉电的故障后,数据库无法启动,报错ORA-900。虽然无法确定客户数据库的问题是由于PROPS$被错误修改导致的,还是由于掉电所导致的,但是可以确定的是,这个数据库采用常规手段是无法恢复的。

数据库症状如下,启动到NOMOUNT状态后,可以执行SQLSQLPLUS命令,但是只要启动到MOUNT状态,所有的SQL语句,以及一些操作数据库的SQLPLUS命令,都会以ORA-900错误结束。

最终利用老熊的ODU进行了数据的恢复。当然Oracledul也可以完成同样的操作,但是限制相对比较多。

 

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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值