viernes, 19 de julio de 2013

Resize y rename de LOGFILES

Para renombrar o mover un logfiles, y también se puede utilizar esto para los datafiles, procederemos de la siguiente forma.
Lo primero será para la base de datos y montarla, para poder trabajar sobre ella.
SQL> SHUTDOWN IMMEDIATE
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> STARTUP MOUNT
ORACLE instance started.

Total System Global Area  167772160 bytes
Fixed Size                   787968 bytes
Variable Size              61864448 bytes
Database Buffers          104857600 bytes
Redo Buffers                 262144 bytes
Database mounted.

Una vez hecho esto, solo tendremos que lanzar la sentencia de renombrado de los logfiles y abrir la base de datos.

SQL> ALTER DATABASE RENAME FILE '/oracle/SID/mirrlogA/log_g11m1.dbf' TO '/oracle/SID/mirrlogA/log_g11m2.dbf';

Database altered.

SQL> ALTER DATABASE OPEN;

Database altered.

Como ya he comentado antes, esto se puede utilizar si lo que quieres es renombrar o mover un datafile.

Si lo que queremos es redimensionar un logfile procederemos de la siguiente manera.

Lo primero sera ver cual es el logfile activo, puesto que ese no prodemos borrarlo para recrearlo.

SQL> connect / as sysdba

SQL> select group#, bytes, status from v$log;
GROUP# BYTES STATUS 
---------- ---------- ---------------- 
1 200428800 INACTIVE 
2 200428800 CURRENT 
3 200428800 INACTIVE 

Como se ve en la sentencia, podremos borrar el grupo 1 y 3, puesto que el 2 esta en uso, así procederemos  a trabajar con esos grupos y luego moveremos los logfile para dejar el 2 en INACTIVE.

SQL> alter database drop logfile group 1;

SQL> alter database add logfile group 1('/oracle/SID/origlogB/log_g14m1.dbf','/oracle/SID/mirrlogB/log_g14m2.dbf') size 50M reuse;

Este paso lo haremos con todos los logfile que tengamos. Borrando y recreando los distintos grupos. Cuando lleguemos al que esta activo, lo que haremos sera moverlo con alter system switch logfile; (lanzarlo varias veces y veréis que se va moviendo el CURRENT)   y comprobar que esta en estado inactivo para poder trabajar con él.

SQL>ALTER SYSTEM SWITCH LOGFILE;

System altered.

SQL> select group#, bytes, status from v$log;
GROUP# BYTES STATUS 
---------- ---------- ---------------- 
1 52428800 CURRENT 
2 200428800 INACTIVE
3 52428800 INACTIVE 

Una vez que apliquemos los pasos anteriores con este grupo, comprobaremos de nuevo que el tamaño fue cambiado en todos los logfiles.
SQL> select group#, bytes, status from v$log;
GROUP# BYTES STATUS 
---------- ---------- ---------------- 
1 52428800 CURRENT 
2 52428800 INACTIVE
3 52428800 INACTIVE 

Si queremos ver la ubicacion de los logfiles, lo haremos con la siguiente sentencia

SQL> select group#, member from v$logfile;