Информационная система
<<  Oracle ECM Корпорация Oracle  >>
ORACLE
ORACLE
Основные понятия и условные сокращения
Основные понятия и условные сокращения
Буфер
Буфер
Кэш
Кэш
Блок (Block)
Блок (Block)
Узкое место (Bottleneck), Словарь данных (Data Dictionary)
Узкое место (Bottleneck), Словарь данных (Data Dictionary)
Контрольная точка (Checkpoint)
Контрольная точка (Checkpoint)
SGA (System Global Area)
SGA (System Global Area)
DBWR (DataBase WRiter)
DBWR (DataBase WRiter)
Чистый буфер (clean buffer), Грязный буфер (dirty buffer)
Чистый буфер (clean buffer), Грязный буфер (dirty buffer)
Параллелизм (concurrency)
Параллелизм (concurrency)
DDL (Data Definition Language)
DDL (Data Definition Language)
DML (Data Manipulation Language)
DML (Data Manipulation Language)
Динамические таблицы производительности (Dynamic Performance Tables)
Динамические таблицы производительности (Dynamic Performance Tables)
Функция
Функция
Процедура
Процедура
Программный блок
Программный блок
Запрос
Запрос
Триггер
Триггер
Транзакция
Транзакция
Объекты схемы
Объекты схемы
Таблица
Таблица
Кластер
Кластер
Индекс
Индекс
Представление (вид)
Представление (вид)
Хранимая процедура
Хранимая процедура
Последовательность (sequence)
Последовательность (sequence)
Конфигурации ORACLE
Конфигурации ORACLE
OLTP (Online Transaction Processing)
OLTP (Online Transaction Processing)
Характерные черты OLTP-систем
Характерные черты OLTP-систем
DSS (Decision Support System)
DSS (Decision Support System)
Характерные черты DSS
Характерные черты DSS
Хранилище данных (Data Warehouse)
Хранилище данных (Data Warehouse)
Характерные черты OLAP-систем
Характерные черты OLAP-систем
Обзор архитектуры ORACLE
Обзор архитектуры ORACLE
Физический уровень
Физический уровень
1. Один или более файлов данных
1. Один или более файлов данных
2. Два или более файлов журналирования операций (redo log files)
2. Два или более файлов журналирования операций (redo log files)
3. Один или более управляющих файлов
3. Один или более управляющих файлов
Логический уровень
Логический уровень
Табличные пространства и файлы данных
Табличные пространства и файлы данных
Табличные пространства и файлы данных(2)
Табличные пространства и файлы данных(2)
Табличные пространства и файлы данных(3)
Табличные пространства и файлы данных(3)
Табличные пространства и файлы данных(4)
Табличные пространства и файлы данных(4)
Табличные пространства и файлы данных(5)
Табличные пространства и файлы данных(5)
Сегменты, экстенты и блоки данных
Сегменты, экстенты и блоки данных
Сегменты
Сегменты
Экстенты
Экстенты
Блоки данных
Блоки данных
Сегменты, экстенты и блоки данных
Сегменты, экстенты и блоки данных
Экземпляр ORACLE
Экземпляр ORACLE
Экземпляр ORACLE
Экземпляр ORACLE
Системная Глобальная Область (SGA)
Системная Глобальная Область (SGA)
Кэш буферов БД
Кэш буферов БД
Буфер журнала изменений
Буфер журнала изменений
Разделяемый пул (shared pool)
Разделяемый пул (shared pool)
Библиотечный кэш
Библиотечный кэш
Кэш словаря данных
Кэш словаря данных
Кэш словаря данных (2)
Кэш словаря данных (2)
Программная Глобальная Область (PGA)
Программная Глобальная Область (PGA)
Экземпляр ORACLE
Экземпляр ORACLE
Процессы Oracle
Процессы Oracle
Процессы Oracle
Процессы Oracle
DBWR (DataBase WRiter)
DBWR (DataBase WRiter)
LGWR (LoG WRiter)
LGWR (LoG WRiter)
CKPT (ChecK PoinT)
CKPT (ChecK PoinT)
PMON (Process MONitor)
PMON (Process MONitor)
SMON (System MONitor)
SMON (System MONitor)
RECO (RECOvery)
RECO (RECOvery)
ARCH (ARCHiver)
ARCH (ARCHiver)
LCKn (Parallel Server LoCK)
LCKn (Parallel Server LoCK)
Dnnn (Dispatcher)
Dnnn (Dispatcher)
Процессы Oracle
Процессы Oracle
Процессы Oracle
Процессы Oracle
Как работает транзакция
Как работает транзакция
Как работает транзакция(2)
Как работает транзакция(2)
Как работает транзакция(3)
Как работает транзакция(3)
Как работает транзакция(4)
Как работает транзакция(4)
Функции СУРБД ORACLE
Функции СУРБД ORACLE
Создание контрольных точек (checkpointing)
Создание контрольных точек (checkpointing)
Создание контрольных точек (checkpointing)(2)
Создание контрольных точек (checkpointing)(2)
Журналирование и архивирование
Журналирование и архивирование
Журналирование и архивирование(2)
Журналирование и архивирование(2)
Производительность ORACLE
Производительность ORACLE
Производительность ORACLE(2)
Производительность ORACLE(2)
Производительность ORACLE(3)
Производительность ORACLE(3)
Параллельный сервер ORACLE
Параллельный сервер ORACLE
Репликация данных
Репликация данных
Репликация данных(2)
Репликация данных(2)
Репликация данных(3)
Репликация данных(3)
Применение SQL
Применение SQL
Выполнение SQL запросов, Выборка данных
Выполнение SQL запросов, Выборка данных
Отображение данных с помощью выражения Select
Отображение данных с помощью выражения Select
Отображение данных с помощью выражения Select
Отображение данных с помощью выражения Select
Использование псевдонимов для столбцов
Использование псевдонимов для столбцов
Выборка данных с использование Where
Выборка данных с использование Where
Выборка данных с использование Where
Выборка данных с использование Where
Применение регулярных выражений (RegExp)
Применение регулярных выражений (RegExp)
Сортировка данных
Сортировка данных
Выборка данных из нескольких таблиц
Выборка данных из нескольких таблиц
Выборка данных из нескольких таблиц
Выборка данных из нескольких таблиц
Выборка данных из нескольких таблиц
Выборка данных из нескольких таблиц
Выборка данных из нескольких таблиц
Выборка данных из нескольких таблиц
Выборка данных из нескольких таблиц
Выборка данных из нескольких таблиц
Выборка данных из нескольких таблиц
Выборка данных из нескольких таблиц
Выборка данных из нескольких таблиц
Выборка данных из нескольких таблиц
Использование связанных переменных
Использование связанных переменных
Псевдостолбцы
Псевдостолбцы
Арифметические выражения
Арифметические выражения
Числовые функции
Числовые функции
Агрегирующие функции
Агрегирующие функции
Агрегирующие функции
Агрегирующие функции
Агрегирующие функции
Агрегирующие функции
Управление данными
Управление данными
Вставка
Вставка
Обновление
Обновление
Удаление
Удаление
Выражения для управления транзакциями
Выражения для управления транзакциями
COMMIT
COMMIT
ROLLBACK
ROLLBACK
DDL
DDL
Создание таблиц
Создание таблиц
Управления столбцами
Управления столбцами
Переименование и удаление таблиц
Переименование и удаление таблиц
Управление индексами
Управление индексами
Управление индексами
Управление индексами
Управление видами
Управление видами
Управление последовательностями
Управление последовательностями
Управление синонимами
Управление синонимами
Вложенные SQL запросы
Вложенные SQL запросы
Вложенные SQL запросы
Вложенные SQL запросы
Вложенные SQL запросы
Вложенные SQL запросы
Триггеры
Триггеры
Типы триггеров
Типы триггеров
Триггеры
Триггеры
Триггеры
Триггеры
Триггеры
Триггеры
Триггеры с обработкой исключений
Триггеры с обработкой исключений
Триггер, который выполняется только один раз для запроса
Триггер, который выполняется только один раз для запроса

