暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

故障处理|Oracle如何解决ORA-00995:同义词标识符丢失或无效

原创 小小亮 2022-11-04
2298

ORA-00995

ORA-00995 表示您在语句中指定的同义词名称无效或未找到,您应确保同义词标识符有效且正确。

让我们看看 ORA-00995 的一些错误模式。

  1. 创建同义词
  2. 年龄的代名词
  3. 改变公共同义词

1.创建同义词

尝试创建私有同义词,但由于 ORA-00995 失败。

SQL> create synonym 2022_countries for hr.countries;
create synonym 2022_countries for hr.countries
               *
ERROR at line 1:
ORA-00995: missing or invalid synonym identifier

Synonym 是一种模式对象,其命名规则应遵循Oracle 的 Database Object Names and Qualifiers对于不带引号的标识符,它必须以字母字符开头。此外,将标识符的长度限制为 30 个字节更安全。

解决方案

在这种情况下,我们将数字移动到同义词名称的最后,以符合非引号标识符的命名规则。

SQL> create synonym countries_2022 for hr.countries;

Synonym created.

至于引用和非引用命名规则的区别,我们在如何解决 ORA-00904 Invalid Identifier中讲了很多。

总之,无效的列名称会导致 ORA-00904,而无效的同义词名称会导致 ORA-00995。

如果您坚持使用以数字开头或包含特殊字符的标识符,则应使用双引号将名称括起来。

SQL> create synonym "2020_countries" for hr.countries;

Synonym created.

由于您需要更多的注意力和精力来仔细操作它们,因此应在特殊情况下创建带引号的标识符,并有足够的理由这样做。

2. 年龄同义词

尝试更改私有同义词,但由于 ORA-00995 失败。

SQL> alter synonym 2020_countries compile;
alter synonym 2020_countries compile
              *
ERROR at line 1:
ORA-00995: missing or invalid synonym identifier

解决方案

正如我之前所说,引用的标识符应该总是被起诉为引用的。

SQL> alter synonym "2020_countries" compile;

Synonym altered.

3. 改变公共同义词

尝试更改公共同义词,但由于 ORA-00995 失败。

SQL> alter synonym public.paybill compile;
alter synonym public.paybill compile
              *
ERROR at line 1:
ORA-00995: missing or invalid synonym identifier

在 Oracle 中,PUBLIC是一个非常特殊的组,它不是一个有效的模式名称,它只能用于为每个用户创建只能访问的PUBLIC SYSNONYMPUBLIC DATABASE LINK对象。

换句话说,我们不能把它当作一个普通的模式来编译它,所以像往常一样使用模式名称和标识符的连接来指定一个公共对象在这里是行不通的。

解决方案

为了正确管理公共对象,我们应该通过明确声明来使用正确的特定语法。

SQL> alter public synonym paybill compile;

Synonym altered.

编译公共同义词的正确语法是ALTER PUBLIC SYNONYM语句。


原文标题:How to Resolve ORA-00995: missing or invalid synonym identifier

原文作者:Ed Chen

原文链接:https://logic.edchen.org/how-to-resolve-ora-00995-missing-or-invalid-synonym-identifier/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论