Оракл дээр switching гэж юу юм бол? Энэ талаар дэлгэрэнгүй мэдээлэл өгөөч. Энийг сайн ойлгохгүй байгаам даа…
Oracle Log File switch гэж ойлгож болох уу? эсвэл өөр юм яриад байна уу?
Тийн тийн… Switch гэж сонссоноос яг юугаа мэдэхгүй л байна.
current logfile нь дүүрсэн тохиолдолд дараагийн redolog руу бичилт хийхийг log switch гэнэ. Энийг гараар хийж болно.
SQL> select status from v$log:
STATUS
----------------
CURRENT --- current Redo logfile1
INACTIVE
INACTIVE
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC
---------- ---------- ---------- ---------- ---------- ---------- ---
STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME CON_ID
---------------- ------------- --------- ------------ --------- ----------
1 1 2929 52428800 512 2 NO
CURRENT 957548329 07-DEC-16 2.8147E+14 0 --- current REDO logfile1
2 1 2927 52428800 512 2 NO
INACTIVE 957444410 07-DEC-16 957527869 07-DEC-16 0
3 1 2928 52428800 512 2 NO
INACTIVE 957527869 07-DEC-16 957548329 07-DEC-16 0
SQL> alter system switch logfile;
SQL> select status from v$log;
STATUS
----------------
ACTIVE
CURRENT
INACTIVE
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC
---------- ---------- ---------- ---------- ---------- ---------- ---
STATUS FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME CON_ID
---------------- ------------- --------- ------------ --------- ----------
1 1 2929 52428800 512 2 NO
ACTIVE 957548329 07-DEC-16 957566216 07-DEC-16 0
2 1 2930 52428800 512 2 NO
CURRENT 957566216 07-DEC-16 2.8147E+14 0 --- now it have changed the position the logfile1 to logfile2
3 1 2928 52428800 512 2 NO
INACTIVE 957527869 07-DEC-16 957548329 07-DEC-16 0
LGWR process нь redo log файлууд руу бичиж байгаа. Уг файл дүүрсэн тохиолдолд дараагийн файл руу ээлжилж бичдэг бөгөөд энэ солбих үеийг Log switch гэж нэрлэнэ. Дараах коммандын тусламжтай шууд log switch хийж болно
SQL> SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG; SQL> ALTER SYSTEM SWITCH LOGFILE; SQL> SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG;
Thanks…
Энэ удаан хийгддэг юм байна даа.
select log_switch_wait from v$instance; гэхээр
ARCHIVE LOG гэж байвал “хүлээ” гэсэн үг биздээ?
Минийх дээр лав redolog file 50mb-тай 3ширхэг л байна. байзын хэмжээ, switch хийгдэж байгаа давтамжаас хамааран энэ 3 file-ийг нэмж хасдаг юм уу? эсвэл огт оролддоггүй юм уу?
Батмөнх ахын хэлсэнчлэн, LGWR процесс redolog файлруу бичиж байгаа ба дүүрхэд дараагийн логруу солигддог. Бичихдээ өөрчлөлтүүд буюу DML,DDL үйлдлүүдийн логийг бичнэ.
Хэрвээ тухайн Oracle database нь их хэмжээний insert/update/delete хийдэг бол 3ш 50mb лог файлийн хувьд эхний лог файлыг цэвэрлэж амжаагүй байтал, бүтэн ROTATE хийгдээд хүрээд ирвэл LGWR процесс redolog - руу бичиж чадахгүй wait үүсэж, нийт DML үйлдэл удаашрана. Eр нь л DML/DDL үйлдэл чинь удахгүй байвал асуудалгүй болж байна л гэсэн үг.
Яг DML үйлдэл гэвэл бас Redobuffer - ийн хэмжээ, LGWR процессийн тоо, Redolog файл, Disk IO гээд олон параметер хоорондоо tuned байх хэрэгтэй. Аль дээр нь ч wait үүсэж байж болно. Дэлгэрэнгүй AWR report - оос харна.