Шаг 21 - Основные компоненты БД Oracle - продолжаем!

Итак, замечательно! После несколько затянувшегося процесса изучения оператора SELECT, что собственно само по себе не маловажно и мы еще будем его разбирать, наконец подходим вплотную собственно к самому серверу Oracle! Итак, в прошлый раз мы немного разобрались с файлом init.ora. Теперь, двигаемся дальше!

2. Управляющие файлы.

Этот файл, еще он называется "контролфайл", содержит в себе практически всю информацию, необходимую для функционирования вашей БД. Такую, например как, набор символов используемый БД, файлы регистрации транзакций используемые БД, файлы данных БД и их статус, обновления, положения и т.д. Эти файлы, создаются во время создания собственно вашего экземпляра БД и с течением времени практически не меняются, за исключением того, если вы как администратор производите какие-либо действия с экземпляром. Например, добавляете файл данных нового табличного пространства. Меняете размер существующих файлов данных и т.д. Без контрольного файла БД не стартует! Или если он поврежден! Контролфайл имеет бинарную структуру, по этому редактировать его в ручную нельзя! Поврежденный контролфайл можно восстановить, эту процедуру я вам покажу чуть позже! А находятся эти файлы, в вашем случае в каталоге C:\Oracle\Oradata\Proba. Обычно этих файлов два. Так как БД работает с размноженными контролфайлами. За расположение этих файлов отвечает секция CONTROL_FILES в файле init.ora вашего экземпляра БД. И естественно все котролфайлы перечислены в представлении v$controlfile.

Например:

SELECT * FROM v$controlfile

Получаем:

STATUS  NAME
------- ---------------------------------------
        C:\ORACLE\ORADATA\PROBA\CONTROL01.CTL
        C:\ORACLE\ORADATA\PROBA\CONTROL02.CTL

3. Оперативные и архивные файлы журналов регистрации транзакций.

При создании экземпляра БД, после его старта, в системной области, под названием SGA практически сразу запускается группа фоновых процессов. Один из них и пожалуй самый важный LGWR! Это процесс регистрации транзакций. Помимо всего прочего, он ведет так называемые "журналы регистрации транзакций". Записывает он это все в файлы расположенные там же где и контролфайлы БД, а именно C:\Oracle\Oradata\Proba в вашем случае. Называются эти файлы:

redo01.log
redo02.log
redo03.log
.
.
.
redo(n).log

При работе используется как минимум две группы файлов! Запись проводится циклически в обе группы.

По мере заполнения групп LGWR открывает новые, а заполненные процесс ARCH переписывает на резервные накопители, если база запущена с опцией архивирования, что не всегда выполняется. Хотя это полезно, но отнимает часть ресурсов процессора.

21_1.gif (4499 b)

Просмотреть состояние этих журналов нам поможет такой запрос:

SELECT b.member, a.bytes, a.members, a.status
FROM v$log a, v$logfile b
WHERE a.group# = b.group#
ORDER BY b.member
/

Поучаем:

MEMBER                                                     BYTES    MEMBERS STATUS
----------------------------------------------------- ---------- ---------- ----------
C:\ORACLE\ORADATA\PROBA\REDO01.LOG                       1048576          1 CURRENT
C:\ORACLE\ORADATA\PROBA\REDO02.LOG                       1048576          1 INACTIVE

Как видите, мы снова обращаемся к представленьям v$log и v$logfile и снова получаем полезную информацию!

Как видно файл REDO01.LOG является активным в данный момент! Идем дальше!

4. Файлы трассировки

Файлов трассировки, существует несколько видов. Основное их назначение фиксировать все события происходящие в сервере БД, в том числе все критические. В дальнейшем, по их содержимому можно выяснить вследствие чего произошел тот или иной сбой! Хотя, если все нормально Oracle обычно не сбоит! Но тем не менее. Основной файл трассировки системных событий имеет имя sidALRT.log, где sid (замете, маленькими буквами!) имя экземпляра. Положение этого файла определяет секция background_dump_dest файла init.ora в нашем случае C:\Oracle\admin\proba\bdump. Там же находятся и файлы трассировки фоновых, процессов! А секция файла init.ora, user_dump_dest определяет местоположение пользовательских файлов трассировки. В вашей БД это будет C:\Oracle\admin\proba\udump. Пользовательские файлы трассировки, имеют префикс ora, затем уникальный номер и расширение .trc. Эти файлы формируются в случае возникновения критической ситуации пользовательского процесса. Запустить режим трассировки пользовательского процесса. Постоянно, можно введя в SQLPlus команду:

ALTER SESSION SET SQL_TRACE=TRUE
/

Или установить в файле init.ora, в секции SQL_TRACE значение TRUE! Но такой ход, может повлечь за собой немало неприятностей, ваши файлы трассировки неимоверно распухнут! И разобрать в них что либо, можно будет уже с трудом! По этому делайте это осторожно, по мере необходимости! :))

5. Идентификаторы записей ROWID

А вот самое интересное! "АТОМАРНАЯ МАТРИЦА"! (МАТРИЦА!!!:)))))! Теоретически, каждая запись в БД должна однозначно идентифицироваться! Такую возможность мы получаем в сервере Oracle с помощью информационной структуры ROWID. ROWID представляет из себя двухбайтовую величину, которая соответствует физическому положению любой строки в БД! ROWID имеет формат BBBBBBBB.RRRR.FFFF где:

Например, ROWID = 0000078F.0003.0002. Это значит, что строка находится во втором файле данных, в блоке номер 78F файла данных, и является четвертой строкой (счет, идет от 0000!) в блоке. При создании новой строки она сразу получает свой уникальный ROWID! И самый быстрый способ найти строку это указать ее ROWID! Хотя это не такая простая задачка!!! Это далеко не все про ROWID, тем не менее, для начала понимания уже достаточно! Так что в следующий раз займемся самым интересным, блоками Oracle.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Летучий Сергей - 02.09.2003