четверг, 9 октября 2014 г.

ARCHIVELOG - посмотреть/включить/выключить

Посмотреть состояние

-- режим архивлогов
SQL> SELECT LOG_MODE FROM SYS.V$DATABASE;

-- пути и количество архивлогов
SQL> ARCHIVE log list;

Изменить размещение

SQL> ALTER SYSTEM SET log_archive_dest_1='location=/u01/oradata/MYSID/archive/' SCOPE=spfile;
SQL> ALTER SYSTEM SET log_archive_format='%t_%s_%r.arc' SCOPE=spfile;


Включить режим (перевод в ARСHIVELOG)

SQL> shutdown immediate
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;

Выключить режим (перевод в NOARСHIVELOG)

SQL> shutdown immediate
SQL> startup mount;
SQL> alter database noarchivelog;
SQL> alter database open;

Заметки новичка о pfile/spfile

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 текущие значения размеров областей памяти