Предположим, что я вошел в систему как USERA, я хочу получить доступ ко всем пользовательским * схемам схемы USERB, таким как user_tables, user_tab_columns. Как я могу это сделать? Спасибокак выбрать вид схемы, ориентированный на схему Oracle, из другой схемы
ответ
Все таблицы USER_ * имеют аналоги с префиксом ALL_ * и DBA_ *. USER_TABLES содержит информацию обо всех ваших таблицах. ALL_TABLES имеет информацию обо всех таблицах, к которым у вас есть доступ. DBA_TABLES имеет информацию обо всех таблицах в вашей базе данных.
Если вы хотите, чтобы увидеть информацию о таблицах USERB в
SELECT *
FROM all_tables
WHERE owner = 'USERB';
или
SELECT *
FROM dba_tables
WHERE owner = 'USERB';
Первый из них будет работать, если у вас есть выбор доступ на столах пользователя Б. Последний будет работать, если ваш администратор базы данных предоставит вам доступ к представлению DBA_TABLES. Обычно это делается путем предоставления привилегии SELECT ANY DICTIONARY (или SELECT_CATALOG_ROLE в предыдущей версии), хотя администратор баз данных может предоставить доступ к отдельным видам DBA_ *.
USER_%
виды дают то, что у вас есть, вот что находится внутри вашей схемы.ALL_%
виды дают то, к чему у вас есть доступ.
Так что вы действительно должны использовать ALL_TABLES/etc и предоставить соответствующий доступ к объектам USERB
.
Если у вас есть права, вы можете попробовать:
ALTER SESSION SET CURRENT_SCHEMA = USERB;
У меня есть доступ к желаемому пользователю, но этот подход не работает для меня .. он все еще не возвращает таблицы из целевой схемы –