2008-10-21 5 views
2

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

ответ

7

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

2

Возможно, только current_schema отличается. Попробуйте:

alter session set current_schema=A

0

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

2

Если нет синонима, есть ли вид в схеме B, который выбирает из таблицы в схеме A, используя то же имя, что и таблица? Это, по-видимому, является таблицей, привязанной к локальным сетям.

4

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

SELECT * FROM all_objects WHERE object_name = 'mytablename' 

и посмотреть на владельца и object_type Информация.

0

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