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> | ||
| + | |||
| + | |||