ORA-00980: перевод синонима больше не действителен 00980. 00000 - перевод синонима больше не действителен

У нас есть решение, которое работает с 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: Ответ: Пакеты имеют права Invoker.

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 для ${новой роли};

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;

person Amrita Sanjibani Sudha    schedule 12.09.2018    source источник
comment
Не упомянули текущую версию EBS, не так ли?   -  person Jacob    schedule 12.09.2018
comment
Текущая версия EBS — 12.2.7.   -  person Amrita Sanjibani Sudha    schedule 14.09.2018


Ответы (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;
/
person Andy Haack    schedule 13.09.2018
comment
Наше требование состоит в том, чтобы использовать синоним для пользователя с ограниченными разрешениями. Следовательно, мы не можем переключить схему по умолчанию на APPS. - person Amrita Sanjibani Sudha; 14.09.2018
comment
Вы пробовали решение, которое я рекомендовал? разрешения не имеют ничего общего со схемой по умолчанию. сначала попробуйте вручную из sqlplus, когда вы вошли в систему как пользователь с ограниченными разрешениями: изменить набор сеансов current_schema=apps - person Andy Haack; 15.09.2018
comment
Да, я попробовал ваше рекомендованное решение, оно сработало, но оно также дает полный доступ к схеме APPS для всех таблиц. Мне нужно дать определенный набор разрешений для некоторых таблиц, а не для всех, поэтому я не могу установить схему APPS. - person Amrita Sanjibani Sudha; 17.09.2018
comment
дает полный доступ к схеме APPS... нет, это не так. если у вас есть доступ к другим таблицам, чем вы ожидаете, вы предоставили больше разрешений, чем вы думаете. попробуйте еще раз с вновь созданным пользователем и предоставьте выбор для одной таблицы только в качестве теста - person Andy Haack; 20.09.2018
comment
Спасибо, Энди, с этим решением моя проблема была решена, так как нам больше не нужен синоним. Мне любопытно, насколько рекомендуется это решение в соответствии со стандартами безопасности и нарушений прав доступа, и какие проблемы с безопасностью и какое влияние мы можем ожидать. - person Amrita Sanjibani Sudha; 21.09.2018
comment
Нет никаких последствий для безопасности, поскольку установка current_schema не дает никаких дополнительных прав доступа или грантов. Пользователи также могут сделать это сами после входа в систему, если вы не указали это в триггере входа в систему. - person Andy Haack; 18.06.2019