Anda di halaman 1dari 6

Standby - Oracle SE 11g - Linux by enzo.viza@gmail.

com
________________________________________________________________________________

Creando Standby de BD en Linux sobre File System hacia BD Linux File System

se tiene el siguiente escenario


PRODUCCION :
- BD principal o produccin
- Sistema Operativo : Oracle Linux 64bits
- Oracle 11g2 (SE)
- instancia (DBPROD)
- IP (10.0.0.81)
- datafiles : File System

STANDBY:
- BD standby
- Sistema Operativo : Oracle Linux 64bits
- Oracle 11g2 (SE)
- instancia (aun no ha sido creada)
- IP (10.0.0.82)
- datafiles : File System

FIREWALL
-To turn off the firewall do the following.
-Open the "Firewall Configuration" dialog (System > Administration > Firewall).
-Click the "Close" button on the startup dialog and type in the "root" password if
requested.
-On the resulting dialog, click the "Disable" button, followed by the "Apply" button on
the toolbar.
-Click the "Yes" button on the confirmation dialog.
-Quit the "Firewall Configuration" dialog.

SELINUX
-Disable SELinux by editing the "/etc/selinux/config" file, making sure the SELINUX flag
is set as follows.
SELINUX=disabled
-Once the change is complete, restart the server.

(dbsuresrv) Verificar
#Verificar que las tablas de los esquemas que necesitamos que estn actualizadas en
Standby (EN PRODUCCION)

#No se encuentren en el listado, las que son propios de la BD no tocarlas


(SYS,SYSTEM,etc).

SELECT owner, table_name FROM dba_tables


WHERE logging <> 'YES'

#(dbsuresrv) verificar si esta en modo archivelog


SQL> SELECT log_mode FROM v$database;

LOG_MODE
------------
NOARCHIVELOG
Standby - Oracle SE 11g - Linux by enzo.viza@gmail.com
________________________________________________________________________________

#(dbsuresrv) no esta en modo archivelog, hacer los siguientes pasos para pasar a modo
archivelog
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;

#(dbsuresrv): verificar nuevamente si esta en modo archivelog, ahora si podemos ya sacar el


backup
SQL> SELECT log_mode FROM v$database;

LOG_MODE
------------
ARCHIVELOG

#(dbsuresrv): debemos habilitar el force logging

SQL> ALTER DATABASE FORCE LOGGING;

#(dbsuresrv): sacar un backup completo de la base de Datos

connect target /
run{
change archivelog all crosscheck;
allocate channel oem_backup_disk1 type disk maxpiecesize 100G;
sql 'alter system archive log current';
backup AS COMPRESSED BACKUPSET tag 'DBSUREBK' format '/home/oracle/backups/datafiles_%U' database;
backup AS COMPRESSED BACKUPSET tag 'DBSUREBK' format '/home/oracle/backups/archivelog_%U' archivelog all;
backup as copy current controlfile for standby format '/home/oracle/backups/DBSURE_control01.ctl' reuse;
release channel oem_backup_disk1;
}
Standby - Oracle SE 11g - Linux by enzo.viza@gmail.com
________________________________________________________________________________

#(dbsurestand): crear carpetas en Servidor Standby

mkdir -p /u01/app/oracle/admin/DBPROD/adump
mkdir -p /u01/app/oracle/admin/DBPROD/bdump
mkdir -p /u01/app/oracle/admin/DBPROD/cdump
mkdir -p /u01/app/oracle/admin/DBPROD/udump

mkdir -p /u01/app/oracle/oradata/DBPROD/archivelog
mkdir -p /u01/app/oracle/oradata/DBPROD/controlfile
mkdir -p /u01/app/oracle/oradata/DBPROD/datafile
mkdir -p /u01/app/oracle/oradata/DBPROD/flash_recovery_area
mkdir -p /u01/app/oracle/oradata/DBPROD/onlinelog
mkdir -p /u01/app/oracle/oradata/DBPROD/parameterfile
mkdir -p /u01/app/oracle/oradata/DBPROD/tempfile
mkdir -p /u01/app/oracle/fast_recovery_area

#(dbsuresrv): En produccin - sacar el Bdid . Ejemplo:

SQL> select dbid from v$database;

DBID
----------
1121256298

SQL>

#(dbsuresrv) crear el pfile y copiarlo al servidor standby


[oracle@dbsuresrv backups]$ pwd
/home/oracle/backups
[oracle@dbsuresrv backups]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.3.0 Production on Mon Jun 1 13:08:07 2015

Copyright (c) 1982, 2011, Oracle. All rights reserved.

SQL> conn / as sysdba


Connected.
SQL> create pfile='/home/oracle/backups/pfile_dbsure.ora' from spfile;

File created.

SQL> exit
Standby - Oracle SE 11g - Linux by enzo.viza@gmail.com
________________________________________________________________________________

#(dbsuresrv): en principal - copiar el backup y el pfile al nuevo servidor

[oracle@dbsuresrv backups]$ scp * oracle@dbsurestand:/home/oracle/backups


