Contacto

CONTACTAR EN CASO DE EMERGENCIAS Móvil +56963679637 - MAIL : CONSULTADBABLOCK@GMAIL.COM
- SOPORTE REMOTO EN BASE DE DATOS ORACLE - ORACLE LINUX - ORACLE VM SERVER - ORACLE RAC - ORACLE DATA GUARD
- UPGRADES - CAPACITACION
Showing posts with label RECOVERY. Show all posts
Showing posts with label RECOVERY. Show all posts

Friday, June 10, 2016

Hands-ON Oracle Recovery Manager - RMAN

Hola Amigos, Hace un tiempo construí este manual de RMAN avanzado de 11gR2. Acá existen ejemplos reales de situaciones que ocurren en un día normal de operación o frente a una consultoría técnica.

En esta presentación se incluyeron los siguientes tópicos para estudiar:


  • INTRODUCCIÓN RECOVERY MANAGER 
  • CONCEPTOS DE RESPALDO Y RECUPERACIÓN 
  • ARQUITECTURA EL PROCESO LOG WRITTER 
  • EL PROCESO ARCHIVER
  • ESTRUCTURAS FÍSICAS DE BASES DE DATOS UTILIZADAS EN RECUPERACIÓN 
  • TIPOS DE RESPALDOS TIPOS DE RECUPERACIÓN
  • CONFIGURANDO EL AMBIENTE RMAN
  • MULANDO UNA SUPER DLT A DISCO
  • CONFIGURANDO TIPOS DE DISPOSITIVOS 
  • CATÁLOGO DE RECUPERACIÓN 
  • RECOVERY MANAGER EJERCICIOS DE RESPALDO, RECUPERACION, FLASHBACK, ASM METADATA


Viva Linux!!!! Alberto Silva Gallardo

Friday, October 22, 2010

RMAN - Comandos Rapidos y Tips

Acá les dejo algunos comandos básicos de RMAN que nos ayudan a realizar ciertas tareas automatizadas.

1.- Como restaurar ArchiveLogs dentro de un rango de secuencias a un directorio determinado:

run
{
allocate channel CN01 type 'SBT_TAPE' parms 'BLKSIZE=100000,ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/test.opt)';
allocate channel CN02 type 'SBT_TAPE' parms 'BLKSIZE=100000,ENV=
set archivelog destination to '/archive/DBORA';
restore archivelog from sequence 100 until sequence 2000;
release channel CN01;
release channel CN02;
}

2.- Como listar los ArchiveLogs necesarios para una recuperación dentro de un rango de fechas.

list backup of archivelog from time "TO_DATE('27-05-2010 06:00:00','DD-MM-YYYY HH24:MI:SS')" until time "TO_DATE('31-05-2010 15:00:00','DD-MM-YYYY HH24:MI:SS')";

3.- Como identificar la fecha de los Backup Piece que esta utilizando RMAN para realizar un restore:

SQL> select
b.NAME,
a.COMPLETION_TIME,
a.MEDIA,
a.STATUS,
a.HANDLE
from
rc_backup_piece a,
rc_database b
where a.DB_KEY = b.DB_KEY
and HANDLE in
('uala0om3_1_1', ----> Backup Piece
'ucla0om3_1_1',
'ubla0om3_1_1',
'ukla0pqi_1_1',
'ufla0p2p_1_1',
'uela0p2a_1_1',
'unla0q5r_1_1',
'udla0p0t_1_1',
'ugla0p8i_1_1',
'uila0pem_1_1',
'uhla0pel_1_1',
'urla0qi7_1_1')
order by max(COMPLETION_TIME);

DBORA 05-06-2010 08:00:58 2680 A uala0om3_1_1
DBORA 05-06-2010 08:01:43 2703 A ucla0om3_1_1
DBORA 05-06-2010 08:01:56 2684 A ubla0om3_1_1
DBORA 05-06-2010 08:05:01 2680 A udla0p0t_1_1
DBORA 05-06-2010 08:08:19 2684 A ufla0p2p_1_1
DBORA 05-06-2010 08:08:21 2703 A uela0p2a_1_1
DBORA 05-06-2010 08:10:34 2680 A ugla0p8i_1_1
DBORA 05-06-2010 08:14:39 2703 A uhla0pel_1_1
DBORA 05-06-2010 08:14:41 2684 A uila0pem_1_1
DBORA 05-06-2010 08:20:42 2684 A ukla0pqi_1_1
DBORA 05-06-2010 08:27:18 2707 A unla0q5r_1_1
DBORA 05-06-2010 08:34:08 2707 A urla0qi7_1_1

Por ejemplo con estos datos podemos determinar desde que SCN inicial puedo comenzar a restaurar los Archivelogs para una recuperación.

Viva Linux!!!!
Alberto Silva G.

Recuperando una base de datos - Error ORA-01248