Презентация: «ORACLE». Автор: 18. Файл: «ORACLE.ppt». Размер zip-архива: 268 КБ.

ORACLE

содержание презентации «ORACLE.ppt»
СлайдТекст
1 ORACLE

ORACLE

МГТУ им. Баумана Кафедра: «Компьютерные системы и сети» Базы Данных Зо Надежда Санчельевна Москва, 2010г.

2 Основные понятия и условные сокращения

Основные понятия и условные сокращения

БД (DB) - База Данных. Совокупность данных, специально организованных для упрощения их извлечения. База данных - это действительные данные. СУБД (DBMS) - Система Управления Базами Данных. Программное обеспечение Oracle - это СУБД. СУРБД (RDBMS) - Система Управления Реляционными Базами Данных. Внутренний доступ к данным осуществляется реляционным способом. Oracle - это СУРБД.

3 Буфер

Буфер

Буфер - это некоторый объем оперативной памяти, используемый для хранения данных. Буфер содержит данные, которые предполагается использовать, или которые использовались совсем недавно.

4 Кэш

Кэш

Кэш - область памяти для быстрого доступа к данным. С точки зрения аппаратного обеспечения - это небольшой (применительно к оперативной памяти) объем памяти, который значительно быстрее основной памяти. В Oracle кэшем считается набор буферов (block buffers - т.е. блоки данных в оперативной памяти) и разделяемый пул (shared pool), поскольку они служат для хранения данных и инструкций, способствующих быстрому доступу. Кэширование - очень полезный механизм, значительно увеличивающий скорость доступа к данным

5 Блок (Block)

Блок (Block)

Блок (Block) - самая маленькая единица хранения данных в СУБД Oracle. Содержит заголовочную информацию и сам блок (данные или PL/SQL-код). Размер блока конфигурируется от 2 до 16Kb.

6 Узкое место (Bottleneck), Словарь данных (Data Dictionary)

Узкое место (Bottleneck), Словарь данных (Data Dictionary)

Узкое место (Bottleneck) - компоненты, ограничивающие производительность или эффективность системы. Словарь данных (Data Dictionary) - набор таблиц, используемых для поддержания информации о БД.

7 Контрольная точка (Checkpoint)

Контрольная точка (Checkpoint)

Контрольная точка (Checkpoint) - операция, приводящая к тому, что все измененные данные (блоки данных в памяти) записываются на диск. Это ключевой фактор в проблеме быстрого восстановления базы данных после сбоя.

8 SGA (System Global Area)

SGA (System Global Area)

SGA (System Global Area) - разделяемая область памяти, используемая для хранения данных и управляющей информации экземпляра Oracle. SGA размещается в памяти при запуске экземпляра Oracle, и освобождается при завершении работы. SGA составляют буферы данных, буфер журнала изменений и разделяемый пул (shared pool). Это одно из самых важных понятий и мы рассмотрим его более подробно позднее.

9 DBWR (DataBase WRiter)

DBWR (DataBase WRiter)

DBWR (database writer) - фоновый процесс, основная задача которого записывать изменения базы данных на физический жесткий диск.

10 Чистый буфер (clean buffer), Грязный буфер (dirty buffer)

Чистый буфер (clean buffer), Грязный буфер (dirty buffer)

Чистый буфер (clean buffer) - это такой буфер, содержимое которого не было подвержено изменению. Так как этот буфер не изменился, то процессу DBWR нет необходимости записывать его на жесткий диск. Грязный буфер (dirty buffer) - буфер, содержимое которого изменилось. DBWR периодически сбрасывает грязные буферы на жесткий диск.

11 Параллелизм (concurrency)

Параллелизм (concurrency)

Параллелизм (concurrency) - способность выполнять несколько функций одновременно. Применительно к Oracle, параллелизм - это возможность одновременного доступа к данным для множества пользователей.

12 DDL (Data Definition Language)

DDL (Data Definition Language)

DDL (Data Definition Language) - язык описания данных. Команды этого языка предназначены для создания, изменения и удаления объектов схемы. Также для предоставления привилегий и назначения ролей, установки опций аудита и добавления комментариев в словарь данных. Эти команды связаны с менеджментом и администрированием БД Oracle. Перед и после каждой DDL-команды Oracle обязательно фиксирует все текущие транзакции (чтобы избежать потери информации).

13 DML (Data Manipulation Language)

DML (Data Manipulation Language)

DML (Data Manipulation Language) - язык манипулирования данными. Команды этого языка позволяют строить запросы и оперировать с данными существующих объектов схемы. В отличие от DDL, фиксирование транзакций после каждой команды не производится. Существуют следующие команды DML: DELETE, INSERT, SELECT и UPDATE; EXPLAIN PLAN - команды; и LOCK TABLE - команды.

14 Динамические таблицы производительности (Dynamic Performance Tables)

Динамические таблицы производительности (Dynamic Performance Tables)

Динамические таблицы производительности (Dynamic Performance Tables) - эти таблицы создаются при запуске экземпляра Oracle и используются для хранения характеристик этого экземпляра. Эти характеристики включают в себя информацию о соединениях, вводе/выводе, первоначальные значения параметров среды и др.

15 Функция

Функция

Функция - это совокупность SQL или PL/SQL-команд, которая реализует определенную задачу. Функция отличается от процедуры тем, что возвращает какое-либо значение (процедура ничего не возвращает). Выполняя SQL-код посредством функций, Вы уменьшаете число инструкций, передаваемых по сети.

16 Процедура

Процедура

