本人实用主义,废话不多说直接上代码
-------执行查找所有失效的同义词,生成删除脚本如下:
select 'drop '
|| decode(s.owner,
'PUBLIC',
'public synonym ',
'synonym ' || s.owner || '.')
|| s.synonym_name
|| ';' as "Dropping invalid synonyms:"
from dba_synonyms s
where table_owner not in ('SYSTEM', 'SYS')
and db_link is null
and not exists
(select null
from dba_objects o
where s.table_owner = o.owner
and s.table_name = o.object_name);
执行以上语句查找出来所有失效的同义词以及对应的删除语句
执行查找出来的删除语句
对同义词再进行一次创建基本上就没有问题了
同义词创建、删除、查询操作
(1).创建同义词语句:
create public synonym table_name for user.table_name;
(2).删除同义词:
drop public synonym table_name;
(3).查看所有同义词:
select * from dba_synonyms
导致“ORA-00980”错误的原因小结:
1.删除了数据库对象,但是忘记删除同名;
2.删除一个用户,但是忘记删除与此用户中相关的同名;
3.创建同名时,同名对应的数据库对象已经被删除掉了;