После запуска экземпляра Oracle, его характеристики определяются набором параметров, указанных в инициализационном файле параметров. Эти параметры инициализации могут задаваться как в PFILE-е, так и в SPFILE-е. SPFILE используется, начиная с версии Oracle 9i. Все предыдущие релизы Oracle используют только PFILE-ы.
Преимущества SPFILE-ов над PFILE-ами:
- RMAN может сделать резервную копию SPFILE-а (PFILE можно сохранить только вручную).
- Сокращаются возможные ошибки администратора. SPFILE управляется сервером. Параметры проверяются перед их применением.
- Исчезают некоторые проблемы конфигурирования (например, вам не надо иметь локальный PFILE для запуска экземпляра Oracle с удаленной машины).
- Легко найти – хранится в определенной директории.
Какая разница между PFILE-ом и SPFILE-ом:
PFILE – статичный, пользовательский текстовый файл, который редактируется стандартными текстовыми редакторами (например, “блокнот” или “vi”). Обычно этот файл находится на сервере, однако, для запуска Oracle с удаленной машины необходимо иметь локальную копию. АБД (Администраторы Баз Данных) обычно ссылаются на этот файл: INIT.ORA.
SPFILE (Server Parameter File), с другой стороны, постоянно находящийся на сервере бинарный файл, который может быть изменен только с помощью команды “ALTER SYSTEM SET”. Это значит, что больше нет необходимости хранить локальную копию файла параметров для запуска экземпляра с удаленной машины. Редактирование SPFILE-а вручную повредит его, после чего он станет неработоспособным.
Как я могу узнать, что моя база данных использует PFILE или SPFILE:
Выполните следующий запрос, чтобы увидеть какой файл параметров был использован:
SQL> SELECT DECODE(value, NULL, 'PFILE', 'SPFILE') "Init File Type" FROM sys.v_$parameter WHERE name = 'spfile';
Кроме того, вы можете воспользоваться представлением V$SPPARAMETER чтобы проверить, используете ли вы PFILE или нет: если столбец “value” имеет значение NULL для всех параметров, значит, вы используете PFILE.
Просмотр установок параметров:
Вы можете просмотреть значения параметров с помощью следующих методов (независимо от того, где они установлены – в PFILE или в SPFILE):
- Команда “SHOW PARAMETERS” в SQL*Plus (напр., SHOW PARAMETERS timed_statistics)
- Представление V$PARAMETER – содержит все текущие значения параметров
- Представление V$PARAMETER2 – тоже содержит все текущие значения, но значения многозначных параметров разнесены в разные столбцы
- Представление V$SPPARAMETER – содержит значения файла параметров, управляемого сервером (SPFILE)
Запуск экземпляра посредством PFILE или SPFILE:
Oracle ищет подходящий файл параметров в следующем порядке:
- Пытается использовать файл spfile${ORACLE_SID}.ora в директории $ORACLE_HOME/dbs (Unix) или ORACLE_HOME/database (Windows)
- Пытается использовать файл spfile.ora в директории $ORACLE_HOME/dbs (Unix) или ORACLE_HOME/database (Windows)
- Пытается использовать файл init${ORACLE_SID}.ora в директории $ORACLE_HOME/dbs (Unix) or ORACLE_HOME/database (Windows)
Вы можете переопределить местонахождение PFILE, заданное по-умолчанию, указав параметр PFILE в команде запуска экземпляра:
SQL> STARTUP PFILE='/oradata/spfileORCL.ora'
Заметьте, что эквивалентной команды “STARTUP SPFILE=” нет. Вы можете указать на желаемый SPFILE только прописав параметр ‘SPFILE=’ в файле PFILE. Например:
SPFILE=/path/to/spfile
Изменение значений параметров в файле SPFILE:
PFILE можно отредактировать в любом простейшем текстовом редакторе, поскольку он имеет текстовый формат. SPFILE – это бинарный файл. Для изменения значений параметров в файле SPFILE используют команды “ALTER SYSTEM SET” и “ALTER SYSTEM RESET”. Вот примеры:
SQL> ALTER SYSTEM SET open_cursors=300 SCOPE=SPFILE; SQL> ALTER SYSTEM SET timed_statistics=TRUE COMMENT='Changed by Frank on 1 June 2003' SCOPE=BOTH SID='*';
Здесь опция SCOPE может принимать значения SPFILE, MEMORY или BOTH:
- MEMORY: Новое значение параметра будет присвоено только текущему экземпляру. По-умолчанию используется именно эта опция, если при запуске (STARTUP) был использован PFILE.
- SPFILE: изменить SPFILE, значение параметра будет применено при следующем запуске экземпляра.
- BOTH: значение параметра будет изменено как в текущем экземпляре, так и в файле SPFILE. Эта опция используется по-умолчанию, если при запуске (STARTUP) был использован SPFILE. Опция COMMENT (необязательная) позволяет сохранить некий пользовательский комментарий.
Опция SID (необязательная, только при использовании RAC) указывает на экземпляр, для которого будет применено изменение соответствующего параметра (По-умолчанию * : для всех экземпляров).
Для задания значений многозначных параметров используйте следующий синтаксис:
SQL> ALTER SYSTEM SET utl_file_dir='/tmp/','/oradata','/home/' SCOPE=SPFILE;
Для задания недокументированных инициализационных параметров (по просьбе службы технической поддержки Oracle), используйте следующий синтаксис:
SQL> ALTER SYSTEM SET "_allow_read_only_corruption"=TRUE SCOPE=SPFILE;
Для того, чтобы удалить какой-либо параметр из файла SPFILE, используйте одну из следующих команд:
SQL> ALTER SYSTEM RESET timed_statistics SCOPE=SPFILE SID=‘*’; SQL> ALTER SYSTEM SET timed_statistics = '' SCOPE=SPFILE;
Конвертирование файлов PFILE и SPFILE:
Вы можете легко перейти от использования файла PFILE к файлу SPFILE (и наоборот). Выполните одну из следующих команд пользователем, имеющим привелегию SYSDBA или SYSOPER:
SQL> CREATE PFILE FROM SPFILE; SQL> CREATE SPFILE FROM PFILE;
Также, вы можете указать свой путь для PFILE или SPFILE (или для обоих файлов). Взгляните на пример:
SQL> CREATE SPFILE='/oradata/spfileORCL.ora' from PFILE='/oradata/initORCL.ora';
Существует альтернативная процедура для изменения значений файла SPFILE, используя вышеуказанный метод:
- Экспортируйте SPFILE командой: CREATE PFILE=‘pfilename’ FROM SPFILE = ‘spfilename’;
- Отредактируйте полученный PFILE в текстовом редакторе
- Перезапустите экземпляр базы данных с опцией PFILE: STARTUP PFILE=filename
- Пересоздайте SPFILE: CREATE SPFILE=‘spfilename’ FROM PFILE=‘pfilename’;
- При следующем запуске экземпляра используйте команду STARTUP без опции PFILE, тогда будет использован новый SPFILE.
Резервное копирование файла параметров:
RMAN (Oracle’s Recovery Manager) сохраняет SPFILE вместе с управляющим файлом при установке “CONFIGURE CONTROLFILE AUTOBACKUP” в ON (по-умолчанию – OFF). PFILE не может быть скопирован с использованием RMAN. Вот пример:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
Для восстановления файла SPFILE используйте такую команду:
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
Источник: oranet.ru (Russian oracle network)