Процедура - это набор SQL или PL/SQL-команд, который выполняет определенную задачу. Процедура может иметь входные параметры, но не имеет выходных.

17 Программный блок

Программный блок

Программный блок - относительно СУБД Oracle - это программа, используемая для описания пакета, хранимой процедуры или последовательности.

18 Запрос

Запрос

Запрос - это транзакция "только для чтения". Запрос генерируется с помощью команды SELECT. Различие между обычной транзакцией и запросом состоит в том, что при запросе данные не изменяются .

19 Триггер

Триггер

Триггер - это механизм, позволяющий создавать процедуры, которые будут автоматически запускаться при выполнении команд INSERT, UPDATE или DELETE. Триггеры позволяют ужесточить политику ограничений, а также автоматизировать некоторые функции.

20 Транзакция

Транзакция

Транзакция - логически-завершенный фрагмент последовательности действий (одна или более SQL-команд, завершенных фиксацией или откатом). Производительность системы СУБД часто оценивается числом производимых транзакций в секунду или в минуту.

21 Объекты схемы

Объекты схемы

Объекты схемы - это абстракция (логическая структура) составляющих базы данных. Объекты схемы состоят из: индексов, кластеров, пакетов, последовательностей, хранимых процедур, синонимов, таблиц, представлений и т.д.

22 Таблица

Таблица

Таблица - основная единица хранения данных БД Oracle. Состоит из имени таблицы, строк и столбцов. Каждый столбец также имеет имя и тип данных. Таблицы хранятся в табличных пространствах, причем, часто, в одном табличном пространстве находятся несколько таблиц.

23 Кластер

Кластер

Кластер - набор таблиц, которые физически хранятся как одна и имеют общие столбцы. Использование кластеров крайне эффективно, если часто обрабатываются запросы к данным двух и более таблиц, имеющих общие столбцы. К таблицам можно обращаться по отдельности даже в том случае, если они являются частью кластерной таблицы.

24 Индекс

Индекс

Индекс - структура, которая позволяет извлекать данные быстро и эффективно (точно также как содержание какой-либо книги позволяет найти интересующий раздел). Индекс объявляется для одного или нескольких столбцов. Доступ к таблице происходит по проиндексированному столбцу (столбцам).

25 Представление (вид)

Представление (вид)

Представление (вид) - это как бы рамка, окно для просмотра данных из одной или более таблиц. Вид не хранит никаких данных, он только представляет их. С видами можно делать те же операции, что и с таблицами (строить запросы, обновлять, удалять), но с некоторыми ограничениями. Представления часто используются, чтобы упростить восприятие пользователем хранящихся в базе данных путем извлечения из таблицы лишь части необходимых данных или набора данных из нескольких таблиц. Кроме того, представления могут использоваться для ограничения доступа пользователей к некоторым данным. Физически представление хранится в БД просто как текст запроса

26 Хранимая процедура

Хранимая процедура

Хранимая процедура - это предопределенный SQL-запрос, хранимый в словаре данных. Хранимые процедуры разрабатываются для эффективного выполнения запросов. При использовании хранимых процедур можно уменьшить сетевой трафик СУРБД и, тем самым, увеличить производительность.

27 Последовательность (sequence)

Последовательность (sequence)

Последовательность (sequence) - генератор последовательностей Oracle, используется для создания последовательности цифр в кэше. Пользоваться этим генератором гораздо удобнее чем формировать последовательности вручную, поскольку вручную придется хранить где-то информацию о последнем значении последовательности, создавать новое значение и изменять предыдущее. Одну и ту же последовательность можно использовать одновременно для нескольких таблиц.

28 Конфигурации ORACLE

Конфигурации ORACLE

Существует много видов конфигураций. Давайте рассмотрим основные из них, проанализируем и определим характеристики.

29 OLTP (Online Transaction Processing)

OLTP (Online Transaction Processing)

- оперативная обработка транзакций. Это самая распространенная конфигурация. OLTP-система состоит из пользователей, которые взаимодействуют с системой. Эти системы обычно используются для оперативного ввода первичной информации (заполнение контрактов, проверка номеров кредитных карт, асинхронные транзакции и др.).

30 Характерные черты OLTP-систем

Характерные черты OLTP-систем

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

31 DSS (Decision Support System)

DSS (Decision Support System)

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

32 Характерные черты DSS

Характерные черты DSS

долго выполняющиеся запросы в противовес большим объемам данных. Пользователи DSS-систем вынуждены ждать ответа на запрос минуты, часы, а иногда и несколько дней. Данные обычно собираются из разных источников, а затем происходит их обработка. DSS-система сопряжена с интенсивным процессом чтения (процессы записи происходят гораздо реже).

33 Хранилище данных (Data Warehouse)

Хранилище данных (Data Warehouse)

- это крупномасштабная система, которая состоит как из OLTP, так и из DSS. Эти системы, как правило, работают с сотнями гигабайт данных и обслуживают огромное количество пользователей. имеет некоторые атрибуты DSS-систем, т.е. долго выполняющиеся запросы, а также компоненты для работы в реальном времени. Эти компоненты часто используются в качестве источников данных для DSS-запросов.

34 Характерные черты OLAP-систем

Характерные черты OLAP-систем

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

35 Обзор архитектуры ORACLE

Обзор архитектуры ORACLE

БД Oracle состоит из двух уровней: физический и логический. Физический уровень включает файлы, которые хранятся на диске, а логический уровень представляет компоненты физического уровня. Рассмотрим эти уровни более подробно.

36 Физический уровень

Физический уровень

Физический уровень включает три категории файлов:

37 1. Один или более файлов данных

1. Один или более файлов данных

В этих файлах хранится информация, имеющаяся в БД. Вы можете иметь как один файл данных, так и сотни таких файлов. Информация из одной таблицы может быть разбросана по нескольким файлам данных (а несколько таблиц могут делить между собой пространство файлов данных). Распределение таблиц по нескольким файлам данных может значительно увеличить производительность системы. Количество файлов данных ограничено параметром MAXDATAFILES.

38 2. Два или более файлов журналирования операций (redo log files)

2. Два или более файлов журналирования операций (redo log files)

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

39 3. Один или более управляющих файлов

3. Один или более управляющих файлов

Управляющие файлы содержат информацию, необходимую для запуска экземпляра Oracle (в том числе расположение файлов данных и файлов журналирования операций). Управляющие файлы должны быть хорошо защищены. Oracle предоставляет механизм для хранения нескольких копий управляющих файлов.

40 Логический уровень

Логический уровень

Логический уровень составляют следующие элементы: 1) Одно или несколько табличных пространств; 2) Схема БД, состоящая из таблиц, кластеров, индексов, представлений, хранимых процедур и т.д.

41 Табличные пространства и файлы данных

