li
  当前位置:主页 > 性能优化 > 文章内容
li
ORA-600(999)错误(三)
来源: http://yangtingkun.itpub.net/  作者: yangtingkun    时间:2008-01-26   阅读:9  

今天后台出现了很多ORA-600,其中第一个错误参数为999

这个问题在METALINK上没有找到类似的说明。

这篇进一步深入研究数据库中缺少了哪些信息造成了这个问题。

关于错误问题产生的原因参考:ORA-600(999)错误(一):http://yangtingkun.itpub.net/post/468/281181

错误原因的进一步分析:ORA-600(999)错误(二):http://yangtingkun.itpub.net/post/468/281592


上一篇文章已经详细分析了问题产生的原因,本来认为这个问题已经没有可说的了,结果今天在处理后续问题的时候,发现了其他的有趣现象。

回顾一下问题,由于确实了表上的物化视图信息,导致物化视图的基表可以修改名称,进而导致物化视图刷新的过程中无法找到基表,因此出现ORA-600错误。

今天发现,虽然物化视图找不到基本无法刷新,但是物化视图可以删除,而且删除后改名的基表不受影响。

SQL> drop materialized view usr_user;

Materialized view dropped.

SQL> SELECT MVIEW_NAME, CONTAINER_NAME FROM USER_MVIEWS WHERE MVIEW_NAME LIKE 'USR%';

MVIEW_NAME CONTAINER_NAME
------------------------------ ------------------------------
USR_ROLE USR_ROLE
USR_USER_ROLE USR_USER_ROLE

SQL> SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME LIKE 'USR%';

TABLE_NAME
------------------------------
USR_ROLE_BAK_20070403
USR_USER_BAK_20070403
USR_USER_ROLE_BAK_20070403

下面将修改名称的表恢复,看看再删除物化视图的时候是否会删除基表:

SQL> SELECT MVIEW_NAME, CONTAINER_NAME FROM USER_MVIEWS WHERE MVIEW_NAME LIKE 'USR%';

MVIEW_NAME CONTAINER_NAME
------------------------------ ------------------------------
USR_ROLE USR_ROLE
USR_USER_ROLE USR_USER_ROLE

SQL> SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME LIKE 'USR%';

TABLE_NAME
------------------------------
USR_ROLE_BAK_20070403
USR_USER_BAK_20070403
USR_USER_ROLE_BAK_20070403

SQL> ALTER TABLE USR_ROLE_BAK_20070403 RENAME TO USR_ROLE;

Table altered.

SQL> DROP MATERIALIZED VIEW USR_ROLE;

Materialized view dropped.

www.ixdba.net


SQL> SELECT MVIEW_NAME, CONTAINER_NAME FROM USER_MVIEWS WHERE MVIEW_NAME LIKE 'USR%';

MVIEW_NAME CONTAINER_NAME
------------------------------ ------------------------------
USR_USER_ROLE USR_USER_ROLE

SQL> SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME LIKE 'USR%';

TABLE_NAME
------------------------------
USR_USER_BAK_20070403
USR_USER_ROLE_BAK_20070403

从上面的结果可以看到,如果基表存在的话,Oracle会将其一起删除,而对于无法找到基表的情况,Oracle只删除了物化视图,而并未报错。

最后验证一下将表名恢复,物化视图的刷新是否恢复正常:

SQL> ALTER TABLE USR_USER_ROLE_BAK_20070403 RENAME TO USR_USER_ROLE;

Table altered.

SQL> EXEC DBMS_MVIEW.REFRESH('USR_USER_ROLE')

PL/SQL procedure successfully completed.

对于普通的物化视图的基表是无法直接删除的,但是根据上一篇文章分析的结果,这里肯定也是可以直接删除的。

SQL> DROP TABLE USR_USER_ROLE;

Table dropped.

SQL> DROP MATERIALIZED VIEW USR_USER_ROLE;

Materialized view dropped.

数据字典的不完整也许在短时间内没有什么体现,但是肯定会为系统埋下陷阱。这个例子就是一个很好的证明。




  上一篇: 物化视图刷新过程中出现的约束冲...   下一篇: 建立物化视图导致数据库实例崩溃
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·物化视图刷新过程中出现的约束冲...
·ORA-600(999)错误(二)
·GLOBAL_NAME相同的数据库中物化视...
·GLOBAL_NAME相同的数据库中物化视...
·物化视图复制快速刷新的限制(二...
·物化视图是否根据字段进行刷新(...
·物化视图是否根据字段进行刷新(...
·物化视图是否根据字段进行刷新(...
·在包含LONG类型的表上建立物化视...
·物化视图注册信息的清除
·建立物化视图导致数据库实例崩溃
·小议物化视图与基表数据不一致的...
·物化视图的创建写法与刷新问题
·10203设置CURSOR_SHARING为SIMIL...
·小议物化视图与基表数据不一致的...
·包含复制环境的数据库迁移(二)
·包含复制环境的数据库迁移(一)
·inode耗尽导致No space left on ...
·在Oracle10g RAC下新增ASM磁盘组
·oracle RAC环境中系统时钟的调整
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接