sábado, 3 de marzo de 2012

Oracle Day en Montevideo

El miércoles pasado tuvimos la suerte de contar en Montevideo con una gran jornada organizada por Oracle en dos eventos: Oracle Day y Oracle Developers Day.

Fue una jornada muy larga pero muy interesante, y con una organización excelente. Felicitaciones a Valeria, Facundo, y todos los involucrados en la misma.

Usar presentaciones cortas (media hora), variedad de temas, y expositores con muy buen dominio del tema, fueron elecciones muy acertadas.

Hacía muchos años que este tipo de eventos no llegaban a Uruguay, y ojalá que sea el comienzo de un hábito. Desde el UYOUG nos enfocamos en contenido técnico, y este tipo de eventos es el complemento perfecto y necesario, ya que se puede tener una visión general de la variedad de productos de Oracle, para luego profundizar y ver detalles de los mismos en los encuentros del UYOUG.

Tuvimos la oportunidad de dar a conocer los planes del UYOUG para este año, y resumir lo hecho hasta ahora. Dejo el link a la presentación para quienes se lo perdieron.

lunes, 26 de diciembre de 2011

RMAN "backup optimization" en acción


RMAN tiene varios parámetros que permiten configurar nuestra política de respaldo.

Con "BACKUP OPTIMIZATION" podemos acortar el tiempo y espacio ocupado por el  respaldo, ya que cuando está configurado no se respaldan archivos que ya existen como respaldos válidos en el destino.

Existe desde 9i, y por defecto no está habilitado. Ejemplo en 11.2 XE:

RMAN> SHOW BACKUP OPTIMIZATION;

using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name XE are:
CONFIGURE BACKUP OPTIMIZATION OFF; # default

Debemos habilitarlo explícitamente:

RMAN> CONFIGURE BACKUP OPTIMIZATION ON;

new RMAN configuration parameters:
CONFIGURE BACKUP OPTIMIZATION ON;
new RMAN configuration parameters are successfully stored

Cómo podemos ver su funcionamiento en la práctica?. Según el tipo de archivo a respaldar es el criterio usado para decidir si hay una copia idéntica. Los detalles en el manual (de 11.2).

En este ejemplo, se trata de copiar un backupset a un directorio local.

¿Para qué puede interesar hacer esto?. El caso más obvio es sacar respaldos fuera de la Flash Recovery Area cuando usamos ASM, para luego respaldarlos a cinta como parte de una política de respaldo externa a la base.

RMAN> backup as copy device type disk format '/respaldos/%U' backupset COMPLETED BETWEEN 'SYSDATE-2' AND 'SYSDATE-1';
skipping backupset key 342; already backed up 1 time(s)
skipping backupset key 343; already backed up 1 time(s)
skipping backupset key 344; already backed up 1 time(s)

Para forzar esta copia sin cambiar la configuración, se debe agregar la clausula FORCE a la sentencia:

RMAN> backup as copy device type disk format '/respaldos/%U' backupset COMPLETED BETWEEN 'SYSDATE-2' AND 'SYSDATE-1' FORCE;
Starting backup at 20/DEC/2011 19:45:49
using channel ORA_DISK_1
input backupset count=15078 stamp=770144640 creation_time=17/DEC/2011 19:45:00
channel ORA_DISK_1: starting piece 1 at 20/DEC/2011 19:45:52
channel ORA_DISK_1: backup piece +RECOVERY/prod/backupset/2011_12_17/nnndf0_backup_prod_1217110500_0.397.770144653
...

jueves, 22 de diciembre de 2011

Formato de fecha en comandos RMAN

Comparto un truco simple pero muy útil: incluir la hora en comandos RMAN que muestran o reciben fechas.


Por ejemplo, si queremos ver los archivos generados en un backup específico:

RMAN> list backup summary tag bkp_prod_121511060003;

List of Backups
===============
Key     TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
5234   B  F  A DISK        15-DEC-11       1       1       YES        bkp_prod_121511060003
5235   B  F  A DISK        15-DEC-11       1       1       YES        bkp_prod_121511060003

RMAN> exit

Recovery Manager complete.



La fecha en la que se generó, "Completion Time", no incluye la hora.

Para cambiar el formato, no se puede hacer a nivel de sesión:

RMAN> sql "alter session set nls_date_format=''dd/mm/yyyy hh:mi:ss''";

sql statement: alter session set nls_date_format=''dd/mm/yyyy hh:mi:ss''

RMAN> list backup summary tag bkp_prod_121511060003;

List of Backups
===============
Key     TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
5234   B  F  A DISK        15-DEC-11       1       1       YES        bkp_prod_121511060003
5235   B  F  A DISK        15-DEC-11       1       1       YES        bkp_prod_121511060003


La forma de hacerlo es usando la variable de ambiente NLS_DATE_FORMAT en el sistema operativo, fuera de la consola RMAN:

[oracle@oraculo ~]$ export NLS_DATE_FORMAT='DD/MON/YYYY HH24:MI:SS'

[oracle@oraculo ~]$ rman target /

Recovery Manager: Release 10.2.0.3.0 - Production on Wed Dec 21 20:31:46 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to target database: Ent11g (DBID=943234298)


RMAN> list backup summary tag bkp_prod_121511060003;

using target database control file instead of recovery catalog

List of Backups
===============
Key     TY LV S Device Type Completion Time      #Pieces #Copies Compressed Tag
------- -- -- - ----------- -------------------- ------- ------- ---------- ---
 5234   B  F  A DISK        15/DEC/2011 03:21:03 1       1       YES        bkp_prod_121511060003
 5235   B  F  A DISK        15/DEC/2011 03:52:47 1       1       YES        bkp_prod_121511060003