Роль базы данных Oracle - выберите из таблицы в разных схемах без идентификатора схемы - PullRequest
2 голосов
/ 21 октября 2008

Какая роль базы данных Oracle позволит пользователю выбирать из таблицы в другой схеме без указания идентификатора схемы? то есть, как пользователь A-Grant выбирает на A.table для пользователя B; B может затем - «Выбрать * из таблицы» без указания «A». Одна из наших баз данных допускает это, другая возвращает ошибку «таблица или представление не существует».

Ответы [ 6 ]

7 голосов
/ 21 октября 2008

Вы можете создать синоним для этого. Создайте синоним «CoffeeTable» для объекта «A.CoffeeTable». Вы можете создать общедоступный синоним, чтобы все видели его так, или просто синоним под пользователем B.

4 голосов
/ 22 октября 2008

Просто чтобы дважды проверить, что используемая схема не имеет частного синонима для таблицы (или представления, как предполагает Ли), вы можете сделать следующее

SELECT * FROM all_objects WHERE object_name = 'mytablename'

и посмотрите информацию о владельце и типе объекта.

2 голосов
/ 22 октября 2008

Если синоним отсутствует, существует ли представление в схеме B, которое выбирает из таблицы в схеме A то же имя, что и таблица? Во многих отношениях это будет таблица с локальными ссылками.

2 голосов
/ 22 октября 2008

Может быть, только current_schema отличается. Попробуйте:

alter session set current_schema=A

0 голосов
/ 22 октября 2008

@ erno - вероятно, причина того, что TOAD не показывал вам общедоступный синоним, состоит в том, что он фильтрует информацию, показанную в списке - у меня нет жабы передо мной, но я думаю , если щелкнув правой кнопкой мыши на вкладке, вы попадете к параметрам фильтрации (например, «показывать только объекты, принадлежащие схеме», «показывать открытые объекты», «показывать системные объекты» и т. д.)

0 голосов
/ 22 октября 2008

Бретт прав. Для этого используются синонимы. На самом деле бывают случаи, когда вы не знаете, каким будет имя схемы в рабочей среде. Возможно, вы используете A для некоторого имени схемы, а A уже используется в каком-то экземпляре Oracle.

...