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 - “同义词翻译不再有效”的主要内容,如果未能解决你的问题,请参考以下文章
Imagenet ILSVRC2014 验证基本事实到同义词集标签翻译不准确