ORA-00980: 同义词翻译不再有效 00980. 00000 - “同义词翻译不再有效”

Posted

技术标签:

【中文标题】ORA-00980: 同义词翻译不再有效 00980. 00000 - “同义词翻译不再有效”【英文标题】:ORA-00980: synonym translation is no longer valid 00980. 00000 - "synonym translation is no longer valid" 【发布时间】:2018-09-12 07:10:22 【问题描述】:

我们有一个适用于 Oracle EBS 的解决方案,它处理 Oracle EBS 套装中的用户以及与他们相关的角色和责任。 我们曾经从FND_USER 和其他相关表中获取数据。

我们创建了一个访问受限的用户,并创建了一个同义词来从 FND_user 表中读取数据。 同义词创建成功,但是当我们使用:Select * from FND_USER 作为创建的用户登录时获取数据时,我们收到以下错误:

ORA-00980:同义词翻译不再有效 00980. 00000 - “同义词翻译不再有效”

12.2.4 版本中的用户具有相同的权限,并且工作正常。

使用以下命令创建同义词:

CREATE OR REPLACE SYNONYM FND_USER for APPS.FND_USER; 

我们创建了一个用户并分配了一个包含不同权限的角色,如下所述

管理员权限 1.Oracle 软件包的权利: Ans : 包有调用者权限。

create role $new role;

create user $new user identified by $password; 

grant create session to $new user; 

grant create synonym to $new user; 

grant $new role to $new user; 

将权限授予在上述步骤中创建的新角色($new role):

grant select on APPS.FND_PRODUCT_GROUPS to $new role; 

grant select on APPS.FND_USER to $new role; 

grant select on SYS.DBA_USERS to $new role; 

grant select on APPS.FND_RESPONSIBILITY_VL to $new role;

grant select on APPS.FND_APPLICATION_VL to $new role; 

grant select on APPS.FND_DATA_GROUPS to $new role; 

grant select on APPS.FND_USER_RESP_GROUPS_ALL to $new role; 

grant select on DUAL to $new role; 

grant select on APPS.PER_ALL_PEOPLE_F to $new role; 

grant select on APPS.RA_CUSTOMERS to $new role; 

grant select on APPS.FND_MENUS to $new role; 

grant select on APPS.FND_REQUEST_GROUPS to $new role;

grant select on APPS.FND_APPLICATION to $new role; 

grant select on APPS.FND_DATA_GROUP_UNITS to $new role; 

grant select on APPS.FND_APPLICATION_TL to $new role; 

grant select on APPS.FND_RESPONSIBILITY to $new role; 

grant select on APPS.WF_ROLES to $new role;

grant select on APPS.WF_USER_ROLES to $new role; 

grant select on APPS.WF_LOCAL_ROLES to $new role; 

grant select on APPS.WF_ALL_ROLES_VL to $new role; 

grant select on APPS.WF_ROLE_HIERARCHIES to $new role; 

grant select on APPS.FND_REQUEST_GROUP_UNITS to $new role; 

•由于包具有调用者权限,我们正在执行以下操作:

grant execute on APPS.SP_XXX to $new role; 

其中 xxx 包是 FND_USER_PKG、FND_RESPONSIBILITY_PKG、WF_LOCAL_SYNCH、FND_WEB_SEC 或 FND_GLOBAL。

例如,将 APPS.SP_FND_USER_PKG 上的执行权限授予 $new role;

3.使用新用户名$new user登录并创建以下同义词:

create synonym FND_PRODUCT_GROUPS for APPS.FND_PRODUCT_GROUPS; 

create synonym FND_USER for APPS.FND_USER; 

create synonym DBA_USERS for SYS.DBA_USERS; 

create synonym FND_RESPONSIBILITY_VL for APPS.FND_RESPONSIBILITY_VL; 

create synonym FND_APPLICATION_VL for APPS.FND_APPLICATION_VL; 

create synonym FND_DATA_GROUPS for APPS.FND_DATA_GROUPS; 

