В этой статье мы опишем алгоритм включения и отключения режима архивирования логических логов в Oracle. Режим ARCHIVELOG
необходим для того чтобы ваша база данных была полностью защищена не только от сбоев операционной системы, но и от сбоя аппаратного обеспечения. Как правило, такой режим необходим для механизмов непрерывного резервировного копирования СУБД.
Определение текущего режима архивирования логических логов
Предварительно, необходимо выполнить подключение к СУБД с правами администратора.
1 |
[oracle@ora1 ~]$ sqlplus / as sysdba /nolog |
Для того чтобы узнать состояние архивирования логических логов СУБД, необходимо выполнить следующий запрос.
1 2 3 4 |
SQL> SELECT LOG_MODE FROM SYS.V$DATABASE; LOG_MODE ------------ NOARCHIVELOG |
NOARCHIVELOG — означает, что СУБД не архивирует логические логи.
ARCHIVELOG — означает, что СУБД находится в режим архивирования логических логов.
Так же можно воспользоватся другой командой, которая дополнительно покажет установленный ранее путь к архивным логам и их количество.
1 2 3 4 5 6 7 |
SQL> ARCHIVE LOG LIST; Database log mode No Archive Mode Automatic archival Disabled Archive destination /u01/oradata/MYSID/archive/ Oldest online log sequence 26 Next log sequence to archive 28 Current log sequence 28 |
Включение архивирования логических логов в Oracle
Для того чтобы перевести СУБД в состояние архивирования логических логов необходимо выполнить следующу последовательность команд.
1 2 3 4 5 6 7 |
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; SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP MOUNT; SQL> ALTER DATABASE ARCHIVELOG; SQL> ALTER DATABASE OPEN; |
Проверяем состояние архивирования логов.
1 2 3 4 5 6 7 8 9 10 11 12 |
SQL> SELECT LOG_MODE FROM SYS.V$DATABASE; LOG_MODE ------------ ARCHIVELOG SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination /u01/oradata/MYSID/archive Oldest online log sequence 25 Next log sequence to archive 27 Current log sequence 27 |
Теперь мы видим, что режим архивирования логических логов включен. Автоматическая архивация так же включена.
В версии Oracle 9i и более ранних автоматическую архивацию требовалось включать дополнительно как покзано ниже. В версии 10g и 11g этого делать не требуется.
1 2 3 4 |
SQL> ALTER SYSTEM SET log_archive_start=TRUE SCOPE=spfile; SQL> ALTER SYSTEM archive LOG CURRENT; SQL> ALTER SYSTEM archive LOG ALL; SQL> ALTER SYSTEM archive LOG START; |
Так же вы можете переключится на новый файл логического лога и убедится что он действительно записан в файловой системе.
1 2 3 4 5 6 7 8 |
SQL> alter system switch logfile; System altered. SQL> host [oracle@ora1 ~]$ ls /u01/oradata/MYSID/archive 1_27_711369564.arc [oracle@ora1 ~]$ exit exit SQL> |
Отключение архивирования логических логов в Oracle
Прежде чем отключить режим архивирования логических логов в Oracle необходимо убедится, что он включен, таким образом как это показано пункте «Определение текущего режима архивирования логических логов«.
Затем выгружаем СУБД и загружаем в режиме MOUNT.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SQL> SHUTDOWN IMMEDIATE; Database closed. Database dismounted. ORACLE instance shut down. SQL> STARTUP MOUNT; ORACLE instance started. Total System Global Area 849530880 bytes Fixed Size 1339824 bytes Variable Size 511708752 bytes Database Buffers 331350016 bytes Redo Buffers 5132288 bytes Database mounted. |
Далее переводим в режим работы СУБД без архивирования логических логов и открываем экземпляр СУБД.
1 2 |
SQL> ALTER DATABASE NOARCHIVELOG; SQL> ALTER DATABASE OPEN; |
Смотрим состояние.
1 2 3 4 5 6 |
SQL> ARCHIVE LOG LIST; Database log mode No Archive Mode Automatic archival Disabled Archive destination /u01/oradata/MYSID/archive Oldest online log sequence 26 Current log sequence 28 |
Как видно режим архивирования логических логов отключен.