Siempre tengo que buscar esto por Internet. La foto que he seleccionado para la ocasión, evoca la necesidad de tener buenos backups.
RMAN (Recovery Manager) es la herramienta de Oracle para poder hacer backups físicos de nuestra BBDD. Un backup físico, es a fín de cuentas, como copiar los ficheros DBFs que forman los TableSpaces de nuestra BBDD a un lugar seguro (de ahí, lo de copia de seguridad), pero claro, si lo hiciéramos con el comando COPY
del sistema operativo, el estado de la copia de seguridad sería inconsistente, porque no todos los DBFs estarían sincronizados con los cambios en nuestra BBDD a la misma hora, por lo tanto, lo mejor es hacer esta copia con la base de datos parada.
Claro que no todas las bases de datos se pueden parar, para hacerles backup, por lo que para poder hacer un backup físico con Oracle arriba, necesitamos que la base de datos esté configurada en modo ArchiveLog. En ese caso, podremos hacer backup físico en caliente (que se dice).
Para ilustrar el procedimiento, vamos a lanzar un backup físico al directorio /opt/backups_oracle/backupset/, por lo que, lo primero será crear el directorio donde dejaremos la copia.
mkdir -p /opt/backups_oracle/backupset/controlfiles
chown -R oracle.oinstall /opt/backups_oracle
Nos convertimos en usuario oracle, y lanzamos
RMAN usando el catálogo local
(esto son los ControlFiles de la propia BBDD).
su - oracle
$ORACLE_HOME/bin/rman target / nocatalog
Ya en la consola de RMAN ejecutaremos los siguientes comandos:
RMAN>
-- Mostrar nuestr política de backup
SHOW RETENTION POLICY;
-- Configurar: solo conservaremos dos backups físicos
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
-- Hacer copia también de los controlFiles.
CONFIGURE CONTROLFILE AUTOBACKUP ON;
-- Decirle el directorio donde dejar los backups de estos
-- controlfiles...
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK \
TO '/opt/backups_oracle/backupset/controlfiles/BBDD_%F.ctl.bck';
-- Decirle que el dispositivo por defecto sera el disco
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
-- Decirle el directorio donde dejar la copia de los Datafiles
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT \
'/opt/backups_oracle/backupset/%T__%d_%p_%s.bck';
-- No limitar el tamaño de la copia
CONFIGURE MAXSETSIZE TO UNLIMITED;
-- salir :)
RMAN> exit;
Con estos comandos estamos configurando nuestra política de backup, donde lo más significativo es que le decimos el directorio donde debe dejar los backups y que como máximo conservaremos dos copias físicas. Esto se guardará en los
controlfiles de la BBDD, ya que no estamos usando un catálogo global. Esto es importante porque significa que tenemos que guardar copia de los
controlfiles junto al backup de Oracle.
Una vez configurada nuestra política de copia, podremos lanzar el backup de Oracle ejecutando...
RMAN>
-- Hacer backup de los Datafiles
BACKUP DATABASE;
-- Borrar los archivelogs, obsoletos
BACKUP ARCHIVELOG ALL DELETE INPUT;
-- Hacer copia extra de los controlfiles
COPY CURRENT CONTROLFILE TO \
'/opt/backups_oracle/backupset/controlfiles/control%u.copia';
-- Borrar las copias obsoletas (según RETENTION POLICY REDUNDANCY)
DELETE NOPROMPT OBSOLETE;
-- salir :)
RMAN> exit;
Además, sería bueno conservar junto al backup el BDID de la BBDD...
su - oracle
sqlplus /nolog
SQLPLUS> connect /as sysdba;
SQLPLUS> select DBID from v$database;
... y una copia del
SPFILE que usa la BBDD para arrancar (que podemos copiar usando el comando
COPY
del sistema Operativo)
su - oracle
sqlplus /nolog
SQLPLUS> connect /as sysdba;
SQLPLUS> show parameter pfile;
La foto la he sacado del album de godog
en flickr