Creating A Physical Standby Database Using Oracle Dataguard 11g On Linux 5
Creating A Physical Standby Database Using Oracle Dataguard 11g On Linux 5
En este post les mostrare como crear una base de datos Standby Fisica paso a paso, usando
Oracle Dataguard y Rman. Para completar la configuracin utilizaremos dos mquinas virtuales
las cuales simularemos que se encuentran ubicadas en localidades remotas (Santo Domingo,DR
y La Romana, DR).
Cada servidor virtual tendr una base de datos non RAC con el filesystem local para el
almacenamiento y el dataguard broker para administrar la configuracin.
Necesitaras:
Server 1
Name:
Ram:
Location:
Hostname:
Ip:
Nic:
Db_name:
Role:
Server 2
oralab1
2.5 Gb
Santo Domingo, DR
oralab1.localdomain
192.168.10.151
1 briged adapter
stgdgo
Primary
Name:
Ram:
Location:
Hostname:
Ip:
Nic:
Db_name:
Role:
oralab2
2.5 Gb
La Romana, DR
oralab2.localdomain
192.168.10.152
1 briged adapter
romana
Physical Standby
Comencemos:
Parte I
Abrir el Oracle Virtual Box manager y hacer click en NEW para crear nuestra primera mquina
virtual.
Aqu les muestro:
Nuestra primera maquina virtual se llamara oralab1. Colocar el nombre oralab1, seleccionar
Oracle Linux 64 y continuar
El tamao de nuestro disco ser de unos 50 Gb, colocar 50.64 en la casilla y continuar
Ir a los settings de nuestra maquina virtual y seleccionar el tipo de adaptador briged para
nuestra tarjeta de red como se muestra en la pantalla siguiente.
Ejecutar por primera vez nuestra maquina virtual y hacer click en Next para continuar
Al hacer click en next en la pantalla anterior nos pedir si deseamos formatear nuestro disco,
hacemos click en yes y continuamos
En la siguiente pantalla nos permitir configurar la red de nuestro servidor, editar los valores
como estn a continuacin
Cuando termine de cargar el servidor, completar la instalacin siguiendo las pantallas siguientes
Una vez reinicie nuestro servidor necesitaremos entrar con el usuario: oracle y password:
oracle
Una vez dentro de nuestro servidor necesitaremos instalar en virtualbox guest addition,
encontrar la opcin en el men principal de nuestra maquina virtual debajo de Devices. Una vez
que la imagen se monte en nuestro servidor aparecer un cuadro como este:
sh VBoxLinuxAdditions.run
# Oracle Variables
export ORACLE_SID=stgdgo
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.3/db1
export ORACLE_HOSTNAME=oralab1.localdomain
export ORACLE_UNQNAME=stgdgo
export PATH=$PATH:$ORACLE_HOME/bin
chown -p /u01/app/oracle/product/11.2.3/db1
chown -R oracle:oinstall /u01
chown -R /u01
Una vez clonado nuestro disco, procederemos a crear nuestra segunda maquina virtual. S que
ya conocen el proceso, solo les mostrare las pantallas como gua.
Iniciamos nuestro segundo servidor virtual y editamos las interfaces de red como muestro aqui
Para probar conectividad hacer ping desde una maquina a otra con los siguientes comandos:
#Desde oralab1
ping oralab2
ping oralab1
#Desde oralab2
ping oralab1
ping oralab2
Parte II
Hasta este punto tendremos nuestros dos servidores virtuales listos para la instalacin del
software de base de datos.
En esta parte procederemos a instalar el software de base de datos en cada uno de nuestros
servidores virtuales. Comencemos con el servidor oralab1.
Entrar en el servidor oralab1 como el usuario Oracle y descomprimir la media de instalacin de la
base de datos.
unzip p10404530_112030_Linux-x86-64_1of7.zip
unzip p10404530_112030_Linux-x86-64_2of7.zip
Al descomprimir estos dos archivos se creara un folder llamado database entrar en este folder y
ejecutar el instalador con la sentencia:
./runInstaler
Una vez cargue el instalador proceder con el wizard acorde la las siguientes pantallas.
Al presionar ok, el instalador pedir que ejecutes dos scripts como root. Abrir otra terminal como
root y ejecutar los scripts.
Ahora nos entramos en el servidor oralab2 como el usuario Oracle y editamos el archivo
/home/oracle/.bashrc y /home/oracle/.bash_profile con el siguiente contenido:
# Oracle Variables
export ORACLE_SID=romana
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.3/db1
export ORACLE_HOSTNAME=oralab2.localdomain
export ORACLE_UNQNAME=romana
export PATH=$PATH:$ORACLE_HOME/bin
Descomprimir los archivos de instalacin del software de bases de datos de igual forma que el
servidor oralab1.
unzip p10404530_112030_Linux-x86-64_1of7.zip
unzip p10404530_112030_Linux-x86-64_2of7.zip
Dentro del folder creado llamado database ejecutar el instalador
./runInstaler
Debido a que solo hicimos una instalacin solo del software en este servidor, debemos crear el
listener que este utilizara. Pueden hacerlo mediante el netca como muestra la siguiente pantalla
nuevo
Dejar el nombre por defecto y continuar
Es necesario que se reinicie el listener para refrescar el cambio. Lo puedes hacer con la
sentencia:
lsnrctl reload
Editar el archivo $ORACLE_HOME/network/admin/tnsnames.ora y agrear el siguiente
contenido:
STGDGO =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oralab1.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = stgdgo)
)
)
ROMANA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oralab2.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = romana)
)
)
As debe quedar:
En el servidor oralab2 con el usuario oracle editar los mismos archivos pero con el siguiente
contenido:
El archivo $ORACLE_HOME/network/admin/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = romana_DGMGRL)
(SID_NAME = romana)
(ORACLE_HOME = /u01/app/oracle/product/11.2.3/db1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = oralab2.localdomain)(PORT =
1521))
)
)
STGDGO =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oralab1.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = stgdgo)
)
)
ROMANA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oralab2.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = romana)
)
)
touch $ORACLE_HOME/dbs/init.ora
echo DB_HOME=romana >> $ORACLE_HOME/dbs/init.ora
Vamos a la ruta $ORACLE_HOME/dbs y desde all subimos la instancia dummy que utilizaremos
para el clonado de la base de datos primaria stgdgo. Puedes hacerlo de la siguiente forma.
1.
2.
3.
cd $ORACLE_HOME/dbs
sqlplus / as sysdba
startup nomount pfile=init.ora
Siguiendo la secuencia
mkdir -p /u01/app/oracle/fast_recovery_area/standbylog
Ahora desde el servidor oralab1 vamos a preparar nuestra base de datos primaria para la
configuracin. Deberemos alterar algunos parmetros necesarios en la instancia, mediante el
sqlplus ejecutar los siguientes
alter system set log_archive_config=dg_config=(stgdgo,romana) scope=spfile;
alter system set log_archive_max_processes=4 scope=spfile;
Como es nuestro caso aplicamos los parmetros al spfile, es necesario que reiniciemos nuestra
base de datos como sigue:
Shutdown immediate;
Startup;
Necesitaremos crear los Standby redo logs (SRL). Para esto creamos la ruta siguiente:
mkdir -p /u01/app/oracle/fast_recovery_area/standbylog
Creado el directorio, volvemos a sqlplus y ejecutamos las sentencias:
ALTER DATABASE ADD STANDBY LOGFILE
/u01/app/oracle/fast_recovery_area/standbylog/SRL1.log SIZE 50M;
Con todo listo haste este punto podemos iniciar la creacin de nuestra base de datos standby.
Utilizaremos la opcin duplicate for standby from active database propio de RMAN 11g.
rman target /
connect auxiliary sys/oracle@romana;
Nota: La clave de sys en la base de datos principal es oracle. Si usted le puso alguna
otra utilizarla.
Una vez en el prompt de RMAN ejecutamos el siguiente comando.
run {
allocate channel stgdgo1 type disk;
allocate channel stgdgo2 type disk;
allocate auxiliary channel romana1 type disk;
duplicate target database for standby from active database
spfile
parameter_value_convert 'stgdgo','romana'
set 'db_unique_name'='romana'
set control_files='/u01/app/oracle/oradata/romana/control01.ctl'
set
db_file_name_convert='/u01/app/oracle/oradata/stgdgo/','/u01/app/oracle/o
radata/romana/'
set
log_file_name_convert='/u01/app/oracle/oradata/stgdgo/','/u01/app/oracle/
oradata/romana/'
set db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
set DB_RECOVERY_FILE_DEST_SIZE='10G'
nofilenamecheck;
}
ALTER
ALTER
ALTER
ALTER
ALTER
SYSTEM
SYSTEM
SYSTEM
system
SYSTEM
SET
SET
SET
set
SET
STANDBY_FILE_MANAGEMENT=AUTO;
FAL_SERVER=romana;
FAL_CLIENT=stgdgo;
dg_broker_start=TRUE;
LOG_ARCHIVE_CONFIG='DG_CONFIG=(stgdgo,romana)';
Alterados los parametros necesarios en nuestra base de datos standby romana podemos
activar la replicacion mediante SQL o via el dataguard brker. Les mostrare como crear la
configuracion mediante el brker.
1.
2.
3.
4.
Al ejecutar los comandos anteriores ya tenemos la configuracin lista. Pueden verla con el
comando show configuration, solo nos queda activarla.
Enable configuration;
Una vez activada la configuracin hagamos un switchover desde stgdgo hasta romana y
viceversa con:
Switchover to romana;
Switchover to stgdgo;
Con esto ya tenemos nuestro dataguard configurado para la base de datos primaria stgdgo
ubicada en santo domingo y nuestra base de datos standby romana ubicada en La romana.
Para mas informacion pueden consultar la documentacion oficial de Dataguard y Dataguard
Broker en OTN.