Невозможно использовать синоним функций, процедур или последовательностей в Oracle

Я создал синонимы для functions/proc/seq в идентификаторе пользователя YYY из идентификатора пользователя XXX.

create SYNONYM my_seq FOR XXX.my_seq

Когда я пытаюсь использовать последовательность для пользователя YYY, я получаю следующую ошибку:

ORA-00942: таблица или представление не существует

и с функциями: ORA-00904: неверный идентификатор

Пожалуйста, дайте мне знать, где я делаю неправильно.


person Anant Agarwal    schedule 21.03.2014    source источник
comment
Он отображается в столбце «Синонимы» в Sqldeveloper.   -  person Anant Agarwal    schedule 21.03.2014
comment
Вам нужно исправить ГРАНТЫ на объекты.   -  person abhi    schedule 21.03.2014
comment
не могли бы вы помочь мне с этим? На самом деле я упрям ​​в Oracle DB: D   -  person Anant Agarwal    schedule 21.03.2014


Ответы (2)


Я собираюсь продемонстрировать на простом примере. У меня есть две схемы на одном сервере. Схема1 и Схема2.

Я вхожу в Schema1 и запускаю приведенный ниже сценарий.

-- Create sequence 
create sequence originalSeq
minvalue 1
maxvalue 999999999999999999999999
start with 1
increment by 10
cache 20;


GRANT SELECT ON originalSeq TO SCHEMA2;

Затем я вхожу в Schema2 и запускаю следующий скрипт.

    create or replace synonym pointertooriginalsreq
      for SCHEMA1.originalSeq;  

select pointertooriginalsreq.nextval from dual

это должно работать во всех версиях Oracle 8.1.7 и выше. Пожалуйста, дайте мне знать, если вы все еще сталкиваетесь с проблемой.

person abhi    schedule 21.03.2014

Вы должны предоставить гранты от пользователя XXX:

GRANT SELECT ON my_seq TO YYY;
person Jakub P    schedule 21.03.2014