Отправляет email-рассылки с помощью сервиса Sendsay

СУБД Oracle "с нуля"

  Все выпуски  

Выпуск 12.


Информационный Канал Subscribe.Ru

Выпуск 12

Здравствуйте. Сегодня, после длительного перерыва, я начинаю новый цикл выпусков рассылки "СУБД Oracle "с нуля"". Многие из Вас, наверное, уже заждались :)

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

1. Всегда ли необходимо конфигурирование сети?
2. Файл TNSNAMES.ORA должен находиться на стороне клиента или сервера?
3. Какая команда должна использоваться для изменения состояния экземпляра Oracle?
4. Как можно выполнить внеочередную контрольную точку (checkpoint)?
5. Как можно убить пользовательский процесс на сервере?

Данный выпуск я посвящаю базовым задачам, стоящим перед DBA (Администратором Базы Данных). В частности, мы рассмотрим процедуру создания БД и настройку нескольких параметров, влияющих на производительность системы.

Операция создания БД, однако, делится на задачи, выполняемые не только DBA, но и конечными пользователями или разработчиками (в зависимости от уровня доступа).

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

Задачи создания БД.

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

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

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

Очень важным является тот момент, что DBA должен определять БД вместе с конечным пользователем, так как физическое расположение и действительные данные надо сконфигурировать оптимальным образом. Если Вы неверно сконфигурируете аппаратное обеспечение сервера либо некачественно создадите и разместите БД, то увидите быстрое снижение производительности системы.

Задачи DBA.

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

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

Задачи пользователя или разработчика.

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

Дизайн БД.

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

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

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

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

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

Физическое расположение БД.

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

- размер БД - Вы должны уметь использовать и поддерживать то количество данных, которое будет введено в БД.

- производительность - физический диск должен держать скорость ввода-вывода на нужном уровне.

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

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

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

Создание БД.

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

После создания экземпляра инициализации Oracle (что мы уже умеем делать), мы создадим БД. Создать БД можно используя Enterprise Manager или с помощью DDL-команды CREATE DATABASE. Несмотря на то, что с Enterprise Manager работать достаточно удобно и просто, я предпочитаю использовать скрипт SQL. Скрипт в SQL-файле можно использовать снова и снова, а также подправлять его при необходимости. Также это будет как бы хранением информации о процессе создания БД.

Настройка.

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

1. Резервное копирование любых БД, уже имеющихся в системе.
2. Создание файла init.ora.
3. Запуск экземпляра Oracle.

Если Вы последуете этим шагам, то будете готовы к успешному созданию БД. Давайте рассмотрим эти шаги подробнее.

Резервное копирование имеющихся БД.

Этот шаг необходим просто из предосторожности. Регулярное резервное копирование полезно всегда. Производите резервное копирование перед любыми системными изменениями (в том числе и при создании БД).

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

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

Создание файла init.ora.

Для каждой новой БД необходимо создать новый файл параметров. Файл параметров (настроек), также известный как файл init.ora, содержит важную информацию о структуре БД. Рассмотрим самые критические параметры создания БД:

- DB_NAME - Этот параметр определяет имя БД. DB_NAME - это текстовая строка из восьми или менее символов. Обычно это имя совпадает с Oracle SID. Типовая БД, создаваемая Oracle строится с параметром DB_NAME=oracle.

- DB_DOMAIN - Этот параметр определяет домен сети, в котором находится сервер. Он используется вместе с DB_NAME для определения БД в сети. По умолчанию имеет значение DB_DOMAIN=world.

- CONTROL_FILE - определяет один или более управляющих файлов, используемых с БД. Хорошей мыслью будет определить несколько управляющих файлов на случай сбоя системы.

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

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

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

- ROLLBACK_SEGMENT - список сегментов отката, которые должны стать доступными после запуска экземпляра Oracle.

Следующие параметры должны быть установлены в зависимости от приобретенной лицензии.

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

- LICENSE_SESSION_WARNING - аналогичен предыдущему параметру. После достижения числа LICENSE_SESSION_WARNING новые подключения еще возможны, но будет выводится сообщение о приближении к лимиту. После достижения числа, указанного в LICENSE_MAX_SESSIONS новые подключения уже будут невозможны.

- LICENSE_MAX_USERS - максимальное количество уникальных пользователей, которые могут быть созданы в БД.

После установки всех этих параметров можно перейти к следующему шагу.

Запуск экземпляра инициализации Oracle.

Процедуру запуска можно почитать в восьмом выпуске рассылки.

Создание БД.

После создания экземпляра, мы можем двигаться дальше - создать саму БД. Так же, как и экземпляр инициализации Oracle, БД можно создать либо с помощью графических утилит, либо с командной строки, либо скриптом в Oracle Server Manager. Создание БД с помощью Oracle Database Configuration Assistant было вкратце рассмотрено в девятом выпуске. Написание скрипта удобно тем, что в дальнейшем можно будет его запустить снова (незначительно изменив).