Puede ocurrir que al momento de terminar una recuperación incompleta puedan tener problemas con un datafile que si bien no es parte de la recuperación, el controlfile lo posee, ya que se nos olvido o simplemente no podíamos determinar si efectivamente fue creado después del controlfile restaurado a un tiempo especifico. Sucede que este datafile no es necesario para mi recuperación, sin embargo esta contenido en el controlfile.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> SQL> 18:18:28 SQL> 18:18:28 SQL> ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01248: file 122 was created in the future of incomplete recovery
ORA-01110: data file 122: '/dev/rperf_raw053'

Solución:

Determinar si uno o más datafiles poseen un tiempo de SCN distinto. Esto se refiere a que todos los datafiles se encuentren a un tiempo de recuperación exacto.

Ejemplo:

Como determinar si están todos alineados a un mismo tiempo y SCN?

SELECT r.FILE# AS df#, d.NAME AS df_name, t.NAME AS Tablespace_name,
d.STATUS, r.ERROR, r.CHANGE#, r.TIME
FROM V$RECOVER_FILE r, V$DATAFILE d, V$TABLESPACE t
WHERE t.TS# = d.TS#
AND d.FILE# = r.FILE#
;

Salida:

DF# DF_NAME TABLESPACE_NAME STATUS ERROR CHANGE# TIME
---- --------------- --------- ----------- ------- -------- -------------------
1 /dev/db_raw027 SYSTEM SYSTEM ######### 02-04-2010 23:00:00
2 /dev/db_raw001 TBS1 RECOVER ######### 02-04-2010 23:00:00
3 /dev/db_raw026 SYSAUX RECOVER ######### 02-04-2010 23:00:00
4 /dev/db_raw008 TBS1 RECOVER ######### 02-04-2010 23:00:00
5 /dev/db_raw042 TBS2 RECOVER ######### 02-04-2010 23:00:00
6 /dev/db_raw010 TBS3 RECOVER ######### 02-04-2010 23:00:00
7 /dev/db_raw146 TBS4 RECOVER ######### 02-04-2010 23:00:00
8 /dev/db_raw024 TBS5 RECOVER ######### 02-04-2010 23:00:00
9 /dev/db_raw025 TBS5 RECOVER ######### 02-04-2010 23:00:00
10 /dev/db_raw030 USERS RECOVER ######### 02-04-2010 23:00:00
11 /dev/db_raw028 TBS6 RECOVER ######### 02-04-2010 23:00:00
122/dev/db_raw053 TBS1 RECOVER ######### 15-10-2010 04:41:08
123/dev/db_raw076 TBS2 RECOVER ######### 15-10-2010 04:49:03


Para este caso los datafiles 122 y 123 no pertenecen al tiempo de la recuperación; por lo tanto debemos hacer que el controlfile no los detecte nuevamente.

¿Como logramos esto?
Recreando el controlfile con la opción RESETLOGS de la siguiente manera:

Para obtener el trace del controlfile, se debe ejecutar el siguiente comando via SQL*Plus con el usuario SYS:

sqlplus / as sysdba

ALTER DATABASE BACKUP CONTOLFILE TO TRACE;

Este archivo de trace sera creado en el directorio UDUMP asignado a la instancia mediante el parametro USER_DUMP_DEST.


oracle@linux[DBORA]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Oct 22 08:47:37 2010

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area 8.5899E+10 bytes
Fixed Size 2245832 bytes
Variable Size 1.2767E+10 bytes
Database Buffers 7.3014E+10 bytes
Redo Buffers 115191808 bytes
SQL> @control.sql
SQL> set time on
08:47:48 SQL> CREATE CONTROLFILE REUSE DATABASE "DBORA" RESETLOGS NOARCHIVELOG
08:47:48 2 MAXLOGFILES 32
08:47:48 3 MAXLOGMEMBERS 4
08:47:48 4 MAXDATAFILES 1024
08:47:48 5 MAXINSTANCES 1
08:47:48 6 MAXLOGHISTORY 23371
08:47:48 7 LOGFILE
08:47:48 8 GROUP 1 (
08:47:48 9 '/dev/db_raw163',
08:47:48 10 '/dev/db_raw164'
08:47:48 11 ) SIZE 500M,

.
.
.

08:47:48 157 '/dev/db_raw149',
08:47:48 158 '/dev/db_raw150',
08:47:48 159 '/dev/db_raw133',
08:47:48 160 '/dev/db_raw081',
08:47:48 161 '/dev/db_raw098'
08:47:48 162 CHARACTER SET AL32UTF8
08:47:48 163 ;

Control file created.

Elapsed: 00:00:00.53
08:47:49 SQL> alter database open resetlogs;

Database altered.

Elapsed: 00:00:54.83
08:48:51 SQL>

Ahora pueden seguir utilizando su base de datos sin problemas.

Viva Linux!!!!!
Atte.
Alberto Silva G.