pfile (parameter file)
- текстовый файл с параметрами запуска БД (обычное название init$ORACLE_SID.ora)
spfile (server parameter file)
- двоичный файл с параметрами, начиная с какой-то версии Oracle (обычное название spfile$ORACLE_SID.ora);
- руками менять нельзя
Размещаются в:
$ORACLE_HOME/dbs (linux)
$ORACLE_HOME\database (Win)
Главное, на мой взгляд, отличие:
при использовании spfile комманда ALTER SYSTEM SET .. вносит изменения в настройки, без рестарта БД
Порядок поиска файла параметров при старте БД:
Oracle будет использовать файл параметров
в следующем порядке (т.е. какой первый найдёт, тот и загрузит):
spfile$ORACLE_SID.ora
spfile.ora
init$ORACLE_SID.ora
Создание pfile/spfile:
-- создать pfile из текущих настроек БД (то, что сейчас запущено)
CREATE PFILE = '/tmp/orabkp/my_init2.ora' FROM MEMORY;
-- создать pfile/spfile из текущего spfile
CREATE PFILE = '/tmp/orabkp/my_init.ora' FROM SPFILE;
-- создать spfile из pfile
CREATE SPFILE = '/tmp/orabkp/sparams2.ora' FROM PFILE='/tmp/orabkp/my_init2.ora';
Старт БД из явного pfile:
shutdown immediate
STARTUP PFILE='/tmp/orabkp/my_init2.ora' MOUNT;
alter database open;
Стартовать с явным spfile нельзя, но можно сделать следующее:
1. startup c явным pfile
2. create spfile from pfile;
3. shutdown immediate;
4. startup (if you don't say pfile= then the database will start with the spfile)
Вообще, про startup здесь:
startup(удобно читать) и в доках:
strtup (Oradoc 11g)
Примечание ( из форумов sql.ru)
1. экземпляр при старте использует файлы параметров, находящиеся в ORACLE_HOME\database (если явно не указать STARTUP PFILE=...)
2. если там есть и pfile, и spfile - используется spfile
3. если используется spfile, то команда ALTER SYSTEM SET... может вносить изменения и в память (для воздействия немедлено), и в spfile. При использовании pfile ALTER SYSTEM SET... влияет только на текущий экземпляр, а изменения в pfile надо не забыть внести ручками
4. spfile ручками менять нельзя
5. в Oracle >=10 при использовании spfile и ASMM (автоматического управления памятью) экземпляр сам записывает в spfile текущие значения размеров областей памяти