Oracle DB: redo-логи
Версия от 14:51, 1 декабря 2022; Admin (обсуждение | вклад)
Процесс 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МБ
Ссылки по теме