Материал: 2110

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

Пример создания роли библиотекаря:

CREATE ROLE "LIBRAR" IDENTIFIED BY "LIBRAR";

Пример создания роли читателя:

CREATE ROLE "READER" IDENTIFIED BY "READER";

Библиотекарь должен обладать правами на чтение, удаление, измене- ние, добавление во все таблицы схемы ADMIN_BOOKS, а также должен иметь возможность инициировать сессию и запускать на исполнение про- цедуры и функции схемы ADMIN_BOOKS. Поэтому роли библиотекаря из системных привилегий назначаем CREATE SESSION, а из привилегий доступа к объектам назначаем DELETE, INSERT, UPDATE, SELECT, поз-

же в лабораторной работе №5 для созданных процедур и функций доба-

вить EXECUTE.

Читатель должен обладать правами на чтение из таблиц

ADMIN_BOOKS.AUTHORS, ADMIN_BOOKS.BOOKS, ADMIN_BOOKS.PUBLISHING_HOUSE, а также должен иметь возмож-

ность инициировать сессию и запускать на исполнение процедуры и функции схемы ADMIN_BOOKS. Поэтому роли читателя из системных привилегий назначаем CREATE SESSION, а из привилегий доступа к объ- ектам назначаем SELECT, позже в лабораторной работе №5 для создан- ных процедур и функций добавить EXECUTE.

Оператор представления привилегий

Синтаксис:

GRANT <привилегия>, ...

ON < объект >, … TO <имя>

[WITH grant option];

Атрибут with grant option дает право пользователю самому раздавать права, которые он получил.

С помощью оператора grant для каждого пользователя формируется список привилегий, привилегии управляют работой сервера данных с точ- ки зрения защиты данных. Выполнению каждой транзакции предшествует проверка привилегий пользователя, сеанс которого породил транзакцию.

Пример: grant select, update (Sales, num) ON Sales_data TO user1

with grant option;

Пользователь, предоставивший привилегию другому, называется гран- тор (grantor — предоставитель). Привилегия является предоставляемой, если право на нее можно предоставить другим пользователям.

30

PUBLIC — имя пользователя, который распространяет привилегии на все множество зарегистрированных в системе пользователей.

Роль библиотекаря названа LIBRAR с аналогичным паролем LIBRAR. Операторы назначения прав доступа ниже:

GRANT DELETE, INSERT, UPDATE, SELECT

ON "ADMIN_BOOKS"."BOOKS" TO "LIBRAR"; GRANT DELETE, INSERT, UPDATE, SELECT

ON "ADMIN_BOOKS"."AUTHORS" TO "LIBRAR"; GRANT DELETE, INSERT, UPDATE, SELECT

ON "ADMIN_BOOKS"."DELIVERIES" TO "LIBRAR"; GRANT DELETE, INSERT, UPDATE, SELECT

ON "ADMIN_BOOKS"."PUBLISHING_HOUSE" TO "LIBRAR"; GRANT DELETE, INSERT, UPDATE, SELECT

ON "ADMIN_BOOKS"."PURCHASES" TO "LIBRAR"; GRANT CREATE SESSION TO "LIBRAR";

Commit;

Роль читателя названа READER с аналогичным паролем READER. Опера- торы назначения прав доступа ниже:

GRANT SELECT ON "ADMIN_BOOKS"."BOOKS" TO "READER"; GRANT SELECT ON "ADMIN_BOOKS"."AUTHORS" TO "READER"; GRANT SELECT ON "ADMIN_BOOKS"."PUBLISHING_HOUSE" TO "READER";

GRANT CREATE SESSION TO "READER"; Commit;

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

Пример создания библиотекаря Ivanov_Lib и присвоения роли: CREATE USER "Ivanov_Lib"

PROFILE "DEFAULT"

IDENTIFIED BY "Ivanov_Lib" DEFAULT TABLESPACE "DB_BOOKS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;

GRANT "LIBRAR" TO "Ivanov_Lib";

Commit;

Пример создания читателя Petrov_Read и присвоения роли: CREATE USER "Petrov_Read"

PROFILE "DEFAULT" IDENTIFIED BY "Petrov_Read"

DEFAULT TABLESPACE "DB_BOOKS"

31

TEMPORARY TABLESPACE "TEMP"

ACCOUNT UNLOCK;

GRANT "READER" TO "Petrov_Read"; Commit;

Управление паролями

Если система управления паролями доступна, то пользователи не могут изменить пароли командой ALTER USER. Пользователь должен изменять пароли, используя SQL*Plus или OCIPasswordChange, в которых прини- маются в качестве параметров старый и новый пароли.

Оператор отмены привилегий

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

