Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Описание системных таблиц и представлений
Для просмотра информации о пользователе можно воспользоваться оператором: SELECT username, user_id, password, account_status, default_tablespace, temporary_tablespace, profile FROM dba_users WHERE username = 'SYSTEM';
Следующий пример позволяет определить список привилегий на работу с объектами: select sysauth$.*, table_privilege_map.name, user$.name from sysauth$, table_privilege_map, user$ where sysauth$.grantee#=user$.user# and table_privilege_map.privilege = sysauth$.privilege# and user$.name='ADMIN_BOOKS';
или, используя представление SYS.dba_sys_privs: SELECT * FROM sys.dba_sys_privs WHERE grantee='ADMIN_BOOKS';
Следующий пример позволяет определить список системных привилегий введенного пользователя:
SELECT sysauth$.*, system_privilege_map.name, user$.name from sysauth$, system_privilege_map, user$ 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, определенный по предыдущему запросу. Результат: OBJ# NAME ---------- ------------------------------ 32127 AUTHORS 32135 BOOKS 32177 BOOKS_ALL 32162 CHECKNAME 32157 COUNT_BOOKS 32161 COUNT_BOOKS_ITOGO 32159 COUNT_BOOKS_PAGES 32160 COUNT_BOOKS_TITLE 32166 COUNT_PURCHASES 32129 DELIVERIES 32128 ID_AUTHOR 32136 ID_BOOK1 32147 ID_BOOK_SEQ 32130 ID_DELIVERY 32132 ID_PUBLISH 32138 ID_PURCHASE 32131 PUBLISHING_HOUSE 32137 PURCHASES 32165 UPDATE_PROC 32167 UPDATE_PROC2
20 строк выбрано.
3) Можно просмотреть состав каждого объекта – таблицы, например таблицы AUTHORS, используя ее идентификационный номер, который определили в предыдущем запросе: SELECT name, type# FROM sys.col$ WHERE obj# = '32127';
Результат: NAME TYPE# ------------------------------ ---------- CODE_AUTHOR 2 NAME_AUTHOR 96 BIRTHDAY 12 SYS_C00004_07073100: 07: 39$ 1
или, используя имя объекта: SELECT c.name, c.type# FROM sys.col$ c INNER JOIN sys.obj$ o ON c.obj#= o.obj# WHERE o.name = 'AUTHORS';
|