Database
 sql >> база данни >  >> RDS >> Database

Разбиране на групата за повторен дневник срещу файл срещу член

В този урок на Oracle ще обясним разбирането по лесен начин на групата за повторен дневник срещу файл срещу член.

Днес ще научим концепцията за буфер на дневника за повторно изпълнение в Oracle. В който ще се запознаем с това какво представлява буферът на дневника за повторно изпълнение, как работи и каква е ролята му в архитектурата на Oracle.

Ако искате да разберете архитектурата на Oracle, наистина е важно да разберете работата на буфера на дневника за повторно изпълнение. Статията по-долу ще ви помогне да се справите и с въпросите за интервю.

Разбиране на групата на дневника за повторно изпълнение срещу файл срещу член

Какво е буфер на дневника за повторно изпълнение?

Това е малко разпределение на паметта, обикновено около 14 MB по подразбиране. Това е цикличен буфер. След като се напълни отново започва да пише отгоре, презаписва данните, след като се напълни.

Какво представлява записът за повторение и промяна на вектора?

Инстанция на базата данни на Oracle записва всички DML/DDL транзакции в буфера на дневника за повторно изпълнение на SGA под формата на записи за повторно изпълнение. Индивидуалното изявление в транзакция ще доведе до един или повече от един запис за повторно изпълнение. Всички тези записи за повторно изпълнение се наричат ​​заедно вектор за промяна или вектор за повторение.

Всеки запис за redo се състои от оператор за redo и оператор за отмяна, например:

ТАБЛИЦА EMP
Empno Име

Отдел
1 Джон 10
2 Тони 20
3 Лора 50
4 Тигър 10
5 Скот 10
sql>delete empno from emp where deptno=10;

В горния пример таблицата emp има 3 записа за deptno=10. Така Oracle ще създаде 3 записа за повторно изпълнение за горния оператор и тези записи ще бъдат записани в буфера на дневника за повторно изпълнение. Тези 3 записа за повторно изпълнение се наричат ​​заедно вектор за промяна или вектор за повторение.

Векторът на промяната не е нищо друго освен редица засегнати редове от една операция. Буферът на регистрационния файл за повторение улавя транзакциите на потребителя и също така улавя ефекта на отмяна (изявление за отмяна) за тази транзакция.

Работа на LGWR процес

Тъй като размерът на буфера на дневника за повторно изпълнение е малък, който не може да нараства динамично, тези записани записи за повторно изпълнение трябва периодично да се записват на диска в онлайн регистрационен файл за повторно изпълнение. Това често се нарича прочистване на буфера на дневника за повторно изпълнение и работата по записването на тези записи за повторно изпълнение на диск се извършва от процеса LGWR.

Когато LGWR записва записи за повторно изпълнение на диск?

LGWR е доста агресивен при записването на тези записи на диск. По-долу са събитията, когато LGWR записва записи за повторно изпълнение на диск.

  • Когато размерът на буфера е 1/3 пълен
  • Когато има 1 MB вектори за промяна, налични в буфера на дневника за повторно изпълнение, които чакат за запис
  • На всеки 3 секунди
  • Когато се появи контролна точка
  • Когато потребител извърши своите транзакции

Параметър за задаване на размера на буфера на журнала за повторно изпълнение

log_buffer=x байта
Структура на буфера на дневника за повторно изпълнение

Архитектурата за повторно изпълнение се състои от 3 неща

  1. Възстановяване на нишката (логически)
  2. Групи на редолог (логически)
  3. файлове за членове на Redolog (физически)

1. Какво представлява нишката на дневника за повторно изпълнение?

  • Докато създаването на контролен файл се дава от параметъра „MAXINSTANCES“.
  • Нишка за повторно изпълнение е съставена от групи за повторно изпълнение. Нишката за повторно изпълнение трябва да е активирана, за да работи.
  • В средата RAC можете да свържете нишка за повторно изпълнение към конкретния екземпляр, като използвате параметъра init.ora „thread“.

В база данни, която не е RAC, най-често ще има една нишка (нишка =1)

2. Разбирате ли групата на дневника за повторение и нейното състояние?

