Материал: 2110

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Рис. 2.3. Пример созданных форм в Access для ввода данных в таблицы Oracle

Для контроля ввода значений в отдельные столбцы таблиц можно ис- пользовать специальные объекты Domain и Sequence.

Создание и использование последовательностей

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

Пример создания последовательности:

CREATE SEQUENCE "ADMIN_BOOKS"."ID_AUTHOR_SEQ" INCREMENT BY 1 START WITH 1 MAXVALUE 99999 MINVALUE 1 NOCYCLE CACHE 20 NOORDER;

Для обращения к значениям последовательности используют следую- щие операторы:

sequence_name.CURRVAL sequence_name.NEXTVAL

Пример использования последовательности:

INSERT INTO "ADMIN_BOOKS"."AUTHORS" ("CODE_AUTHOR",

"NAME_AUTHOR", "BIRTHDAY") VALUES (ADMIN_BOOKS.ID_AUTHOR_SEQ.NextVal, 'Лермонтов', TO_DATE('12-

05-1810') );

Варианты заданий к лабораторной работе №2

В утилите SQL *Plus Worksheet по вашим вариантам баз данных, ко- торые были реализованы в лабораторной работе №1, создать для полей ти- па Primary Key последовательности c помощью оператора CREATE

SEQUENCE.

В утилите SQL *Plus Worksheet создать файл, в котором написать по- следовательность операторов Insert для заполнения таблиц данными (по 10 операторов на каждую из таблиц).

Сохранить все операторы CREATE SEQUENCE и INSERT в файле программы с названием ФамилияСтудента_ЛАб_2_№варианта.

25

Лабораторная работа №3

УПРАВЛЕНИЕ ПРАВАМИ ДОСТУПА И РАЗРЕШЕНИЯМИ К СОЗДАВАЕМЫМ ОБЪЕКТАМ БД В ORACLE 9i

Цель работы научиться создавать профили пользователей и ролей для разграничения прав доступа к объектам создаваемой БД, а также извлекать системную информацию о пользоватях и объектах для последующего ис- пользования в удаленном управлении правми доступа к объектам экземп- ляра БД.

Содержание работы:

1.Познакомиться с назначением системных таблиц и представлений, выполнить примеры.

2.С помощью операторов и действий, описанных в лабораторной ра- боте, создать роли и пользователей.

3.Выполнить самостоятельное задание к лабораторной работе по вари- антам.

Пояснения к выполнению работы

Инсталляция сервера заканчивается созданием начального экземпляра БД и набором встроенных ролей и пользователей, из всех пользователей незаблокированными являются SYSTEM (manager) и SYS (change_in_install), которые могут выполнять административные функции.

Для анализа ролей, системных привилегий и привилегий по доступу к объектам экземпляра БД, которыми наделены пользователи, необходимо зайти в утилите Enterprise Manager Console в раздел Security Users и

дважды щелкнуть по имени пользователя.

Для обеспечения безопасности работы экземпляра БД необходимо по- сле инсталляции программного продукта проверить состав пользователей и их статус (в утилите Enterprise Manager Console в раздел Security Users в правой части экрана колонка Account Status). Если необходимо заблокировать какого-либо пользователя, то выберите его двойным щелч- ком, в появившемся окне в разделе Status выбрать режим Locked.

В табличном пространстве SYSTEM в схеме SYS хранятся таблицы, из которых можно извлечь информацию о правах доступа к системе, а также о структуре объектов. Такая информация полезна для выполнения функ- ций администрирования удаленно или через внешнее приложение. В табл. 3.1 дан краткий список объектов, которые используются в данной работе.

26

 

 

Таблица 3.1

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

 

 

 

Объект схемы SYS

Тип

Назначение

 

объекта

 

User$

Table

Справочник пользователей, объявленных в эк-

 

 

земпляре БД

Sysauth$

Table

Список назначенных привилегий пользователям

System_privilege_map

Table

Справочник системных привилегий, которые

 

 

могут быть использованы

Table_privilege_map

Table

Справочник привилегий доступа к объектам,

 

 

которые могут быть использованы

Dba_role_privs

View

Представление привилегий созданных ролей,

 

 

которые могут быть использованы

Dba_sys_privs

View

Представление системных привилегий, которые

 

 

могут быть использованы

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$

27

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

Например, необходимо определить список всех объектов пользователя, собственником которых он является, для этого:

Определим код пользователя (колонка USER# в таблице SYS.USER$): SELECT user#, name FROM sys.user$ WHERE name = 'ADMIN_BOOKS';

Результат: USER# NAME

---------- ------------------------------

67 ADMIN_BOOKS

Далее определим перечень объектов, собственником которых является пользователь:

SELECT OBJ#, NAME FROM SYS.OBJ$ WHERE OWNER# = 67;

где 67 – идентификатор пользователя ADMIN_BOOKS, определенный по предыдущему запросу.

28

Результат:

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 строк выбрано.

Можно просмотреть состав каждого объекта-таблицы, например таблицы 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';

Создание ролей

Для упрощения управления правами доступа в системе создаются ро- ли, которые затем можно назначать группе пользователей.

Создадим для нашего примера роли библиотекаря (LIBRAR) и читате-

ля (READER).

29