ITPub博客

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

ORA-900错误

原创 Linux操作系统 作者:yangtingkun 时间:2011-02-11 20:55:25 0 删除 编辑

一个客户碰到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/,如需转载,请注明出处,否则将追究法律责任。

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

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10524562