ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.04.2021
Просмотров: 1853
Скачиваний: 3

!
!
П
ра
кт
ич
ес
ко
е
за
ня
ти
е
5
Ра
зг
ра
ни
че
ни
е
до
ст
уп
а
в
С
У
Б
Д
Л
И
Н
Т
ЕР
.
Д
ис
кр
ец
ио
нн
ы
й
до
ст
уп
!
31
E-
mai
l:
ma
rke
t@
rele
x.r
u
Задача
:
Добавить
к
таблице
PHONES,
созданной
ранее
,
поле
POSITION (
занимаемая
должность
).
Предоставить
доступ
пользователю
B
только
к
полям
ID,NAME
и
PHONE.
Решение
:
1.
Добавить
дополнительное
поле
в
таблицу
PHONES:
alter table PHONES add(POSITION char(20));
2.
Убрать
доступ
к
таблице
PHONES
revoke all on PHONES from B;
3.
Создать
представление
для
доступа
к
необходимым
столбцам
таблицы
PHONES:
create view PH_VIEW as select ID,NAME from PHONES;
4.
Передать
доступ
к
созданному
представлению
:
grant select,insert on PH_VIEW to B;
Задачи
для
самостоятельной
работы
:
1.
К
таблице
почтовых
адресов
добавить
фамилии
руководителей
и
сделать
их
недоступными
для
всех
пользователей
,
кроме
пользователей
A
и
B.
5.3.
Использование
представлений
для
разграничения
доступа
Для
«
горизонтального
»
разграничения
доступа
к
таблице
также
могут
использоваться
представления
.
Рассмотрим
это
на
следующей
задаче
.
Задача
:
Предоставить
пользователям
A
и
B
доступ
ко
всем
записям
таблицы
телефонов
,
а
остальным
пользователям
доступ
только
к
телефонам
,
номера
которых
начинаются
с
цифры
‘9’.
Решение
:
1.
Создать
представление
для
доступа
к
необходимым
столбцам
таблицы
PHONES:
create view PH_VIEW2 as select ID,NAME from PHONES where PHONE like ‘9%’;
2.
Передать
доступ
к
созданному
представлению
:
grant select,insert on PH_VIEW2 to PUBLIC;
Задачи
для
самостоятельной
работы
:
1.
Произвести
разграничение
доступа
в
таблице
почтовых
адресов
для
пользователей
,
кроме
A
и
B,
предоставив
для
просмотра
только
адреса
в
городе
Москва
.
5.4.
Роли
и
их
использование
Механизм
ролей
позволяет
быстро
назначать
группе
пользователей
привилегии
к
набору
таблиц
и
представлений
приложения
.
Такое
использование
удобно
,
если
в
приложении
предусмотрена
многопользовательская
работа
с
разграничением
доступа
.
Задача
:
Пользователь
A
создал
в
рамках
приложения
таблицы
с
телефонами
физических
лиц
и
адресами
предприятий
(
см
.
задачи
выше
).
Необходимо
предоставить
пользователям
C1,C2,C3
доступ
на
чтение
к
информации
в
этих
таблицах
(
используя
доступ
через
представления
).
Решение
:
1.
Работая
под
пользователем
A,
создаем
роль
ROLE_A:
create role ROLE_A;
2.
Передаем
этой
роли
доступ
к
таблицам
на
чтение
:
Grant select on PH_VIEW2 to ROLE_A;
Grant select on ADR_VIEW2 to ROLE_A; (*
имя
представления
из
предыдущей
задачи
*)
3.
Создаем
пользователей
C1,C2,C3:
grant connect to C1;
grant connect to C2;
grant connect to C3;
4.
Назначаем
роль
пользователям
C1, C2, C3:

