- Табличні простору. Структура табличних просторів. Типи табличних просторів Словник даних (словник...
- Сегменти відкату UNDO (ROLLBACK)
- Тимчасові (TEMPORARY)
- Словник ORACLE. Типи (групи) таблиць словника. Отримання інформації про таблиці словника. Відмінності...
- Практичні заняття
- Підготовка SQL скриптів генерації схеми відносин БД в ERwin. Розробка скрипта для введення тестової...
- Архітектура MS SQL Server 2005. Налагодження та використання основних компонент середовища. Створення...
- Робота з СУБД MS SQL Server 2005, ORACLE 10g. Приклади з'єднань з БД, технології розробки кліенского додатки
- Робота з базами даних з J2EE Web-контейнера
- Об'єктно-реляційне відображення для роботи з базами даних
- Використання препроцесора для роботи з API СУБД
Табличні простору. Структура табличних просторів. Типи табличних просторів Словник даних (словник даних Oracle)
Першими таблицями, створюваними в будь-якій базі даних, є системні таблиці. Системні таблиці зберігають інформацію про структуру бази даних і об'єктів усередині неї, і Oracle звертається до них, коли має потребу в інформації про базу даних або коли виконує оператори DDL, DML. Оновлення в цих таблицях відбувається у фоновому режимі щоразу, коли виконується оператор DDL.
Сегменти відкату UNDO (ROLLBACK)
Коли дані в Oracle змінюються, зміна має бути або підтверджено, або скасовано. Якщо зміна скасовується ( "відкочується назад"), вміст блоків даних відновлюється в початковий стан, що існував до зміни. Сегменти відкату - це системні об'єкти, які підтримують цей процес. Використовуються для зберігання старих образів даних при виконанні транзакцій.
Тимчасові (TEMPORARY)
Тимчасові сегменти використовують простір в файлах бази даних, щоб створити тимчасову робочу область для проміжних стадій обробки SQL і для великих операцій сортування.
Словник ORACLE. Типи (групи) таблиць словника. Отримання інформації про таблиці словника. Відмінності між v $, DBA_, USER_, ALL_ групами таблиць
Словник даних. Першими таблицями, створюваними в будь-якій базі даних, є системні таблиці, або словник даних Oracle. Системні таблиці зберігають інформацію про структуру бази даних і об'єктів усередині неї, і Oracle звертається до них, коли має потребу в інформації про базу даних або коли виконує оператор DDL (Data Definition Language - мова визначення даних) або оператор DML (Data Manipulation Language - мова маніпулювання даними). Ці таблиці ніколи безпосередньо не оновлюються, однак оновлення в них відбувається в фоновому режимі щоразу, коли виконується оператор DDL. Головні таблиці словника даних містять нормалізовану інформацію, яка є досить важкою для сприйняття людиною, так що в Oracle передбачений набір уявлень, що видають інформацію головних системних таблиць в більш зрозумілому вигляді. Oracle запитує інформацію з таблиць словника даних для синтаксичного розбору будь-якого оператора SQL. Інформація кешируєтся в області словника даних розділяється пулу в SGA.
v $ - віртуальні подання словника даних (доступні користувачеві SYS), динамічні таблиці продуктивності, доступні користувачеві SYS, дозволяють управляти продуктивністю роботи сервера СУБД.
Префіксом USER забезпечуються уявлення, найбільш цікаві для звичайного користувача, об'єкти, власник яких - поточний користувач, префіксом ALL забезпечуються всі доступні користувачеві уявлення і префіксом DBA - доступні користувачам з системними повноваженнями, дані про БД.
Інформацію з таблиць словника можна вибирати за допомогою оператора select. Інформація про таблиці і уявленнях словника даних - dict (dictionary), інформація про шпальтах словника даних - dict_columns. Інформація про кожний параметр ініціалізації сервера БД (перегляд параметрів примірники) - v $ parameter.
Практичні заняття
Постановка задачі. Проектування даних на концептуальному і логічному рівнях. Нормалізація відносин.
Презентація по ER-моделювання
ER нотації
Приклад моделі в ERwin
Підготовка SQL скриптів генерації схеми відносин БД в ERwin. Розробка скрипта для введення тестової інформації.
Відео-презентація (Для програвання потрібно Windows Media Player)
Архітектура MS SQL Server 2005. Налагодження та використання основних компонент середовища. Створення навчальної бази даних.
Відео-презентація (Для програвання потрібно Windows Media Player)
Робота з СУБД MS SQL Server 2005, ORACLE 10g. Приклади з'єднань з БД, технології розробки кліенского додатки
Використання технології Java Database Connectivity (JDBC) для роботи з базами даних
презентація
Приклади до презентації
SQL-скрипти, проект і вихідні коди
package org.mai806.jdbcsample; import java.sql. *; public class QuerySample {public static void main (String [] args) throws Exception {/ * ======== Підключення до MS SQL Server ===== * / // Завантаження драйвера Class.forName ( "com. microsoft.sqlserver.jdbc.SQLServerDriver "); // З'єднання з базою даних Connection connection = DriverManager.getConnection ( "jdbc: sqlserver: // localhost: 1 433; databaseName = o01;", // localhost - сервер СУБД, o01 - ім'я бази даних "sa", "123") ; // користувач, пароль / * ======== Підключення до Oracle ============ // Завантаження драйвера Class.forName ( "oracle.jdbc.OracleDriver"); // З'єднання з базою даних Connection connection = DriverManager.getConnection ( "jdbc: oracle: thin: @localhost: 1 521: orcl", // localhost - сервер СУБД, orcl - SID бази оракла "o01", "o01"); // користувач, пароль // Створення Statement PreparedStatement stmt = connection.prepareStatement ( "select ID, NAME from PERSON where NAME like?"); stmt.setString (1, "% S%"); // Виконання запиту ResultSet rs = stmt.executeQuery (); // Перебір результату виконання запиту while (rs.next ()) {// Приклад вибору параметра за номером або по імені System.out.println ( "ID:" + rs.getLong (1) + "; NAME =" + rs .getString ( "NAME")); } // закриття використаних ресурсів БД rs.close (); stmt.close (); connection.close (); }} Лістинг P.1. Виконання запиту: QuerySample.java package org.mai806.jdbcsample; import java.sql. *; import java.util.ResourceBundle; public class StoredProcedureSample {private static Connection connection = null; public static void main (String [] args) throws Exception {// Отримання сполуки з значень параметрів у файлі properties ResourceBundle properties = ResourceBundle.getBundle ( "database"); Class.forName (properties.getString ( "driver")); connection = DriverManager.getConnection (properties.getString ( "url"), properties.getString ( "user"), properties.getString ( "password")); transferAmount (1,2,100.0); connection.close (); } / ** * Перекладає зазначену суму з одного рахунку на інший * @param from рахунок платника * @param to рахунок одержувача * @param amount сума * / public static void transferAmount (long from, long to, double amount) throws Exception {/ / Створення Statement CallableStatement stmt = connection.prepareCall ( "{call TransferAmount (?,?,?)}"); // Установка параметрів stmt.setLong (1, from); stmt.setLong (2, to); stmt.setDouble (3, amount); // Виконання процедури stmt.execute (); }} Лістинг P.2. Виконання процедури, що: StoredProcedureSample.java package org.mai806.jdbcsample; import java.sql. *; import java.util.ResourceBundle; public class TransactionalSample {private static Connection connection = null; public static void main (String [] args) throws Exception {// Отримання сполуки з значень параметрів у файлі properties ResourceBundle properties = ResourceBundle.getBundle ( "database"); Class.forName (properties.getString ( "driver")); connection = DriverManager.getConnection (properties.getString ( "url"), properties.getString ( "user"), properties.getString ( "password")); // Ручне управління транзакціями connection.setAutoCommit (false); try {transferAmount (2, 1, 10.0); } Finally {connection.close (); }} / ** * Перекладає зазначену суму з одного рахунку на інший * @param from рахунок платника * @param to рахунок одержувача * @param amount сума * / public static void transferAmount (long from, long to, double amount) throws Exception { PreparedStatement stmt = null; Statement query = null; try {stmt = connection.prepareStatement ( "update ACCOUNT set AMOUNT = AMOUNT +? where ID =?"); // Забираємо суму з рахунку платника stmt.setDouble (1, -amount); stmt.setLong (2, from); stmt.execute (); // Додаємо суму на рахунок одержувача stmt.setDouble (1, amount); stmt.setLong (2, to); stmt.execute (); // Пост-перевірка: негативність рахунку платника query = connection.createStatement (); ResultSet rs = query.executeQuery ( "select AMOUNT from ACCOUNT where ID =" + from + "and AMOUNT <0"); if (rs.next ()) {throw new Exception ( "На рахунку №" + from + "недосточності засобів [" + (amount + rs.getDouble (1)) + "] для зняття суми [" + amount + "]") ; } Connection.commit (); System.out.println ( "Перерахування коштів успішно виконано"); } Catch (Exception e) {e.printStackTrace (); connection.rollback (); } Finally {if (stmt! = Null) stmt.close (); if (query! = null) query.close (); }}} Лістинг P.3. Робота з транзакціями: TransactionalSample.java
Робота з базами даних з J2EE Web-контейнера
презентація
Об'єктно-реляційне відображення для роботи з базами даних
презентація
Використання препроцесора для роботи з API СУБД
презентація
Select ID, NAME from PERSON where NAME like?Update ACCOUNT set AMOUNT = AMOUNT +?
Where ID =?