-При създаване на контролен файл той се дава като параметър “MAXLOGFILES”.
-Регистрационната група за повторно изпълнение е колекция от идентични файлове с членове на дневника за повторение.
-Но за по-добра толерантност към грешки е обичайно да се съхраняват два файла член на дневника за повторно изпълнение във всяка група от регистрационни файлове за повторно изпълнение.
-Ако някой се загуби, това не се отразява. Членовете на регистрационните файлове за повторно изпълнение са идентични (огледални копия)
LGWR записва паралелно до всички членове на дадена група дневници за повторно изпълнение
Във всеки даден момент от време процесът LGWR записва само в една група регистрационни файлове за повторно изпълнение. Групата на дневника за повторно изпълнение е фиксирана, което означава, че членовете на регистрационните файлове за повторно изпълнение не могат да нарастват динамично.
Групата на дневника за повторно изпълнение, в която процесът LGWR в момента пише, се вижда със състояние „текущо“
След като групата на дневника за повторно изпълнение е пълна, тогава процесът LGWR ще превключи следващата група дневник за повторно изпълнение.
Предишната група ще покаже състояние „АКТИВНО“ и след известно време състоянието ще бъде „НЕАКТИВНО“
ТЕКУЩ => АКТИВЕН => НЕАКТИВЕН => ТЕКУЩ => АКТИВЕН => НЕАКТИВЕН …………………………………
ТЕКУЩА статус означава оракул, който в момента пише в този буфер
АКТИВЕН Контролна точка на записите за повторно изпълнение в този буфер е в изчакване
НЕАКТИВНО статус означава, че дневникът за повторно изпълнение е бил с контролна точка и може да бъде презаписан незабавно.
Не можете да промените размера на групата дневник за повторно изпълнение, веднъж създадена, но винаги пускате и създавате отново групата дневник за повторно изпълнение с различни размери. Не можете да изтриете групата на дневника за повторно изпълнение със състояние „ТЕКУЩ“ или „АКТИВНО“.

Как да превключите групата на дневника за повторно изпълнение?

Обикновено LGWR автоматично превключва между групите регистрационни файлове за повторно изпълнение, но можете ръчно да превключите от една група регистрационни файлове за повторно изпълнение към друга с помощта на команда.

sql>alter system switch logfile ;

Всеки път, когато LGWR поеме нова група регистрационни файлове за повторно изпълнение и присвоява монотонно нарастващ номер на тази група регистрационни файлове за повторно изпълнение, наречена „Пореден номер на дневника“ или „последователност#“. Можете да потърсите метаданните за групите от дневник за повторно изпълнение, като използвате изглед:- v$log Групите от дневник за повторно изпълнение се записват с размер на блока на физическия диск (сектор от 512 байта)

Как да добавите нова група регистрационни файлове за повторно изпълнение

sql>alter database add logfile group 3 ('/path/to/member1.log', '/path/to/member2.log') size 100m reuse;

Тук значението на повторното използване гласи, използвайте повторно файловете member 1.log или member2.log, ако вече съществуват в същия път.

Как да махна групата дневник за повторно изпълнение

Можете да махнете регистрационните групи за повторно изпълнение, при условие че състоянието не е ТЕКУЩЕ или АКТИВНО. Също така след прилагане на тази команда, броят на наличните дневници за повторно изпълнение трябва да бъде 2 или повече.

sql>alter database drop logfile groups 3;

3. Повторете регистрационните файлове на членове (физически)

При създаването на контролен файл той се дава от параметъра “MAXLOGMEMBERS”. Членовете на регистрационните файлове за повторно изпълнение са налични физически на ниво ОС. Размерът на файла е фиксиран в момента на създаване на групата на дневника за повторно изпълнение.

Файлът не може да нараства динамично. LGWR записва паралелно до всички членове на дадена група дневници за повторно изпълнение.
Файловете на членовете в групата на дневника за повторно изпълнение са идентични. Можете да потърсите информацията за състоянието от изгледа v$logfile

Как да добавя нов член към съществуваща група?

sql>alter database add logfile member '/path/to/new/member1.log' to group 3;

Можете да изключите член от групата, при условие че остане един член и статусът на групата не е текущ

sql>alter database drop logfile member '/path/to/member_to_be_deleted.log';

За да потърсите подробности за превключване на дневника за повторение
можете да потърсите v$log-history

sql>select count(*), trunc(first_time) from v$log_history;

група, за да презапишете записите за повторно изпълнение

Защо виждам „контролната точка не е завършена“ в alert.log

Когато LGWR пристигне в групата на дневника за повторно изпълнение, за да презапише записи за повторно изпълнение и по това време, ако контролна точка от тази група е в изчакване, ще видите съобщение в дневника за предупреждения „контролната точка не е завършена“ Поради това LGWR не може да презапише групата в дневника за повторно изпълнение незабавно.

Следователно Oracle ще задейства „контролната точка“, която ще изчисти мръсните буфери, причинени от повторни записи на диска. Само след това LGWR може да презапише, за да повтори буфера. Това означава, че LGWR трябва да изчака известно време, което не е добре. За да преодолеете, добавете още групи дневници за повторно изпълнение и/или увеличете размера на групите дневници за повторно изпълнение.

Надяваме се, че нашите по-горе подробности ще ви помогнат да изчистите разбирането си за буфера на журнала за повторно изпълнение.

Това е краят на урока, разбирането на групата за повторен дневник срещу файл срещу член.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Поддържане на групирана работа MAX (или MIN)

  2. AWS Summits 2018:Резюме на Чикаго

  3. Грешка при изпращане на пакет QUERY

  4. Модел на данни за приложение за резервация на медицински срещи

  5. Колко бърз е ODBC? „Заредено“ сравнение.