Табличные пространства и файлы данных

База данных разделяется на одну или более логических частей, называемых табличными пространствами. Табличные пространства используются для логической группировки данных между собой. Например, Вы можете определить одно табличное пространство для бухгалтерских данных, а другое для складских. Сегментирование групп по табличным пространствам упрощает администрирование этих групп. Каждое табличное пространство состоит из одного или более файлов данных.

42 Табличные пространства и файлы данных(2)

Табличные пространства и файлы данных(2)

Используя несколько файлов данных для одного табличного пространства, можно распределить их по разным дискам, увеличив тем самым скорость ввода-вывода и, соответственно, производительность системы. Таким образом, БД Oracle состоит из табличных пространств, которые, в свою очередь, состоят из файлов данных. А файлы данных могут быть разбросаны по нескольким физическим дискам.

43 Табличные пространства и файлы данных(3)

Табличные пространства и файлы данных(3)

В процессе создания БД Oracle автоматически, специально для Вас, строится табличное пространство SYSTEM. Хотя для небольших баз данных может хватить этого табличного пространства, но все же следует создать дополнительные табличные пространства для пользовательских данных. В табличном пространстве SYSTEM хранится словарь данных. Как Вы, наверное, помните, в словаре данных содержится информация о таблицах, индексах, кластерах и т.д

44 Табличные пространства и файлы данных(4)

Табличные пространства и файлы данных(4)

45 Табличные пространства и файлы данных(5)

Табличные пространства и файлы данных(5)

46 Сегменты, экстенты и блоки данных

Сегменты, экстенты и блоки данных

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

47 Сегменты

Сегменты

БД Oracle использует четыре типа сегментов: - сегмент данных - хранит пользовательские данные. - индексный сегмент - содержит индексы. - сегмент отката - хранит информацию отката, используемую при возврате к предыдущему состоянию БД. - временный (промежуточный) сегмент - создается в случае, если для выполнения SQL-выражения необходимо дополнительное рабочее пространство. Эти сегменты уничтожаются сразу после выполнения SQL-команд. Промежуточные сегменты используются также в разнообразных операциях с БД, например, при сортировке.

48 Экстенты

Экстенты

Экстенты являются строительными блоками сегментов, и, в тоже время, состоят из блоков данных. Экстенты используются для минимизации неиспользуемого (пустого) пространства хранилища. По мере увеличения количества данных в табличных пространствах, экстенты используются для хранения тех данных, которые могут разрастаться. Таким образом, несколько табличных пространств могут делить между собой пространство хранилища без предопределения разделов этих табличных пространств.

49 Блоки данных

Блоки данных

Это наименьшие единицы БД Oracle. Они физически хранятся на диске. Блоки данных на большинстве систем 2Кб (2048 байт), но Вы можете изменить этот размер на свое усмотрение для увеличения эффективности работы системы.

50 Сегменты, экстенты и блоки данных

Сегменты, экстенты и блоки данных

51 Экземпляр ORACLE

Экземпляр ORACLE

Экземпляр Oracle состоит из процессов и разделяемой памяти, необходимой для доступа к информации в БД. Если копнуть чуть глубже, то экземпляр составляют пользовательские процессы, фоновые процессы Oracle и разделяемая область памяти, которую используют все эти процессы.

52 Экземпляр ORACLE

Экземпляр ORACLE

Что же представляет собой разделяемая память (shared memory)? Oracle использует разделяемую память в разных целях: как кэширование данных и индексов, так и хранение программного кода. Разделяемая память делится на несколько частей (или структур памяти). Основными структурами памяти Oracle являются Системная Глобальная Область (System Global Area или SGA) и Программная Глобальная Область (Program Global Area или PGA). Рассмотрим SGA и PGA более подробно.

53 Системная Глобальная Область (SGA)

Системная Глобальная Область (SGA)

SGA - это область разделяемой памяти, которую Oracle использует для хранения данных и управляющей информации одного конкретного экземпляра Oracle. SGA размещается в памяти при запуске экземпляра Oracle и освобождает память при останове. Каждый запущенный экземпляр Oracle имеет свою собственную SGA. Информация в SGA состоит из следующих компонентов (каждый из которых создается в памяти при запуске экземпляра):

54 Кэш буферов БД

Кэш буферов БД

здесь хранятся последние открытые блоки данных. Эти блоки могут содержать данные, которые изменились, но еще не были записаны на диск (грязные блоки); данные, которые не изменялись либо были записаны на диск после изменения (чистые блоки). Так как кэш буферов БД хранит блоки данных на основе алгоритма последних используемых блоков, то наиболее активно используемые блоки постоянно остаются в памяти (тем самым, снижая дисковый ввод/вывод и увеличивая производительность системы).

55 Буфер журнала изменений

Буфер журнала изменений

хранит данные об изменениях БД. Буфер журнала изменений записывается в файл журнала изменений настолько быстро и эффективно, насколько это возможно. Помните, что журнал изменений используется для восстановления экземпляра СУБД Oracle в случае сбоя системы.

56 Разделяемый пул (shared pool)

Разделяемый пул (shared pool)

Это область SGA, в которой хранятся такие структуры разделяемой памяти, как разделяемые SQL-области в библиотечном кэше и внутренняя информация словаря данных. Разделяемый пул важен, потому что недостаточный объем памяти, выделенный для него, может привести к деградации производительности всей системы. Разделяемый пул состоит из библиотечного кэша и кэша словаря данных.

57 Библиотечный кэш

Библиотечный кэш

используется для хранения разделяемых SQL. Здесь для каждого уникального SQL-выражения строиться дерево разбора строк и план исполнения, которые кэшируются (т.е. сохраняются в библиотечном кэше). Если несколько приложений отправляют одинаковые SQL-выражения, то для ускорения работы используется разделяемая SQL-область (так как используются уже разобранные строки и готовый план исполнения, то происходит экономия времени).

58 Кэш словаря данных

Кэш словаря данных

содержит набор таблиц и представлений, используемых в качестве ссылок к БД Oracle. Здесь храниться информация о логической и физической структуре БД. Словарь данных содержит следующую информацию: - пользовательская информация (например, пользовательские привилегии) - ограничения целостности, определенные для таблиц БД - имена и типы данных всех столбцов таблиц БД. - информация об объеме памяти, определенном и используемом объектами схемы данных.

59 Кэш словаря данных (2)

Кэш словаря данных (2)

Oracle часто обращается к словарю данных при разборе SQL-выражений. Эти обращения составляют сущность работы Oracle. Узкие места в словаре данных влияют работу всех пользователей системы Oracle. Поэтому Вы всегда должны быть уверены, что объем памяти, определенный для словаря данных, достаточно велик для кэширования данных. Если кэш словаря данных мал, то Вы заметите значительное снижение производительности. Когда под кэш словаря данных Вы определите достаточный объем памяти, существенных проблем с производительностью быть не должно.