create synonym FND_USER_RESP_GROUPS_ALL for APPS.FND_USER_RESP_GROUPS_ALL; 

create synonym PER_ALL_PEOPLE_F for APPS.PER_ALL_PEOPLE_F; 

create synonym RA_CUSTOMERS for APPS.RA_CUSTOMERS; 

create synonym FND_MENUS for APPS.FND_MENUS; 

create synonym FND_REQUEST_GROUPS for APPS.FND_REQUEST_GROUPS; 

create synonym FND_APPLICATION for APPS.FND_APPLICATION; 

create synonym FND_RESPONSIBILITY for APPS.FND_RESPONSIBILITY; 

create synonym FND_APPLICATION_TL for APPS.FND_APPLICATION_TL;

create or replace synonym FND_DATA_GROUP_UNITS for 
APPS.FND_DATA_GROUP_UNITS; 

create or replace synonym WF_USER_ROLES for APPS.WF_USER_ROLES; 

create or replace synonym WF_ROLES for APPS.WF_ROLES; 

create or replace synonym WF_LOCAL_ROLES for APPS.WF_LOCAL_ROLES; 

create or replace synonym WF_ROLE_HIERARCHIES for APPS.WF_ROLE_HIERARCHIES;

create or replace synonym WF_ALL_ROLES_VL for APPS.WF_ALL_ROLES_VL; 

create synonym FND_REQUEST_GROUP_UNITS for APPS.FND_REQUEST_GROUP_UNITS;

•由于包具有调用者权限,我们正在执行以下操作

create or replace synonym xxx for APPS.SP_XXX; 

其中 xxx 包是 FND_USER_PKG、FND_RESPONSIBILITY_PKG、WF_LOCAL_SYNCH、FND_WEB_SEC 或 FND_GLOBAL。

例如,

create or replace synonym FND_USER_PKG for APPS.SP_FND_USER_PKG;

【问题讨论】:

没有提到EBS的当前版本,是吗? EBS 的当前版本是 12.2.7。 【参考方案1】:

比为您需要查询的每个用户和 EBS 表创建额外的同义词更有效的是,改为使用现有的 APPS 同义词。 这可以通过将默认模式切换到 APPS 来完成,例如使用这样的登录触发器(将用户名 apps_query 替换为您的用户名)

create or replace trigger apps.apps_query_logon_trg
after logon on apps_query.schema
begin
  execute immediate 'alter session set current_schema=apps';
end;
/

【讨论】:

我们的要求是对权限有限的用户使用同义词。因此我们不能将默认架构切换到APPS。 您尝试过我推荐的解决方案了吗?权限与默认架构无关。以具有有限权限的用户身份登录时,首先从 sqlplus 手动尝试:alter session set current_schema=apps 是的,我已经尝试过您推荐的解决方案,它确实有效,但它还提供了对所有表的 APPS 架构的完全访问权限。我需要为某些表而不是全部授予特定的权限,因此我无法将架构设置为 APPS。 "提供对 APPS 架构的完全访问权限..." 不,它没有。如果您可以访问超出预期的其他表,则您授予的权限比您想象的要多。使用新创建的用户重试并仅在一个表上授予选择作为测试 谢谢安迪,有了这个解决方案,我的问题得到了解决,因为我们不再需要同义词。我很好奇这个解决方案根据安全和访问违规标准有多少推荐,以及我们可以预期的安全问题和影响是什么。

以上是关于ORA-00980: 同义词翻译不再有效 00980. 00000 - “同义词翻译不再有效”的主要内容,如果未能解决你的问题,请参考以下文章

ORA-00980: 同义词转换不再有效

oracle 创建所有表的同义词

Imagenet ILSVRC2014 验证基本事实到同义词集标签翻译不准确

transtoolweb: 帮助译者更快速更准确翻译 (http://transtoolweb.tk)

LQ0098 旋转下标变换

NLP数据扩增方法