!
32
П
ра
кт
ич
ес
ко
е
за
ня
ти
е
5
Ра
зг
ра
ни
че
ни
е
до
ст
уп
а
в
С
У
Б
Д
Л
И
Н
Т
ЕР
.
Д
ис
кр
ец
ио
нн
ы
й
до
ст
уп
!
!
E-
mai
l:
ma
rke
t@
rele
x.r
u
Grant role ROLE_A to C1;
Grant role ROLE_A to C2;
Grant role ROLE_A to C3;
Теперь
в
случае
появления
дополнительных
таблиц
для
приложения
,
необходимо
будет
передать
роли
доступ
к
новым
таблицам
.
Пользователи
автоматически
получат
доступ
к
таблице
(
представлению
)
через
механизм
ролей
.
Задачи
для
самостоятельной
работы
:
1.
Для
пользователя
A
создать
несколько
ролей
,
каждой
из
которых
назначены
следующие
привилегии
к
таблицам
телефонов
(PHONES)
и
адресов
предприятий
:
a.
только
чтение
;
b.
только
вставка
;
c.
чтение
,
изменение
,
вставка
;
d.
чтение
,
вставка
,
удаление
,
изменение
.
2.
Назначить
роли
для
пользователей
(
создать
предварительно
недостающих
)
соответственно
:
a.
C1, C2;
b.
C3;
c.
D1, D2, D3;
d.
E.
5.5.
Задачи
для
самостоятельной
работы
Для
каждой
задачи
необходимо
спроектировать
структуру
таблиц
для
хранения
всей
указанной
информации
.
Выделить
различные
категории
пользователей
(
включая
администратора
безопасности
и
администратора
данных
)
и
предоставить
им
соответствующие
привилегии
к
различным
таблицам
или
представлениям
.
При
разграничении
доступа
необходимо
использовать
роли
.
Задача
1.
База
данных
городской
думы
.
В
базе
хранятся
имена
,
адреса
,
домашние
и
служебные
телефоны
всех
членов
Думы
.
В
Думе
работает
порядка
сорока
комиссий
,
все
участники
которых
являются
членами
Думы
.
Каждая
комиссия
имеет
свой
профиль
,
например
,
вопросы
образования
,
проблемы
,
связанные
с
жильем
и
так
далее
.
Данные
по
каждой
из
комиссий
включают
:
ее
нынешний
состав
и
председатель
,
прежние
председатели
и
члены
этой
комиссии
,
участвовавшие
в
ее
работе
за
прошедшие
10
лет
,
даты
включения
и
выхода
из
состава
комиссии
,
избрания
ее
председателей
.
Члены
Думы
могут
заседать
в
нескольких
комиссиях
.
В
базу
заносятся
время
и
место
проведения
каждого
заседания
комиссии
с
указанием
депутатов
и
служащих
Думы
,
которые
участвуют
в
его
организации
.
Задача
2.
База
данных
рыболовной
фирмы
.
Фирме
принадлежит
небольшая
флотилия
рыболовных
катеров
.
Каждый
катер
имеет
“
паспорт
”,
куда
занесены
его
название
,
тип
,
водоизмещение
и
дата
постройки
.
Фирма
регистрирует
каждый
выход
на
лов
,
записывая
название
катера
,
имена
и
адреса
членов
команды
с
указанием
их
должностей
(
капитан
,
боцман
и
т
.
д
.),
даты
выхода
и
возвращения
,
а
также
вес
пойманной
рыбы
отдельно
по
сортам
(
например
,
трески
).
За
время
одного
рейса
катер
может
посетить
несколько
банок
.
Фиксируется
дата
прихода
на
каждую
банку
и
дата
отплытия
,
качество
выловленной
рыбы
(
отличное
,
хорошее
,
плохое
).
Задача
3.
База
данных
фирмы
,
проводящей
аукционы
.
Фирма
занимается
продажей
с
аукциона
антикварных
изделий
и
произведений
искусства
.
Владельцы
вещей
,
выставляемых
на
проводимых
фирмой
аукционах
,
юридически
являются
продавцами
.
Лица
,
приобретающие
эти
вещи
,
именуются
покупа
-
телями
.
Получив
от
продавцов
партию
предметов
,
фирма
решает
,
на
котором
из
аукционов
выгоднее
представить
конкретный
предмет
.
Перед
проведением
очередного
аукциона
каждой
из
выставляемых
на
нем
вещей
присваивается
отдельный
номер
лота
,
играющий
ту
же
роль
,
что
и
введенный
ранее
шифр
товара
.
Две
вещи
,
продаваемые
на
различных
аукционах
,
могут
иметь
одинаковые
номера
лотов
.

