
- •10. База даних ас дзк
- •10.1. Класифікація сучасних субд.
- •Залежно від об'єму підтримуваних бд і кількості користувачів рскбд можна класифікувати:
- •Вимоги до бд ас дзк.
- •Структура бази даних oracle7.
- •7.3. Управління доступом до даних в розрахованій на багато користувачі субд.
- •7.6. Архівація і відновлення даних.
7.3. Управління доступом до даних в розрахованій на багато користувачі субд.
Оскількидо бази даних повиннізвертатисябагато користувачів, то СУБД повинна забезпечуватимножиннийдоступ до бази даних. На жаль, розраховані на одного користувача СУБД непідходятьдля колективної роботи.Розглянемопроблему взаємного впливу наприкладікартотеки. Ви хочете використовувати ту ж інформаціюзякою в даний момент працює хтось ще. Якщо ви хочете побачити результати роботи іншого користувача, тодоведетьсяпочекати. Якщо ж ці результати на вашу роботу не вплинуть, ви можете скопіювати дані. Виникає незручність. Картотека ілюструє проблеми паралельного доступу, що виникають при спробі декількох користувачів одночасно працюватизбазою даних.
В розрахованих на багато користувачі СУБД говорять про проблему конкуренції — спробах багатьох користувачів одночасно виконувати операції зодними і тими ж даними. Фактично, задача забезпечення паралельного доступу до даних — одна з найважливіших і найочевидніших задач серверу бази даних. Сервер бази даних повинен управляти інформацієютак, щобпризбереженніцілісності даних користувачі чекали виконання роботи іншими користувачами мінімальний час. Якщо сервер бази не може задовольнити одну з цієїмети, то користувачі відразупомітятьнаслідки. Коли багато транзакцій конкурують за одні і ті ж дані, то користувачі зіткнутьсязпоганою продуктивністю або отримають неточні результати.
Це проблеми, алеORACLE7 вирішує ці проблеми.Розглянемояк це вінробить.
Запобігання руйнуючих взаємних впливів за допомогою блокувань даних.
Коли дві конкуруючі за одні і ті ж дані операції втручаються в роботу один одного, це може привестидо неточних результатів або втрати цілісності даних. Це називається “ руйнуючий взаємний вплив”. Для запобігання таких ситуацій при одночасному доступі користувачів до даних застосовуються блокування. Аналогічно тому як “вертушка”в прохідній не дозволяє проходити через неї одночасно двом, блокування даних запобігає в розрахованій на багато користувачі СУБД руйнуючому впливу. Існують блокування, що виключають і розділяються.
Замкнувши о середок камери схову на вокзалі, ви одержуєте на неї виняткове право. Ніхто не зможе в неї покласти,покиви її незвільните. Якщо ж ви хочете, щоб цимосередкомскористався ваш знайомий, то повідомляєте шрифт. Аналогічно блокує дані і ORACLE7.
Коли користувач намагаєтьсявиконувати операціїзданими,зякими працює хтось ще, ORACLE7 автоматично їх блокує і запобігаєможливостіруйнуючого впливу. Якщо це можливо (тобто неприведедо руйнуючого впливу), завжди використовує блокування, що розділяється.Проте, якщо таке блокування залишаєможливістьруйнуючого впливу, встановлюється блокування запрошуваних вашою транзакцією даних, що виключає. Блокування, що виключає, запобігаєможливостіблокувати ті ж дані за допомогою блокування будь-якого типу і за рахунок усунення паралельного доступу до одних і тих же даних забезпечує їх цілісність.
Отримання точних даних при високому ступенідоступу: запити,злагодженечитання і підтримка версій.
Попередні прикладипоказують, як Огасlе7 для одного і того набору даних обробляє дві різні транзакції оновлення. А щовідбуваєтьсяу разізапитів, щомістятьтількиоперації читання? Як Огaсlе7 обробляє конкуруючі запити і запитизопераціями оновлення, повертаючи точні результати ?
В зтих ситуаціях Оraсlе7 використовує наступний підхід. По-перше, транзакція не вимагає блокування рядків для будь-якого типу запитів. Це означає, що дві транзакції можуть давати одночасно в точності один і той же запит без якої-небудь конкуренції за один набір рядків. Відсутність блокувань читання означає також, що такий запит не може блокувати оновлення і навпаки.
Як же Огасlе7 повертає точні результати, якщо він не встановлює блокування для запитів? Можна було б вважати, що без блокування рядка для запитів конкуруючеіззапитом оновлення може дати для запиту неточний набір результатів.
Огасlе7 може обійтися без блокувань рядків для запитів при збереженніточності результатів завдяки механізму виділення версій. Для кожного запиту ORACLE7 повертає версію даних, що зажадалася, на даний момент часу. На момент отримання запити Огасlе7 забезпечуєузгодженістькожного рядкав результатізапиту.
Сегменти відкоту.
Використовуючи береженів сегментахвідкотудані, Огасlе7 може створювати для запитузлагодженіпо читанню копії (набори результатів) даних. Сегментвідкоту(або сегментвідмінитранзакцій) — це область пам'яті на диску, яку Оraclе7 використовує для тимчасового зберігання старих значень даних, щообновляютьсятранзакцієювидаленняабо оновлення рядків. Якщо користувачвідміняєтранзакцію, то Оraclе7 прочитує привласнений транзакції сегментвідкотуі повертає змінені нею рядки впочатковийстан. Крім того, Оrасlе7 використовує сегментвідкотув механізмі виділення версій. Якщо запиту потрібні дані, які в процесі його виконаннязмінюються, то Оrасlе7 за допомогою даних сегментувідкотугенеруєзлагодженийпо читанню копію даних (заданий момент часу). Все цевідбуваєтьсяавтоматично.
При забезпеченні паралельного доступу безлічі користувачів і додатків до однієї бази даних при адекватній продуктивності системи і повної точності розробники можуть не турбуватися про складні механізми блокування і ведення версій. Проте, якщо вони хочуть вичавити з продуктивності додатку все можливе, то Оrасlе7 передбачає засоби управління, переопределяющие вживані за умовчанням механізми блокування.
Забезпечення захисту даних.
Невже хто завгодно може увійти до бази даних Оrасlе7 і почати використовувати дані, читати табличну інформацію і модифікувати її? Звичайно, ні! Якби це було так, то користувачі могли б бачити дані, які для них не призначаються (такі як заробітна платня їх начальника), а зловмисники могли б легко стерти або змінити дані на свій розсуд (наприклад, підвищити зарплату самим собі). Одним з обов'язків серверу бази даних є забезпечення захисту всієї інформації СУБД. Незалежно від того, хочте чи ні захистити свої дані від очей неуповноважених користувачів або зловмисників, захист є важливою функцією бази даних. Для забезпечення захисту Оrасlе7 використовує систему вибіркового управління доступом зто означає, що адміністратор привласнює пропуску для всіх зареєстрованих в базі даних користувачів і дає їм повноваження на виконання в базі даних конкретних операцій з конкретними даними. Різні методи управління захистом Оraclе7 описуються в наступних розділах.
Надання користувачам доступу до бази даних.
Доступ до бази даних Огасlе7 дуже нагадує доступ до телефонної банківської системи. По-перше, вам потрібно отримати загальнийдоступ до бази даних. Щоб надатикому-небудьдоступ до бази даних Оraclе7, адміністратор повинен зареєструвати його і створити в базі даних нового користувача (визначивши його ім'я). Для забезпечення захисту доступу пароль повинен відповідати імені цього нового користувача. Для підключення до бази даних користувач повиненввестиі ім'я, і пароль. Нового користувача створює, наприклад,наступнийоператор SQL:
CREATE USER safеdorow IDENTIFID p1e
Як показує цей приклад, адміністраторам слід вибирати осмислені імена користувачів (наприклад, об'єднавши ім'я і прізвище).Протекористувачі повинні вибирати складні і не несучініякогозначенняпаролі. Це утруднятиме їх визначення зловмисниками.
Післяотримання користувачем доступу до бази даних Оraclе7 операції його в цій СУБД обмежують інші засоби контролю доступу.
Розширення і обмеження повноважень.
Як і у разіцілодобової телефонної банківської системи, ви можете виконувати лише обмежені операції. Наприклад, ви можете перевірити свій чековий і накопичувальнийрахунок, але не можете зробити це длярахунківінших користувачів. Тобто ви маєте повноваженнятількина проглядання інформації, що відноситься до ваших рахівниць.
Система захисту Оraclе7 дуже нагадує захист телефонної банківської системи. Адміністратор може управляти всіма операціями збазою даних і доступом до даних, у тому числі тим, які користувачі можуть створювати таблиці іуявлення, какие—создавать і модифікувати табличні області, а які — прочитувати і модифікувати різні таблиці і представлення бази даних. Церобитьсяшляхом надання івідмінирізних повноважень або прав доступу. Наведемо приклади вживаних для цього команд SQL GRANT і REVOKE:
GRANT CREATE SESSION, CREATE TABLE TO safd
REVOKE CREATE TABLE FROM allin
Оператор GRANT дає користувачу SAFD повноваження на підключення до бази даних (тобто на ініціалізацію сеансу збазою даних) і створення таблиць. Оператор REVOKEвідміняєповноваження користувача ALLIN на створення таблиць.
Огас1е7 має два широкі класи повноважень, про які розказується в наступнихдвох розділах: повноваження на об'єкти і системні повноваження.
Системні повноваження: управління розширеними системними операціями.
Системні повноваження — це розширені і могутні повноваження, які дають користувачу право на виконання операції в масштабі бази даних. .Приведем приклад:
Користувач зсистемними повноваженнями ALTER DATABASE можезмінюватифізичну структуру бази даних,додаючидо неї нові файли.
Користувач зсистемними повноваженнями DROP TABLESPACE можевидалятибудь-яку табличну область (за винятком табличної області SYSTEM).
Користувач зсистемними повноваженнями SELECT ANY TABLE може опитувати будь-яку таблицю бази даних.
Це лише деякі з безлічі системних повноважень Oracle7. Оскільки системні повноваження — це дуже широкі повноваження, адміністраторам слід надавати їх тількиіншим адміністраторам.
Повноваження на об'єкти бази даних: управління доступом до даних.
Повноваження на об'єкти управляють роботою бази даних зконкретним її об'єктом. (Об'єкт — це щось, щознаходитьсяусередині бази даних: таблиця,уявлення, роль, процедура, користувач і т.д.). Наприклад, адміністратор може управляти тим, хто опитує таблицю CUSTOMER. Для цього він надає повноваження SELECT на цю таблицютількиконкретним користувачам. Існують і інші повноваження на об'єкти, про які можна отримати інформацію в керівництві позастосуваннюОracle7.
Управління захистом за допомогою ролей.
Управління захистом у великій базі даних клієнт/сервер — складна задача. Безліч працюючих в системі повноважень і користувачів можуть вимагати позначень конкретних повноважень. За відсутності адміністративного інструментального засобу управління захистом може стати справжнімкошмаром. На щастя, Оracle7 пропонуєрішення, полегшуюче управління повноваженнями у великій і складній системі клієнт/сервер, — це ролі. Роль є набором відповідних повноважень, які адміністратор може колективно надавати користувачам і іншим ролям. За допомогою ролей адміністратор може значно спростити управління повноваженнями.
Просте управління повноваженнями — ця не єдина перевага використовуванняролей. Можливо, більшважливоте, що розробники можуть застосовувати ролі для динамічної зміни домена (поточного набору) повноважень користувачів при роботі їхзрізнимидодатками. Шляхом простого дозволу відповідної ролі при запускудодатокможе гарантувати, що всі його користувачі матимуть коректний домен повноважень.
Схеми в Oracle7.
При роботі зOracle7 ви часто стикатиметесязтерміном “схема”. Це слово може мати самий різний сенс. Аналогічно тому як адміністратори можуть фізично організувати таблиці Oracle7 за допомогою табличних областей, логічно вони організовують таблиці і представлення реляційної бази даних за допомогою схем. Схема - це логічний набірспорідненихтаблиць іуявлень, а також всіх інших об'єктів бази даних. Наприклад, придодаваннідо СУБД клієнт/сервер новогододаткуадміністратору для організації таблиць іуявлень, які використовуватимедодаток, слід створити нову схему. На рис.4 показанийдодатокдляоблікупродажів.
Oracle7 насправді схеми бази даних не реалізує. Просто адміністратор створює нового користувача бази даних, який у свою чергу ефективно породжує задану за умовчанням схему бази даних. При створенні користувачем бази даних нового уявленняабо таблиці цей об'єкт за умовчанням стаєчастиноюсхеми. Фактично,з урахуваннямсхем бази даних ви можете сказати, що користувач володіє всіма об'єктами в своїй заданої за умовчанням схемі. Реляційні СУБДзбільш просунутою реалізацією схеми дозволяють користувачамперемикатисяміж заданою за умовчанням схемою і іншими схемами бази даних і виконувати різні операції, відповідні поточній схемі. Можливо, в майбутніх версіях Oracle такі засоби будуть реалізовані.
Забезпечення доступності необхідних користувачам даних.
В будь-якій комп'ютерній програмі користувач не зможе отримати доступ до файлу, покине запуститьекземплярвідкриваючогоцей файлдодатку. Наприклад, щобвідкритистворений за допомогою текстового процесора звіт, користувачу спочатку потрібно запустити цей текстовий процесор, а потімвідкритив ньому файл звіту. Як пояснюється внаступнихрозділах, робота в СУБД Oracle7 в чомусь аналогічна.
Управління загальноюдоступністю бази даних при запуску і останові.
Як і при запуску розрахованої на багато користувачі Ос, в Oracle7 ніхто не може використовувати дані, покиадміністратор не запустить сервер і не зробить базу даних доступної. Це вимагає декількох кроків. По-перше, адміністратору потрібно запуститиекземплярбази даних. Экземпляр—это набір буферів пам'яті (тимчасових кеш-буферів даних в оперативній пам'яті комп'ютера) і процесів Ос (планованихОС задач абозавдань), спільно забезпечуючихмножиннийдоступ до бази даних Oracle7 . В ході виконання фази запуску бази даних Oracle7відкриваєрізні файли, необхідні для того, щоб зробити базу даних доступної.
Щоб база даних стала неприступноюдлязвичайнихкористувачів, адміністратор їїзакриває,размонтирует, від'єднуючи відекземпляра, а потім зупиняєекземпляр. В процесі останову Oracle7закриваєскладові базу даних файли Ос. Сервер бази даних Oracle7 виконує запускекземпляра, щоб зробити систему доступної длявикористовування, і зупиняє його, щобперевестиїї в автономнийстан.
Післязапуску адміністраторомекземплярабази даних і їївідкриттяпривілейовані користувачі можуть підключитися до бази і створити новий сеанс. Сеансзбазою даних можнарозглядатияк час, щопройшовміж підключенням користувача доекземплярабази даних і відключенням від нього. Сеанс в базі даних аналогічний сеансуулікаря— коли ви входите в кабінет, сеанспочинається, а коли виходите — закінчується.
Файли параметрів і запуск екземпляра.
Кожного разу, коли адміністратор починаєновий сеанс, Oracle7 для настройки конфігурації новогоекземплярапрочитує файл параметрів ініціалізації. Наприклад, адміністратор може встановити різні параметри для управління розміром буферів пам'ятіекземпляра.
Управління частковим доступом до бази даних за допомогою оперативно доступних і автономних табличних областей.
Адміністратор може також управляти доступністю інформації у відкритійбазі на базі табличних областей. Якщо таблична область оперативно доступна, то привілейовані користувачі можуть опитувати і модифікувати таблиці в табличній області,Проте, якщо таблична областьзнаходитьсяв автономномустані, використовувати дані в табличній області не може ніхто.
Управління доступністю табличної області Oracle7 може виявитисядля багатьох адміністративних операційвельмикорисним.
Якщо всі табличні додаткизнаходятьсяв табличній області, то адміністратор може ефективно зупинитидодаток,перевівшийого табличну областьдодаткув автономнийстан.
Припустимо, що таблична областьміститьархівні дані, корисні лише в дуже окремих випадках, а адміністратору знадобилася пам'ять на диску для зберігання даних інших табличних областей. Щобзвільнитина диску деяке місце, адміністратор можеперевеститабличну областьзархівними даними в автономнийстан, а потімвидалитиз диска архівні дані. Адміністратор повиненпоклопотатисяпро те, щоб створити резервні копії файлів даних автономної архівної табличної області і зберегти їх в надійному місці. Щозвільнилосяна диску місце він може використовувати для зберігання інформації інших табличних областей.
Адміністратори СУБД Oracle7 повинні бути єдиними користувачами, що управляють доступністю бази даних і її табличних областей.