oracle@dbsurestands password:
pfile_dbsure.ora 100% 1385 1.4KB/s 00:00
[oracle@dbsuresrv backups]$

#(dbsurestand): - modificar el archivo de parametros que se copio del servidor principal


teniendo en cuenta los siguientes parametros deben de ser incluidos
standby_file_management=AUTO
audit_trail='FALSE'
log_archive_format='%t_%s_%r.dbf'
log_archive_dest_1='LOCATION=/home/oracle/'

#(dbsurestand): - usar los siguientes parametros si solo se va a hacer la conversion de asm a


file Disk

db_file_name_convert='+DG_DATA/','/u01/app/oracle/oradata/'
log_file_name_convert='+DG_LOG/','/u01/app/oracle/flash_recovery_area/'

#(dbsurestand): - el parametro log_archive_dest_1 es la ruta en la cual se copiaran los archive


de produccion para que sean aplicados en el servidor standby

#(dbsurestand) listener con el comando netca pero el servicio se llamara "DBPROD" igual que
el nombre de la base de datos produccion

#(dbsurestand)una vez creado el listener verificar el archivo listener.ora esta en la ruta


/u01/app/oracle/product/11.2.0/dbhome_1/network/admin
#debe de tener la siguiente configuracion en la parte de SID_LIST_LISTENER, si no tuviese
el archivo listener.ora la parte de
# SID_LIST_LISTENER hay que agregar el siguiente cdigo teniendo en cuenta la ruta de
ORACLE_HOME

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = DBPROD)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = DBPROD)
)
)

#(dbsurestand)luego se debera bajar y subir el listener


lsnrctl stop
lsnrctl start
Standby - Oracle SE 11g - Linux by enzo.viza@gmail.com
________________________________________________________________________________

# (dbsurestand) copiar el passwordfile de dbsuresrv a dbsurestand,ubicarlo en la siguiente ruta


y el archivo inicia con orapw**********
cd /u01/app/oracle/product/11.2.0/dbhome_1/dbs
//orapwd file=orapwDB11GSTB password=oracle

# si se tiene problemas para copiar el password file , crear un nuevo password file
orapwd file=orapwDBPROD password=oracle entries=5 force=y ignorecase=y

#(dbsurestand) en rman agregar el BDID que se obtuvo de produccion


[oracle@dbsurestand ~]$ rman
RMAN> connect target /
RMAN> set dbid 1121256298;

#(dbsurestand) levantar el standby con el pfile cambiado


RMAN> startup force nomount pfile='/home/oracle/backups/pfile_dbsure.ora';

#(dbsurestand) restaurar el control file desde rman


RMAN> restore controlfile from '/home/oracle/backup/controlfilestandby_m1pi1rlq_1_1';

#(dbsurestand) Si al restaurar el controlfile salio un error hay que copiarlo manualmente a la


ruta que le pusimos en el pfile_dbsure.ora en el parametro control_file
*.control_files='/u01/app/oracle/oradata/DBPROD/controlfile/o1_mf_bq72gy6n_.ctl'

ejemplo:
cp /home/oracle/backups/DBSURE_control01.ctl /u01/app/oracle/oradata/DBPROD/controlfile/o1_mf_bq72gy6n_.ctl

#(dbsurestand) rman - poner en modo mount


RMAN> alter database mount;

#(dbsurestand) rman - catalogar todos los archivos de backups los que inicien con archivelog y
que inicien con datafile, ejemplo:

RMAN> catalog backuppiece '/home/oracle/backups/datafiles_01q8nioi_1_1';


RMAN> catalog backuppiece '/home/oracle/backups/datafiles_02q8niqk_1_1';
RMAN> catalog backuppiece '/home/oracle/backups/archivelog_05q8niqr_1_1';

#(dbsurestand) rman - restaurar BD


RMAN> run{
restore database check readonly;
switch datafile all;
}

#(dbsurestand) bajar la base de datos


Standby - Oracle SE 11g - Linux by enzo.viza@gmail.com
________________________________________________________________________________

SQL> shutdown abort


ORACLE instance shut down.
SQL>

#(dbsurestand)iniciar como standby


SQL> shutdown immediate;

SQL> startup nomount pfile='/home/oracle/backups/pfile_dbsure.ora';

SQL> create spfile from pfile='/home/oracle/backups/pfile_dbsure.ora';

SQL> alter database mount standby database;

#(dbsurestand)verificamos si se puede poner en modo read only


alter database mount standby database;

si sale error cuando se pone en modo read only


aplicar los archives que estn en memoria del servidor principal (produccin)

#(dbsurestand)como saber que archivelog estn faltando para que se pueda poner en modo
read only
alter database open read only;

#(dbsurestand)iniciar recuperacin de archivelogs


alter database recover automatic standby database until cancel;

#(dbsurestand) detener recuperacion de archivelogs


alter database recover cancel;

#(dbsurestand) agregar al oratab


DBPROD: /u01/app/oracle/product/11.2.0/dbhome_1:N