注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 伤离别,痛英年早逝,愿天..
 帮助

ORA-00980与PL/SQL程序编译出错


2008-01-24 23:19:21
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://miracle.blog.51cto.com/255044/60615
    今天碰到一个有意思的问题。
    为了降低统计分析数据库的计算和磁盘空间压力。我们使用了将远程数据库中数据通过DBLINK和SYNONYM的形式来缓解当前统计数据库所面临的问题。工作实施的比较顺利。但是统计人员发现有几个执行统计的PL/SQL过程和包(PACKAGE)失效。
    赶快查看失效的数据库对象,发现都是报ORA-00980
    看看出错原因:
   
Cause: The synonym used is based on a table, view, or synonym that no longer exists.

Action: Replace the synonym with the name of the object it references or re-create the synonym so that it refers to a valid table, view, or synonym.
   
    可是我的DBLINK和源数据库中没有出错的表、视图或者同义词呀。
    奇怪?
    再分析下源数据库中的这些对象,确实发现了一个问题:
    就是在目标数据库上创建SYNONYM的“基础”不是真正意义上的表、视图或者是SYNONYM。而是一些物化视图(MATERIALIZED VIEW)!
    赶快重新修改:
    试着按照一个物化视图(还好是简单的只读物化视图!)的规则新建一个SYNONYM,然后在目标数据库上利用该新建的SYNONYM为基础创建一个基于DBLINK的SYNONYM(这话说着确实比较绕嘴)。然后编译某个相关联的PL/SQL程序,编译通过。
    奇怪,这难道是ORACLE的一个BUG?
    探索中 -:)
  -------------------
  目标数据库:9.2.0.4
  源数据库:  10.2.0.1

  补:
  后来通过使用动态SQL的方法将无法编译的问题进行了解决。


本文出自 “Be the miracle!” 博客,请务必保留此出处http://miracle.blog.51cto.com/255044/60615





    文章评论
 
2008-01-25 10:00:02
哈哈 要是个BUG 就发到oracle去

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: