В Центрах тестирования Академии АйТи реализуется программа сертификации Oracle Certified Professional. Программа предназначена для специалистов, которые отвечают за внедрение, администрирование и программирование баз данных под управлением Oracle SQL Server, а также разработку приложений с использованием инструментов Oracle.
Oracle - крупнейший в мире разработчик программного обеспечения для организаций, поставщик серверного оборудования.Компания специализируется на выпуске систем управления базами данных, связующего программного обеспечения и бизнес-приложений (ERP- и CRM-систем, специализированных отраслевых приложений). Корпорация предоставляет свои продукты и услуги в области консалтинга, обучения и технической поддержки более чем в 145 странах мира.
Эта статья предназначена в первую очередь для администраторов СУБД Oracle (и желающих ими стать), будет весьма полезна для разработчиков-прикладников, а также для пользователей этой сложной системы. Нас всех ждет увлекательное путешествие в мире Oracle, а я помогу не заблудиться в нем.
Начнем мы с самых азов, с самого простого и постепенно будем двигаться дальше и дальше. Предупреждаю сразу - это будет непросто. Но ведь Вы готовы разделить со мною трудности? Если так - то вперед!
Почему это будет трудно для Вас? Потому что надо не просто пробежать глазами по тексту, не просто получить удовольствие от процесса чтения, не просто удовлетвориться чтением заумного материала, а РАБОТАТЬ над текстом. Именно РАБОТАТЬ . Я часто буду описывать сложные взаимосвязи, если Вы их не изобразите на бумаге, не проштудируете каждый пункт, то останется пробел. Пробелы будут накапливаться, пока не образуются огромные пустоты. В конце концов, Вы зададитесь вопросом: "Чему я научился?". Думаю, Вы уже догадались, каков будет ответ.
Поставьте перед собой цель - "понять ВСЕ", если все же что-то оказалось непонятным - скорее всего в этом виноват я. Пишите мне, и в следующих выпусках мы рассмотрим непонятные вопросы значительно подробнее.
Почему это будет трудно для меня? Дело в том, что я тоже буду учиться вместе с моими подписчиками. А так как на мне лежит ответственность за Ваше продвижение вперед, так как я должен буду отвечать на вопросы, собирать материал, то я просто обязан идти на шаг вперед. И, пока Вы будете изучать текущий выпуск, мне надо будет готовить следующий.
Как я и обещал, начнем мы с самого простого.
Краткая история ORACLE.
В 1977г. Ларри Эллисон, Боб Майнер и Эд Оуэтс организовали свое дело, назвав фирму Relational Software Incorporated (RSI). Именно эта компания положила начало системе управления реляционными базами данных (СУРБД) Oracle. Эллисон, Майнер и Оуэтс решили разработать СУРБД, используя язык C и SQL-интерфейс. И вскоре вышла первая версия (прототип). Покупателям в 1979г. была представлена СУРБД Oracle версии 2, которая работала на Digital PDP-11, под управлением ОС RSX-11. Затем была портирована на систему DEC VAX.
1983г. стал вестником релиза версии 3, который привнес изменения в язык SQL, увеличил производительность системы и добавил некоторые другие улучшения. В отличие от предыдущих, третья версия была полностью написана на С. С этого момента RSI сменила свое название на Oracle Corporation.
Oracle версии 4 был представлен в 1984г. Эта версия поддерживала как ОС VAX, так и IBM VM. Эта версия предоставляла возможность многопользовательского стабильного чтения данных. Версия 5 появилась в 1985г. и стала поворотным пунктом на рынке СУБД, так как впервые представила технологию клиент-сервер, используя SQL*Net. Пятая версия стала также одной из первых MS DOS программ, перешагнувших через 640Kb-ый барьер.
В 1988г. Oracle представила версию 6. В этой версии появилась низкоуровневая блокировка и множество других изменений, увеличивших производительность и функциональность (включая генерацию последовательностей и отложенные записи). Oracle работает уже на множестве платформ и на разных операционных системах. В 1991г. вышел Сервер Параллельной Обработки СУРБД Oracle версии 6.1 для системы DEC VAX. Вскоре эта версия стала поддерживать и другие платформы.
Релиз Oracle 7 вышел в 1992г., было произведено множество архитектурных изменений в области памяти и операций ввода-вывода. Oracle 7 - это уже полноценный СУРБД-продукт, к какому привыкли пользователи и используется много лет.
В 1997г. вышла версия 8, которая привнесла объектную модель, новые свойства и средства администрирования.
В 1999г. вышла версия 8i (Oracle 8.1.5) со встроенным языком Java.
В 2001г. вышла версия 9i. По словам разработчиков, было сделано более 400 изменений по сравнению с предыдущей версией. Характерные изменения - "интеллектуализация" автоматизированных систем и расширение возможностей для аналитики.
Как видите, продукту Oracle уже 25 лет, а нам предстоит наверстать все эти "упущенные" годы за значительно более короткий срок. Последняя версия продукта включает в себя 75 разных серверных продуктов, но большинство из них выходят за рамки нашего курса.
Основные понятия и условные сокращения
Прежде, чем мы начнем изучение Oracle, необходимо, чтобы всем были ясны термины, которые будут встречаться в тексте. В каждом выпуске рассылки будет раздел "Основные понятия", чтобы читатели не тратили свое время на поиск определений незнакомых слов.
БД (DB) - База Данных. Совокупность данных, специально организованных для упрощения их извлечения. База данных - это действительные данные.
СУБД (DBMS) - Система Управления Базами Данных. Программное обеспечение Oracle - это СУБД.
СУРБД (RDBMS) - Система Управления Реляционными Базами Данных. Внутренний доступ к данным осуществляется реляционным способом. Oracle - это СУРБД.
Буфер - это некоторый объем оперативной памяти, используемый для хранения данных. Буфер содержит данные, которые предполагается использовать, или которые использовались совсем недавно. В большинстве случаев, буфер - это копия блока данных, который хранятся на жестком диске. Данные в буфере могут быть изменены и записаны на диск, буфер может быть создан и для временного хранения данных. Применительно к Oracle - буферы содержат те блоки данных, к которым недавно обращались. Совокупность буферов составляет кэш буферов данных (database buffer cache). Также в буфере сохраняются временные записи журнала операций, которые затем записываются на диск (буфер журнала операций).
Кэш - область памяти для быстрого доступа к данным. С точки зрения аппаратного обеспечения - это небольшой (применительно к оперативной памяти) объем памяти, который значительно быстрее основной памяти. Этот объем памяти используется для снижения времени, необходимого на частую загрузку данных или инструкций в центральный процессор (ЦП). ЦП сам по себе содержит встроенный кэш. В Oracle кэшем считается набор буферов (block buffers - т.е. блоки данных в оперативной памяти) и разделяемый пул (shared pool), поскольку они служат для хранения данных и инструкций, способствующих быстрому доступу. Кэширование - очень полезный механизм, значительно увеличивающий скорость доступа к данным. Так как обычно не удается уместить все буферы в оперативной памяти, то применяют специальные алгоритмы (самый распространенный - это хранение наиболее часто используемых блоков).
Блок (Block) - самая маленькая единица хранения данных в СУБД Oracle. Содержит заголовочную информацию и сам блок (данные или PL/SQL-код). Размер блока конфигурируется от 2 до 16Kb.
Узкое место (Bottleneck) - компоненты, ограничивающие производительность или эффективность системы.
Словарь данных (Data Dictionary) - набор таблиц, используемых для поддержания информации о БД.
Контрольная точка (Checkpoint) - операция, приводящая к тому, что все измененные данные (блоки данных в памяти) записываются на диск. Это ключевой фактор в проблеме быстрого восстановления базы данных после сбоя.
Схема (Schema) - коллекция объектов БД.
SGA (System Global Area) - разделяемая область памяти, используемая для хранения данных и управляющей информации экземпляра Oracle. SGA размещается в памяти при запуске экземпляра Oracle, и освобождается при завершении работы. SGA составляют буферы данных, буфер журнала изменений и разделяемый пул (shared pool). Это одно из самых важных понятий и мы рассмотрим его более подробно позднее.
Конфигурации ORACLE
Существует много видов конфигураций. Давайте рассмотрим основные из них, проанализируем и определим характеристики.
OLTP (Online Transaction Processing)
- оперативная обработка транзакций. Это самая распространенная конфигурация. OLTP-система состоит из пользователей, которые взаимодействуют с системой. Эти системы обычно используются для оперативного ввода первичной информации (заполнение контрактов, проверка номеров кредитных карт, асинхронные транзакции и др.).
Характерные черты OLTP-систем
: обычно поддерживает большое число пользователей, работающих с СУРБД. Так как пользователи ждут возвращения данных на запросы, то большое значение имеет время ответа. OLTP-системы сопряжены с интенсивными процессами чтения-записи. В зависимости от приложения рейтинг чтения-записи может варьироваться.
DSS (Decision Support System)
- системы поддержки принятия решений, используются в процессах принятия решений. Эти решения могут быть основаны на такой информации, как интенсивность продаж в определенных регионах, выборка покупателей определенного продукта, сортированный список электронных адресов и др.
Характерные черты DSS
: долго выполняющиеся запросы в противовес большим объемам данных. Пользователи DSS-систем вынуждены ждать ответа на запрос минуты, часы, а иногда и несколько дней. Данные обычно собираются из разных источников, а затем происходит их обработка. DSS-система сопряжена с интенсивным процессом чтения (процессы записи
происходят гораздо реже).
Хранилище данных (Data Warehouse)
- это крупномасштабная система, которая состоит как из OLTP, так и из DSS. Эти системы, как правило, работают с сотнями гигабайт данных и обслуживают огромное количество пользователей.
Характерные черты хранилища данных
: имеет некоторые атрибуты DSS-систем, т.е. долго выполняющиеся запросы, а также компоненты для работы в реальном времени. Эти компоненты часто используются в качестве источников данных для DSS-запросов.
Информационная лавка (Data Mart)
- это уменьшенная версия хранилища данных (ориентирована на решение узкоспециализированных задач), при этом сохраняет многие особенности Data Warehouse.
Характерные черты информационной лавки
: обычно 100 гигабайт данных или менее. Так же, как и хранилище данных поддерживает большое количество пользователей и позволяет генерировать сложные решения.
Видео-сервер
: позволяет поддерживать большое количество видеопотоков. Эти видеопотоки могут использоваться по заказу, в качестве развлечения и как обучающие курсы.
Характерные черты видео-сервера
: должен иметь широкую полосу пропускания, чтобы поддерживать несколько видеопотоков. Также, должен быть способен справляться с большой нагрузкой ввода/вывода. При чтении с устройств, загружаются сразу большие блоки данных, которые мало фрагментированы.
Веб-сервер
: предназначен для работы со статическими и динамическими веб-страницами. Эти страницы могут быть как очень простыми, так и комплексными, генерируемыми из базы данных. Веб-сервер Oracle, как правило, используется для коммерческих веб-приложений. Такие
приложения позволяют покупателям просматривать каталоги, которые содержат изображения товаров и даже видео иллюстрации. Покупатель может приобрести понравившийся товар.
Характерные черты веб-сервера Oracle
: обычно поддерживает значительное число пользователей, содержит большое число данных, к которым обращаются часто, и, в то же время, данные, к которым обращаются не очень часто. Производительность сервера может улучшить большое количество оперативной памяти.
OLAP(Online Analytical Processing)
- аналитическая обработка в реальном времени. Обычно используется вместе с многомерными данными. OLAP-пользователи - это финансовые аналитики или маркетинговый персонал, работающий с данными на глобальном уровне.
Характерные черты OLAP-систем
: требуют большого объема дисковой памяти и мощных вычислительных систем. OLAP-система может поддерживать лишь небольшое количество пользователей. Однако число пользователей зависит от конкретной конфигурации.
Заключение
Итак, мы познакомились с историей Oracle Corporation, выучили несколько важных понятий и узнали важнейшие конфигурации. Можете поздравить себя - Вы начали погружение в чудесный мир Oracle.
Бизнесом корпорации Oracle является информация - все, что связано с ее использованием, управлением и защитой. Oracle предлагает решения и услуги, позволяющие организациям с максимальной выгодой использовать самую актуальную и точную информацию, предоставляемую их бизнес-системами. Три основных продуктовых семейства корпорации: системы управления базами данных Oracle Database 10g, комплекс связующего программного обеспечения Oracle Fusion Middleware и семейство полнофункциональных бизнес-приложений Oracle Applications.
- Cистемы управления базами данных Oracle Database 10g,
- Комплекс связующего программного обеспечения Oracle Fusion Middleware
- CRM-решения Siebel
- Решения для биллинга Portal Software
Решения Oracle
Почти тридцать лет назад основатели Oracle, создав первую реляционную базу данных, смогли навсегда изменить представление об использовании вычислительных ресурсов в сфере бизнеса. Сегодня флагманский продукт корпорации - СУБД Oracle - удовлетворяет всем требованиям, предъявляемым при построении промышленных информационных систем любого масштаба и сферы применения.
Oracle Database 10g - это первая СУБД, ориентированная на технологии сетевых вычислений Grid Computing - позволяет сократить ИТ-расходы благодаря автоматизации управления, использованию недорогих модульных компонентов и кластеризации серверов в целях эффективного использования ресурсов. Используя СУБД Oracle Database 10g , клиенты Oracle смогут повысить способность ИТ-систем гибко реагировать на изменяющиеся потребности бизнеса. Архитектура Oracle Database 10g рассчитана на работу с огромными объемами данных и обширными коллективами пользователей; она демонстрирует непревзойденные возможности обеспечения высокой готовности, производительности, масштабируемости, безопасности и самоуправляемости. Эта СУБД может быть эффективно развернута на любой платформе, начиная от небольших blade-серверов и заканчивая крупнейшими симметричными многопроцессорными серверами и многоузловыми кластерами любых размеров. Уникальная способность Oracle Database 10g работать со всеми типами данных, от традиционной бизнес-информации до XML-документов и геоинформационных данных, позволяет рассматривать эту СУБД в качестве идеального выбора для работы с приложениями онлайновой обработки транзакций, поддержки принятия решений и управления контентом.
Oracle Fusion Middleware объединяет передовые, основанные на стандартах, проверенные программные продукты в единый, всеобъемлющий, тесно интегрированный набор инфраструктурного программного обеспечения. Используя Oracle Fusion Middleware, организации могут получать большую отдачу от своих инвестиций и связующего программного обеспечения. В состав этого семейства продуктов входят: сервер приложений Oracle Application Server 10g g, связанные с ним продукты и опции, концентраторы данных Oracle Data Hub и пакет для коллективной работы Oracle Collaboration Suite.
Это семейство продуктов, полностью основанное на стандартах, сочетает экономическую эффективность с технологическим совершенством, обеспечивая полную поддержку разработки, развертывания и администрирования сервисно-ориентированных архитектур. Oracle Fusion Middleware помогает предприятиям достичь уникальной производительности и эффективности за счет:
- рационализации и оптимизации бизнес-процессов и деятельности ИТ-подразделений;
- повышения точности и своевременности принимаемых решений;
- обеспечения защиты информации и соблюдения законодательных требований по полноте и безопасности данных предприятия, что сводит к минимуму вероятность сбоев бизнеса.
Для грамотного использования Oracle необходимо иметь хорошее понимания языка SQL. Курс "Oracle. Программирование на SQL и PL/SQL " раскрывает полный спектр возможностей языка SQL в Oracle и ряд аспектов неочевидных особенностей построения типовых конструкций БД.
PL/SQL - процедурный язык , разработанный фирмой Oracle для написания хранимых в БД подпрограмм. PL/SQL обеспечивает общую основу процедурного программирования как в клиентских приложениях, так и на стороне сервера, в том числе хранимых на сервере подпрограмм, пакетов и триггеров базы данных.
Знания даются для версий Oracle 8i, 9i, 10g, 11g и 12с . Курс сопровождается практическими упражнениями, позволяющими закрепить понимание базовых понятий и освоить основные технические приемы программирования на языках SQL и PL/SQL.
По окончании курса слушатели получают возможность самостоятельного программирования Oracle на этих языках для решения задач разработки приложений в архитектуре клиент-сервер, а также задач администрирования БД.
Основное отличие этого курса от ряда других со схожей тематикой в том, что целью ставится научить конкретных слушателей реальной работе с Oracle на этих языках, а не прочитать формально программу, подготовленную третьей стороной.
Курс предназначен для разработчиков, программистов и администраторов баз данных. Слушатели должны обладать хорошим уровнем компьютерной грамотности, и иметь опыт программирования.
Программа курса "Oracle. Программирование на SQL и PL/SQL"
Введение в Oracle SQL
1. Основные понятия
- Базы данных и реляционная модель
- Базы данных
- Реляционный подход к моделированию данных
- Реализация реляционной СУБД
Другие подходы к моделированию данных и другие типы СУБД- Что такое SQL ?
- История и стандарты
- Oracle-диалект SQL
- PL/SQL
2. SQL*Plus и ввод предложений на SQL
3. Пример "схемы" базы данных
4. Создание, удаление таблиц и изменение структуры
- Предложение CREATE TABLE
- Типы данных в столбцах
- Уточнения в описаниях столбцов
- Указание NOT NULL
- Значения по умолчанию
- Проверка CHECK поступающих в таблицу значений
- Создание таблиц по результатам запроса к БД
- Именование таблиц и столбцов
- Виртуальные столбцы
- Удаление таблиц
- Изменение структуры таблиц
- Логические и технические особенности удаления столбца
- Использование синонимов для именования таблиц
- Переименования
- Справочная информация о таблицах в БД
5. Основные элементы предложений DML: выражения
- Непосредственные значения данных (литералы)
- Числовые значения
- Строки текста
- Моменты и интервалы времени
- "Системные переменные"
- Числовые выражения
- Выражения над строками текста
- Выражения над типом "момент времени"
- Функции
- Скалярные функции
- CASE-выражения
- Скалярный запрос
- Условные выражения
- Отдельные замечания по поводу отсутствия значения в выражениях
6. Выборка данных
- Фразы предложения SELECT
- Общие правила построения предложения SELECT
- Порядок обработки предложения SELECT
- Пример 1 предложения SELECT
- Пример 2 предложения SELECT
- Логическая целостность обработки предложения SELECT
- Фраза FROM предложения SELECT
- Варианты указания столбца
- Столбцы из разных таблиц
- Использование псевдонимов в запросе
- Подзапрос в качестве источника данных
- Специальный случай для запроса-соединения
- Фраза WHERE предложения SELECT
- Общий алгоритм отработки фразы WHERE
- Операторы сравнения для получения условного выражения
- Связки AND, OR и NOT для комбинирования условных выражений
- Условный оператор IS
- Условный оператор LIKE
- Условный оператор BETWEEN
- Условный оператор IN с явно перечисляемым множеством
- Условный оператор IN с множеством, получаемым из БД
- Условия сравнения с подзапросом
- Указание ANY и ALL для сравнения с элементами множества значений
- Условный оператор EXISTS
- Фраза SELECT и функции в предложении SELECT
- Сокращенная запись для группового отбора столбцов
- Выражения во фразе SELECT
- Подзапросы во фразе SELECT
- Уточнение DISTINCT
- Особенности поведения стандартных агрегатных функций в предложении SELECT
- Именование столбцов в результате запроса
- Системная функция ("переменная") ROWNUM и особенности ее использования
- Аналитические функции
- Выражение типа ссылка на курсор
- Фраза ORDER BY предложения SELECT
- Простейшая сортировка
- Упорядочение по значению выражения
- Указание номера столбца
- Двоичное и "языковое" упорядочение строк
- Особенности обработки отсутствующих значений (NULL)
- Фразы GROUP BY и HAVING предложения SELECT
- Пример отработки фразы GROUP BY … HAVING
- Отсутствие значения в выражении для группировки
- Другие примеры
- Указание ROLLUP, CUBE и GROUPING SETS в во фразе GROUP BY
- Фраза CONNECT BY предложения SELECT
- Специальные системные функции в предложениях с CONNECT BY
- Упорядочение результата
- Фраза WITH предварительной формулировки подзапросов
- Комбинирование предложений SELECT
- Комбинирование оператором UNION
- Комбинирование оператором INTERSECT
- Комбинирование оператором MINUS
- Подзапросы
- Операция соединения в предложении SELECT
- Виды соединений
- Новый синтаксис в версии 9
- Особенности выполнения операции соединения
7. Обновление данных в таблицах
- Добавление новых строк
- Явное добавление строки
- Добавление строк, полученных подзапросом
- Добавление в несколько таблиц одним оператором
- Изменение существующих значений полей
- Использование умолчательных значений в INSERT и UPDATE
- Удаление строк из таблицы
- Выборочное удаление
- Вариант полного удаления
- Комбинирование UPDATE, INSERT и DELETE в одном операторе
- Логическая целостность операторов обновления данных таблиц и реакция на ошибки
- Реакция на ошибки в процессе исполнения
- Фиксация изменений в БД
- Данные о системном номере изменения для строки
- Ускорение выполнения COMMIT
8. Быстрое обращение к прошлым значениям данных
- Чтение старых значений строк таблицы
- Восстановление таблиц и данных ранее удаленных таблиц
9. Схемные ограничения целостности
- Разновидности схемных ограничений целостности
- Ограничение NOT NULL
- Первичные ключи
- Уникальность значений в столбцах
- Внешние ключи
- Дополнительное условие для значения в поле строки
- Дополнительное условие, связывающее значения в нескольких полях строки
- Добавление ограничения при наличии нарушений
- Приостановка проверки схемных ограничений в пределах транзакции
- Отключение и включение схемных ограничений целостности
- Технология включения и выключения схемных ограничений целостности
- Более сложные правила целостности
10. Виртуальные таблицы (производные, выводимые: views)
- Основные ("базовые") и виртуальные таблицы
- Обновление виртуальных таблиц
- Ограничения прямой модификации данных через виртуальные таблицы
- Запрет непосредственных обновлений
- Сужение возможности непосредственных обновлений
- Виртуальные таблицы с хранием данных
- Особенности именованых виртуальных таблиц
- Неименованые виртуальные таблицы без хранения данных
11. Нескалярные типы для "сложно устроенных" данных в Oracle
- Хранимые объекты
- Простой пример
- Использование свойств и методов объектов
- Использование ссылок на объект
- Коллекции
- Вложенные таблицы
- Массивы VARRAY
- Тип XMLTYPE
- Простой пример
- Таблицы данных XMLTYPE
- Преобразование табличных данных в тип XMLTYPE
- Тип ANYDATA
12. Вспомогательные виды хранимых объектов
- Генератор уникальных номеров
- Каталог операционной системы
- Таблицы с данными временного хранения
- Ссылка на другую БД
- Подпрограммы
- Индексы
- Индексы для проверки схемных ограничений целостности
- Таблицы с внешним хранением данных
13. Некоторые замечания по оптимизации SQL-предложений
14. Транзакции и блокировки
- Транзакции в Oracle
- Примеры блокировок данных транзакциями
- Разновидности блокировок
- Неявные блокировки при операциях DML
- Влияние внешних ключей
- Явная блокировка таблиц (тип TM) командой LOCK
- Явная блокировка отдельных строк таблиц
- Недокументированная разновидность групповой блокировки
- Блокировки предложениями DDL
15. Пользователи (схемы) и дополнительные средства разграничения доступа к данным
16. Таблицы системного каталога (словаря-справочника)
18. Встроенный SQL
- Некоторые примеры составления запросов
19. Выдать сотрудников в соответствии с большим (меньшим) окладом
- Вопрос к БД
- "Очевидное", но неправильное решение
- Правильные решения
- Решение типа top-N (начиная с версии 8.1.5)
- Решение с использованием аналитических функций ранжирования
20. Переформулировка запроса с HAVING
22. Ловушка условия с отрицанием NOT
23. Ловушка в NOT IN (S)
Введение в PL/SQL
1. Основные понятия
- Место PL/SQL в архитектуре Oracle
- Общая структура программы на PL/SQL
2. Основные типы и структуры данных
- Скалярные переменные
- Числовые типы
- Строковые типы
- Моменты времени и интервалы
- Булевы переменные
- LOB-типы
- Объявление переменных и постоянных
- Записи
- Объявление записей в программе
- Присвоения
- Ссылка на типы уже имеющихся данных
- Пользовательские подтипы
3. Выражения
4. Основные управляющие структуры
- Ветвление программы
- Предложение IF-THEN
- Предложение IF-THEN-ELSE
- Предложение IF-THEN-ELSIF
- Предложения CASE
- Безусловная передача управления
- Циклы
- Простой цикл
- Счетный цикл (FOR)
- Цикл по курсору (FOR)
- Цикл WHILE
- Имитация цикла REPEAT UNTIL
- Метки в циклах и в блоках
5. Подпрограммы
- Локальные подпрограммы
- Переопределение «внешних» имен
- Предваряющие (forward) объявления
- Повторение имен на одном уровне (overloading)
- 6. Взаимодействие с базой данных: статический SQL
- Использование записей вместо (списка) скаляров
7. Регулирование изменений в БД
- Управление транзакциями
- Блокировки
- Автономные транзакции
8. Встроенный динамический SQL
- Операторы встроенного динамического SQL
- Сравнительный пример двух способов работы с динамическим SQL
9. Использование курсоров
- Явные курсоры
- Объявление явных курсоров
- Открытие явных курсоров
- Извлечение результата через явный курсор
- Закрытие явного курсора
- Отсутствие запрета изменений таблиц при открытом курсоре
- Атрибуты для явных курсоров
- Несколько примеров использования циклов и курсоров
- Курсоры с блокировкой строк таблицы
- Предложение SELECT … FOR UPDATE
- Предосторожности употребления курсоров с блокировкой
- Возможность изменять строки, выбираемые курсором
- Ссылки на курсор
- Общие сведения
- Пример употребления для структуризации программы
- Неявные курсоры
10. Обработка исключительных ситуаций
- Объявление исключительных ситуаций
- Примеры обработки
- Порождение исключительных ситуаций
- Зона действия и распространение
- «Внутренние» исключительные ситуации блока
- Использование функций SQLCODE и SQLERRM
11. Хранимые процедуры и функции
- Общий синтаксис
- Параметры
- Тип параметра
- Режим использования параметра
- Значения по умолчанию
- Способы указать фактические значения параметрам
- Обращение к параметрам и к локальным переменным в теле подпрограммы
- Указания компилятору при создании подпрограмм
- Хранимые подпрограммы и привилегии доступа к данным в БД
- Две логики реализации привилегий доступа к данным БД
- Особенности передачи привилегий через роли
12. Триггерные процедуры
- Создание триггерной процедуры
- Отключение триггерных процедур
- Триггерные процедуры для событий категории DML
- Комбинированные триггерные процедуры
- Управление транзакциями в теле триггерной процедуры
- Последовательность срабатывания триггерных процедур, когда их несколько
- Триггерные процедуры INSTEAD OF для выводимых таблиц
- Триггерные процедуры для событий категории DDL
- Триггерные процедуры для событий уровня схемы и БД
13. Пакеты в PL/SQL
- Общая структура пакета
- Обращение к элементами пакета
- (Глобальные) данные пакета
- Взаимные вызовы и повторения имен
- Инициализация пакета
- Прагма SERIALLY_REUSABLE
14. Вызов функций PL/SQL в предложениях SQL
- Требования и ограничения на применение функций пользователей в SQL
- Обращение в SQL к функциям из состава пакетов
- Разрешение конфликта имен столбцов и функций
- Табличные функции в SQL
15. Более сложные типы данных: коллекции
- Синтаксис объявления типов для коллекций
- Работа с ассоциативными массивами
- Создание вложенной таблицы и массива VARRAY в программе
- Добавление и убирание элементов в коллекциях
- Множественные действия с коллекциями
- Преобразования коллекций
- Методы для работы с коллекциями в программе
- Примеры использования коллекций в программе
- Привилегии
- Серийное выполнение и привязывание запросов к массивам
- Серийное выполнение однотипных операций: конструкция FORALL
- Привязка массивами: конструкция BULK COLLECT INTO
- Пример для схемы SCOTT
- Использование коллекций в табличных функциях (потоковой реализации)
- Простой пример
- Использование для преобразования данных
16. Отладка процедур в PL/SQL
- Таблицы словаря-справочника
- Зависимости подпрограмм
- Системные пакеты
- Пакет DBMS_PROFILER
- Пакет DBMS_TRACE
- Функции пакета DBMS_UTILITY
- Пакет DBMS_DEBUG
- Пример построения профиля работы программы
17. Системы программирования для PL/SQL
18. Системные пакеты PL/SQL
- Пакеты STANDARD и DBMS_STANDARD
- Прочие системные пакеты
- Запись данных из программы в файл и обратно
- Шифрование данных
- Автоматический запуск заданий в Oracle
- Управление динамическим размещением объектов в библиотечном буфере
- Манипулирование большими неструктурированными объектами NULL
- Доступ к старым значениям данных
- Рассылка сообщений из программы на PL/SQL
- Возможности работы в PL/SQL с COM Automation
- Дополнительные сведения
- Простой пример разделения открытия курсора и обработки
- Более сложный пример разделения работы
20. Атрибуты триггерных процедур уровня схемы БД и событий в СУБД
В современном мире сложно обойтись без информационных технологий и их производных - компьютеров, мобильных телефонов, интернета и т.д., особенно в крупных компаниях и государственных организациях, работающих с большим количеством людей, а не только с парой VIP-клиентов, как это может быть в случае небольшой компании. А там, где есть большое количество контрагентов, заявителей и т.д. - не обойтись без баз данных, необходимых для обработки информации. Естественно, что времена гроссбухов и карточек, памятных многим по библиотекам, давно прошли, сегодня используются персональные компьютеры и электронные базы данных.
Сегодня невозможно представить работу крупнейших компаний, банков или государственных организаций без использования баз данных и средств Business Intelligence . Базы данных позволяют нам хранить и получать доступ к большим объемам информации, а система управления базами данных (СУБД) - осуществлять менеджмент доступных хранилищ информации.
В Учебном центре « Интерфейс» Вы научитесь эффективно использовать системы управления базами данных: быстро находить нужную информацию, ориентироваться в схеме базы данных, создавать запросы, осуществлять разработку и создание баз данных.
Обучение позволит Вам не только получить знания и навыки, но и подтвердить их, сдав соответствующие экзамены на статус сертифицированного специалиста. Опытные специалисты по СУБД Microsoft SQL Server или Oracle могут быть заинтересованы в изучении систем бизнес-аналитики. Это задачи достаточно сложные, использующие громоздкий математический аппарат, но они позволяют не только анализировать происходящие процессы, но и делать прогнозы на будущее, что востребовано крупными компаниями. Именно поэтому специалисты по бизнес-аналитике востребованы на рынке, а уровень оплаты их труда весьма и весьма достойный, хотя и квалифицированным специалистам по базам данных, администраторам и разработчикам, жаловаться на низкий уровень дохода тоже не приходится. Приходите к нам на курсы и получайте востребованную и высокооплачиваемую профессию. Мы ждем Вас!
В конце обучения на курсах проводится итоговая аттестация в виде теста или путём выставления оценки преподавателем за весь курс обучения на основании оценок, полученных обучающимся при проверке усвоения изучаемого материала на основании оценок за практические работы, выполненные в процессе обучения.
Учебный центр "Интерфейс" оказывает консалтинговые услуги по построению моделей бизнес-процессов, проектированию информационных систем, разработке структуры баз данных и т.д.
- Нужна помощь в поиске курса?
Наша цель заключается в обеспечении подготовки специалистов, когда и где им это необходимо. Возможна корректировка программ курсов по желанию заказчиков! Мы расскажем Вам о том, что интересует именно Вас, а не только о том, что жестко зафиксировано в программе курса. Если вам нужен курс, который вы не видите на графике или у нас на сайте, или если Вы хотите пройти курс в другое время и в другом месте, пожалуйста, сообщите нам, по адресу
Эта статья предназначена в первую очередь для администраторов СУБД Oracle (и желающих ими стать), будет весьма полезна для разработчиков-прикладников, а также для пользователей этой сложной системы. Нас всех ждет увлекательное путешествие в мире Oracle, а я помогу не заблудиться в нем.
Начнем мы с самых азов, с самого простого и постепенно будем двигаться дальше и дальше. Предупреждаю сразу - это будет непросто. Но ведь Вы готовы разделить со мною трудности? Если так - то вперед!
Почему это будет трудно для Вас? Потому что надо не просто пробежать глазами по тексту, не просто получить удовольствие от процесса чтения, не просто удовлетвориться чтением заумного материала, а РАБОТАТЬ над текстом. Именно РАБОТАТЬ . Я часто буду описывать сложные взаимосвязи, если Вы их не изобразите на бумаге, не проштудируете каждый пункт, то останется пробел. Пробелы будут накапливаться, пока не образуются огромные пустоты. В конце концов, Вы зададитесь вопросом: "Чему я научился?". Думаю, Вы уже догадались, каков будет ответ.
Поставьте перед собой цель - "понять ВСЕ", если все же что-то оказалось непонятным - скорее всего в этом виноват я. Пишите мне, и в следующих выпусках мы рассмотрим непонятные вопросы значительно подробнее.
Почему это будет трудно для меня? Дело в том, что я тоже буду учиться вместе с моими подписчиками. А так как на мне лежит ответственность за Ваше продвижение вперед, так как я должен буду отвечать на вопросы, собирать материал, то я просто обязан идти на шаг вперед. И, пока Вы будете изучать текущий выпуск, мне надо будет готовить следующий.
Как я и обещал, начнем мы с самого простого.
Краткая история ORACLE.
В 1977г. Ларри Эллисон, Боб Майнер и Эд Оуэтс организовали свое дело, назвав фирму Relational Software Incorporated (RSI). Именно эта компания положила начало системе управления реляционными базами данных (СУРБД) Oracle. Эллисон, Майнер и Оуэтс решили разработать СУРБД, используя язык C и SQL-интерфейс. И вскоре вышла первая версия (прототип). Покупателям в 1979г. была представлена СУРБД Oracle версии 2, которая работала на Digital PDP-11, под управлением ОС RSX-11. Затем была портирована на систему DEC VAX.
1983г. стал вестником релиза версии 3, который привнес изменения в язык SQL, увеличил производительность системы и добавил некоторые другие улучшения. В отличие от предыдущих, третья версия была полностью написана на С. С этого момента RSI сменила свое название на Oracle Corporation.
Oracle версии 4 был представлен в 1984г. Эта версия поддерживала как ОС VAX, так и IBM VM. Эта версия предоставляла возможность многопользовательского стабильного чтения данных. Версия 5 появилась в 1985г. и стала поворотным пунктом на рынке СУБД, так как впервые представила технологию клиент-сервер, используя SQL*Net. Пятая версия стала также одной из первых MS DOS программ, перешагнувших через 640Kb-ый барьер.
В 1988г. Oracle представила версию 6. В этой версии появилась низкоуровневая блокировка и множество других изменений, увеличивших производительность и функциональность (включая генерацию последовательностей и отложенные записи). Oracle работает уже на множестве платформ и на разных операционных системах. В 1991г. вышел Сервер Параллельной Обработки СУРБД Oracle версии 6.1 для системы DEC VAX. Вскоре эта версия стала поддерживать и другие платформы.
Релиз Oracle 7 вышел в 1992г., было произведено множество архитектурных изменений в области памяти и операций ввода-вывода. Oracle 7 - это уже полноценный СУРБД-продукт, к какому привыкли пользователи и используется много лет.
В 1997г. вышла версия 8, которая привнесла объектную модель, новые свойства и средства администрирования.
В 1999г. вышла версия 8i (Oracle 8.1.5) со встроенным языком Java.
В 2001г. вышла версия 9i. По словам разработчиков, было сделано более 400 изменений по сравнению с предыдущей версией. Характерные изменения - "интеллектуализация" автоматизированных систем и расширение возможностей для аналитики.
Как видите, продукту Oracle уже 25 лет, а нам предстоит наверстать все эти "упущенные" годы за значительно более короткий срок. Последняя версия продукта включает в себя 75 разных серверных продуктов, но большинство из них выходят за рамки нашего курса.
Основные понятия и условные сокращения
Прежде, чем мы начнем изучение Oracle, необходимо, чтобы всем были ясны термины, которые будут встречаться в тексте. В каждом выпуске рассылки будет раздел "Основные понятия", чтобы читатели не тратили свое время на поиск определений незнакомых слов.
БД (DB) - База Данных. Совокупность данных, специально организованных для упрощения их извлечения. База данных - это действительные данные.
СУБД (DBMS) - Система Управления Базами Данных. Программное обеспечение Oracle - это СУБД.
СУРБД (RDBMS) - Система Управления Реляционными Базами Данных. Внутренний доступ к данным осуществляется реляционным способом. Oracle - это СУРБД.
Буфер - это некоторый объем оперативной памяти, используемый для хранения данных. Буфер содержит данные, которые предполагается использовать, или которые использовались совсем недавно. В большинстве случаев, буфер - это копия блока данных, который хранятся на жестком диске. Данные в буфере могут быть изменены и записаны на диск, буфер может быть создан и для временного хранения данных. Применительно к Oracle - буферы содержат те блоки данных, к которым недавно обращались. Совокупность буферов составляет кэш буферов данных (database buffer cache). Также в буфере сохраняются временные записи журнала операций, которые затем записываются на диск (буфер журнала операций).
Кэш - область памяти для быстрого доступа к данным. С точки зрения аппаратного обеспечения - это небольшой (применительно к оперативной памяти) объем памяти, который значительно быстрее основной памяти. Этот объем памяти используется для снижения времени, необходимого на частую загрузку данных или инструкций в центральный процессор (ЦП). ЦП сам по себе содержит встроенный кэш. В Oracle кэшем считается набор буферов (block buffers - т.е. блоки данных в оперативной памяти) и разделяемый пул (shared pool), поскольку они служат для хранения данных и инструкций, способствующих быстрому доступу. Кэширование - очень полезный механизм, значительно увеличивающий скорость доступа к данным. Так как обычно не удается уместить все буферы в оперативной памяти, то применяют специальные алгоритмы (самый распространенный - это хранение наиболее часто используемых блоков).
Блок (Block) - самая маленькая единица хранения данных в СУБД Oracle. Содержит заголовочную информацию и сам блок (данные или PL/SQL-код). Размер блока конфигурируется от 2 до 16Kb.
Узкое место (Bottleneck) - компоненты, ограничивающие производительность или эффективность системы.
Словарь данных (Data Dictionary) - набор таблиц, используемых для поддержания информации о БД.
Контрольная точка (Checkpoint) - операция, приводящая к тому, что все измененные данные (блоки данных в памяти) записываются на диск. Это ключевой фактор в проблеме быстрого восстановления базы данных после сбоя.
Схема (Schema) - коллекция объектов БД.
SGA (System Global Area) - разделяемая область памяти, используемая для хранения данных и управляющей информации экземпляра Oracle. SGA размещается в памяти при запуске экземпляра Oracle, и освобождается при завершении работы. SGA составляют буферы данных, буфер журнала изменений и разделяемый пул (shared pool). Это одно из самых важных понятий и мы рассмотрим его более подробно позднее.
Конфигурации ORACLE
Существует много видов конфигураций. Давайте рассмотрим основные из них, проанализируем и определим характеристики.
OLTP (Online Transaction Processing)
- оперативная обработка транзакций. Это самая распространенная конфигурация. OLTP-система состоит из пользователей, которые взаимодействуют с системой. Эти системы обычно используются для оперативного ввода первичной информации (заполнение контрактов, проверка номеров кредитных карт, асинхронные транзакции и др.).
Характерные черты OLTP-систем
: обычно поддерживает большое число пользователей, работающих с СУРБД. Так как пользователи ждут возвращения данных на запросы, то большое значение имеет время ответа. OLTP-системы сопряжены с интенсивными процессами чтения-записи. В зависимости от приложения рейтинг чтения-записи может варьироваться.
DSS (Decision Support System)
- системы поддержки принятия решений, используются в процессах принятия решений. Эти решения могут быть основаны на такой информации, как интенсивность продаж в определенных регионах, выборка покупателей определенного продукта, сортированный список электронных адресов и др.
Характерные черты DSS
: долго выполняющиеся запросы в противовес большим объемам данных. Пользователи DSS-систем вынуждены ждать ответа на запрос минуты, часы, а иногда и несколько дней. Данные обычно собираются из разных источников, а затем происходит их обработка. DSS-система сопряжена с интенсивным процессом чтения (процессы записи
происходят гораздо реже).
Хранилище данных (Data Warehouse)
- это крупномасштабная система, которая состоит как из OLTP, так и из DSS. Эти системы, как правило, работают с сотнями гигабайт данных и обслуживают огромное количество пользователей.
Характерные черты хранилища данных
: имеет некоторые атрибуты DSS-систем, т.е. долго выполняющиеся запросы, а также компоненты для работы в реальном времени. Эти компоненты часто используются в качестве источников данных для DSS-запросов.
Информационная лавка (Data Mart)
- это уменьшенная версия хранилища данных (ориентирована на решение узкоспециализированных задач), при этом сохраняет многие особенности Data Warehouse.
Характерные черты информационной лавки
: обычно 100 гигабайт данных или менее. Так же, как и хранилище данных поддерживает большое количество пользователей и позволяет генерировать сложные решения.
Видео-сервер
: позволяет поддерживать большое количество видеопотоков. Эти видеопотоки могут использоваться по заказу, в качестве развлечения и как обучающие курсы.
Характерные черты видео-сервера
: должен иметь широкую полосу пропускания, чтобы поддерживать несколько видеопотоков. Также, должен быть способен справляться с большой нагрузкой ввода/вывода. При чтении с устройств, загружаются сразу большие блоки данных, которые мало фрагментированы.
Веб-сервер
: предназначен для работы со статическими и динамическими веб-страницами. Эти страницы могут быть как очень простыми, так и комплексными, генерируемыми из базы данных. Веб-сервер Oracle, как правило, используется для коммерческих веб-приложений. Такие
приложения позволяют покупателям просматривать каталоги, которые содержат изображения товаров и даже видео иллюстрации. Покупатель может приобрести понравившийся товар.
Характерные черты веб-сервера Oracle
: обычно поддерживает значительное число пользователей, содержит большое число данных, к которым обращаются часто, и, в то же время, данные, к которым обращаются не очень часто. Производительность сервера может улучшить большое количество оперативной памяти.
OLAP(Online Analytical Processing)
- аналитическая обработка в реальном времени. Обычно используется вместе с многомерными данными. OLAP-пользователи - это финансовые аналитики или маркетинговый персонал, работающий с данными на глобальном уровне.
Характерные черты OLAP-систем
: требуют большого объема дисковой памяти и мощных вычислительных систем. OLAP-система может поддерживать лишь небольшое количество пользователей. Однако число пользователей зависит от конкретной конфигурации.
Заключение
Итак, мы познакомились с историей Oracle Corporation, выучили несколько важных понятий и узнали важнейшие конфигурации. Можете поздравить себя - Вы начали погружение в чудесный мир Oracle.