Порядок виконання роботи
Моніторинг блокувань
Для отримання інформації про блокування, необхідно використовувати представлення словника даних. Такі як:
§ V$LOCK: Інформація про блокуваннях і ресурсах. Не включає блокування DDL
SID NUMBER Идентификатор процесса, удерживающего блокировкуTYPE VARCHAR2 Тип блокуванняID1 NUMBER Идентифікатор блокування #1 (номер сегмента відката, слот)ID2 NUMBER Идентифікатор блокування #2 (номер зміни, тобто число повторных використань сегмента відката)LMODE NUMBER Режим блокування: 1 (null), 2 (row share), 3 (row exclusive), 4 (share), 5 (share row exclusive), 6 (exclusive)
§ V$SESSION: Інформація про сесії для кожної поточної сесії
§ DBA_DDL_LOCKS: Всі блокування DDL, утримувані в базі даних, і всі запити, які очікують блокувань DDL
§ DBA_DML_LOCKS: Всі блокування DML, утримувані в базі даних, і всі запити, які очікують блокувань DML
§ DBA_LOCKS: Всі блокування або замки, утримувані в базі даних, і всі запити, які очікують блокувань або замків. Цей запит включає блокування DML і блокування DDL.
§ DBA_WAITERS: Всі сесії, які очікують блокувань, і всі сесії, що утримують блокування
§ DBA_BLOCKERS: Всі сесії, для яких є хто-небудь, що очікує утримуваних ними блокувань, але самі не очікують
§ V$SESSION_WAIT: Ресурси або події, яких чекають активні сесії
1. Що собою представляють транзакції в СУБД? Які основні характеристики транзакцій?
2. Які основні оператори керування транзакціями?
3. Створіть таблицю як копію таблиці scott.emp. Додайте у вашу таблицю новий рядок. За допомогою оператора commit зафіксуйте результати зміни.
4. Яке значення ключового слова work у синтаксисах операторів commitй rollback?
5. Додати до раніше створеної таблиці ще 2 будь-які рядки. Позначити крапку збереження за допомогою оператора SAVEPOINT. Після цього перевірити обидва режими виконання оператора ROLLBACK: відкотити всі зміни до заданої крапки збереження, а після відкотити всі зміни цілком.
6. Чи можна повторно використати крапки збереження усередині транзакцій? Що при цьому спостерігається?
7. Які режими в себе включає «список опцій» оператора SET TRANSACTION?
8. Установити режим Read Only для якої або таблиці. Використати оператори SELECT, COMMIT, ROLLBACK. Перевірити виконання даних операторів. Після чого використати оператори INSERT й DELETE й оцінити помилки видавані при цьому.
9. Установити режим Read Write і перевірити виконання операторів наведених вище.
10. Використати Isolation Level і перевірити виконання всіх параметрів даного оператора.
Для виконання наступних вправ створіть паралельне зєднання з базою даних як SYSDBA.
(наприклад з консолі SQL*Plus CONNECT sys/sys AS sysdba;)
11. Почати транзакцію, в якій збільшити зарплату одного з робітників в таблиці emp на 100 (scott #1).
12. З представлення словника даних DBA_DML_LOCKS отримати інформацію про встановлені блокування. За номером сесії (SESSION_ID) з цього представлення виберіть з представлення V$LOCK (SID) відповідні строки, та визначте типии накладених блокувань.
13. З під іншого сеансу користувача scott (#2) зменшіть зарплату тому-ж працівнику на 200.
14. Перегляньте представлення DBA_WAITERS та DBA_BLOCKERS. Поясніть що сталося з транзакцією №2?
15. Завершіть транзакцію №1. Які зміни сталися з транзакцією №2? Завершіть транзакцію №2 відкатом.
16. Почніть транзакцію збільшивши зарплату всім працівникам на 15%.
17. Зробіть запит до таблиць DBA_DML_LOCKS та V$LOCK поєднавши їх результати за номером сессії. Які блокування накладені?