60 Программная Глобальная Область (PGA)

Программная Глобальная Область (PGA)

Программная Глобальная Область - это такая область памяти, в которой хранятся данные и управляющая информация о серверных процессах Oracle. Размер и содержание PGA определяется опциями, которые Вы указываете при инсталляции Oracle. Эта область состоит из следующих компонентов: - пространство стека - это память, хранящая переменные сеансов, массивы сеансов и т.д. - информация сеанса - если Oracle работает не в мультинитевом режиме, то информация сеанса хранится в PGA. В противном случае, информация сеанса хранится в SGA. - приватная SQL-область - это часть PGA, где хранятся связанные переменные и буферы реального времени.

61 Экземпляр ORACLE

Экземпляр ORACLE

62 Процессы Oracle

Процессы Oracle

Процессы Oracle выполняют функции для пользовательских процессов. Могут быть разбиты на две группы: серверные процессы (выполняющие функции для активных процессов) и фоновые процессы (выполняют функции СУРБД в целом). Серверные процессы (теневые) взаимодействуют между процессами пользовательскими и Oracle, исполняя пользовательские запросы. Например, если пользовательский процесс запрашивает часть данных, которых еще нет в SGA, то теневой процесс несет ответственность за чтение блоков данных из БД в SGA.

63 Процессы Oracle

Процессы Oracle

Между пользовательским и теневым процессом возникает связь один-к-одному (конфигурация выделенного сервера), хотя один теневой процесс может одновременно взаимодействовать с несколькими пользовательскими (конфигурация мультинитевого сервера), экономя системные ресурсы. Фоновые процессы используются для выполнения разнообразных задач СУРБД Oracle. Эти задачи варьируются от взаимодействия с экземпляром Oracle до записи грязных блоков на диск. Далее представлены девять фоновых процессов Oracle:

64 DBWR (DataBase WRiter)

DBWR (DataBase WRiter)

ответственен за запись грязных блоков из блоковых буферов БД на диск. Когда транзакция изменяет информацию в блоке данных, этот блок данных не обязан быть немедленно записан на диск. Следовательно, DBWR может записывать данные на диск способом более эффективным, чем запись всех изменений по отдельности. DBWR обычно записывает данные тогда, когда необходимо освободить часть буферов для новой порции данных. Записываются также те данные, которые были недавно использованы. Для систем с асинхронным вводом/выводом достаточно одного процесса DBWR. Для остальных систем можно значительно увеличить производительность, создав несколько процессов DBWR.

65 LGWR (LoG WRiter)

LGWR (LoG WRiter)

Записывает данные из журнального буфера в журнал изменений.

66 CKPT (ChecK PoinT)

CKPT (ChecK PoinT)

дает сигнал процессам DBWR о необходимости выполнения контрольной точки и обновления всех файлов данных и управляющих файлов. Контрольная точка - это событие, когда все измененные буферы БД записываются на диск. CKPT - это не обязательный процесс. Если процесс CKPT не запущен, то его работу принимает на себя LGWR.

67 PMON (Process MONitor)

PMON (Process MONitor)

используется для поддержания остальных процессов и перезапуска преждевременно погибших :) Также PMON очищает неиспользуемые области буферов и освобождает те ресурсы, которые могут быть еще заняты. Ответственен за перезапуск всех зависших процессов и диспетчеров.

68 SMON (System MONitor)

SMON (System MONitor)

выполняет восстановление экземпляра при его запуске. Это включает очистку временных сегментов и восстановление незаконченных транзакций. А также дефрагментирует БД.

69 RECO (RECOvery)

RECO (RECOvery)

очищает незаконченные транзакции в распределенной БД. Выполняет фиксацию или откат спорных транзакций.

70 ARCH (ARCHiver)

ARCH (ARCHiver)

копирует файлы журнала изменений при их заполнении. ARCH активен только в том случае, если СУРБД работает в режиме ARCHIVELOG. Если система не работает в этом режиме, то возможны ситуации, в которых не удастся восстановить систему после сбоя. В некоторых случаях все же можно работать и в режиме NOARCHIVELOG.

71 LCKn (Parallel Server LoCK)

LCKn (Parallel Server LoCK)

- до десяти процессов (где n - от 0 до 9) могут использоваться при работе сервера в параллельном режиме. Выполняют функции межэкземплярной блокировки.

72 Dnnn (Dispatcher)

Dnnn (Dispatcher)

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

73 Процессы Oracle

Процессы Oracle

74 Процессы Oracle

Процессы Oracle

75 Как работает транзакция

Как работает транзакция

Из предыдущих выпусков мы уже знаем, что транзакция - это одна или более SQL-команд, завершенных фиксацией или откатом. Под фиксацией (commiting) понимается принятие и сохранение всех изменений. Откат (rollbacking) - это процедура отмены последних изменений, т.е. возврат к предыдущему состоянию БД. Чтобы понять, как работает система Oracle, мы по шагам рассмотрим пример работы простой транзакции. Замечу, что для работы данного примера необходим SQL*Net (сетевой протокол Oracle), так как мы будем иметь дело с клиент-серверным приложением. Итак, транзакция выполняется следующим образом:

76 Как работает транзакция(2)

Как работает транзакция(2)

1. Приложение обрабатывает пользовательский ввод и создает соединение с сервером посредством SQL*Net. 2. Сервер принимает запрос на соединение и создает серверный процесс. 3. Пользователь выполняет SQL-команду (или совокупность команд). В нашем примере будем считать, что пользователь изменяет данные в строке таблицы. 4. Серверный процесс просматривает разделяемый пул - есть ли там SQL-область с идентичными SQL-командами. Если он находит аналогичную разделяемую SQL-область, то серверный процесс проверяет права пользователя на доступ к данным. Предположим, что права есть, тогда серверный процесс выполняет команды, используя разделяемую SQL-область. Однако, если разделяемая SQL-область не найдена, то выделяется память под новую, а затем происходит разбор и выполнение SQL-команд

77 Как работает транзакция(3)

Как работает транзакция(3)

5. Серверный процесс ищет данные в SGA (если они есть в buffer cache) или считывает их из файла данных в кэш буферов. 6. Серверный процесс изменяет данные в SGA. Запомните, что серверный процесс может только читать данные из файла данных. Позже процесс DBWR запишет измененные блоки данных в постоянное хранилище. 7. Пользователь выполняет команду COMMIT (фиксация) или ROLLBACK (откат). COMMIT завершает транзакцию, а ROLLBACK отменяет изменения. Если транзакция зафиксирована, то процесс LGWR немедленно записывает ее в файл журнала изменений. 8. Если транзакция успешно завершена, то клиентскому процессу передается код завершения. Если произошел какой-либо сбой, то возвращается сообщение об ошибке

