ALLSTARS_ORACLE 发表于 2017-4-16 15:03:46

求救!不小心把SYS用户的视图删除了,通过catalog.sql恢复后...

在PL/SQL中用SYS用户登录,不小心把所有的视图都删除了,通过admin目录下的catalog.sql恢复后,执行查询语句的时候还是报错:ORA-04045:在重新编译/重新验证SYS.DBMS_OUTPUT时出错!
    在PL/SQL中查看该package没有编译错误,但是执行重新编译的时候却提示表或视图不存在,
    请问这是什么原因呀,请知道的一定帮帮我,哪怕帮我出出注意也好,我先谢谢大家了!!!

我刚才没有按migrate方式启动--没看到帖子,:),执行catalog.sql之后执行了catproc.sql,现在还没有执行完,快20分钟了,而且执行过程中出了很多的错误,如:表名称被占用、表或视图不存在、递归sql层1出现错误、XDB.***,不知道是什么原因,正常吗?


重跑了一次,发现一个新问题,原来不单只删除了视图,还删除了一些表,就是在PL/SQL中选中所有的表,然后DROP,因此除了系统提示不能删除的表外,其他的表都被删除了,如一些V$**表都被删除了,如果这样的话,该怎么办,能通过回闪功能把表找回来吗?

在执行上面两个文件时,报的错误有这么些:

CREATE OR REPLACE VIEW exu81approle (
                role, schema, package) AS
        SELECT  u$.name, r$.schema, r$.package
        FROM    sys.user$ u$, sys.approle$ r$
        WHERE   u$.user# = r$.role#

ORA-00942: 表或视图不存在


ORA-04045: 在重新编译/重新验证 SYS.UTL_RAW 时出错
ORA-00942: 表或视图不存在


CREATE OR REPLACE VIEW exu9cclu AS
        SELECT  *
        FROM    sys.exu9ccl
        WHERE   UID = ownerid

ORA-00942: 表或视图不存在

drop table system.logstdby$skip_transaction

ORA-00604: 递归 SQL 层 1 出现错误
ORA-00942: 表或视图不存在


BEGIN
   dbms_registry.loaded('CATALOG',dbms_registry.release_version,
                'Oracle9i Catalog Views Release ' ||
                 dbms_registry.release_version   ||
                ' - ' || dbms_registry.release_status);
   dbms_registry_sys.validate_catalog;
END;

ORA-04045: 在重新编译/重新验证 SYS.DBMS_STANDARD 时出错
ORA-00942: 表或视图不存在

....

刚刚换了种方法,就是把另外一个库的sys用户对象的视图和表结构重建现在这个出问题ORACLE实例的SYS用户,现在业务系统可以用了,但是我不知道这样做会有什么后果,
      跑过了,上贴中的错误就是在跑SQL脚本时抛出的错误,我根据错误发现表也被删除了,如果不把表找回来,跑完CATALOG.SQL和CATPROC.SQL也无济于事,因此我才把另外一个实例的SYS表结构和视图重建出错的这个ORACLE实例,然后再跑了一次上面两个脚本文件


  现在我担心的是,虽然数据库可以正常使用了,但是SYS用户的数据跟原来的不一样,我想这些数据都是数据库实例的控制数据,不知道这样做会有什么后遗症,


页: [1]
查看完整版本: 求救!不小心把SYS用户的视图删除了,通过catalog.sql恢复后...