Diferencias

Muestra las diferencias entre la revision seleccionada y la versión actual de esta página.

backup:rman:rman_basico [2010/05/18 13:33]
backup:rman:rman_basico [2009/11/30 18:19] (actual)
Línea 1: Línea 1:
 +<columns>
 +  * [[http://www.wikioracle.es/doku.php|Inicio]]
 +NEWCOL
 +  * [[http://www.wikioracle.es/doku.php?idx=wiki|Indice]]
 +NEWCOL
 +  * [[http://www.wikioracle.es/doku.php?id=oracle_sql_scripts:00_directorio_de_scripts|Directorio de Scripts]]
 +NEWCOL
 +  * [[http://www.wikioracle.es/doku.php?id=configuracion:instalacion_oracle10g|Instalacion Oracle 10g]]
 +</columns>
 +
 +
 +
 +
 +
 +
 +====== Recovery Manager======
 +
 +  En este documento vamos a exponer diferentes aspectos, a la vez que
 +  varios ejemplos del uso de Rman para hacer los Backups de ORACLE
 +
 +===== Arrancar Rman =====
 +
 +rman target <USER>/<PWD>@SID
 +
 +
 +===== Opciones =====
 +<code>
 +RMAN> LIST BACKUP OF DATABASE;
 +
 +Lista los backups de la BBDD disponibles
 +
 +RMAN> LIST COPY OF DATAFILE 1, 2, 3;
 +
 +Lista las copias disponibles de los datafiles 1, 2 y 3
 +
 +RMAN> LIST BACKUP OF ARCHIVELOG FROM SEQUENCE <n>
 +
 +Lista las copias de los archivelogs...
 +
 +RMAN> LIST CONTROLFILECOPY "/tmp/cf.cpy";
 +
 +RMAN> LIST BACKUPSET OF DATAFILE 1;
 +
 +RMAN> DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE 133 THREAD 1;
 +
 +Borrar los archivelogs de nuestra BBDD hasta la secuencia 133 ¡OJO! el THREAD 1 es si tenemos
 +un RAC, nos borrara los del NODO 1 del RAC.
 +
 +RMAN> DELETE NOPROMPT OBSOLETE RECOVERY WINDOW OF 7 DAYS;
 +
 +RMAN> CHANGE ARCHIVELOG ALL CROSSCHECK;
 +
 +Hace un chequeo de la disponibilidad de los archivelogs registrados en la BBDD (Por si los hemos borrado)
 +
 +RMAN> DELETE FORCE OBSOLETE DEVICE TYPE DISK:
 +
 +Borra todos los backups 'Obsoletos' en disco. Los obsoletos los marca la opcion 'RETENCION POLICY'.
 +
 +</code>
 +
 +
 +
 +===== Configure =====
 +
 +    Rman nos permite tener una gran parte de las opciones de nuestros backups
 +    almacenados en 'el entorno' de rman:
 +
 +<code>
 +CONFIGURE RETENTION POLICY TO REDUNDANCY 7;
 +CONFIGURE BACKUP OPTIMIZATION OFF;
 +CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';
 +CONFIGURE CONTROLFILE AUTOBACKUP ON;
 +CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '<PATH>/SID_%F.ctl.bck';
 +CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE 'SBT_TAPE' TO '%F';
 +CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
 +CONFIGURE DEVICE TYPE 'SBT_TAPE' PARALLELISM 2;
 +CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
 +CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
 +CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
 +CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE SBT_TAPE TO 1; # default
 +CONFIGURE CHANNEL DEVICE TYPE DISK RATE 10 M;
 +CONFIGURE CHANNEL 1 DEVICE TYPE DISK CONNECT  "<USER>/<PWD>@SID";
 +CONFIGURE CHANNEL 2 DEVICE TYPE DISK CONNECT  "<USER>/<PWD>@SID";
 +CONFIGURE CHANNEL 1 DEVICE TYPE 'SBT_TAPE' CONNECT  "<USER>/<PWD>@SID";
 +CONFIGURE CHANNEL 2 DEVICE TYPE 'SBT_TAPE' CONNECT  "<USER>/<PWD>@SID";
 +</code>
 +
 +===== Rman con la BBDD en NOARCHIVELOG =====
 +
 +
 +  En el siguiente ejemplo exponemos como usar rman para hacer un <b style="color:black;background-color:#ffff66">backup</b> en frio.
 +  Cuando no tenemos la BBDD en ARCHIVELOG no tenemos mas remedio que hacer los
 +  backups en frio.
 +
 +<code>
 +run {
 +shutdown immediate;
 +startup mount;
 +allocate channel 'dev_0' type 'sbt_tape' parms 'ENV=(OB2BARTYPE=Oracle8,OB2APPNAME=MDB,OB2BARLIST=New1)';
 +<b style="color:black;background-color:#ffff66">backup</b> <b style="color:black;background-color:#a0ffff">incremental</b> <b style="color:black;background-color:#99ff99">level</b> <incr_level>
 +format 'New1<MDB_%s:%t:%p>.dbf'
 +tablespace TS;
 +}
 +</code>
 +
 +
 +
 +===== Ejemplos de Scripts de RMAN =====
 +
 +
 +==== Un <b style="color:black;background-color:#ffff66">Backup</b> simple ====
 +<code>
 +RMAN> run
 +2> {
 +3> ALLOCATE CHANNEL NODE1 DEVICE TYPE DISK
 +4> FORMAT '/oracle2/rman/<SID>_%s_%t.bck';
 +<b style="color:black;background-color:#ffff66">BACKUP</b> <b style="color:black;background-color:#a0ffff">INCREMENTAL</b> <b style="color:black;background-color:#99ff99">LEVEL</b> <b style="color:black;background-color:#ff9999">0</b> <b style="color:black;background-color:#ff66ff">CUMULATIVE</b> DATABASE CHANNEL NODE1 ;
 +5> 6> <b style="color:black;background-color:#ffff66">BACKUP</b> FILESPERSET 20
 +7> (ARCHIVELOG ALL
 +8> DELETE ALL INPUT
 +9> CHANNEL NODE1);
 +10> }
 +</code>
 +
 +
 +==== <b style="color:black;background-color:#ffff66">Backup</b> de un RAC ====
 +
 +Este es un ejemplo muy simple de un <b style="color:black;background-color:#ffff66">backup</b> de un RAC de 2 nodos
 +
 +  * Abrimos conexion a los dos nodos
 +  * La copia de los datafiles nos basta lanzarla contra el nodo1
 +  * Necesitaremos copiar los archivelogs de los dos nodos.
 +  * En este ejemplo haremos una copia completa.
 +  * En el caso de querer hacer una <b style="color:black;background-color:#a0ffff">incremental</b>, solo tendremos que cambiar el '<b style="color:black;background-color:#99ff99">LEVEL</b> <b style="color:black;background-color:#ff9999">0</b>' por un '<b style="color:black;background-color:#99ff99">LEVEL</b> 1'
 +
 +
 +<code>
 +rman target sys/change_on_install@ORAC
 +
 +RUN
 +{
 +ALLOCATE CHANNEL NODE1 DEVICE TYPE DISK
 +CONNECT '<User>/<PWD>@<SID NODO1>'
 +FORMAT '/oracle/product/9.2.0.4/backups/rman/<SID NODO1>_%d_%s_%t.bck';
 +
 +ALLOCATE CHANNEL NODE2 DEVICE TYPE DISK
 +CONNECT '<User>/<PWD>@<SID NODO2>'
 +FORMAT '/oracle/product/9.2.0.4/backups/rman/<SID NODO2>_%d_%s_%t.bck';
 +
 +<b style="color:black;background-color:#ffff66">BACKUP</b> <b style="color:black;background-color:#a0ffff">INCREMENTAL</b> <b style="color:black;background-color:#99ff99">LEVEL</b> <b style="color:black;background-color:#ff9999">0</b> <b style="color:black;background-color:#ff66ff">CUMULATIVE</b> DATABASE CHANNEL NODE1 ;
 +
 +<b style="color:black;background-color:#ffff66">BACKUP</b> FILESPERSET 20
 +(ARCHIVELOG ALL
 +DELETE ALL INPUT
 +CHANNEL NODE1);
 +
 +<b style="color:black;background-color:#ffff66">BACKUP</b> FILESPERSET 20
 +(ARCHIVELOG ALL
 +DELETE ALL INPUT
 +CHANNEL NODE2);
 +}
 +</code>
 +
 +==== Restaurar unos Archivelogs ====
 +
 +<code>
 +run
 +{
 +set archivelog destination to '/oracle/product/9.2.0.4/backups/rman';
 +restore archivelog from logseq 13032 until logseq 13033 thread 2;
 +}
 +</code>
 +...Restaura los archivelogs desde la secuencia 13032 hasta la 12033 del nodo 2 del RAC...
 +
 +
 +===== Ejemplos de SQLs para ver el estado de nuestros Bcks desde SQLPLUS=====
 +
 +<code sql>
 +rem -----------------------------------------------------------------------
 +rem rman_run.sql
 +rem Monitoriza el estado del <b style="color:black;background-color:#ffff66">Backup</b> mientras esté en marcha
 +rem -----------------------------------------------------------------------
 +prompt Estado del <b style="color:black;background-color:#ffff66">Backup</b> de RMAN:
 +
 +SELECT TO_CHAR (start_time, 'DD-MON-YY HH24:MI') "<b style="color:black;background-color:#ffff66">BACKUP</b> STARTED", sofar,
 + totalwork, elapsed_seconds / 60 "ELAPSE (Min)",
 + ROUND (sofar / totalwork * 100, 2) "Complete%"
 +FROM SYS.v_$session_longops
 +WHERE compnam = 'dbms_backup_restore'
 +/
 +</code>
 +
 +
 +<code sql>
 +rem -----------------------------------------------------------------------
 +rem Filename: rmanstat24.sql
 +rem Backups de datafiles y archivelogs de las últimas 24H.
 +rem -----------------------------------------------------------------------
 +prompt "RMAN Status for past 24-hours"
 +
 +SELECT dbfiles || ' from ' || numfiles "Datafiles backed up",
 + cfiles "Control Files backed up", spfiles "SPFiles backed up"
 +FROM (SELECT COUNT (*) numfiles
 + FROM SYS.v_$datafile),
 + (SELECT COUNT (*) dbfiles
 + FROM SYS.v_$backup_datafile a, SYS.v_$datafile b
 + WHERE a.file# = b.file# AND a.completion_time > SYSDATE - 1),
 + (SELECT COUNT (*) cfiles
 + FROM SYS.v_$backup_datafile
 + WHERE file# = <b style="color:black;background-color:#ff9999">0</b> AND completion_time > SYSDATE - 1),
 + (SELECT COUNT (*) spfiles
 + FROM SYS.v_$backup_spfile
 + WHERE completion_time > SYSDATE - 1)
 +
 +/
 +
 +-- Archlog Files de las últimas 24H
 +
 +SELECT backedup || ' from ' || archived "Archlog files backed up",
 + ondisk "Archlog files still on disk"
 +FROM (SELECT COUNT (*) archived
 + FROM SYS.v_$archived_log
 + WHERE completion_time > SYSDATE - 1),
 + (SELECT COUNT (*) backedup
 + FROM SYS.v_$archived_log
 + WHERE backup_count > <b style="color:black;background-color:#ff9999">0</b> AND completion_time > SYSDATE - 1),
 + (SELECT COUNT (*) ondisk
 + FROM SYS.v_$archived_log
 + WHERE archived = 'YES' AND deleted = 'NO')
 +
 +/
 +
 +-- RMAN en marcha:
 +SELECT to_char(start_time,'DD-MON-YY HH24:MI') "<b style="color:black;background-color:#ffff66">BACKUP</b> STARTED",
 +sofar, totalwork,
 +elapsed_seconds/60 "ELAPSE (Min)",
 +round(sofar/totalwork*100,2) "Complete%"
 +FROM sys.v_$session_longops
 +WHERE compnam = 'dbms_backup_restore'
 +/
 +</code>
 +
 +
 +<code sql>
 +rem -----------------------------------------------------------------------
 +rem Filename: rmanlist24.sql
 +rem Backups completados de las últimas 24H
 +rem -----------------------------------------------------------------------
 +tti "RMAN Backups for last 24-hours"
 +col type format a4
 +col handle format a35 trunc
 +col file# format 9999
 +col duration format a9
 +
 +SELECT  DECODE (backup_type,
 + 'L', 'ARCH',
 + 'D', 'DB',
 + 'I', 'INC',
 + 'Unknown type=' || backup_type
 + ) TYPE,
 + TO_CHAR (a.start_time, 'DDMON HH24:MI') start_time,
 + TO_CHAR (a.elapsed_seconds / 60, '99.9') || ' Min' DURATION,
 + SUBSTR (handle, -35) handle, NVL (d.file#, l.sequence#) file#,
 + NVL (d.blocks, l.blocks) blocks
 + FROM SYS.v_$backup_set a,
 + SYS.v_$backup_piece b,
 + SYS.v_$backup_datafile d,
 + SYS.v_$backup_redolog l
 +WHERE a.start_time BETWEEN SYSDATE - 100 AND SYSDATE
 + AND a.set_stamp = b.set_stamp
 + AND a.set_stamp = d.set_stamp(+)
 + AND a.set_stamp = l.set_stamp(+)
 +ORDER BY start_time, file#
 +
 +</code>
 +----
 +<columns>
 +  * [[http://www.wikioracle.es/doku.php|Inicio]]
 +NEWCOL
 +  * [[http://www.wikioracle.es/doku.php?idx=wiki|Indice]]
 +NEWCOL
 +  * [[http://www.wikioracle.es/doku.php?id=oracle_sql_scripts:00_directorio_de_scripts|Directorio de Scripts]]
 +NEWCOL
 +  * [[http://www.wikioracle.es/doku.php?id=configuracion:instalacion_oracle10g|Instalacion Oracle 10g]]
 +</columns>
 +
 +

Herramientas personales