ALTER SYSTEM ARCHIVE LOG CURRENT vs ALTER SYSTEM SWITCH LOGFILE
Ambos comandos forzan el Switch de los grupos de Redo Log Online, pero
ALTER SYSTEM SWITCH LOGFILE: Es asíncrono, no espera la confirmación que los archivos de redolog online se hayan sido archivados, mientras que
ALTER SYSTEM ARCHIVE LOG CURRENT: Es síncrono y espera la confirmación que los Redo Log Online fueron archivados por el ARCHIVER.
00.- Nuestro ambiente: Un RAC de 2 nodos con 3 grupos de Redo Log Online en cada Instancia de Base de Datos.
ALTER SYSTEM SWITCH LOGFILE: Es asíncrono, no espera la confirmación que los archivos de redolog online se hayan sido archivados, mientras que
ALTER SYSTEM ARCHIVE LOG CURRENT: Es síncrono y espera la confirmación que los Redo Log Online fueron archivados por el ARCHIVER.
00.- Nuestro ambiente: Un RAC de 2 nodos con 3 grupos de Redo Log Online en cada Instancia de Base de Datos.
SQL> select inst_id, instance_name from gv$instance;
INST_ID INSTANCE_NAME
---------- ----------------
1 CURSO1
2 CURSO2
select thread#, group#, status,bytes/1024/1024 size_mb from v$log order by thread#, group#;
THREAD# GROUP# STATUS
---------- ---------- ----------------
1 1 INACTIVE
1 2 INACTIVE
1 3 CURRENT <---Grupo que esta siendo escrito por el Log Writter.
2 4 INACTIVE
2 5 INACTIVE
2 6 CURRENT
01.- ALTER SYSTEM SWITCH LOGFILE: Solo forza el switch de grupo de Redolog en la instancia donde se ejecuta el comando.
Aquí vemos como el CURRENT cambio del GROUP# 3 al GROUP# 1 en el THREAD# 1 (Nodo 1)
SQL> ALTER SYSTEM SWITCH LOGFILE;
System altered.
Elapsed: 00:00:00.05
SQL> select thread#, group#, status,bytes/1024/1024 size_mb from v$log order by thread#, group#;
THREAD# GROUP# STATUS
---------- ---------- ----------------
1 1 CURRENT
1 2 INACTIVE
1 3 INACTIVE
2 4 INACTIVE
2 5 INACTIVE
2 6 CURRENT <--- En el THREAD# 2 no hubo cambio del grupo que estaba CURRENT
02.- ALTER SYSTEM SWITCH ALL LOGFILE: Con la opción no documentada de ALL hace que cambien todos los grupos de Redolog en todas las instancias. El grupo de redolog en estado CURRENT cambio del GROUP# 1 al GROUP# 2 en el THREAD# 1 (Nodo 1); En el THREAD# 2 (Nodo 2), el CURRENT cambio del GROUP# 6 al GROUP# 4.
Es importante observar que debido a que este comando es asíncrono y no espera la confirmación del ARCHIVER se ejecuta sumamente rápido, solo tardó 0.05 Segundos.
SQL> ALTER SYSTEM SWITCH ALL LOGFILE;
System altered.
Elapsed: 00:00:00.05
SQL> select thread#, group#, status from v$log order by thread#, group#;
THREAD# GROUP# STATUS
---------- ---------- ----------------
1 1 INACTIVE
1 2 CURRENT
1 3 INACTIVE
2 4 CURRENT
2 5 INACTIVE
2 6 INACTIVE
03.- Vemos que este comando es similar al anterior, forza el switch de Redo log en todas las instancias, sin embargo tardo 03,69 segundos, porque debió esperar la confirmación del ARCHIVER y que todos los redolog fueron archivados correctamente.
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
System altered.
Elapsed: 00:00:03.69
SQL> select thread#, group#, status from v$log order by thread#, group#;
THREAD# GROUP# STATUS
---------- ---------- ----------------
1 1 INACTIVE
1 2 INACTIVE
1 3 CURRENT
2 4 INACTIVE
2 5 CURRENT
2 6 INACTIVE
NOTA:
Si la base de datos no esta en modo ARCHIVE el comando ALTER SYSTEM ARCHIVE LOG CURRENT o ALTER SYSTEM SWITCH ALL LOGFILE van a fallar con un error: "ORA-00258: manual archiving in NOARCHIVELOG mode must identify log."
SQL> ARCHIVE LOG LIST Database log mode No Archive Mode Automatic archival Disabled Archive destination /u01/app/oracle/product/12.1.0/db_home1/dbs/arch Oldest online log sequence 3109 Current log sequence 3111 SQL> ALTER SYSTEM ARCHIVE LOG CURRENT; ALTER SYSTEM ARCHIVE LOG CURRENT * ERROR at line 1: ORA-00258: manual archiving in NOARCHIVELOG mode must identify log
Comments
Post a Comment