!
!
П
ра
кт
ич
ес
ко
е
за
ня
ти
е
5
Ра
зг
ра
ни
че
ни
е
до
ст
уп
а
в
С
У
Б
Д
Л
И
Н
Т
ЕР
.
Д
ис
кр
ец
ио
нн
ы
й
до
ст
уп
!
33
E-
mai
l:
ma
rke
t@
rele
x.r
u
В
книгах
фирмы
делается
запись
о
каждом
аукционе
.
Там
отмечаются
дата
,
место
и
время
его
проведения
,
а
также
специфика
(
например
,
выставляются
картины
,
написанные
маслом
и
не
ранее
1900
г
.).
Заносятся
также
сведения
о
каждом
продаваемом
предмете
:
аукцион
,
на
который
он
заявлен
,
номер
лота
,
продавец
,
отправная
цена
и
краткое
словесное
описание
.
Продавцу
разрешается
выставлять
любое
количество
вещей
,
а
покупатель
имеет
право
приобретать
любое
количество
вещей
.
Одно
и
то
же
лицо
или
фирма
может
выступать
и
как
продавец
,
и
как
покупатель
.
После
аукциона
служащие
фирмы
,
проводящей
аукционы
,
записывают
фактическую
цену
,
уплаченную
за
проданный
предмет
,
и
фиксируют
данные
покупателя
.

!
!
!
34
E-mail: market@relex.ru
ЗАО
НПП
«
РЕЛЭКС
»
http://www.relex.ru
Практическое
занятие
6
Резервное
копирование
и
восстановление
данных
Практика
1
час
(
Лекция
5)
На
занятии
будут
рассмотрен
инструментарий
пакета
СУБД
ЛИНТЕР
,
предназначенный
для
горячего
резервирования
и
восстановления
как
всей
базы
данных
,
так
и
пообъектно
.
6.1.
Утилита
Linter Hot Backup
Утилита
Linter Hot Backup (lhb)
предназначена
для
:
•
создания
архивов
как
всей
базы
,
так
и
ее
объектов
без
остановки
ядра
;
•
восстановления
как
всей
базы
,
так
и
ее
объектов
.
Предположим
,
что
домашней
директорией
пользователя
является
/home/linter/
Для
выполнения
задач
данной
практики
понадобится
:
•
создать
директорию
prac4
в
домашней
;
•
создать
в
директории
prac4
директорию
db,
а
в
ней
–
новую
базу
данных
;
•
создать
в
директории
prac4
директорию
db_backup;
•
запустить
ядро
на
базе
из
директории
/home/linter/prac4/db;
•
выполнить
скрипт
prac4_cr.sql
при
помощи
утилиты
inl.
Данный
скрипт
создает
«
игрушечную
»
базу
данных
–
три
таблицы
LIB_BOOKS,
LIB_AUTHOR, LIB_WROTE
пользователя
SYSTEM,
описывающие
информацию
о
книгах
и
их
авторах
,
а
также
представление
,
содержимое
которого
разрешено
просматривать
пользователю
READER.
6.2.
Сохранение
базы
данных
Для
полного
сохранения
базы
данных
используется
команда
s.
Как
правило
,
указывается
имя
файла
архива
,
куда
будет
сохранена
информация
.
Задача
1.
Создать
полный
архив
базы
данных
.
Использовать
низкий
приоритет
процесса
архивирования
,
чтобы
не
загружать
ядро
.
Архив
защитить
паролем
KBYNTH
lhb s –u SYSTEM/MANAGER –f /home/linter/prac4/db_backup/
db_full.lhb –priority LOW –g KBYNTH
Задача
2.
Создать
полный
архив
базы
данных
,
разбив
его
по
томам
– 1.2
Мб
.
lhb s –u SYSTEM/MANAGER –f /home/linter/prac4/db_backup/
db_vol.lhb –v 1200 –qc NVDF
Здесь
команда
NV
в
ключе
–qc
указывает
,
что
следует
игнорировать
предупреждения
о
создании
нового
тома
,
а
команда
DF –
предупреждения
о
существующих
архивных
файлах
с
теми
же
именами
,
что
и
у
вновь
создаваемых
.
6.3.
Пообъектное
сохранение
Пообъектное
сохранение
базы
данных
включается
одним
из
следущих
ключей
: -ou, -
ot, -otwd, -ov, -os, -or, -osr, -oa, -otr, -op, -oall, -d, -takeforeign.
После
ключа
указывается
маска
объектов
,
которые
подлежат
сохранению
в
формате
* --
любое
количество
любых
символов
, ? –
любой
символ
.
Если
маска
не
указана
,
то
сохраняются
все
объекты
.
Задача
3.
Создать
архив
таблиц
бибилиотеки
.