Создание БД с помощью Server Manager.

Чтобы запустить Server Manager, в командной строке введите svrmgrl.
Для создания БД, используя Server Manager, можно набрать команду вручную, либо использовать SQL-скрипт. БД создается с помощью команды CREATE DATABASE. Синтаксис команды следующий:

CREATE DATABASE [[database]
[CONTROLFILE REUSE]]

LOGFILE [GROUP номер_группы] logfile
[, [GROUP номер_группы] logfile] ...
[MAXLOGFILES число]
[MAXLOGMEMBERS число]
[MAXLOGHISTORY число]
[MAXDATAFILES число]
[MAXINSTANCES число]
[ARCHIVELOG или NOARCHIVELOG]
[EXCLUSIVE]
[CHARACTER SET кодировка]
[NATIONAL CHARACTER SET кодировка]

DATAFILE имя_файла [AUTOEXTEND OFF | ON
" WIDTH="14" HEIGHT="9" ALIGN="BOTTOM"
BORDER="0">;[NEXT число K | M] [MAXSIZE UNLIMITED | число K | M]
[, DATAFILE имя_файла [AUTOEXTEND OFF | ON
" WIDTH="14" HEIGHT="9" ALIGN="BOTTOM"
BORDER="0">;[NEXT число K | M] [MAXSIZE UNLIMITED | число K | M]]

Вот, что значат отдельные параметры и переменные:

- database - имя создаваемой БД. Длина имени не более восьми символов.

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

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

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

- MAXLOGMEMBERS - определяет максимальное число членов группы файлов журналирования операций.

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

- MAXDATAFILES - определяет максимальное число файлов данных, которые могут быть добавлены к БД перед автоматическим расширением управляющего файла.

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

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

- EXCLUSIVE - БД монтируется в режиме EXCLUSIVE после создания. В этом режиме только один экземпляр может смонтировать БД.

- CHARACTER SET - данные в БД будут храниться в соответствующей кодировочной таблице.

- NATIONAL CHARACTER SET - определяет кодировочную таблицу для хранения данных типов NCHAR, NCLOB и NVARCHAR2.

- DATAFILE - определяет файл данных, используемый в БД.

Файлы определяются как:

- 'имя файла' SIZE размер (К или М) - определяем имя файла данных и его первоначальный размер в К (килобайтах) или М (мегабайтах).

- [REUSE] - параметр позволяет использовать имя уже существующего файла.

Для параметра DATAFILE возможны следующие опции:

- AUTOEXTEND OFF - указывает, что автоувеличение размера файла не будет использоваться.

- AUTOEXTEND ON - автоувеличение размера файла использовано будет.

Для опции AUTOEXTEND ON возможны следующие варианты:

- NEXT - определяет число К (килобайт) или М (мегабайт), добавляемое при автоувеличении файла.

- MAXSIZE UNLIMITED - максимальный размер автоувеличивающегося файла не ограничен.

- MAXSIZE число (К или М) - определяет максимальный объем файла.

Команда CREATE DATABASE может показаться довольно громоздкой, но в действительности все не так уж и сложно. Нет необходимости использовать все параметры, но, по мере накопления опыта, Вы можете принять решения использовать их. Вот пример SQL-команды создания БД:

CREATE DATABASE cars
CONTROLFILE REUSE
LOGFILE
GROUP 1 ( d:\database\log1a.dbf', e:\database\log1b.dbf') SIZE 100K,
GROUP 2 ( d:\database\log2a.dbf', e:\database\log2b.dbf') SIZE 100K
DATAFILE d:\database\data1.dbf' SIZE 10M,
d:\database\data2.dbf' SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE 50M;

Не обязательно указывать все файлы данных в процедуре создания БД. Это можно сделать и позднее. Если Вы хотите использовать большое количество файлов данных, то более эффективным может оказаться параллельное применение команды ALTER TABLESPACE ADD DATAFILE.

Команда CREATE DATABASE выполняется последовательно. Т.е., если Вы указали два файла данных, то второй начнет создаваться только после окончания создания и инициализации первого. Операция же добавления файлов данных может выполняться параллельно. Этим можно сэкономить время на создание БД.

Создание каталогов.

После формирования БД, нужно еще выполнить два скрипта (CATALOG.SQL и CATPROC.SQL), которые создают представления (виды) словаря данных. Эти представления нужны как для функционирования системы, так и для DBA. Скрипты создания каталогов могут быть выполнены в Server Manager, используя символ @, например:

@D:\ORACLE\ORA81\RDBMS\ADMIN\CATALOG;
...
Выводятся различные данные
...
@D:\ORACLE\ORA81\RDBMS\ADMIN\CATPROC;
...
Выводятся различные данные
...

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

Желаю успехов!

Всегда Ваш, Lemon.
lemon@donmetal.ru



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное