Oracle Database Switching

switch
log

#1

Оракл дээр switching гэж юу юм бол? Энэ талаар дэлгэрэнгүй мэдээлэл өгөөч. Энийг сайн ойлгохгүй байгаам даа…


#2

Oracle Log File switch гэж ойлгож болох уу? эсвэл өөр юм яриад байна уу?


#3

Тийн тийн… Switch гэж сонссоноос яг юугаа мэдэхгүй л байна.


#4

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

#5

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;


#6

Thanks…


#7

Энэ удаан хийгддэг юм байна даа.
select log_switch_wait from v$instance; гэхээр
ARCHIVE LOG гэж байвал “хүлээ” гэсэн үг биздээ?


#8

Минийх дээр лав redolog file 50mb-тай 3ширхэг л байна. байзын хэмжээ, switch хийгдэж байгаа давтамжаас хамааран энэ 3 file-ийг нэмж хасдаг юм уу? эсвэл огт оролддоггүй юм уу?


#9

Батмөнх ахын хэлсэнчлэн, 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 - оос харна.