78 Как работает транзакция(4)

Как работает транзакция(4)

79 Функции СУРБД ORACLE

Функции СУРБД ORACLE

При работе с СУРБД Oracle Вы должны организовать выполнение таких функций как целостность данных, восстановление после сбоев, перехват ошибок и т.д. Это можно устроить посредством контрольных точек, журналирования и архивирования. Рассмотрим далее некоторые из этих функций.

80 Создание контрольных точек (checkpointing)

Создание контрольных точек (checkpointing)

Как мы уже знаем, сигнал к созданию контрольной точки поступает либо от процесса DBWR, либо от LGWR. Но что же такое контрольная точка? И для чего она необходима? Так как все изменения блоков данных происходят в блоковых буферах, то изменения данных в памяти не обязательно отражаются в этих блоках на диске. Процесс кэширования происходит по алгоритму последнего использованного блока, поэтому буфер, подверженный постоянным изменениям, помечается как последний использованный, и процесс DBWR не записывает его на диск. Контрольная точка применяется для того, чтобы эти буферы были записаны на диск. Все грязные буферы вынуждены быть сохранены на диске в обязательном порядке. Но это вовсе не означает, что вся работа прекращается в момент выполнения контрольной точки.

81 Создание контрольных точек (checkpointing)(2)

Создание контрольных точек (checkpointing)(2)

Контрольная точка может выполняться в двух режимах: быстрая контрольная точка и нормальная контрольная точка. В режиме нормальной контрольной точки процесс DBWR просто записывает немного больше грязных буферов в каждый момент своей активности. В этом режиме контрольная точка выполняется гораздо дольше, но затрагивает меньше системных ресурсов, чем быстрая. В режиме быстрой контрольной точки DBWR записывает сразу большое число буферов в каждый момент своей работы. Такая контрольная точка выполняется очень быстро и более эффективна в смысле работы ввода/вывода. Но, в тоже время, значительно снижает производительность системы. Частое выполнение контрольных точек способствует снижению затрат времени, необходимого на восстановление системы в случае сбоя. Контрольная точка автоматически выполняется при смене журнала операций

82 Журналирование и архивирование

Журналирование и архивирование

Журнал операций (redo log) записывает все изменения БД Oracle. Целью использования журнала операций является экстренное восстановление БД в некоторых случаях сбоев системы и потери файлов данных. Восстановив файлы данных из ранее сделанных резервных копий, файлы журнала операций (включая архивные файлы журнала) могут повторить все последние транзакции. Таким образом, файлы данных будут полностью восстановлены.

83 Журналирование и архивирование(2)

Журналирование и архивирование(2)

Когда файл журнала операций (или группа файлов) оказывается полностью заполненным, происходит смена журнала и процесс LGWR переключается на следующую группу файлов журналирования операций. В этот момент осуществляется контрольная точка, а после смены журнала процесс ARCH копирует заполненный файл в архив файлов журналирования. Как только архивирование закончилось, файл журнала операций помечается как доступный. Очень важно, чтобы архивные файлы журнала операций надежно хранились, так как они могут понадобиться для восстановления системы.

84 Производительность ORACLE

Производительность ORACLE

В первую очередь на производительность Oracle влияет архитектура аппаратных средств. Но существует также ряд других факторов. Например, дизайн пользовательского приложения может затронуть эффективность и скорость работы больше, чем все остальные факторы. В большинстве случаев причиной небольшой производительности системы является именно приложение, в котором либо неоптимизированные SQL-запросы, либо не используются индексы. Хороший же дизайн приложения способен творить чудеса производительности. Приложение - это первое место, куда нужно обратить внимание, если у Вас возникают проблемы с производительностью.

85 Производительность ORACLE(2)

Производительность ORACLE(2)

Если Вы создадите таблицу, в которой некоторые столбцы проиндексированы, но эти столбцы не используются в предложении WHERE, то индексы никогда не будут использованы. Создавать правильные и красивые индексы недостаточно, Вы должны быть уверены в том, что они будут использованы. Желательно создать спецификацию идентификации таблиц и индексов в Вашей БД. В этом случае разработчики ПО и команда, разрабатывающая таблицы, будут иметь исчерпывающее руководство. Это поможет избежать многих проблем, а также даст возможность полноценного использования индексов.

86 Производительность ORACLE(3)

Производительность ORACLE(3)

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

87 Параллельный сервер ORACLE

Параллельный сервер ORACLE

Параллельный сервер Oracle позволяет разделить доступ к базе данных между разными серверными процессами (Oracle instance), причем каждый из процессов может обрабатывать конкурирующие транзакции. Различные серверные процессы, работающие с одной и той же базой данных, могут быть запущены на разных машинах, формируя тем самым отдельный кластер. Это резко повышает надежность работы системы, поскольку параллельный сервер Oracle в состоянии отловить аварийную ситуацию, произошедшую с одной из машин кластера, практически мгновенно, после чего база данных продолжает оставаться доступной через серверный процесс, запущенный на другой машине.

88 Репликация данных

Репликация данных

Репликация - это процесс копирования и поддержания объектов БД на множестве серверов, составляющих распределенную информационную систему. Изменения, производимые на одном сервере системы, затем передаются на удаленные серверы. Репликации позволяют пользователю получить быстрый доступ к разделяемой информации и организовать синхронизацию данных.

89 Репликация данных(2)

Репликация данных(2)

Репликации в среде Oracle могут происходить по двум схемам: мастер-мастер и мастер-snapshot. В первом случае два или несколько серверов БД функционируют как равные части единой системы. При такой конфигурации клиентские приложения могут изменять данные на любом из серверов - серверы БД Oracle автоматически синхронизируют данные во всех объектах репликаций, гарантируя при этом глобальную целостность данных и поддержку конкурирующих транзакций.

90 Репликация данных(3)

Репликация данных(3)

Схема мастер-snapshot предусматривает частичное или полное копирование объектов репликации с одного сервера БД на другой. При этом полученная копия представляет собой "мгновенный снимок" (snapshot) данных, содержащихся в объектах БД, подлежащих реплицированию. Такие "мгновенные снимки" могут иметь статус "только для чтения" или быть обновляемыми. Обновляемые snapshots позволяют клиенту возвращать изменения в реплицируемые объекты на мастер-сервере.

91 Применение SQL

Применение SQL

SQL – это непроцедурный язык программирования для доступа к базе данных. Все операции с базой данных выполняются с использованием языка SQL. Рассмотрим, как использовать Structured Query Language (Структурированный Язык Запросов), SQL для выборки и управления данными.

92 Выполнение SQL запросов, Выборка данных

Выполнение SQL запросов, Выборка данных

