Как включить (выключить) режим ARCHIVELOG в Oracle Database?

ARCHIVELOG
В этой заметке показаны команды включения/выключения режима ARCHIVELOG в базе данных Oracle. Режим ARCHIVELOG позволяет сохранять в отдельном каталоге журналы транзакций. Режим используется обычно в продуктовых системах, а так же для репликации данных на другие сервера, в частности с использованием продуктов OracleStreams, GoldenGate.
Для примеров, приводимых ниже, подключитесь к базе данных под пользователем с правами DBA, например, SYS.

Включение режима ARCHIVELOG

Мы предполагаем, что база данных Oracle не находится в режиме ARCHIVELOG, а так же автоматическая архивация данных не разрешена. Для того, чтобы увидеть состояние базы данных, можно воспользоваться следующим SQL запросом:
1
2
SELECT log_mode
  FROM v$database;
Результат:
1
2
LOG_MODE
NOARCHIVELOG
Как мы видим, база данных находится в режиме NOARCHIVELOG
В sql*plus выполните команду:
1
SQL> show parameter log_archive_start
Мы видим, что автоматическая архивация не разрешена:
1
NAME TYPE VALUElog_archive_start boolean FALSE
Также можно выполнить команду:
1
SQL>archive log list;
В результате мы увидим сводную информацию по архивированию журналов
1
2
3
4
5
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /archivelog
Oldest online log sequence 4233
Current log sequence 4233
Подключитесь на сервере базы данных как
1
sql*plus /nolog
затем
1
connect sys/pass as sysdba
Перевести базу данных в режим ARCHIVELOG вы можете следующими командами в sql*plus
1
2
3
4
shutdown IMMEDIATE;
startup mount EXCLUSIVE;
ALTER DATABASE archivelog;
ALTER DATABASE OPEN;
Теперь мы можем увидеть, что база данных в режиме ARCHIVELOG
1
2
SELECT log_mode
  FROM v$database;
Результат:
1
2
LOG_MODE
ARCHIVELOG
Но автоматическая архивация сейчас запрещена, поэтому DBA должен вручную выполнить следующие команды:
1
2
3
ALTER SYSTEM archive LOG CURRENT;
ALTER SYSTEM archive LOG ALL;
ALTER SYSTEM archive LOG START;
Теперь мы можем видеть, что автоматическая архивация разрешена:
1
2
3
4
5
6
7
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /archivelog
Oldest online log sequence 4233
Next log sequence to archive 4234
Current log sequence 4234SQL>
Однако это решение не является постоянным и автоматическая архивация будет запрещена после перезапуска базы данных. Исправить положение можно установив параметр ‘log_archive_start’ в ‘TRUE’:
1
ALTER SYSTEM SET log_archive_start=TRUE scope=spfile;

Затем необходимо перегрузить базу данных.

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

Выключение режима ARCHIVELOG

Для выключения режима ARCHIVELOG выполните следующие команды:
1
2
3
4
5
6
ALTER SYSTEM SET log_archive_start=FALSE scope=spfile;
CREATE pfile FROM spfile;
shutdown IMMEDIATE;
startup mount excluseve;
ALTER DATABASE noarchivelog;
ALTER DATABASE OPEN;
Теперь вы можете увидеть статус режима ARCHIVELOG:
1
2
3
4
5
6
archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /archivelog
Oldest online log sequence 4233
Current log sequence 4234

Related Post

Проблемы Oracle WebLogic и Java клиента... Хочется поделиться неко...
Установка Oracle WebLogic Server 11g (10.3.6) gene... На момент написания этой заметки на 64 битную операционную систему Windows можно было установить только версию WebLogic Server 10.3.6 generic, котора...
Установка патчей базы данных Oracle... Эта небольшая заметка рассказывает об устновке патча базы данных Oracle. Задача: Есть база данных Oracle Database 11.2.0.3 (64 бит Windows), на котор...

2 thoughts on “Как включить (выключить) режим ARCHIVELOG в Oracle Database?

  1. Есть проблема в этом алгоритме.
    После команды startup mount EXCLUSIVE; получаем:
    ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
    При последующих попытках этой же команды:
    ORA-24324: service handle not initialized
    ORA-01041: internal error. hostdef extension doesn’t exist

    1. Следовал инструкции: https://azure.microsoft.com/ru-ru/documentation/articles/virtual-machines-windows-classic-configure-oracle-data-guard/
      Получилось перевести базу в режим archivelog.
      Наверное, все дело в том, как я подключался к базе с помощью sqlplus.
      Я это делал через Oracle Client на удаленной машине с использованием conn sys@mybase as sysdba.
      А получилсь, когда на самом сервере подключился командой connect / as sysdba.

Leave a Reply

Your email address will not be published. Required fields are marked *