DBASupport quiere compartir con ustedes, un artículo donde les explicamos cómo realizar un respaldo de una base de datos Oracle y cómo programarlo, para que se ejecute de manera diaria. 

Ahora te mostraremos lo básico para generar un esquema de respaldos, mediante Oracle RMAN CLI (Command Line Interface)

Nota: Recuerda que tu BD deberá estar configurada en Archivelog mode.

1. Ve al punto 2 si ya tienes configuradas tus políticas de RMAN, pero si no las tienes, con esto podrás configurar lo básico:

Nota: Recuerda que muchas de las opciones, ya están previamente configuradas por default y las puedes revisar con el comando "show all;"

/* Para comprimir los respaldos a disco por default */
configure device type disk backup type to compressed backupset;

/* Para especificar la ruta destino, por default, de tus respaldos a disco */
configure channel device type disk format 'C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\DBA\db_%d_%T.BAK'

/* Para una base de datos en Standby */
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;


Nota: Podrás configurar muchas otras opciones, como paralelismo para N "channels", polítcas de retención, autobackup de tu controlfile, etc

2. una vez declaradas las variables de entorno (oracle_home, oracle_sid, etc) de tu bd a respaldar, ejecuta lo siguiente:

Nota: A partir de ahora, tu BD será respaldada. El tiempo que tome, depende del tamaño de tu base de datos y de los data types utilizados en la misma.

Recuerda que el respaldo que estamos haciendo es un "baseline" para tus siguientes respaldos incrementales; ya sean cumulativos o diferenciales. Después podrás realizar este mismo procedimiento para hacer un respaldo cumulativo nivel 1, entre semana y dejar este nivel 0 para los fines de semana.

rman target rman_user/rman_user@tu_base_de_datos_target

allocate channel c1 type disk;
backup incremental level 0 database format 'C:\oracle\product\10.2.0\flash_recovery_area\DBA\BACKUPSET\Level_0\db_%d_Level_0_%U_%T.BAK';
# Cumulativos:
# backup incremental level 1 cumulative database format 'C:\oracle\product\10.2.0\flash_recovery_area\DBA\BACKUPSET\Level_1_Cum\db_%d_Level_1_Cumulative_%U_%T.BAK';
backup format 'log_t%t_s%s_p%p'
(archivelog all);
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired backup of database;
delete noprompt expired archivelog all;
# report obsolete;
delete noprompt obsolete;

Y listo, con esto tu base de datos será respaldada y los archivos obsoletos o expirados serán borrados.

Si deseas conocer mas comandos relacionados con RMAN o conocer más el significado de los ya vistos, te recomendamos visitar el manual en línea de Oracle:
http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96565/rcmsynta.htm


4. Si quieres dejar esto en un script que se ejecute diario:

NotA: Desde un archivo ".bat" (tarea calendarizada de Windows) o desde un cron que lo mande a ejecutar.
--------------------------------------------------

# Recuerda cargar tu profile en caso de Unix y en caso de Windows, definir las variables de ambiente desde las propiedades de sistema (pestaña avanzado):
cd /home/oracle
. ./.profile

rman target rman_user/rman_user@tu_base_de_datos@C:\oracle\product\10.2.0\DBA\scripts\rman_backup_level_0.rcv log=C:\oracle\product\10.2.0\DBA\scripts\rman_backup_level_0.log

Script rman_backup_level_0.rcv:

run {
backup incremental level 0 database format 'C:\oracle\product\10.2.0\flash_recovery_area\DBA\BACKUPSET\Level_0\db_%d_Level_0_%U_%T.BAK';
backup format 'log_DBA_t%t_s%s_p%p'
(archivelog all);
crosscheck backup;
crosscheck archivelog all;
delete noprompt expired backup of database;
delete noprompt obsolete;
}
EXIT

--------------------------------------------------

Para darle otro formato diferente a tus backups, revisa la siguiente tabla:

Option -->  Description

%a  -->  Specifies the activation ID of the database
%c  -->  Specifies the copy number of the backup piece within a set of duplexed backup pieces
%d  -->  Specifies the name of the database
%D  -->  Specifies the current day of the month from the Gregorian calendar
%e  -->  Specifies the archived log sequence number
%f  -->  Specifies the absolute file number
%F  -->  Combines the database ID (DBID), day, month, year, and sequence into a unique and repeatable generated name
%h  -->  Specifies the archived redo log thread number
%I  -->  Specifies the DBID
%M  -->  Specifies the month in the Gregorian calendar in MM format
%N  -->  Specifies the tablespace name
%n  -->  Specifies the name of the database, padded on the right with n characters to a total length of eight characters
%p  -->  Specifies the piece number within the backup set
%s  -->  Specifies the backup set number
%t  -->  Specifies the backup set timestamp
%T  -->  Specifies the year, month, and day in the Gregorian calendar
%u  -->  Specifies an eight-character name constituted by compressed representations of the backup set or image copy number
%U  -->  Specifies a system-generated unique filename (this is the default setting)


Saludos

{mosimage}

Carlos Contreras
Oracle Certified DBA

 

 

You are not authorised to post comments.

Comments powered by CComment

DBASupport - Foro

Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 3 years ago.
  • 3 years ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Estadisticas en la base de datos
Buenos días, estoy teniendo problemas de performance en mis queries y quisiera saber como puedo validar que mis tablas tienen las estadisticas...
URGE AYUDA
  • Topic started by
  • in General
  • 15 years ago.
  • 15 years ago.
  • 30 replies
HOLA ESPERO ME PUEDAN AYUDAR. TEN GO UNA TABLA CON una estructura similar a la siguiente: id_mov cargo subtotal total...

Duada de Memoria de SQL Server 2005
  • Topic started by Erzengel
  • in General
  • 11 years ago.
  • 11 years ago.
  • 30 replies
Buen Día Recurro nuevamente a su sabiduría. Quiero saber el porque tiene un tope SQL Serever de 2GB en Windows server 2003 de 32 bit y si alguien...

SqlDateTime overflow
  • Topic started by
  • in General
  • 15 years ago.
  • 15 years ago.
  • 11 replies
Alguno de ustedes ha tenido este problema: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.' Les...

problemas para iniciar el agente sql
  • Topic started by acgch
  • in General
  • 14 years ago.
  • 14 years ago.
  • 11 replies
Recientemente para asegurar el sql server 2005, cree una cuenta sql con derechos de sysadmin y borre el grupo BUILTIN\Administradores para evitar...

Problemas para levantar mirror
  • Topic started by acgch
  • in General
  • 14 years ago.
  • 14 years ago.
  • 16 replies
Hola amigos, tengan un buen día, les comento que estoy configurando mirror siguiendo los pasos a través del wizard del managment studio y también...
Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 3 years ago.
  • 3 years ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Estadisticas en la base de datos
Buenos días, estoy teniendo problemas de performance en mis queries y quisiera saber como puedo validar que mis tablas tienen las estadisticas...
Deshabilitar todos los jobs
  • Topic started by agamez
  • in Jobs
  • 4 years ago.
  • 4 years ago.
  • 1 reply
Buenos días, alguien sabe como puedo deshabilitar rapidamente todos los jobs de SQL Server, gracias.

Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 3 years ago.
  • 3 years ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...