You are on page 1of 9

Hot bakup ORACLE

Con la ejecución de este script se logra la copia de los archivos de base de datos realizando un hot
backup, el tiempo de copiado de los archivos es de una hora aproximadamente.

#!/bin/ksh

# --------------------------------------------------------------

# Shell : hot_backup.ksh

# Version: 1.0

# Autor : Nicolas Maurilio Miranda Solano

# Fecha : 28/09/2018

# Este shell ejecuta los Backup's On-Line de las BD productivas

# --------------------------------------------------------------

#Variables PATH

PATH=/bin:/usr/ccs/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:/usr/vac/
bin:.

export PATH

#ORACLE_BASE, ORACLE_HOME y librerías para realizar la conexión

export ORACLE_BASE=/datapump/oracle12cr1

export ORACLE_HOME=/datapump/oracle12cr1/product/12.1.0/dbhome_1

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib

export TNS_ADMIN=$ORACLE_HOME/network/admin

export
CLASSPATH=.:$ORACLE_HOME/lib:$ORACLE_HOME/JRE/lib/rt.jar:$ORACLE_HOME/jlib:$ORACLE_
HOME/rdbms/jlib:$ORACLE_HOME/network/jlib

export LIBPATH=$ORACLE_HOME/lib

#PATH ORACLE
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/dcm/bin:$ORACLE_HOME/opmn/bin:

export JDK_HOME=/oracle/oracle_prod/product/oracleAS/10.1.3/jdk

export TMP=/tmp

export TMPDIR=/tmp/tmpdir

#export NLS_LANG=american_america.WE8ISO8859P1

export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

export PATH=$JDK_HOME/bin:$PATH:$ORACLE_HOME/Apache/Apache/bin

#Archivo LOG del hot backup

export HOTLOG=/datapump/media/log/hot_backup_bd.log

rm -f $HOTLOG

touch $HOTLOG

#mensaje de inicio del hot backup

echo "=====================" >> $HOTLOG

echo "Inicio de Hot Backup" >> $HOTLOG

echo "`date` " >> $HOTLOG

echo "=====================" >> $HOTLOG

#PATH donde se copiaran los archivos dbf al realizar el hot backup

export BCKHOTDIR=/datapump/media/backups/hot/prod

