viernes, 20 de julio de 2018

Cold Backup & Restore DataBase

Este artículo describe la Copia de una base de datos Oracle (10g y superiores) "en frío", es decir, con la base de datos abajo, copiando cada archivo de datos a otro host y en las mismas rutas u otra.

 Cold Backup 

1) Obtener listado de datafiles en el Origen:
BD Origen:

set termout off
set heading off
SET ECHO OFF
set feedback
set verify off

spool datafiles_BD.txt
select file_name from dba_data_files;
select name from v$controlfile;
select member from v$logfile;
spool off
quit


2) Verificar espacio origen y destino.

2.1) Origen:
[/u03/oradata/gest] $ df -h /u03
Filesystem             size   used  avail capacity  Mounted on
/dev/dsk/c0d4s6        295G   215G    77G    74%    /u03
[/u03/oradata/gest] $ du -srh /u03/oradata/gest
 144G   /u03/oradata/gest


2.2) Destino:
[/u00/appl/oracle/DBA_ALTIUZ] $  df -h /u03
Filesystem             size   used  avail capacity  Mounted on
/dev/dsk/c0d4s6        295G   203G    89G    70%    /u03
[/u00/appl/oracle/DBA_ALTIUZ] $ du -srh /u03/oradata/gest
 141G   /u03/oradata/gest


