实验来给大家展示一种常见的导致“ORA-00980” 错误发生的情况,然后给出一些其他可能导致这个错误发生的原因,最后给出一个可以自动化获得删除所有无效同名的
SQL
脚 本。
一、先来模拟一下这个“ORA-00980: synonym translation is no longer valid”错误。
1.在 secooler用户中创建一张表t
secooler@ora10g> create table t (x number);
Table created.
secooler@ora10g> insert into t values (1);
1 row created.
secooler@ora10g> commit;
Commit complete.
2.切换到sec用户,创建同名syn_t引用secooler用户下的t表
secooler@ora10g> conn sec/sec
Connected.
sec@ora10g> create synonym syn_t for secooler.t;
Synonym created.
sec@ora10g> select * from syn_t;
X
----------
1
3.回到secooler用户中将表t删除 掉
sec@ora10g> conn secooler/secooler
Connected.
secooler@ora10g> drop table t purge;
Table dropped.
4.此时,我们再次使用同名syn_t查看表t时就会见到这个“ORA- 00980”错误了
一、先来模拟一下这个“ORA-00980: synonym translation is no longer valid”错误。
1.在 secooler用户中创建一张表t
secooler@ora10g> create table t (x number);
Table created.
secooler@ora10g> insert into t values (1);
1 row created.
secooler@ora10g> commit;
Commit complete.
2.切换到sec用户,创建同名syn_t引用secooler用户下的t表
secooler@ora10g> conn sec/sec
Connected.
sec@ora10g> create synonym syn_t for secooler.t;
Synonym created.
sec@ora10g> select * from syn_t;
X
----------
1
3.回到secooler用户中将表t删除 掉
sec@ora10g> conn secooler/secooler
Connected.
secooler@ora10g> drop table t purge;
Table dropped.
4.此时,我们再次使用同名syn_t查看表t时就会见到这个“ORA- 00980”错误了