Oracle DB: redo-логи
Перейти к навигации
Перейти к поиску
Процесс LGWR пишет данные из redo-буфера одновременно только в одну группу redo-логов, которая имеет статус CURRENT.
Группы redo-логов, которые требуются для восстановления инстанции (изменения еще не записаны в файлы данных), имеют статус ACTIVE.
Группы redo-логов, которые уже не требуются для восстановления инстанции, имеют статус INACTIVE.
Группы redo-логов, в которые еще не было записи имеют статус UNUSED.
Если включен режим архивирования логов, то база данных не может перезаписывать redo-логи, пока они не будут архивированы процессом ARCn в арихивлог файл.
Если в группе redo-логов более одного файла, то происходит мультиплексирование и процесс LGWR пишет идентичные данные одновременно во все файлы группы.
Это позволяет иметь несколько идентичных резервных копий redo-лога.
Если в группе redo-лога только один файл MEMBER, то в случае повреждения файла, когда группа находится в статусе CURRENT, база остановится, данные записанные в лог будут потеряны.
Придется очищать файлы группы, или пересоздавать группу.
Параметры контроля целостности являются общими для файлов данных и redo-логов.
-- список групп редулогов
select * from v$log;
-- список файлов редулогов
col member format a50;
select * from V$LOGFILE;
-- ??
select * from V$LOG_HISTORY order by first_time desc;
-- удаление группы редулогов
ALTER DATABASE DROP LOGFILE GROUP 3;
-- удаление файла
ALTER DATABASE DROP LOGFILE MEMBER '/oracle/dbs/log3c.rdo';
-- создание новой группы редулогов, номер группе присваивается автоматически
ALTER DATABASE ADD LOGFILE ('/diska/logs/log5a.rdo', '/diskc/logs/log5c.rdo') SIZE 500K;
-- создание новой группы редулогов с номером 10
ALTER DATABASE ADD LOGFILE GROUP 10 ('/diska/logs/log10a.rdo', '/diskc/logs/log10c.rdo') SIZE 500K;
-- добавление файла в группу
ALTER DATABASE ADD LOGFILE MEMBER '/diskb/logs/log2b.rdo' TO GROUP 2;
-- переименование редулогов
SHUTDOWN IMMEDIATE;
STARTUP MOUNT
ALTER DATABASE
RENAME FILE '/diska/logs/log1a.rdo', '/diska/logs/log2a.rdo'
TO '/diskc/logs/log1c.rdo', '/diskc/logs/log2c.rdo';
-- зачистка группы логов 3 (если файлов не существует, они будут созданы)
ALTER DATABASE CLEAR LOGFILE GROUP 3;
-- иногда после восстановления базы случаются проблемы с редулогами
-- если база еще не открыта, но в контрольном файле порописано что какой-то лог не архивирован, то при попытке его очистить возникнет ошибка
ORA-00350: log 1 of instance ORCL (thread 1) needs to be archived
-- очтобы очистить такой лог можно использовать команду
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 3;
--=============================================================
-- STANDBY REDO LOGS
--=============================================================
select * from v$standby_log;
-- проверка режима управления standby файлами
set line 200
show parameter standby_file_management
-- добавление группы standby redo-логов
select * from v$parameter where name = 'standby_file_management';
alter system set standby_file_management=manual scope=both;
ALTER DATABASE ADD STANDBY LOGFILE GROUP 10 ('/diska/logs/stb_log10a.rdo', '/diskc/logs/stb_log10c.rdo') SIZE 500K
alter system set standby_file_management=auto scope=both;
-- проверка standby redo-логов
select group#,status,bytes/1024/1024 mb from v$standby_log;
select TYPE, MEMBER from v$logfile where TYPE='STANDBY';
--=============================================================
-- Oracle Managed Files (OMF)
--=============================================================
* https://docs.oracle.com/database/121/ADMIN/omf.htm#ADMIN11510
* https://oracle-patches.com/oracle/begin/oracle-managed-files-облегчение-управления-файлами
-- Oracle умеет автоматически именовать файлы redo логов.
-- если задать параметры
ALTER SYSTEM set db_create_online_log_dest_1 = '/u01/oradata' scope=both
ALTER SYSTEM set db_create_online_log_dest_2 = '/u02/oradata' scope=both
-- то команда
ALTER DATABASE ADD LOGFILE SIZE 1G;
-- добавит новую группу redolog файлов, содержащую два файла размером 1ГБ
-- имена будут сгенерированы автоматически
/u01/oradata/<DB_UNIQUE_NAME>/onlinelog/o1_mf_<номер_группы>_jsb9tk7j_.log
/u02/oradata/<DB_UNIQUE_NAME>/onlinelog/o1_mf_<номер_группы>_jsb9tlcj_.log
-- если не указывать размер, то OMF по умолчанию задает размер 100МБ
Ссылки по теме