Разработка клиент-серверных приложений с использованием технологий Oracle. Семенова И.И. - 29 стр.

UptoLike

Составители: 

28
WHERE sysauth$.grantee#=user$.user# and
system_privilege_map.privilege = sysauth$.privilege# and
user$.name='ADMIN_BOOKS';
Следующий пример позволяет определить список присвоенных ролей
введенного пользователя:
SELECT * FROM dba_role_privs WHERE grantee = 'ADMIN_BOOKS';
Результат:
GRANTEE GRANTED_ROLE ADM DEF
----------------------- ------------------------------ --- ---
ADMIN_BOOKS CONNECT YES YES
ADMIN_BOOKS DBA YES YES
ADMIN_BOOKS EXP_FULL_DATABASE YES YES
Для определения списка таблиц, собственником которых является кон-
кретный пользователь, необходимо выполнить следующий SQL запрос:
SELECT table_name FROM all_all_tables WHERE owner =
'ADMIN_BOOKS';
Результат:
TABLE_NAME
------------------------------
AUTHORS
BOOKS
DELIVERIES
PUBLISHING_HOUSE
PURCHASES
Для прямого получения информации о пользователе можно обратиться
к системной таблице SYS.USER$, например:
SELECT * FROM sys.user$ WHERE name = 'ADMIN_BOOKS';
Например, необходимо определить список всех объектов пользователя,
собственником которых он является, для этого:
1) Определим код пользователя (колонка USER# в таблице SYS.USER$):
SELECT user#, name FROM sys.user$ WHERE name = 'ADMIN_BOOKS';
Результат:
USER# NAME
---------- ------------------------------
67 ADMIN_BOOKS
2) Далее определим перечень объектов, собственником которых является
пользователь:
SELECT OBJ#, NAME FROM SYS.OBJ$ WHERE OWNER# = 67;
где 67 – идентификатор пользователя ADMIN_BOOKS, определенный по
предыдущему запросу.