!
!
Пр
ак
ти
че
ск
ое
за
ня
ти
е
6
Ре
зер
вн
ое
ко
пи
ро
ва
ни
е
и
во
сст
ан
ов
ле
ни
е
да
нн
ых
!
35
E-
mai
l:
mar
ket
@re
lex.
ru
ЗА
lhb s –u SYSTEM/MANAGER –ot LIB_* –f /home/linter/prac4/
db_backup/db_lib.lhb
Задача
4.
Создать
архив
таблиц
бибилиотеки
,
со
всеми
представлениями
и
правами
доступа
.
lhb s –u SYSTEM/MANAGER –ot LIB_* –ov –oa –f /home/linter/
prac4/db_backup/db_lib.lhb
Здесь
ключ
–ov
без
маски
указывает
необходимость
сохранения
всех
представлений
; –oa
указывает
необходимость
сохранения
привилегий
доступа
.
6.4.
Создание
инкрементных
архивов
Создание
инкрементных
архивов
подразумевает
создание
контрольной
точки
в
журнале
базы
данных
,
то
которой
следует
хранить
изменения
в
базе
.
При
дополнении
инкрементного
архива
происходит
архивирование
изменений
базы
от
соответствующей
контрольной
точки
.
Следует
удалять
неиспользуемые
контрольные
точки
из
журнала
,
поскольку
их
наличие
ведет
к
разрастанию
журнала
.
Задача
5.
Создать
инкрементный
архив
всей
базы
данных
.
lhb s –u SYSTEM/MANAGER –startinc –f /home/linter/prac4/
db_backup/db_inc.lhb
При
этом
в
журнал
добавляется
контрольная
точка
,
имеющая
номер
и
время
создания
(
обновления
)
инкрементного
архива
.
Список
контрольных
точек
можно
просмотреть
,
а
также
,
удалить
точку
по
ее
номеру
.
Задача
6.
Добавить
изменения
в
инкрементный
архив
.
lhb s –u SYSTEM/MANAGER –inc –f /home/linter/prac4/
db_backup/db_inc.lhb
При
этом
происходит
запись
в
файл
архива
данных
журнала
от
контрольной
точки
до
текущего
момента
и
сдвиг
контрольной
точки
на
текущий
момент
.
Для
работы
с
контрольными
точками
предназначена
команда
cp.
Задача
7.
Просмотреть
список
контрольных
точек
.
lhb cp –u SYSTEM/MANAGER –list –f /home/linter/prac4/
db_backup/db_inc.lhb
Задача
8.
Удалить
контрольную
точку
с
номером
0.
lhb cp –u SYSTEM/MANAGER –clear 0 –f /home/linter/prac4/
db_backup/db_inc.lhb
Задача
9.
Остановить
формирование
инкрементного
архива
.
lhb s –u SYSTEM/MANAGER –stopinc –f /home/linter/prac4/
db_backup/db_inc.lhb
При
этом
из
журнала
базы
данных
удалится
контрольная
точка
для
данного
архива
,
и
продолжение
его
будет
невозможно
.
6.5.
Восстановление
базы
данных
Для
восстановления
данных
из
базы
следует
использовать
команду
r
и
указывать
директорию
,
в
которой
следует
развернуть
базу
.
Задача
10.
Восстановить
базу
данных
из
полного
архива
,
созданного
в
задаче
1.
Директорией
назначения
использовать
:
/home/linter/prac4/db_restored.