Запрос можно выполнить, используя страницы SQL Commands , Script Editor, либо с помощью коммандной строки SQL*Plus Выборка данных производится с помощью оператора Select. Полное описание синтаксиса можно посмотреть в документации к Oracle.

93 Отображение данных с помощью выражения Select

Отображение данных с помощью выражения Select

SELECT * FROM employees; SELECT * FROM departments; SELECT employee_id, last_name, first_name FROM employees; SELECT department_id, department_name FROM departments;

94 Отображение данных с помощью выражения Select

Отображение данных с помощью выражения Select

SELECT * FROM emp_details_view; SELECT employee_id, last_name, job_title, department_name, country_name, region_name FROM emp_details_view;

95 Использование псевдонимов для столбцов

Использование псевдонимов для столбцов

SELECT employee_id "Employee ID number", last_name "Employee last name", first_name "Employee first name" FROM employees;

96 Выборка данных с использование Where

Выборка данных с использование Where

SELECT * FROM employees WHERE manager_id = 122; SELECT * FROM employees WHERE manager_id = 122 AND job_id = 'ST_CLERK'; SELECT * FROM employees WHERE manager_id BETWEEN 122 AND 125;

97 Выборка данных с использование Where

Выборка данных с использование Where

SELECT employee_id, last_name FROM employees WHERE last_name LIKE '%mar%'; SELECT employee_id, last_name FROM employees WHERE last_name LIKE 'Mar%'; SELECT employee_id, last_name FROM employees WHERE commission_pct IS NOT NULL;

98 Применение регулярных выражений (RegExp)

Применение регулярных выражений (RegExp)

SELECT employee_id, job_id FROM employees WHERE REGEXP_LIKE (job_id, '[ac|fi|mk|st]_m[an|gr]', 'i'); Job_id начинается либо на ac,fi,mk или st, далее должно идти _m, после чего либо an, либо gr. При этом большие и маленькие буквы не различаются ( опция i).

99 Сортировка данных

Сортировка данных

SELECT * FROM employees WHERE manager_id = 122 ORDER BY employee_id; SELECT employee_id, last_name, first_name, manager_id FROM employees ORDER BY manager_id DESC;

100 Выборка данных из нескольких таблиц

Выборка данных из нескольких таблиц

SELECT employee_id, last_name, first_name, department_id, department_name, manager_id FROM employees NATURAL JOIN departments; Выборка происходит из двух таблиц с одинаковыми столбцами - manager_id и department_id

101 Выборка данных из нескольких таблиц

Выборка данных из нескольких таблиц

SELECT e.employee_id, e.last_name, e.first_name, e.manager_id, department_id, d.department_name, d.manager_id FROM employees e JOIN departments d USING (department_id); Общий столбец - department_id

102 Выборка данных из нескольких таблиц

Выборка данных из нескольких таблиц

SELECT e.employee_id, e.last_name, e.first_name, e.manager_id, department_id, d.department_name, d.manager_id, location_id, l.country_id FROM employees e JOIN departments d USING (department_id) JOIN locations l USING (location_id); Выборка из трёх таблиц.

103 Выборка данных из нескольких таблиц

Выборка данных из нескольких таблиц

SELECT e.employee_id, e.last_name, e.first_name, e.manager_id, department_id, d.department_name, d.manager_id, location_id, l.country_id FROM employees e JOIN departments d USING (department_id) JOIN locations l USING (location_id);

104 Выборка данных из нескольких таблиц

Выборка данных из нескольких таблиц

SELECT e.employee_id, e.last_name, e.department_id, d.department_name FROM employees e LEFT OUTER JOIN departments d ON (e.department_id = d.department_id) Из левой таблицы выбираются строки, даже если нет совпадающей в правой.

105 Выборка данных из нескольких таблиц

Выборка данных из нескольких таблиц

SELECT e.employee_id, e.last_name, d.department_id, d.department_name FROM employees e RIGHT OUTER JOIN departments d ON (e.department_id = d.department_id); Из правой таблицы выбираются строки, даже если нет совпадающей в левой.

106 Выборка данных из нескольких таблиц

Выборка данных из нескольких таблиц

SELECT e.employee_id, e.last_name, d.department_id, d.department_name FROM employees e FULL OUTER JOIN departments d ON (e.department_id = d.department_id); Выбираются все строки из обеих таблиц.

107 Использование связанных переменных

Использование связанных переменных

SELECT * FROM employees WHERE employee_id = :employee_id

108 Псевдостолбцы

Псевдостолбцы

SELECT SYSDATE "NOW" FROM DUAL; SELECT USER FROM DUAL; SELECT employee_id, hire_date, SYSDATE FROM employees WHERE ROWNUM < 10; DUAL – виртуальная пустая таблица с двумя столбцами

109 Арифметические выражения

Арифметические выражения

SELECT employee_id, (commission_pct * 100) "Commission %" FROM employees; SELECT employee_id, ((salary + 100) * 12) "Proposed new annual salary" FROM employees WHERE manager_id = 145;

110 Числовые функции

Числовые функции

SELECT employee_id, ROUND(salary/30, 2) "Salary per day" FROM employees; SELECT employee_id, TRUNC(salary/30, 0) "Salary per day" FROM employees; SELECT employee_id, MOD(employee_id, 2) FROM employees;

111 Агрегирующие функции

Агрегирующие функции

SELECT COUNT(*) "Employee Count" FROM employees WHERE manager_id = 122; SELECT COUNT(*) "Employee Count", manager_id FROM employees GROUP BY manager_id ORDER BY manager_id; SELECT COUNT(commission_pct) FROM employees;

112 Агрегирующие функции

Агрегирующие функции

SELECT COUNT(DISTINCT department_id) FROM employees; SELECT MIN(salary), MAX(salary), AVG(salary) FROM employees WHERE manager_id = 122; SELECT MIN(salary), MAX(salary), AVG(salary), job_id FROM employees GROUP BY job_id ORDER BY job_id;

113 Агрегирующие функции

Агрегирующие функции

SELECT department_id, min(salary), MAX (salary) FROM employees GROUP BY department_id HAVING min(salary) < 7000 ORDER BY min(salary); HAVING – where для функций

114 Управление данными

Управление данными

Вставки – INSERT Обновление – UPDATE Удаление - DELETE

115 Вставка

Вставка

INSERT INTO employees VALUES (10, 'Enrique', 'Borges', 'enrique.borges', '555.111.2222', '01-AUG-05', 'AC_MGR', 9000, .1, 101, 110); INSERT INTO employees (employee_id, last_name, email, hire_date, job_id, salary) VALUES (11, 'Doe', 'jane.doe', '31-AUG-05', 'SH_CLERK', 2400); SELECT employee_id, last_name FROM employees WHERE employee_id = 10 or employee_id = 11;

116 Обновление

Обновление

