Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Описание системных таблиц и представлений






Объект схемы SYS Тип объекта Назначение
User$ Table Справочник пользователей, объявленных в экземпляре БД
Sysauth$ Table Список назначенных привилегий пользователям
Defrole$ Table  
System_privilege_map Table Справочник системных привилегий, которые могут быть использованы
Table_privilege_map Table Справочник привилегий доступа к объектам, которые могут быть использованы
Dba_role_privs View Представление привилегий созданных ролей, которые могут быть использованы
Dba_sys_privs View Представление системных привилегий, которые могут быть использованы
Sys.col$ Table  
Sys.obj$ Table Справочник объектов, существующих в экземпляре БД
ALL_ALL_TABLES View Представление c описанием всех таблиц, которые могут быть использованы
DBA_USERS View Представление со списком пользователей, которые могут быть использованы

 

Для просмотра информации о пользователе можно воспользоваться оператором:

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';

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.015 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал