Oracle DB: redo-логи

Материал из sysadm
Перейти к навигации Перейти к поиску

Процесс 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МБ

Ссылки по теме