rm -f $BCKHOTDIR/*

#Hora inicio del hot backup

echo "====>" >> $HOTLOG

echo "`date` " >> $HOTLOG

#Base de Datos a la cual se le realiza el hot backup

export ORACLE_SID=PROD

#Generación de script de tablespaces a respaldar

echo "----------------------------------" >> $HOTLOG

echo "Generacion de Scripts de PROD " >> $HOTLOG

echo "----------------------------------" >> $HOTLOG


export SCRCOPY=/datapump/media/product/oracleBD/servicios/archivos/admsfa_hot.file

rm -f $SCRCOPY

touch $SCRCOPY

chmod 777 $SCRCOPY

$ORACLE_HOME/bin/sqlplus -SILENT /nolog <<-EOF >> $HOTLOG

CONNECT / AS SYSDBA

WHENEVER SQLERROR EXIT 1

SET FEEDBACK OFF

SET HEADING OFF

SET LINES 110

SET PAGES 0

alter database backup controlfile to trace as '$BCKHOTDIR/ccf.sql' reuse;

spool $SCRCOPY

select 'Alter Tablespace '||rpad(tablespace_name,20,' ')||' Begin Backup;',

'!cp '||file_name||' $BCKHOTDIR/.',

'Alter Tablespace '||rpad(tablespace_name,20,' ')||' End Backup;'

from dba_data_files;

select 'Alter System Switch LogFile;' from dual;

select ' ' from dual;

select '!cp '||member||' $BCKHOTDIR/.'

from v\$logfile;

select ' ' from dual;

select '!cp '||name||' $BCKHOTDIR/.'

from v\$controlfile;

spool off

EXIT 0

EOF
#Inicia copia de datafiles que se van a respaldar

echo "---------------------------------------" >> $HOTLOG

echo "Ejecucion del Hot Backup para ADMSFA" >> $HOTLOG

echo "---------------------------------------" >> $HOTLOG

export SCRCOPY=/datapump/media/product/oracleBD/servicios/archivos/admsfa_hot.file

chmod 777 $SCRCOPY

echo "....................." >> $HOTLOG

echo "Respaldo de PROD" >> $HOTLOG

echo "`date` " >> $HOTLOG

$ORACLE_HOME/bin/sqlplus -SILENT /nolog <<-EOF

CONNECT / AS SYSDBA

WHENEVER SQLERROR EXIT 1

SET FEEDBACK OFF

SET HEADING OFF

SET LINES 110

SET PAGES 0

@$SCRCOPY

EXIT 0

EOF

#fin del hot backup

echo "==================" >> $HOTLOG

echo "Fin del Hot Backup" >> $HOTLOG

echo "`date` " >> $HOTLOG

echo "==================" >> $HOTLOG

---------------------------- 0 ------------------------------------ 0 ----------------------------- 0 ---------------------------


Restauración de la base de datos después de realizar el hot backup

Una vez realizado el hot backup se genera un script “ccf.sql”.

Este script es donde se guardan las instrucciones a ejecutar para restaurar la base de datos

Para esto se debe editar el archivo y dejar únicamente las instrucciones necesarias.

CREATE CONTROLFILE REUSE SET DATABASE "P_CLON" RESETLOGS ARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 2750

LOGFILE

GROUP 1 (

'/datapump/media/backups/hot/prod/log_prod_clon_1a.dbf',

'/datapump/media/backups/hot/prod/log_prod_clon_1b.dbf'

) SIZE 200M BLOCKSIZE 512,

GROUP 2 (

'/datapump/media/backups/hot/prod/log_prod_clon_2a.dbf',

'/datapump/media/backups/hot/prod/log_prod_clon_2b.dbf'

) SIZE 200M BLOCKSIZE 512,

GROUP 3 (

'/datapump/media/backups/hot/prod/log_prod_clon_3a.dbf',

'/datapump/media/backups/hot/prod/log_prod_clon_3b.dbf'

) SIZE 200M BLOCKSIZE 512

DATAFILE

'/datapump/media/backups/hot/prod/system01_clon.dbf',

'/datapump/media/backups/hot/prod/sysaux01_clon.dbf',

'/datapump/media/backups/hot/prod/undotbs01_clon.dbf',

'/datapump/media/backups/hot/prod/users01_clon.dbf',

'/datapump/media/backups/hot/prod/banaq_PROD_clon_01.dbf',
'/datapump/media/backups/hot/prod/tools_PROD_clon_01.dbf',

'/datapump/media/backups/hot/prod/xdb_PROD_clon_01.dbf',

'/datapump/media/backups/hot/prod/development_PROD_clon_01.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_10.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_09.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_08.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_07.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_06.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_05.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_04.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_03.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_02.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_01.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_11.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_12.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_13.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_14.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_15.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_16.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_17.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_18.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_19.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_20.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_21.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_12.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_11.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_10.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_09.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_08.dbf',
'/datapump/media/backups/hot/prod/tables_PROD_clon_07.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_06.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_05.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_04.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_03.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_02.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_01.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_13.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_14.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_15.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_34.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_17.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_18.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_19.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_20.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_21.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_22.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_23.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_24.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_25.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_26.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_27.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_28.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_29.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_30.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_31.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_32.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_33.dbf',

'/datapump/media/backups/hot/prod/banlob_PROD_clon_01.dbf',
'/datapump/media/backups/hot/prod/PROD_clon_baniam_01.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_35.dbf',

'/datapump/media/backups/hot/prod/tables_PROD_clon_36.dbf',

'/datapump/media/backups/hot/prod/indexes_PROD_clon_22.dbf'

CHARACTER SET AL32UTF8;

Pasos para restaurar la BD

1.- Agregar en el archivo ORATAB en /etc/ el SID de la Base de Datos

PROD:/u02/app/oracle/product/11.1.0:N

2.- Realizar una copia del PFILE de la base de datos y ajustar los parámetros para la base de datos
en caso de realizar la restauración en otro servidor.

3.- Startup nomount pfile=’<pfile>’

4.- ccf.sql

5.- shutdown immediate

6.- add _ALLOW_RESETLOGS_CORRUPTION=TRUE to pfile

7.- startup mount pfile

5.- alter database open resetlogs

Shutdown immediate

Remover _ALLOW_RESETLOGS_CORRUPTION=TRUE from pfile


Startup pfile
6.- Crear spfile from pfile

7.- crear temporary tablespace

select tablespace_name,file_name from dba_temp_files;

create temporary tablespace temp1 tempfile '/u03/oradata/PROD/temp1.dbf' size 3g;

alter database default temporary tablespace temp1;

DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;

CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '/u03/oradata/PROD/temp.dbf' size 10g;

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;

DROP TABLESPACE temp1 INCLUDING CONTENTS AND DATAFILES;


select tablespace_name,file_name from dba_temp_files;

Nota: En caso de realizar el clon database en el mismo servidor se deben cambiar los nombres de
los datafiles debido a que el diccionario de datos tendría ambigüedad y se perdería la instancia
original.

http://www.oracle.com/ocom/groups/public/@otn/documents/webcontent/283692.htm

http://www.oracle.com/ocom/groups/public/@otn/documents/webcontent/283696.htm

https://oracleracdba1.wordpress.com/2012/11/27/ora-01195-online-backup-of-file-1-needs-
more-recovery-to-be-consistent/

https://techjourney.net/ora-25153-temporary-tablespace-is-empty-error-in-oracle/

http://dbaclass.com/article/how-to-drop-and-recreate-temp-tablespace-in-oracle/

You might also like