- 最后登录
- 2017-5-4
- 在线时间
- 81 小时
- 威望
- 999
- 金钱
- 2391
- 注册时间
- 2013-9-11
- 阅读权限
- 150
- 帖子
- 1124
- 精华
- 5
- 积分
- 999
- UID
- 1220
|
1#
发表于 2017-4-16 15:03:46
|
查看: 1871 |
回复: 0
在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用户的数据跟原来的不一样,我想这些数据都是数据库实例的控制数据,不知道这样做会有什么后遗症,
|
|