ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【SYNONYM】使用同名时导致ORA-00980报错原因

【SYNONYM】使用同名时导致ORA-00980报错原因

原创 Linux操作系统 作者:secooler 时间:2011-02-24 22:53:25 0 删除 编辑
为便于理解ORA-00980报错的原因,我们通过几种方式来再现这个报错。

1.全新创建sec1和sec2用户用于演示
create user sec1 identified by sec1 default tablespace tbs_sec_d;
grant dba to sec1;
create user sec2 identified by sec2 default tablespace tbs_sec_d;
grant dba to sec2;

2.在目标不存在的情况下同名创建是可以成功的
sec@ora10g> conn sec1/sec1
Connected.
sec1@ora10g> create synonym syn_t for sec2.t;

Synonym created.

注意,此时全新用户sec2中是不存在T这张表的,但是sec1用户下可以完成同名的创建。
但是此时该同名是不可以使用的。

3.此时查询同名便会抛出ORA-00980错误
sec1@ora10g> select * from syn_t;
select * from syn_t
              *
ERROR at line 1:
ORA-00980: synonym translation is no longer valid

4.验证错误是否得到解决
sec1@ora10g> conn sec2/sec2
Connected.

sec2@ora10g> create table t (x varchar2(10));

Table created.

OK,在目标对象存在的情况下,问题得到解决。

5.当目标表名发生变化时问题重现
sec1@ora10g> conn sec2/sec2
Connected.
sec2@ora10g> alter table t rename to t1;

Table altered.

sec2@ora10g> conn sec1/sec1
Connected.
sec1@ora10g> select * from syn_t;
select * from syn_t
              *
ERROR at line 1:
ORA-00980: synonym translation is no longer valid

这也是显然的。总之,当同名指向的目标对象不存在的时,查询同名是便会抛出ORA-00980错误。

6.有关ORA-00980报错信息的原因和处理方法参考如下
Error:  ORA 980
Text:   synonym translation is no longer valid
-------------------------------------------------------------------------------
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.

7.小结
使用同名时导致ORA-00980报错原因基本上是由于同名指向的目标对象不存在的时发生的。
在知道问题原因后,问题处理将会是比较顺畅的。

Good luck.

secooler
11.02.24

-- The End --

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/519536/viewspace-687959/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE 总监,阿里云MVP,北京大学理学硕士,恩墨学院创始人,教育专家,中国区 Cloudera 首位官方授权大数据讲师,金牌培训专家,BDA大数据联盟创始人,OCM联盟创始人,ACCUG创始人、ACOUG核心专家,Blogger。

注册时间:2008-03-16

  • 博文量
    797
  • 访问量
    8189269