3) Borrar Datafiles destino, si corresponde:
rm /u03/oradata/gest/bdump/*.dbf *.log *.ctl *.trc
rm /u03/oradata/gede/*.*
rm /u03/oradata/gede/*dump/*
rm -R /u03/oradata/gede/cdump/core*


4) Crear el parameter file: init.ora en el Origen.
create pfile from spfile;

5) Crear controlfile to trace en el origen.
alter database backup controlfile to trace as '/tmp/controlfile_to_trace.txt';


5) Bajar BD origen:
lsnrctl stop
shutdown immediate


6) Copiar datafiles, controlfile_to_trace, controlfile, redolog file y pfile al host de la BD Destino.
 (obtener listado del punto 1).

scp *.dbf host_destino:*.dbf



Cold Restore

1) Modificar pfile del destino, si correspode.

2) Modificar el controlfile to trace, cambiandole las rutas (si corresponde) y sacar el reuse. (/tmp/controlfile_to_trace.txt)

Ejemplo:

CREATE CONTROLFILE DATABASE "GEST" NORESETLOGS  NOARCHIVELOG
    MAXLOGFILES 32
    MAXLOGMEMBERS 2
    MAXDATAFILES 254
    MAXINSTANCES 8
    MAXLOGHISTORY 34487
LOGFILE
  GROUP 1 '/u03/oradata/gest/redo01.log'  SIZE 50M,
  GROUP 2 '/u03/oradata/gest/redo02.log'  SIZE 50M,
  GROUP 3 '/u03/oradata/gest/redo03.log'  SIZE 50M,
  GROUP 4 '/u03/oradata/gest/redo04.log'  SIZE 50M,
  GROUP 5 '/u03/oradata/gest/redo05.log'  SIZE 50M,
  GROUP 6 '/u03/oradata/gest/redo06.log'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  '/u03/oradata/gest/system01.dbf',
  '/u03/oradata/gest/tools01.dbf',
  '/u03/oradata/gest/parcom_data01.dbf',
  '/u03/oradata/gest/undotbs_01.dbf',
  '/u03/oradata/gest/users01.dbf',
  '/u03/oradata/gest/undotbs_02.dbf',
  '/u03/oradata/gest/drsys01.dbf',
  '/u03/oradata/gest/tablas_01.dbf',
  '/u03/oradata/gest/tablas_02.dbf',
  '/u03/oradata/gest/tablas_03.dbf',
  '/u03/oradata/gest/tablas_04.dbf',
  '/u03/oradata/gest/tablas_05.dbf',
  '/u03/oradata/gest/indices_01.dbf',
  '/u03/oradata/gest/indices_02.dbf',
  '/u03/oradata/gest/indices_03.dbf',
  '/u03/oradata/gest/indices_04.dbf',
  '/u03/oradata/gest/tablas_06.dbf',
  '/u03/oradata/gest/tablas_07.dbf',
  '/u03/oradata/gest/tablas_08.dbf',
  '/u03/oradata/gest/parcom_ind01.dbf',
  '/u03/oradata/gest/parcom_data02.dbf',
  '/u03/oradata/gest/tablas_09.dbf',
  '/u03/oradata/gest/indices_05.dbf',
  '/u03/oradata/gest/indices_06.dbf',
  '/u03/oradata/gest/tablas_10.dbf',
  '/u03/oradata/gest/C:TAB_FICHERO.ora',
  '/u03/oradata/gest/sysaux01.dbf',
  '/u03/oradata/gest/sitrel_data01.dbf',
  '/u03/oradata/gest/sitrel_ind01.dbf',
  '/u03/oradata/gest/indices_07.dbf',
  '/u03/oradata/gest/indices_08.dbf',
  '/u03/oradata/gest/indices_09.dbf',
  '/u03/oradata/gest/tablas_11.dbf',
  '/u03/oradata/gest/tablas_12.dbf',
  '/u03/oradata/gest/indices_10.dbf',
  '/u03/oradata/gest/sitrel_data02.dbf',
  '/u03/oradata/gest/sitrel_ind02.dbf',
  '/u03/oradata/gest/tablas_13.dbf',
  '/u03/oradata/gest/sysaux_02.dbf',
  '/u03/oradata/gest/dlegal_01.dbf',
  '/u03/oradata/gest/tab_base.dbf',
  '/u03/oradata/gest/ind_base.dbf',
  '/u03/oradata/gest/system20.dbf',
  '/u03/oradata/gest/b_carga_dat_auto_01.dbf',
  '/u03/oradata/gest/b_carga_dat_auto_02.dbf',
  '/u03/oradata/gest/b_carga_dat_auto_03.dbf',
  '/u03/oradata/gest/b_carga_dat_auto_04.dbf',
  '/u03/oradata/gest/b_carga_dat_auto_05.dbf',
  '/u03/oradata/gest/b_carga_dat_auto_06.dbf',
  '/u03/oradata/gest/b_carga_dat_auto_07.dbf',
  '/u03/oradata/gest/b_carga_dat_auto_08.dbf',
  '/u03/oradata/gest/b_carga_dat_auto_09.dbf',
  '/u03/oradata/gest/webpay_data_16.dbf',
  '/u03/oradata/gest/webpay_data_17.dbf',
  '/u03/oradata/gest/webpay_data_18.dbf',
  '/u03/oradata/gest/webpay_ind_16.dbf',
  '/u03/oradata/gest/indices_11.dbf',
  '/u03/oradata/gest/tablas_14.dbf',
  '/u03/oradata/gest/indices_12.dbf',
  '/u03/oradata/gest/indices_13.dbf',
  '/u03/oradata/gest/indices_14.dbf',
  '/u03/oradata/gest/tablas_15.dbf'
CHARACTER SET WE8ISO8859P9
;


3) Iniciar BD en modo NO-MOUNT:

export ORACLE_SID=gest
startup nomount

* Luego ejecutar el script control file to trace, para crar el CONTROLFILE actualizado del destino.
sql> @/u03/oradata/gest/ctrl_gest_082016.sql


* Luego abrir el control file con (si es que no ha sido montada por el query anterior)
alter database mount;

* Ahora podemos leer los datafiles, controlfile y redolog con:
select name from v$controlfile;
select member from v$logfile;


5) Si corresponde, cambiar el PATH y nombre del datafile de esta forma Ej:
alter database rename file 
  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF' to 
  'D:\oracle\product\10.2.0\oradata\SYSTEM01.DBF';
:
:

6) Ahora abrir la BD:

alter database open;


7) Crear datafile para tablespace TEMP:
ALTER TABLESPACE TEMP ADD TEMPFILE '/u00/oracle/unifdesa/temp1_01.tmp'
     SIZE 3448M REUSE AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;

set line 100
col format file_name a40
select file_name from dba_data_files;
select file_name from DBA_TEMP_FILES;

8) Ejecutar:
sql> @?/rdbms/admin/utlrp.sql  -- recompila objetos invalidos de la BD despues de un upgrade o parche.
...puede demorar unos minutos largos...


9) Ahora la BD esta en modo READ/WRITE.

Fin

No hay comentarios:

Publicar un comentario