REVOKE [with grant option] < привилегии >,…

ON < объект >,…

FROM <имя_пользователя>;

Предложение with grant option сохраняет за пользователем перечис- ленные привилегии, но отменяет его право передавать их кому-либо дру- гому.

Пример:

REVOKE SELECT ON "ADMIN_BOOKS"."AUTHORS" FROM "READER";

Оператор изымания роли у пользователя:

Revoke <список ролей> from <список пользователей>.

Пример:

REVOKE READER FROM "Petrov_Read";

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

Общие положения

Вутилите SQL *Plus Worksheet выполнить примеры, которые даны по ходу работы.

По индивидуальному варианту базы данных, которая выполнена в ла- бораторной работе №1, определить 2-3 должностных лица, которые могут работать с таблицами БД. Для каждого должностного лица определить на- бор привилегий, которыми он может пользоваться.

Вутилите SQL *Plus Worksheet создать под каждое должностное лицо соответствующую роль, наделить эту роль определенными привилегиями. Далее создать по одному пользователю на каждую должность и присвоить им соответствующие роли.

32

Сохранить последовательно операторы с указанием заданий в файле с названием ФамилияСтудента_ЛАб_3_№варианта_общее, результаты выполнения задания по варианту сохранить в файле ФамилияСтуден- та_ЛАб_3_результаты. Операторы создания ролей, привилегий и пользо- вателей сохранить в файле с названием ФамилияСтуден-

та_ЛАб_3_№варианта_роли.

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

ОСВОЕНИЕ ПРОГРАММИРОВАНИЯ С ПОМОЩЬЮ ВСТРОЕННОГО ЯЗЫКА PL/SQL В ORACLE

Цель работы знакомство с основными принципами программирования в ORACLE средствами встроенного языка PL/SQL.

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

1.Знакомство с правилами обозначения синтаксиса команд в справоч-

ной системе ORACLE (утилита SQL *Plus WorkSheet).

2.Изучение правил написания программ на PL/SQL.

3.Изучение правил построения идентификаторов, правил объявления переменных и их типов.

4.Изучение работы с циклами и ветвлениями.

5.Изучение работы с переменными типа Table, Record и Cursor.

6.Проработка всех примеров, анализ результатов их выполнения в утилите SQL *Plus WorkSheet.

7.Выполнение индивидуальных заданий по вариантам.

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

Для освоения программирования используем пример базы данных в табличном пространстве DB_Books, которая была создана в лабораторной работе №1. При выполнении примеров и заданий обращайте внимание на соответствие названий БД, таблиц и других объектов проекта.

Описание языка PL/SQL

Программа на PL/SQL состоит из трех блоков: блок описаний пере- менных, констант и пользовательские типы данных; исполнительный блок; блок обработки исключительных ситуаций. Специальные знаки и про- стейшие операторы языка PL/SQL приведены в табл. 4.1.

Структура программы

SET -- настройки окружения сервера;

DECLARE --объявление переменных;

33

BEGIN

--Операторы или NULL;

EXCEPTION

--Операторы обработки исключительных ситуаций;

END;

Таблица 4.1

Специальные знаки и простейшие операторы в PL/SQL

Знак

Назначение

*

Знак умножения

 

 

-

Знак вычитания

 

 

**

Возведение в степень

+

Знак сложения или конкатена-

 

ции (объединение двух строк в

 

одну)

=

Знак равенства или сравнения

<=

Меньше или равно

>=

Больше или равно

!=

Не равно

||

Оператор конкатенации

 

 

:=

Знак присвоения

 

 

--

Однострочный комментарий

 

или комментарий с текущей

 

позиции и до конца строки

Знак Назначение

"" В них заключают названия объ- ектов, например таблиц, столб- цов и т.п.

‘ ’

В них заключают строковые зна-

 

чения

<>

Не равно

REM

Однострочный комментарий, на-

 

чинающийся после REM

 

 

!<

Не менее чем

!>

Не более чем

>

Больше

<

Меньше

.

Разделяет родительские и подчи-

 

ненные объекты

/Знак деления.

При установке в начале строки- знак завершения текста процеду- ры и команда к интерпретации и выполнению процедуры в SQL *Plus

/* */ Многострочный комментарий

Идентификаторы

Идентификаторы это имена объектов, на которые можно ссылаться в программе, написанной на языке PL/SQL. Первый символ может состо- ять из букв английского алфавита, внутри может содержать цифры или “_”, “#”, «$». Имя идентификатора не должно совпадать с зарезервирован- ным словом. Регистр для идентификаторов не важен, длина его не должна превышать 30 символов.

Примеры правильных идентификаторов: t2

phone# credit_limit

34