Oracle для профессионалов

       

Файлы параметров


С базой данных Oracle связано много файлов параметров: от файла TNSNAMES.ORA

на клиентской рабочей станции (используемого для поиска сервера) и файла LISTENER.ORA на сервере (для запуска процесса прослушивания Net8) до файлов SQLNET.ORA, PROTOCOL.ORA, NAMES.ORA, CMAN.ORA и LDAP.ORA. Наиболее важным является файл параметров инициализации экземпляра, потому что без него не удастся запустить экземпляр. Остальные файлы тоже важны; они связаны с поддержкой сети и обеспечением подключения к базе данных. Однако рассматриваться в этом разделе они не будут. Сведения об их конфигурировании и настройке можно найти в руководстве Oracle Net8 Administrators Guide. Обычно разработчик не настраивает эти файлы — они создаются администратором.

Файл параметров инициализации экземпляра обычно называют файлом init или файлом init.ora. Это название происходит от стандартного имени этого файла, — init<ORACLE_SID>.ora. Например, экземпляр со значением SID, равным tkyte816, обычно имеет файл параметров инициализации inittkyte816.ora. Без файла параметров инициализации нельзя запустить экземпляр Oracle. Поэтому файл этот достаточно важен. Однако, поскольку это обычный текстовый файл, который можно создать в любом текстовом редакторе, сохранять его ценой собственной жизни не стоит.

Для тех, кому незнаком термин SID или параметр ORACLE_SID, представлю полное определение. SID — это идентификатор экземпляра (сайта). В ОС UNIX он хешируется совместно со значением ORACLE_HOME (задающим каталог, в котором установлено ПО Oracle) для создания уникального ключа при подсоединении области SGA. Если значение ORACLE_SID или ORACLE_HOME задано неправильно, выдается сообщение об ошибке ORACLE NOT AVAILABLE, поскольку невозможно подключиться к сегменту разделяемой памяти, определяемому этим "магическим" ключом. В ОС Windows разделяемая память используется не так, как в ОС UNIX, но параметр SID все равно важен. В одном и том же базовом каталоге ORACLE_HOME может быть несколько баз данных, так что необходимо иметь возможность уникально идентифицировать их и соответствующие конфигурационные файлы.


В Oracle файл init.ora имеет очень простую конструкцию. Он представляет собой набор пар имя параметра/значение. Файл init.ora может иметь такой вид:

db_name = "tkyte816"

db_block_size = 8192

control_files = ("C:\oradata\control01.ctl", "C:\oradata\control02.ctl")

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

В файле параметров инициализации обычно содержится и много других параметров. Количество и имена параметров меняются с каждой новой версией. Например, в Oracle 8.1.5 был параметр plsql_load_without_compile. Его не было ни в одной из предыдущих версий и нет в последующих. В моих базах данных версий 8.1.5, 8.1.6 и 8.1.7 имеется, соответственно, 199, 201 и 203 различных параметра инициализации. Большинство параметров, например db_block_size, существует очень давно (они были во всех версиях), но со временем необходимость во многих параметрах отпадает, так как меняется реализация. Если захочется прочитать об этих параметрах и разобраться, что они позволяют установить, обратитесь к руководству Oracle8i Reference. В первой главе этого руководства представлены официально поддерживаемые параметры инициализации.

Обратите внимание на слова "официально поддерживаемые" в предыдущем абзаце. Не поддерживаются (и не описаны в руководстве) параметры, имена которых начинаются с символа подчеркивания. Вокруг этих параметров много спекуляций: поскольку они не поддерживаются официально, значит, имеют "магические" свойства. Многие полагают, что эти параметры хорошо известны "посвященным" сотрудникам корпорации Oracle и используются ими. По моему мнению, все как раз наоборот. Их мало кто вообще знает и редко использует. Большинство из неописанных параметров — лишние, представляют устаревшие возможности или обеспечивают обратную совместимость. Другие помогают при восстановлении данных, но не всей базы данных: они позволяют запустить экземпляр в определенных экстремальных ситуациях, но лишь для извлечения данных — базу данных затем придется пересоздавать. Я не вижу смысла использовать неописанные параметры файла init.ora



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

_TRACE_FILES_PUBLIC = TRUE

Это делает трассировочные файлы доступными всем, а не только членам группы dba. Я хочу, чтобы разработчики как можно чаще использовали установки SQL_TRACE, TIMED_STATISTICS и утилиту TKPROF (более того, я это требую), поэтому всем им необходимо читать трассировочные файлы. В производственной базе данных я неописанных параметров не использую.

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

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

init$ORACLE_SID.ora (переменная среды Unix) init%ORACLE_SID%.ora (переменная среды Windows)

Как правило, они находятся в каталогах

$ORACLE_HOME/dbs (в ОС Unix) %ORACLE_HOME%\DATABASE (в ОС Windows)

Часто в файле параметров содержится всего одна строка примерно такого вида:

IFILE='C:\oracle\admin\tkyte816\pfile\init.ora'

Директива IFILE работает аналогично директиве препроцессора #include в языке C. Она вставляет в данном месте текущего файла содержимое указанного файла. В данном случае включается содержимое файла init.ora из нестандартного каталога.

Следует отметить, что файл параметров не обязательно должен находится в одном и том же стандартном месте. При запуске экземпляра можно использовать параметр pfile = имя_файла. Это особенно полезно при попытке проверить результаты установки других значений для параметров.


Содержание раздела