UPDATE employees SET salary = salary * 1.05 WHERE employee_id = 11; SELECT salary FROM employees WHERE employee_id = 11;

117 Удаление

Удаление

DELETE FROM employees WHERE employee_id = 10 OR employee_id = 11; SELECT * FROM employees WHERE employee_id = 10 OR employee_id = 11; Если вы случайно удалили не те строки, можно откатить изменения с помощью ROLLBACK

118 Выражения для управления транзакциями

Выражения для управления транзакциями

COMMIT – применить ROLLBACK - отменить

119 COMMIT

COMMIT

INSERT INTO employees (employee_id, last_name, email, hire_date, job_id, salary) VALUES (12, 'Doe', 'john.doe', '31-AUG-05', 'SH_CLERK', 2400); UPDATE employees SET salary = salary*1.10 WHERE employee_id = 12; COMMIT;

120 ROLLBACK

ROLLBACK

DELETE FROM employees WHERE last_name = 'Doe'; ROLLBACK; SELECT * FROM employees WHERE last_name = 'Doe';

121 DDL

DDL

Язык описания данных. Используется для: -создания таблиц -изменения столбцов -изменения ограничений -переименования, удаления таблиц -управления индексами, последовательностями и видами

122 Создание таблиц

Создание таблиц

CREATE TABLE my_birthdays ( first_name VARCHAR2(20), last_name VARCHAR2(25), bday_date DATE );

123 Управления столбцами

Управления столбцами

ALTER TABLE personal_info ADD (contact_email VARCHAR2(30) NULL); ALTER TABLE personal_info MODIFY (contact_email VARCHAR2(40) NOT NULL) ALTER TABLE personal_info DROP COLUMN contact_address;

124 Переименование и удаление таблиц

Переименование и удаление таблиц

ALTER TABLE my_birthdays RENAME to birthdays DROP TABLE birthdays; DROP TABLE personal_info;

125 Управление индексами

Управление индексами

CREATE INDEX emp_hiredate_idx ON employees (hire_date); ALTER INDEX emp_hiredate_idx RENAME TO emp_hire_date_idx; DROP INDEX emp_hire_date_idx;

126 Управление индексами

Управление индексами

CREATE INDEX emp_mgr_id_ix ON employees (employee_id, manager_id); DROP INDEX emp_mgr_id_ix; CREATE INDEX emp_upper_last_name_ix ON employees (UPPER(last_name)); DROP INDEX emp_upper_last_name_ix; - Ускоряет выполнение запроса, где в выражении WHERE есть UPPER(last_name(

127 Управление видами

Управление видами

CREATE OR REPLACE VIEW my_emp_view AS SELECT d.department_id, d.department_name, e.employee_id, e.first_name, e.last_name FROM employees e JOIN departments d ON d.manager_id = e.employee_id; DROP VIEW my_emp_view;

128 Управление последовательностями

Управление последовательностями

CREATE SEQUENCE new_employees_seq START WITH 1000 INCREMENT BY 1; SELECT new_employees_seq.NEXTVAL FROM DUAL; INSERT INTO employees VALUES (new_employees_seq.CURRVAL, 'Pilar', 'Valdivia', 'pilar.valdivia', '555.111.3333', '01-SEP-05', 'AC_MGR', 9100, .1, 101, 110); SELECT employee_id, last_name FROM employees WHERE last_name = 'Valdivia';

129 Управление синонимами

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

CREATE SYNONYM emps for HR.employees; SELECT employee_id, last_name FROM emps WHERE employee_id < 105; DROP SYNONYM emps;

130 Вложенные SQL запросы

Вложенные SQL запросы

В текст запроса можно добавить ещё один sql-запрос, заключённый в скобки. SELECT department_id, last_name, salary FROM employees x WHERE salary > (SELECT AVG(salary) FROM employees WHERE x.department_id = department_id) ORDER BY department_id;

131 Вложенные SQL запросы

Вложенные SQL запросы

SELECT last_name, department_id FROM employees WHERE department_id = (SELECT department_id FROM employees WHERE last_name = 'Lorentz') ORDER BY last_name;

132 Вложенные SQL запросы

Вложенные SQL запросы

UPDATE employees SET salary = salary * 1.1 WHERE employee_id IN (SELECT employee_id FROM job_history); CREATE TABLE new_departments (department_id, department_name, location_id) AS SELECT department_id, department_name, location_id FROM departments;

133 Триггеры

Триггеры

Триггер – это хранимая процедура, связанная с таблицей, представлением или событием. Триггер может быть выполнен один раз либо много раз для каждой строки таблицы. Триггер создаётся в помощью выражения CREATE TRIGGER

134 Типы триггеров

Типы триггеров

DML триггеры для таблиц INSTEAD OF триггеры для представлений Системные триггеры для DATABASE или SCHEMA

135 Триггеры

Триггеры

UPDATE employees SET salary = salary * 1.01 WHERE manager_id = 122; SELECT * FROM emp_audit;

136 Триггеры

Триггеры

CREATE TABLE emp_sal_log (emp_id NUMBER, log_date DATE, new_salary NUMBER, action VARCHAR2(50)); CREATE OR REPLACE TRIGGER log_salary_increase BEFORE UPDATE of salary ON employees FOR EACH ROW WHEN (OLD.salary < 8000) BEGIN INSERT INTO emp_sal_log (emp_id, log_date, new_salary, action) VALUES (:NEW.employee_id, SYSDATE, :NEW.salary, 'New Salary'); END;

137 Триггеры

Триггеры

CREATE OR REPLACE TRIGGER update_my_mgr_view INSTEAD OF UPDATE ON my_mgr_view FOR EACH ROW BEGIN UPDATE employees SET last_name = :NEW.last_name, first_name = :NEW.first_name, email = :NEW.email, phone_number = :NEW.phone_number, salary = :NEW.salary, commission_pct = :NEW.commission_pct WHERE employee_id = :OLD.manager_id; END; UPDATE my_mgr_view SET first_name = 'Denis' WHERE manager_id = 114;

138 Триггеры с обработкой исключений

Триггеры с обработкой исключений

CREATE TABLE emp_except_log (emp_id NUMBER, mgr_id_new NUMBER, mgr_id_old NUMBER, log_date DATE, action VARCHAR2(50));

139 Триггер, который выполняется только один раз для запроса

Триггер, который выполняется только один раз для запроса

UPDATE employees SET salary = salary * 1.01 WHERE department_id = 60; INSERT INTO employees VALUES(14, 'Belden', 'Enrique', 'EBELDEN','555.111.2222', '31-AUG-05', 'AC_MGR', 9000, .1, 101, 110); SELECT * FROM emp_update_log;

«ORACLE»
http://900igr.net/prezentacija/ekonomika/oracle-226861.html
cсылка на страницу
Урок

Экономика

125 тем
Слайды