Está en la página 1de 42

2014

INSTALACIÓN DE
DATAGUARD PARA
DUMMIES
Basado en los MOPs de Ericsson y en
chocazos contra la pared.
GFI

Mario Colchero Pérez


(mcolchero@sel.gfi.es ; mariocolchero@gmail.com)
13/01/2014
INDICE
PARTE 1: INSTALACIÓN RED HAT ............................................... 3

PARTE 2: PREPARAR EL ENTORNO PARA INSTALAR ORACLE ....... 3

PARTE 3: INSTALACIÓN DE ORACLE .......................................... 8

PARTE 4: PREVIO CLONACIÓN .................................................. 10

PARTE 5: CLONACIÓN ............................................................... 10

PARTE 6: CREACIÓN DE LA BBDD .............................................. 11

LISTENER ................................................................. 12

TNSNAMES .............................................................. 12

PARTE 7: CREACIÓN DATAGUARD ............................................. 13

PARTE 8: FAIL OVER ................................................................. 17

RECREACIÓN ............................................................ 18

PARTE 9: SWITCHOVER ............................................................ 20

APÉNDICE A: response file ..................................................... 22


APÉNDICE B: INIT DEL PRIMARY ............................................... 34

APÉNDICE C: INIT del STANDBY .............................................. 36


APÉNDICE D: SCRIPT 1 DE CREACIÓN DE LA BBDD .................... 38

APÉNDICE E: SCRIPT 2 DE CREACIÓN DE LA BBDD .................... 39

APÉNDICE F: SCRIPT 3 DE CREACIÓN DE LA BBDD .................... 41

APÉNDICE G: SCRIPT 4 DE CREACIÓN DE LA BBDD ................... 42


NOTA: montaremos el DataGuard para Single Instance, no RAC

PARTE 1: INSTALAR RED HAT


Normalmente la versión 5 pero también se podría con la 6. Recomendación: RAM mínimo 2 gigas y disco duro
de 30. Durante la instalación, pongamos como ejemplo:

 IP= 192.168.56.75 y máscara de red 255.255.255.0.


 Como hostname, oel.oracle75.com (todo es un ejemplo).

Ésta será nuestra máquina PRIMARY. Para cualquier duda, consultar documento de creación de
máquina virtual con Linux.

PARTE 2: PREPARAR EL ENTORNO PARA INSTALAR ORACLE


1) Recién creada nuestra MV, para que nos dé nuestra IP, no nos funciona con hostname -i directamente.
Solución:
- Escribimos en la consola ifconfig y apunto mi IP (la que le asigné en la instalación).
- Vamos a hostname y lo apunto (el que le asigné en la instalación).
- Tenemos que editar con el vi /etc/hosts:
- Al final de dicho documento, escribo la IP seguida del hostname: 192.168.56.75
oel.oracle75.com.localhost oel.oracle75.com
Nota: también cambiaría la primera entrada, dejando 127.0.0.1 localhost.localdomain
localhost
- Guardo con :wq
- Escribo en la consola service network restart . Saldrán 3 OK. Ya puedo conectarme desde secureCRT o
putty.

2) Recordar que el SELINUX y el FIREWALL deben estar desactivados o en modo permisivo para que no
haya problemas en la instalación de ORACLE.
Hay que comprobar el Firewall cuando se entra por IPv4 e IPv6, para ello:

 FIREWALL

COMO ROOT:
===========
A) IPv4: service iptables status
- Pueden darse dos casos:
a) El cortafuegos está detenido.
b) Vemos que hay un montón de aceptados (ACCEPT). Si estamos en este caso, hay que
parar el servicio:
Forma fácil: service iptables stop
Ahora lo comprobamos: [root@em init.d]# service iptables status
El cortafuegos está detenido.
B) IPv6: service ip6tables status
- Mismos casos que antes. Si hubiera que detener: service ip6tables stop
- Comprobar: service ip6tables status

C) [root@em ~]# chkconfig iptables off


D) [root@em ~]# chkconfig ip6tables off
E) Comprobaciones:
[root@em ~]# chkconfig --list iptables
iptables 0:desactivado 1:desactivado 2:desactivado 3:desactivado 4:desactivado
5:desactivado 6:desactivado
[root@em ~]# chkconfig --list ip6tables
ip6tables 0:desactivado 1:desactivado 2:desactivado 3:desactivado 4:desactivado
5:desactivado 6:desactivado

 SELINUX

COMO ROOT:
===========
Editar (VI) el fichero "/etc/selinux/config", cambiando SELINUX=disabled

3) CREACIÓN DE GRUPOS

COMO ROOT:
===========
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle // Ahora meterías la nueva password (si pones oracle, te va a decir que es simple, pero
da igual, continúa)

4) CREACIÓN DE RUTA Y PERMISOS

COMO ROOT:
===========
mkdir -p /u01/app/oracle/product/11.2.0.3/db_1
chown -R oracle:oinstall /u01 //El directorio /u01 (y sus hijos por la -R) pertenece al usuario oracle
del grupo oinstall.
chmod -R 775 /u01 //El grupo "otros" no puede ejecutar el directorio /u01.

5) CREAR VARIABLES DE ENTORNO (Las necesarias realmente son ORACLE_HOME, ORACLE_SID y PATH de
Oracle, pero se recomiendan para la posterior instalación las marcadas en negrita)

COMO ORACLE:
=============
vi .bash_profile // Está en $HOME (/home/oracle)

# Oracle Settings
PATH=/usr/sbin:$PATH; export PATH // Éste te venía ya.
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR

ORACLE_HOSTNAME=bdoracle; export ORACLE_HOSTNAME


ORACLE_UNQNAME=EMREP; export ORACLE_UNQNAME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0.3/db_1; export ORACLE_HOME
ORACLE_SID=EGSDP_PRIMARY; export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH; export PATH
ORACLE_DATABASE=EGSDP; export ORACLE_DATABASE
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN

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


CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

Ejecuto el bash_profile: [oracle@oel ~]$ . .bash_profile

6) INSTALACIÓN DE PAQUETES

COMO ROOT:
===========
A) Puedo tener los paquetes en Windows y con un programita (winSCP), los paso a mi máquina virtual
B) Puedos tenerlos en disco:
- Entro a Virtual Box --> Almacenamiento --> selecciono el disco --> Comprobamos que nuestro
Linux está. Si no está, pincho en el disco vacío, selecciono mi Linux correspondiente, salgo de la sesión y vuelvo
a entrar. Veremos que en el escritorio aparece.
- Desde la máquina virtual como ROOT:
[root@oel /]# cd .. //Me voy a la raíz
[root@oel /]# pwd
/
[root@oel /]# cd media
[root@oel media]# ls -l
drwxr-xr-x. 12 root root 6144 Feb 26 2013 OL6.4 x86_64 Disc 1 20130225
[root@oel media]# cd OL6.4\ x86_64\ Disc\ 1\ 20130225/ //Ésta es la imagen del CD
[root@oel media]# cd packages //NOTA: en la versión 5, están en la carpeta Server

C)Ahora ya instalo los paquetes en sí. Algunos ya los tendré, a otros les faltarán dependencias, pero en
ese caso, lo señalo y al final de instalarlos todos, vuelvo a instalar el señalado. Podemos hacerlo de dos formas:
 Uno a uno:
rpm -Uvh binutils-2.* // -Uvh para instalar y actualizar el paquete rpm
rpm -Uvh compat-libstdc++-33*
rpm -Uvh compat-libstdc++-33*.i386.rpm
rpm -Uvh elfutils-libelf*
rpm -Uvh gcc-4.*
rpm -Uvh gcc-c++-4.*
rpm -Uvh glibc-2.*
rpm -Uvh glibc-common-2.*
rpm -Uvh glibc-devel-2.*
rpm -Uvh glibc-headers-2.*
rpm -Uvh ksh*
rpm -Uvh libaio-0.*
rpm -Uvh libaio-devel-0.*
rpm -Uvh libgomp-4.*
rpm -Uvh libgcc-4.*
rpm -Uvh libstdc++-4.*
rpm -Uvh libstdc++-devel-4.*
rpm -Uvh make-3.*
rpm -Uvh sysstat-7.*
rpm -Uvh unixODBC-2.*
rpm -Uvh unixODBC-devel-2.*

 Buscando cuáles tenemos de todos esos y cuáles no, con el siguiente comando:
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils- compat-
libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common
glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make
numactl pdksh unixODBC sysstat

Ejemplo de cuando se instala un paquete:


[root@bdoracle software]# rpm -Uvh libaio-devel-0.3.106-5.x86_64.rpm
advertencia:libaio-devel-0.3.106-5.x86_64.rpm: CabeceraV3 DSA signature: NOKEY, key ID 1e5e0159
Preparando... ########################################### [100%]
1:libaio-devel ########################################### [100%]

[root@bdoracle software]# rpm -Uvh unixODBC-*


advertencia:unixODBC-2.2.11-7.1.x86_64.rpm: CabeceraV3 DSA signature: NOKEY, key ID 1e5e0159
Preparando... ########################################### [100%]
1:unixODBC ########################################### [ 50%]
2:unixODBC-devel ########################################### [100%]

7) COMO ROOT: Abrir el fichero "/etc/security/limits.conf" y editarlo con el VI añadiendo las siguientes
líneas:
===========
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 4096
oracle hard nofile 65536
oracle soft stack 10240

8) COMO ROOT: Añadir o modificar las siguientes líneas en el fichero "/etc/sysctl.conf":


===========
*Nota: para buscar ficheros en VI, usar /cadena, siendo cadena lo que queremos buscar.
fs.suid_dumpable = 1
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmax = 68719476736 //Éste sí suele estar
kernel.shmall = 4294967296 //Éste también
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default=4194304
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048586
9) Tenemos que descomprimir unos ficheros que tenemos en Windows.:
A) Pasándolos directamente con winSCP (p10404530_112030_Linux-x86-64_1of7.zip y
p10404530_112030_Linux-x86-64_2of7.zip) a una carpeta de tu MV, por ejemplo, /tmp.
B) Agregando a la MV una carpeta compartida donde colocaremos los archivos. Esta funcionalidad no
es posible sin el guest additions
B. 1) Entrar en Virtual Box. Click sobre configuración encima de nuestra máquina virtual
- Carpetas compartidas
- Le damos al símbolo +
- Agregar carpeta compartida. Buscamos la que queremos (donde tenemos los zip de
Oracle en Windows)
- Marcar "automontar" y "hacer permanente".
- Aceptar, Aceptar
B.2) En Virtual Box, click sobre configuración encima de nuestra máquina virtual:
- Almacenamiento
- En disco vacío, vamos a Atributos
- Click en el icono del disco vacío
- Seleccionar un archivo de disco virtual
- Buscamos las Guest Additions, en mi caso: C:\Program Files\ Oracle \ VirtualBox
\VBoxGuestAdditions
- Seleccionar, Aceptar
B.3) Entramos a la máquina que estamos utilizando, por ejemplo con el putty o secureCRT, y
hacemos un reboot para que en el siguiente inicio ya esté el disco cargado.
B.4) Gracias a esto ya tenemos las carpetas compartidas pero primero hemos de lanzar el
script de Guest Additions:
[root@oel ~]# cd /media
[root@oel media]#ls
VBOXADDITIONS_4.3.2_90405
[root@oel media]# cd VBOXADDITIONS_4.3.2_90405/
[root@oel VBOXADDITIONS_4.3.2_90405]# ls
32Bit cert VBoxSolarisAdditions.pkg
64Bit OS2 VBoxWindowsAdditions-amd64.exe
AUTORUN.INF runasroot.sh VBoxWindowsAdditions.exe
[root@oel VBOXADDITIONS_4.3.2_90405]# sh VBoxLinuxAdditions.run /* El comando
sh sirve para lanzar el script */
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.3.2 Guest Additions for Linux............
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox non-DKMS kernel modules [ OK ]
... (muchos OK)
Installing graphics libraries and desktop services componen[ OK ]
[root@oel VBOXADDITIONS_4.3.2_90405]# cd /media/
[root@oel media]# ls
sf_GFI_INFORMATICA VBOXADDITIONS_4.3.2_90405 /* Aquí ya podemos ver la
carpeta que compartimos de Windows */
[root@oel media]# cd sf_GFI_INFORMATIC/
[root@oel sf_GFI_INFORMATIC]# ls
p10404530_112030_Linux-x86-64_1of7.zip
p10404530_112030_Linux-x86-64_2of7.zip
[root@oel sf_GFI_INFORMATIC]# mv p10404530_112030_Linux-x86-64_* /tmp
// Mueves los dos (con el * pilla ambos) al temporal por ejemplo
Pasos comunes habiéndolo escogido una u otra opción:

9.2) Veo los permisos que tiene la carpeta /tmp (ls -lrt). Si los zip no tienen permiso de ejecución,
desde ROOT, hacemos chmod -R 777 /tmp
9.3) Ya puedo descomprimir los archivos que tengo en el temporal
COMO ORACLE:
============
unzip p10404530_112030_Linux-x86-64_1of7.zip
unzip p10404530_112030_Linux-x86-64_2of7.zip

Estos paquetes generan una carpeta que llamada Database (comprobar con ls -la)
9.4) Tengo que darle permisos a la carpeta Database (desde ROOT):
chown -R oracle:oinstall database
chmod -R 775 database

PARTE 3: INSTALACIÓN DE ORACLE


1) Run Installer con Response File:

En vez de ejecutar el runInstaller como siempre (situado en la carpeta Database), vamos a usar un response
file (11203rdbms.sp) con los parámetros que queramos. Abrimos ese fichero con un editor de texto en
Windows o con el vi en linux y editamos los siguientes campos:
 ORACLE_HOSTNAME=oel.oracle75.com
 INVENTORY_LOCATION=/u01/app/oracle/oraInventory
 ORACLE_HOME=/u01/app/oracle/product/11.2.0.3/db_1
 ORACLE_BASE=/u01/app/oracle
Guardo este response file por ejemplo en /tmp y ya puedo lanzar la instalación de Oracle:
[root@oel tmp]#su oracle
[oracle@oel tmp ]$ cd /tmp/database
[oracle@oel database]$ ./runInstaller -silent -responseFile /tmp/11203rdbms.sp

2) Scripts

Tardará un rato y me dirá al final que tengo que ejecutar (COMO ROOT) 2 scripts:

a) /u01/app/oracle/oraInventory/orainstRoot.sh

b) /u01/app/oracle/product/11.2.0.3/db_1/root.sh

3) Parchear

 Debido a un bug, debemos parchear. Para ello, primero comprobamos que versión del OPatch
tenemos en nuestro sistema:

[root@oel ~]# su oracle

[oracle@oel root]$ cd
[oracle@oel ~]$ . .bash_profile /* Éste paso sólo hay que hacerlo si estoy desde SecureCRT, ya que al
ponerme como root y luego volver al usuario oracle tengo que volver a cargar mis variables de entorno */

[oracle@oel ~]$ cd $ORACLE_HOME/OPatch/

[oracle@oel OPatch]$ ./opatch lsinventory //Se lanza como vemos con ./

En el resultado, buscamos la versión: OPatch version : 11.2.0.1.7

Necesitamos que la versión sea la 11.2.0.3.0.

 Ahora debemos pasar el OPatch utility (p6880880_112000_Linux-x86-64.zip, si no lo tenemos lo


bajamos de la siguiente web:
https://updates.oracle.com/Orion/Download/process_form/p6880880_112000_Linux-x86-
64.zip?aru=16237966&file_id=60434300&patch_file=p6880880_112000_Linux-x86-64.zip& ) y el
parche (p16619892_112030_Linux-x86-64[11.2.0.3.7-PSU7].zip) por ejemplo con winSCP a una
carpeta temporal que creamos en el $HOME:
[oracle@oel OPatch]$ cd

[oracle@oel ~]$ pwd

/home/oracle

[oracle@oel ~]$ mkdir patches //Aquí pasamos los zip a esta carpeta con winSCP

[oracle@oel ~]$ cd patches/

[oracle@oel patches]$ ls

p16619892_112030_Linux-x86-64.zip p6880880_112000_Linux-x86-64.zip

 Renombramos la carpeta OPatch, ya que el OPatch Utility descargado la machacaría si no:


[oracle@oel patches]$ mv /u01/app/oracle/product/11.2.0.3/db_1/OPatch/
$ORACLE_HOME/OPatch_112017

 Descomprimimos el OPatch Utility:


[oracle@oel patches]$ unzip $HOME/patches/p6880880_112000_Linux-x86-64.zip -d
$ORACLE_HOME

 Comprobamos la versión de OPatch (debe dar como resultado 11.2.0.3.6)


[oracle@oel patches]$ $ORACLE_HOME/OPatch/opatch version

 Antes de parchear, Oracle recomienda ejecutar el siguiente comando para verificar la consistencia del
home: [oracle@oel patches]$ $ORACLE_HOME/OPatch/opatch lsinventory -oh
$ORACLE_HOME

 Ahora descomprimimos el parche:


[oracle@oel patches]$ unzip p16619892_112030_Linux-x86-64.zip

[oracle@oel patches]$ cd 16619892/

 Comprobamos que no hay ningún conflicto con el parche:


[oracle@oel 16619892]$ $ORACLE_HOME/OPatch/opatch prereq
CheckConflictAgainstOHWithDetail -ph ./
 Instalamos el parche:
[oracle@oel 16619892]$ $ORACLE_HOME/OPatch/opatch apply
Respuestas que debemos proporcionar: y, presionar ENTER, y, y. Tardará un rato en parchear.

PARTE 4: PREVIO CLONACIÓN


Según veremos posteriormente en los scripts, es necesario que existan una serie de directorios para la
creación de la BBDD. Estas rutas están señaladas en verde en la parte 6, pero las creamos a continuación para
que cuando clonemos para crear el standby, ya existan y no tengamos que crearlas de nuevo:
[oracle@oel 16619892]$ cd $ORACLE_BASE
[oracle@oel oracle]$ ls
checkpoints diag oraInventory product
[oracle@oel oracle]$ cd diag/rdbms/
[oracle@oel rdbms]$ mkdir -p EGSDP/EGSDP/{adump,cdump} /*Así creamos la estructura
de directorios */
[oracle@oel rdbms]$ cd ../..
[oracle@oel oracle]$ ls
checkpoints diag oraInventory product
[oracle@oel oracle]$ mkdir -p
oradata/EGSDP/{control,dat_001,redos_001,recovery_area}
//Comprobación:
[oracle@oel oracle]$ cd oradata/EGSDP/
[oracle@oel EGSDP]$ ls
control dat_001 redos_001

PARTE 5: CLONACIÓN
1) Paramos la máquina virtual (cerrarla y darle a GUARDAR ESTADO DE LA MÁQUINA)
- La clonamos (botón derecho/clonar). Como nombre le ponemos por ejemplo STANDBY.
- Next/Clonación completa
- Clonar

2)Ahora mismo, la nueva máquina (STANDBY) tiene la misma IP y hostname que la PRIMARY de la cual la
hemos clonado. Para cambiarla, seguimos el procedimiento siguiente (obtenido de
http://www.thegeekstuff.com/2013/10/change-hostname-ip-address/ )
2.1) Cambiar el hostname:
[oracle@oel ~]$ su - //Cambio a ROOT
[root@oel ~]# hostname oel.oracle76.com //Le ponemos éste por ejemplo
[root@oel ~]# hostname //Comprobación
oel.oracle76.com
2.2) Modificar el /etc/hosts
[root@oel ~]# vi /etc/hosts /* Cambio el hostname y aprovecho para cambiar la IP
también, aunque podría hacerlo luego */
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.56.76 oel.oracle76.com.localhost oel.oracle76.com
2.3) Modificar el /etc/sysconfig/network
[root@oel ~]# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=oel.oracle76.com
GATEWAY=192.168.56.1
2.4) Reiniciar el network (saldrán varios OK)
[root@oel ~]# service network restart
2.5) Cambiar la IP (permanente)
[root@oel ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.56.255
HWADDR=08:00:27:F3:E9:80
IPADDR=192.168.56.76
IPV6INIT=yes
IPV6_AUTOCONF=yes
NETMASK=255.255.255.0
NETWORK=192.168.56.0
ONBOOT=yes
2.6) Reiniciar el network
[root@oel ~]# service network restart

Nota: ahora ya podemos conectar con el secureCRT a nuestra nueva MV.

PARTE 6: CREACIÓN DE LA BBDD + LISTENER +TNSNAMES


Tras la instalación del software de Oracle que hicimos en la Primary, tenemos que crear la BBDD. Para ello
vamos a lanzar una serie de scripts (cuyo contenido está en el apéndice) en la PRIMARY.

1) Cambiar el nombre del init_eg_template_11g.ora a init$ORACLE_SID.ora (en mi caso, sería


initEGSDP_PRIMARY.ora) y moverlo con winSCP al directorio correspondiente ($ORACLE_HOME/dbs)

2) Creamos una carpeta donde meteremos todos los scripts:


[oracle@oel ~]$ cd $HOME
[oracle@oel ~]$ mkdir mis_scripts

3) Pasamos todos los scripts con winSCP a esa carpeta y veo que están ahí:
[oracle@oel ~]$ cd mis_scripts
[oracle@oel mis_scripts]$ ls
crea_bd_EG_11g_2.sql crea_bd_EG_11g_3.sql crea_bd_EG_11g_4.sql crea_bd_EG_11g.sql

4) Lanzamos los scripts:


[oracle@oel mis_scripts]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.3.0 Production on Sun Jan 12 03:08:10 2014
Copyright (c) 1982, 2011, Oracle. All rights reserved.

SQL> @crea_bd_EG_11g.sql
//El final debe ser : Database created.

SQL> @crea_bd_EG_11g_2.sql //Éste internamente llama al 3


/* El final debe ser
SQL> spool off
SQL> disconnect
Disconnected from Oracle Database 11g Enterprise Edition Release
11.2.0.3.0 - 64bit Production
With the Partitioning and Real Application Testing options */

SQL> @crea_bd_EG_11g_4.sql
//Me pedirá que ponga una contraseña para orapwd: oracle.
/* El resultado debe ser:
SQL> disconnect
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0
- 64bit Production
With the Partitioning and Real Application Testing options
SQL> exit; */

5) Creamos el LISTENER
[oracle@oel EGSDP]$ cd $TNS_ADMIN
[oracle@oel admin]$ vi listener.ora
LISTENER_1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.56.75) (PORT = 1521))
)
)

CONNECT_TIMEOUT_LISTENER = 10
STARTUP_WAIT_TIME_LISTENER = 1
LOGGING_LISTENER = OFF

6) Creamos el TNSNAMES. Aquí añadiremos cómo conectaremos con la máquina STANDBY:


[oracle@oel admin]$ vi tnsnames.ora
EGSDP_PRIMARY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.75)(PORT = 1521))
(CONNECT_DATA = (SERVICE_NAME = EGSDP_PRIMARY))
(SERVER=DEDICATED))

EGSDP_STANDBY=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(Host = 192.168.56.76)(Port = 1521))
(CONNECT_DATA = (SERVICE_NAME = EGSDP_STANDBY))
(SERVER=DEDICATED))

7) Hacemos los mismo en la STANDBY. Cambiamos el listener (el tnsnames sería el mismo):
[oracle@oel ~]$ cd $TNS_ADMIN
[oracle@oel admin]$ vi listener.ora
LISTENER_2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.56.76) (PORT = 1521))
)
CONNECT_TIMEOUT_LISTENER = 10
STARTUP_WAIT_TIME_LISTENER = 1
LOGGING_LISTENER = OFF

8) El TNSNAMES es el mismo que hemos puesto en la PRIMARY.


PARTE 7: CREACIÓN DATAGUARD
1) En la PRIMARY, comprobamos que la BBDD está en modo ARCHIVELOG.:
[oracle@oel mis_scripts]$ sqlplus / as sysdba
SQL> select name, log_mode from v$database;

NAME LOG_MODE
--------- ------------
EGSDP ARCHIVELOG

1.1 ) Si no fuera así, ponerla en dicho modo ejecutando los siguientes comandos:

SQL> shutdown immediate;


SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;

2) Comprobar que la base de datos primaria está en modo force logging:


SQL> select name, force_logging from v$database;

NAME FOR
--------- ---
EGSDP YES

2.1) Si no fuera así, ponerla en force logging:


SQL> alter database force logging;

3) Comprobar que en la base de datos primaria tenemos configurados todos los parámetros de arranque
(nuestro init) como los siguientes, y en caso contrario modificarlos:
SQL> exit
[oracle@oel mis_scripts]$ cd $ORACLE_HOME/dbs
[oracle@oel dbs]$ vi initEGSDP_PRIMARY.ora
//Busco las siguientes cadenas y las cambio o las creo si no existen:

*.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST MANDATORY ARCH SYNC


NOAFFIRM valid_for=(online_logfiles,primary_role)'
*.log_archive_dest_2='service=EGSDP_STANDBY OPTIONAL REOPEN=30 LGWR ASYNC
NOAFFIRM valid_for=(online_logfiles,primary_role)'
#el parámetro log_archive_dest_3 se configura en caso de que vayamos a tener
una 2ª standby física
*.log_archive_dest_3='service=DR OPTIONAL REOPEN=30 LGWR ASYNC NOAFFIRM
valid_for=(online_logfiles,primary_role)'
*.log_archive_dest_4='LOCATION=USE_DB_RECOVERY_FILE_DEST OPTIONAL REOPEN=30
ARCH SYNC NOAFFIRM valid_for=(standby_logfiles,standby_role)'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='DEFER'
*.log_archive_dest_state_3='DEFER'
*.log_archive_dest_state_4='ENABLE'
*.log_archive_max_processes=10
*.log_file_name_convert='/u01/app/oracle/oradata/EGSDP','/u01/app/oracle/ora
data/EGSDP'
*.local_listener='EGSDP_PRIMARY'
*.STANDBY_FILE_MANAGEMENT='AUTO'
*.remote_login_passwordfile='exclusive'
*.fal_client='EGSDP_PRIMARY' #CLUSTER1
*.fal_server='EGSDP_STANDBY' #CLUSTER2

Nota: en el caso de que la transmisión de la información de Redo se vaya a realizar por los procesos ARC (y
no por LWGR como aparece en el ejemplo anterior), entonces se especificaría en los parámetros
log_archive_dest_2 y log_archive_dest_3, el atributo ARCH en lugar de LGWR. Ejemplo:
*.log_archive_dest_2='service=CLUSTER2 OPTIONAL REOPEN=30 ARCH ASYNC
NOAFFIRM valid_for=(online_logfiles,primary_role)

4) [oracle@oel dbs]$ sqlplus / as sysdba


SQL> shutdown
SQL> create spfile from pfile;
SQL> startup

//Ahora creamos el pfile con el que arrancaremos la STANDBY:


SQL> create pfile='/tmp/initEGSDP_STANDBY.ora' from spfile;

5) Llevamos al $ORACLE_HOME/dbs de la STANDBY el password file (cambiándole el nombre a


orapwEGSDP_STANDBY ) y el fichero que acabamos de crear (initEGSDP_STANDBY.ora) con winSCP y éste
último lo editamos para que tenga los siguientes parámetros cambiados:
*local_listener='EGSDP_STANDBY'
*.service_names='EGSDP_STANDBY'
*.log_archive_dest_2='service=EGSDP_PRIMARY OPTIONAL REOPEN=30 LGWR ASYNC NOAFFIRM
valid_for=(online_logfiles,primary_role)'
*.fal_client='EGSDP_STANDBY'
*.fal_server='EGSDP_PRIMARY'

6)Cambiar también el $ORACLE_SID en el bash_profile:


[oracle@oel dbs]$ cd
[oracle@oel ~]$ vi .bash_profile
...
ORACLE_SID=EGSDP_STANDBY; export ORACLE_SID
...

7) Ejecutamos el bash_profile
[oracle@oel ~]$ . .bash_profile

8) Iniciamos los listeners tanto en PRIMARY como en STANDBY


[oracle@oel ~]$ lsnrctl start

9) Comprobamos que hay servicios de red entre PRIMARY y STANDBY


9.1) Desde PRIMARY:
[oracle@oel dbs]$ tnsping EGSDP_STANDBY
...
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(Host =
192.168.56.76)(Port = 1521)) (CONNECT_DATA = (SERVICE_NAME = EGSDP_STANDBY))
(SERVER=DEDICATED))
OK (10 msec)
9.2)Desde STANDBY:
[oracle@oel ~]$ tnsping EGSDP_PRIMARY
...
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =
192.168.56.75)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = EGSDP_PRIMARY))
(SERVER=DEDICATED))
OK (10 msec)

10) Realizar un backup con RMAN de la base de datos de la PRIMARY. Para ello:
10.1 ) Crear una carpeta llamada backup y dentro de ella otra llamada diario dentro del recovery_area:
[oracle@oel dbs]$ cd $ORACLE_BASE/oradata/EGSDP/recovery_area/
[oracle@oel recovery_area]$ mkdir -p backup/diario
10.2) Mover con winSCP los archivos sdp_env_standby.sh y sdp_cron_rman.sh a la carpeta
$HOME/mis_scripts por ejemplo.
10.3) Editar el sdp_env_standby.sh:
[oracle@oel recovery_area]$ cd /home/oracle/mis_scripts/
[oracle@oel mis_scripts]$ vi sdp_env_standby.sh
ORACLE_BASE=/u01/app/oracle
ORACLE_BACKUP=/u01/app/oracle/oradata/EGSDP/recovery_area/backup
ORACLE_HOME=/u01/app/oracle/product/11.2.0.3/db_1
ORACLE_DATABASE=EGSDP
export ORACLE_DATABASE ORACLE_BASE ORACLE_BACKUP
export ORACLE_SID ORACLE_HOME

10.4) Ejecutamos ambos scripts


[oracle@oel mis_scripts]$ sh sdp_env_standby.sh
[oracle@oel mis_scripts]$ sh sdp_cron_rman.sh -d EGSDP
//EGSDP es el nombre de mi BD
Finaliza con SCRIPT SUCCESSFULLY EXECUTED

10.5) Comprimimos (tareamos) el backup generado:


[oracle@oel mis_scripts]$ cd
/u01/app/oracle/oradata/EGSDP/recovery_area/backup/diario/
[oracle@oel diario]$ ls
actual rman_2014-01-12_060951
[oracle@oel diario]$ tar -cvf rman_2014-01-12_060951.tar
rman_2014-01-12_060951/

10.6) Lo llevamos a la STANDBY al mismo directorio de la PRIMARY (con winSCP), por lo que
primero hemos de crearlo allí también:
[oracle@oel dbs]$ cd /u01/app/oracle/oradata/EGSDP/recovery_area/
[oracle@oel recovery_area]$ mkdir -p backup/diario
//Lo pasamos con winSCP
[oracle@oel recovery_area]$ cd backup/diario/
[oracle@oel diario]$ ls
rman_2014-01-12_060951.tar

10.7) Descomprimimos
[oracle@oel diario]$ tar -xvf rman_2014-01-12_060951.tar

10.8) Creamos el link actual apuntando a este backup:


[oracle@oel diario]$ ln -s rman_2014-01-12_060951 actual

10.9) Nos situamos en el directorio 'actual' y lanzamos el restore para crear el STANDBY:
[oracle@oel diario]$ cd actual
[oracle@oel actual]$ ./restore.sh standby
Puede aparecer este error, pero no hay problema:
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 01/12/2014 07:05:42
RMAN-06054: media recovery requesting unknown archived log for thread 1 with
sequence 29 and starting SCN of 227699

11) Una vez haya terminado la ejecución del script del restore, activamos el envío de archivelogs en PRIMARY:
SQL> alter system set log_archive_dest_state_2='ENABLE' scope=both sid='*';
System altered

12) Forzamos un par de cambios de redo en su BBDD:


SQL> alter system archive log current;
System altered.

SQL> r
1* alter system archive log current
System altered.
Nota: si hemos activado un N3 físico, activaríamos el envío a ese N3.

13) Comprobamos que la standby recibe y aplica correctamente los archivelogs generados por la BBDD de la
PRIMARY. Para ello:

13.1) En la PRIMARY comprobamos:


SQL> select THREAD#, max(SEQUENCE#) from v$archived_log group by THREAD#;

THREAD# MAX(SEQUENCE#)
---------- --------------
1 48

13.2) En la STANDBY:
[oracle@oel dbs]$ sqlplus / as sysdba
//Comprobamos que la STANDBY está montada:
SQL> select status from v$instance;

STATUS
------------
MOUNTED

//Comprobamos que efectivamente recibe los cambios (tiene que dar el mismo número que en 13.1):
SQL> select 'Ultimo Recibido' dato, THREAD# instancia, max(SEQUENCE#)
archive from v$archived_log where RESETLOGS_TIME = (select
max(RESETLOGS_TIME) from v$archived_log) group by THREAD# union select
'Ultimo Aplicado' dato, THREAD# instancia, max(SEQUENCE#) archive from
v$log_history where RESETLOGS_TIME = (select max(RESETLOGS_TIME) from
v$log_history) group by THREAD#;

DATO INSTANCIA ARCHIVE


--------------- ---------- ----------
Ultimo Aplicado 1 48
Ultimo Recibido 1 48

14) Ahora que todo va bien, hacemos un spfile del pfile en el STANDBY:
SQL> create spfile from pfile;

NOTA: Si por lo que sea esto nos falla y tras investigar nos damos cuenta de que algún parámetro estaba mal,
tras aplicar los cambios y hacerle un shutdown abort a la STANDBY, ejecutaríamos lo siguiente:
SQL> startup nomount;
SQL> alter database mount standby database;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
//A partir de aquí, volveríamos al punto 12

Puede ser que hayamos configurado mal los listeners o cualquier parámetro del init relacionado con
ellos. Una manera fácil de comprobarlo es haciendo desde STANDBY:

sqlplus sys@EGSDP_PRIMARY as sysdba (tiene que estar previamente en OPEN la BBDD PRIMARY. Esto
funcionaría gracias al password file, que nos permite conectarnos en remoto como sys dba)

Igualmente, desde la PRIMARY intentaría conectarme a la STANDBY:


sqlplus sys@EGSDP_STANDBY as sysdba
PARTE 8: FAIL OVER + RECREACIÓN
Consiste en activar como PRIMARY la STANDBY, ya sea porque haya que parchear la PRIMARY,
migrarla, etc (parar la producción), o bien porque se haya caído la PRIMARY.
Para llegar a este paso con éxito, deben estar sincronizadas ambas máquinas como hemos visto en los
pasos anteriores. Comenzamos pues con el Fail Over propiamente dicho:

1) En PRIMARY, desactivar el envío de archive logs al resto de máquinas (en este caso, sólo tenemos la 2):
SQL> alter system set log_archive_dest_state_2='DEFER' scope=both sid= '*';

2) Se recomienda monitorizar el alert del STANDBY por si hay algún fallo. Para ello:
[oracle@oel ~]$ find /u01 -name alert*.log //Busco la ruta donde está
/u01/app/oracle/diag/rdbms/egsdp/EGSDP_STANDBY/trace/alert_EGSDP_STANDBY.log
[oracle@oel~]$ tail -100f
/u01/app/oracle/diag/rdbms/egsdp/EGSDP_STANDBY/trace/alert_EGSDP_STANDBY.log &

3) En el STANDBY, paramos la recuperación de logs:


SQL> alter database recover managed standby database cancel;

4)Reiniciamos la STANDBY:
SQL> shutdown immediate;
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.

SQL> startup mount;


ORACLE instance started.

5) Activamos la STANDBY como PRIMARY:


SQL> alter database activate standby database;
6)Reiniciamos de nuevo:
SQL> shutdown immediate;
SQL> startup;

6) Comprobamos el nuevo rol de la STANDBY:


SQL> select name, database_role from v$database;

NAME DATABASE_ROLE
--------- ----------------
EGSDP PRIMARY

7) Los siguientes pasos se realizan sobre la STANDBY (que es la nueva PRIMARY) si la siguiente consulta nos da
error (Si falla, se nos ha borrado el tablespace temporal). Si no, continuar al paso 9;

SQL>SELECT * FROM V$TEMPFILE;

7.1) Si nos da error, recreamos el tablespace temporal, para ello creamos un tablespace temporal
auxiliar y lo asociamos como tablespace temporal por defecto de la BD:
SQL> create temporary tablespace TEMP_AUX tempfile
'/u01/app/oracle/oradata/EGSDP/dat_001/EGSDP_PF_TMP_AUX_01.dbf' size 1000M;

SQL> alter database default temporary tablespace TEMP_AUX

7.2) Con el paquete dbms_metadata, sacamos la sentencia ddl de creación del tablespace temporal
original de la base de datos (tablespace TEMP) que será la que utilicemos posteriormente para crear de nuevo
este tablespace:
SQL> select dbms_metadata.get_ddl('TABLESPACE','<tablespace_name>')
from dual;

7.3) Borramos el tablespace temporal que tenía con anterioridad la base de datos (tablespace TEMP) y
lo volvemos a crear con las mismas características y tamaño que tenía inicialmente. Una vez creado lo
asignamos como tablespace temporal por defecto de la base de datos.:
SQL> drop tablespace TEMP including contents and datafiles;

SQL> create temporary tablespace TEMP tempfile


'/u01/app/oracle/oradata/EGSDP/dat_001/EGSDP_PF_TMP_01.dbf' size 2048M;

SQL> alter database default temporary tablespace TEMP;

7.4) Borramos el tablespace temporal auxiliar que habíamos creado (TEMP_AUX)


SQL> drop tablespace TEMP_AUX including contents and datafiles;

7.5) Finalmente, abrimos la standby y revisamos el alert para comprobar que no aparezcan errores:
SQL> alter database open;

8) Para recuperar la antigua PRIMARY, tenemos que hacer la RECREACIÓN, es decir, realizar un backup
de la que ahora es la PRIMARY (antigua STANDBY) y hacer el restore en la antigua PRIMARY. Hay que
borrar todos los backup de la máquina que era primaria.

8.1) Hacemos el backup con RMAN de la BBDD actual (antigua STANDBY):


[oracle@oel mis_scripts]$ sh sdp_env_standby.sh

[oracle@oel mis_scripts]$ sh sdp_cron_rman.sh -d EGSDP -f /* Le pongo -f


para forzarlo, si no, puede decirme que no hace falta */

8.2) Lo comprimimos:
[oracle@oel mis_scripts]$ cd /u01/app/oracle/oradata/EGSDP/recovery_area/backup/diario/

[oracle@oel diario]$ ls -lrt

-rw-r--r-- 1 oracle oinstall 80896000 Jan 12 06:18 rman_2014-01-


12_060951.tar

drwxr-xr-x 3 oracle oinstall 4096 Jan 12 07:03 rman_2014-01-


12_060951

drwxr-xr-x 3 oracle oinstall 4096 Jan 12 14:19 rman_2014-01-


12_141916

lrwxrwxrwx 1 oracle oinstall 22 Jan 12 14:19 actual ->


rman_2014-01-12_141916

[oracle@oel diario]$ tar -cvf rman_2014-01-12_141916.tar rman_2014-


01-12_141916

8.3) Lo llevamos a la PRIMARY (que actualmente está caída, no operativa) con winSCP al mismo
directorio:
[oracle@oel ~]$ cd /u01/app/oracle/oradata/EGSDP/recovery_area/backup/diario/
[oracle@oel diario]$ ls
actual rman_2014-01-12_060951 rman_2014-01-12_060951.tar
[oracle@oel diario]$ rm -Rf * //Borro todos los backups que había
//Paso mi .tar a esa carpeta con winSCP y compruebo que está ahí:
[oracle@oel diario]$ ls
rman_2014-01-12_141916.tar

8.4) Descomprimimos
[oracle@oel diario]$ tar -xvf rman_2014-01-12_141916.tar
8.5) Creamos el link actual apuntando a este backup:
[oracle@oel diario]$ ln -s rman_2014-01-12_141916 actual
8.6) Nos situamos en el directorio 'actual' y lanzamos el restore para crear el STANDBY:
[oracle@oel diario]$ cd actual
[oracle@oel actual]$ ./restore.sh standby
// Me dirá este mensaje:
WARNING !!!!!!
ACTIVE DATABASE WILL BE OVERWRITTEN.
ARE YOU SURE? Y/N --> Elegimos Y

//Luego puede aparecer este error, pero no hay problema:


RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 01/12/2014 07:05:42
RMAN-06054: media recovery requesting unknown archived log for thread 1 with
sequence 29 and starting SCN of 227699

9) Activamos el envío de archivelogs en la antigua STANDBY (la que tenemos actualmente como PRIMARY a
falta de levantar la otra):
SQL> alter system set log_archive_dest_state_2='ENABLE' scope=both sid='*';
System altered

10) Forzamos un par de cambios de redo en su BBDD:


SQL> alter system archive log current;
System altered.

SQL> r
1* alter system archive log current
System altered.

11) Comprobamos que la nueva standby (antigua PRIMARY) recibe y aplica correctamente los archivelogs
generados por la BBDD. Para ello:

11.1) En la PRIMARY (antigua STANDBY) comprobamos:


select THREAD#, max(SEQUENCE#) from v$archived_log where RESETLOGS_TIME =
(select max(RESETLOGS_TIME) from v$archived_log)group by THREAD#;
THREAD# MAX(SEQUENCE#)

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

1 19

Nota: no usamos la antigua sentencia "select THREAD#, max(SEQUENCE#) from


v$archived_log group by THREAD#" porque al reiniciar los archivers, este
número está descompensado (no están actualizadas las vistas).

11.2) En la STANDBY (antigua PRIMARY):


[oracle@oel dbs]$ sqlplus / as sysdba
//Ponemos la antigua PRIMARY como la STANDBY física:
SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
//Comprobamos que está montada:
SQL> select status from v$instance;
STATUS
------------
MOUNTED

//Comprobamos que efectivamente recibe los cambios (tiene que dar el mismo número que en 13.1):
SQL> select 'Ultimo Recibido' dato, THREAD# instancia, max(SEQUENCE#)
archive from v$archived_log where RESETLOGS_TIME = (select
max(RESETLOGS_TIME) from v$archived_log) group by THREAD# union select
'Ultimo Aplicado' dato, THREAD# instancia, max(SEQUENCE#) archive from
v$log_history where RESETLOGS_TIME = (select max(RESETLOGS_TIME) from
v$log_history) group by THREAD#;

DATO INSTANCIA ARCHIVE


--------------- ---------- ----------
Ultimo Aplicado 1 19
Ultimo Recibido 1 19

PARTE 9: SWITCHOVER
Consiste en cambiar el rol de dos clusters. En este caso, podemos partir del punto anterior, ya que si
hacemos el cambio de rol, volveremos a tener todo como al principio.
1) Ambas máquinas deben estar sincronizadas, como vimos en el punto anterior.

2) Verificamos que se puede hacer switchover en la BBDD primaria (que ahora está en la antigua STANDBY):
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
TO STANDBY

Es lo correcto. Si el resultado fuera SESSIONS ACTIVE, deberíamos lanzar ALTER DATABASE COMMIT TO
SWITCHOVER TO STANDBY WITH SESSION SHUTDOWN parameter;

3) Paramos nuestra BBDD primaria (antigua STANDBY) y la volvemos a arrancar:


SQL> shutdown immediate;
SQL> startup

4) Cambiamos el rol:
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION
SHUTDOWN WAIT;

5) Confirmamos en el logfile que hemos recibido el end-of-redo:


ARCH: End-Of-Redo Branch archival of thread 1 sequence 44

6) Ponemos la BBDD primaria (la antigua STANDBY) como STANDBY, para recuperar el rol original.:
SQL> shutdown immediate;
SQL> startup nomount; //Si da un fallo, exit y vuelta a entrar al sqlplus
SQL> alter database mount standby database;

7) Comprobamos el estado:
SQL> select switchover_status from v$database;
SWITCHOVER_STATUS
--------------------
RECOVERY NEEDED
//Lo normal es que diera TO PRIMARY, pero en este estado, también funcionaría.

8) Comprobar que la STANDBY (antigua PRIMARY) no está en modo sólo lectura:


SQL> select value from v$dataguard_stats where NAME='standby has been open';
no rows selected
8.1) Si aquí no saliera vacío, tendríamos que hacer un shutdown immediate y un startup mount.

9) En la actual STANDBY (antigua PRIMARY), le cambiamos el rol para dejarla como al principio de los tiempos:
SQL> alter database commit to switchover to primary;
Database altered.

SQL> select database_role from v$database;


DATABASE_ROLE
----------------
PRIMARY

10) Paramos esa BBDD y la arrancamos como primaria:


SQL> shutdown immediate
SQL> startup

11) Activamos el envío de la nueva PRIMARY, pues comprobamos que está desactivado:
SQL> show parameter state_2;

NAME TYPE VALUE


------------------------------------ ----------- ---------------------------
---
log_archive_dest_state_2 string DEFER

SQL> alter system set log_archive_dest_state_2=enable scope=both sid='*';

12) Permito que la que ahora será STANDBY reciba los archivers:
SQL> alter database recover managed standby database disconnect from
session;

13) Hago un switch log file en el PRIMARY nuevo:


SQL> alter system archive log current;
System altered.

SQL> select THREAD#, max(SEQUENCE#) from v$archived_log where RESETLOGS_TIME


= (select max(RESETLOGS_TIME) from v$archived_log)group by THREAD#;

THREAD# MAX(SEQUENCE#)
---------- --------------
1 46

14) Compruebo en la STANDBY nueva que recibe los envíos:


SQL> select 'Ultimo Recibido' dato, THREAD# instancia, max(SEQUENCE#)
archive from v$archived_log where RESETLOGS_TIME = (select
max(RESETLOGS_TIME) from v$archived_log) group by THREAD# union select
'Ultimo Aplicado' dato, THREAD# instancia, max(SEQUENCE#) archive from
v$log_history where RESETLOGS_TIME = (select max(RESETLOGS_TIME) from
v$log_history) group by THREAD#;

DATO INSTANCIA ARCHIVE


--------------- ---------- ----------
Ultimo Aplicado 1 46
Ultimo Recibido 1 46

15) Comprobar el tablespace temporal como en el punto 7 del FAILOVER+RECREACIÓN.


APÉNDICE A: RESPONSE FILE (11203rdbms_sdp)
####################################################################
## Copyright(c) Oracle Corporation 1998,2011. All rights reserved.##
## ##
## Specify values for the variables listed below to customize ##
## your installation. ##
## ##
## Each variable is associated with a comment. The comment ##
## can help to populate the variables with the appropriate ##
## values. ##
## ##
## IMPORTANT NOTE: This file contains plain text passwords and ##
## should be secured to have read permission only by oracle user ##
## or db administrator who owns this installation. ##
## ##
####################################################################

#--------------------------------------------------------------------------
-----
# Do not change the following system generated value.
#--------------------------------------------------------------------------
-----
oracle.install.responseFileVersion=/recovery_area/export/oracle/software/Or
acle11Software/0.Linux_x86_64/1.RDBMS/database/install/rspfmt_dbinstall_res
ponse_schema_v11_2_0

#--------------------------------------------------------------------------
-----
# Specify the installation option.
# It can be one of the following:
# 1. INSTALL_DB_SWONLY
# 2. INSTALL_DB_AND_CONFIG
# 3. UPGRADE_DB
#--------------------------------------------------------------------------
-----
oracle.install.option=INSTALL_DB_SWONLY

#--------------------------------------------------------------------------
-----
# Specify the hostname of the system as set during the install. It can be
used
# to force the installation to use an alternative hostname rather than
using the
# first hostname found on the system. (e.g., for systems with multiple
hostnames
# and network interfaces)
#--------------------------------------------------------------------------
-----
ORACLE_HOSTNAME=oel.oracle50.com

#--------------------------------------------------------------------------
-----
# Specify the Unix group to be set for the inventory directory.
#--------------------------------------------------------------------------
-----
UNIX_GROUP_NAME=oinstall

#--------------------------------------------------------------------------
-----
# Specify the location which holds the inventory files.
# This is an optional parameter if installing on
# Windows based Operating System.
#--------------------------------------------------------------------------
-----
INVENTORY_LOCATION=/u01/app/oracle/oraInventory

#--------------------------------------------------------------------------
-----
# Specify the languages in which the components will be installed.
#
# en : English ja : Japanese
# fr : French ko : Korean
# ar : Arabic es : Latin American Spanish
# bn : Bengali lv : Latvian
# pt_BR: Brazilian Portuguese lt : Lithuanian
# bg : Bulgarian ms : Malay
# fr_CA: Canadian French es_MX: Mexican Spanish
# ca : Catalan no : Norwegian
# hr : Croatian pl : Polish
# cs : Czech pt : Portuguese
# da : Danish ro : Romanian
# nl : Dutch ru : Russian
# ar_EG: Egyptian zh_CN: Simplified Chinese
# en_GB: English (Great Britain) sk : Slovak
# et : Estonian sl : Slovenian
# fi : Finnish es_ES: Spanish
# de : German sv : Swedish
# el : Greek th : Thai
# iw : Hebrew zh_TW: Traditional Chinese
# hu : Hungarian tr : Turkish
# is : Icelandic uk : Ukrainian
# in : Indonesian vi : Vietnamese
# it : Italian
#
# all_langs : All languages
#
# Specify value as the following to select any of the languages.
# Example : SELECTED_LANGUAGES=en,fr,ja
#
# Specify value as the following to select all the languages.
# Example : SELECTED_LANGUAGES=all_langs
#--------------------------------------------------------------------------
-----
SELECTED_LANGUAGES=en

#--------------------------------------------------------------------------
-----
# Specify the complete path of the Oracle Home.
#--------------------------------------------------------------------------
-----
ORACLE_HOME=/u01/app/oracle/product/11.2.0.3/db_1
#--------------------------------------------------------------------------
-----
# Specify the complete path of the Oracle Base.
#--------------------------------------------------------------------------
-----
ORACLE_BASE=/u01/app/oracle

#--------------------------------------------------------------------------
-----
# Specify the installation edition of the component.
#
# The value should contain only one of these choices.
# EE : Enterprise Edition
# SE : Standard Edition
# SEONE : Standard Edition One
# PE : Personal Edition (WINDOWS ONLY)
#--------------------------------------------------------------------------
-----
oracle.install.db.InstallEdition=EE

#--------------------------------------------------------------------------
-----
# This variable is used to enable or disable custom install and is
considered
# only if InstallEdition is EE.
#
# true : Components mentioned as part of 'optionalComponents' property
# are considered for install.
# false : Value for 'optionalComponents' is not considered.
#--------------------------------------------------------------------------
-----
oracle.install.db.EEOptionsSelection=true

#--------------------------------------------------------------------------
-----
# This property is considered only if 'EEOptionsSelection' is set to true
#
# Description: List of Enterprise Edition Options you would like to enable.
#
# The following choices are available. You may specify any
# combination of these choices. The components you choose
should
# be specified in the form "internal-component-name:version"
# Below is a list of components you may specify to enable.
#
# oracle.oraolap:11.2.0.3.0 - Oracle OLAP
# oracle.rdbms.dm:11.2.0.3.0 - Oracle Data Mining RDBMS Files
# oracle.rdbms.dv:11.2.0.3.0- Oracle Database Vault option
# oracle.rdbms.lbac:11.2.0.3.0 - Oracle Label Security
# oracle.rdbms.partitioning:11.2.0.3.0 - Oracle Partitioning
# oracle.rdbms.rat:11.2.0.3.0 - Oracle Real Application
Testing
#--------------------------------------------------------------------------
-----
oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.3.0,o
racle.rdbms.rat:11.2.0.3.0
###########################################################################
####
#
#
# PRIVILEGED OPERATING SYSTEM GROUPS
#
# ------------------------------------------
#
# Provide values for the OS groups to which OSDBA and OSOPER privileges
#
# needs to be granted. If the install is being performed as a member of the
#
# group "dba", then that will be used unless specified otherwise below.
#
#
#
# The value to be specified for OSDBA and OSOPER group is only for UNIX
based #
# Operating System.
#
#
#
###########################################################################
####

#--------------------------------------------------------------------------
----
# The DBA_GROUP is the OS group which is to be granted OSDBA privileges.
#--------------------------------------------------------------------------
-----
oracle.install.db.DBA_GROUP=oinstall

#--------------------------------------------------------------------------
----
# The OPER_GROUP is the OS group which is to be granted OSOPER privileges.
# The value to be specified for OSOPER group is optional.
#--------------------------------------------------------------------------
----
oracle.install.db.OPER_GROUP=oinstall

#--------------------------------------------------------------------------
-----
# Specify the cluster node names selected during the installation.
# Example : oracle.install.db.CLUSTER_NODES=node1,node2
#--------------------------------------------------------------------------
-----
oracle.install.db.CLUSTER_NODES=

#--------------------------------------------------------------------------
----
# This variable is used to enable or disable RAC One Node install.
#
# true : Value of RAC One Node service name is used.
# false : Value of RAC One Node service name is not used.
#
# If left blank, it will be assumed to be false.
#--------------------------------------------------------------------------
----
oracle.install.db.isRACOneInstall=false

#--------------------------------------------------------------------------
----
# Specify the name for RAC One Node Service.
#--------------------------------------------------------------------------
----
oracle.install.db.racOneServiceName=

#--------------------------------------------------------------------------
-----
# Specify the type of database to create.
# It can be one of the following:
# - GENERAL_PURPOSE/TRANSACTION_PROCESSING
# - DATA_WAREHOUSE
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE

#--------------------------------------------------------------------------
-----
# Specify the Starter Database Global Database Name.
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.globalDBName=

#--------------------------------------------------------------------------
-----
# Specify the Starter Database SID.
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.SID=

#--------------------------------------------------------------------------
-----
# Specify the Starter Database character set.
#
# One of the following
# AL32UTF8, WE8ISO8859P15, WE8MSWIN1252, EE8ISO8859P2,
# EE8MSWIN1250, NE8ISO8859P10, NEE8ISO8859P4, BLT8MSWIN1257,
# BLT8ISO8859P13, CL8ISO8859P5, CL8MSWIN1251, AR8ISO8859P6,
# AR8MSWIN1256, EL8ISO8859P7, EL8MSWIN1253, IW8ISO8859P8,
# IW8MSWIN1255, JA16EUC, JA16EUCTILDE, JA16SJIS, JA16SJISTILDE,
# KO16MSWIN949, ZHS16GBK, TH8TISASCII, ZHT32EUC, ZHT16MSWIN950,
# ZHT16HKSCS, WE8ISO8859P9, TR8MSWIN1254, VN8MSWIN1258
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.characterSet=

#--------------------------------------------------------------------------
----
# This variable should be set to true if Automatic Memory Management
# in Database is desired.
# If Automatic Memory Management is not desired, and memory allocation
# is to be done manually, then set it to false.
#--------------------------------------------------------------------------
----
oracle.install.db.config.starterdb.memoryOption=false

#--------------------------------------------------------------------------
-----
# Specify the total memory allocation for the database. Value(in MB) should
be
# at least 256 MB, and should not exceed the total physical memory
available
# on the system.
# Example: oracle.install.db.config.starterdb.memoryLimit=512
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.memoryLimit=

#--------------------------------------------------------------------------
-----
# This variable controls whether to load Example Schemas onto
# the starter database or not.
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.installExampleSchemas=false

#--------------------------------------------------------------------------
-----
# This variable includes enabling audit settings, configuring password
profiles
# and revoking some grants to public. These settings are provided by
default.
# These settings may also be disabled.
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.enableSecuritySettings=true

###########################################################################
####
#
#
# Passwords can be supplied for the following four schemas in the
#
# starter database:
#
# SYS
#
# SYSTEM
#
# SYSMAN (used by Enterprise Manager)
#
# DBSNMP (used by Enterprise Manager)
#
#
#
# Same password can be used for all accounts (not recommended)
#
# or different passwords for each account can be provided (recommended)
#
#
#
###########################################################################
####

#--------------------------------------------------------------------------
----
# This variable holds the password that is to be used for all schemas in
the
# starter database.
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.password.ALL=

#--------------------------------------------------------------------------
-----
# Specify the SYS password for the starter database.
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.password.SYS=

#--------------------------------------------------------------------------
-----
# Specify the SYSTEM password for the starter database.
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.password.SYSTEM=

#--------------------------------------------------------------------------
-----
# Specify the SYSMAN password for the starter database.
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.password.SYSMAN=

#--------------------------------------------------------------------------
-----
# Specify the DBSNMP password for the starter database.
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.password.DBSNMP=

#--------------------------------------------------------------------------
-----
# Specify the management option to be selected for the starter database.
# It can be one of the following:
# 1. GRID_CONTROL
# 2. DB_CONTROL
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.control=DB_CONTROL

#--------------------------------------------------------------------------
-----
# Specify the Management Service to use if Grid Control is selected to
manage
# the database.
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=

###########################################################################
####
#
#
# SPECIFY BACKUP AND RECOVERY OPTIONS
#
# ------------------------------------
#
# Out-of-box backup and recovery options for the database can be mentioned
#
# using the entries below.
#
#
#
###########################################################################
####

#--------------------------------------------------------------------------
----
# This variable is to be set to false if automated backup is not required.
Else
# this can be set to true.
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.automatedBackup.enable=false

#--------------------------------------------------------------------------
----
# Regardless of the type of storage that is chosen for backup and recovery,
if
# automated backups are enabled, a job will be scheduled to run daily to
backup
# the database. This job will run as the operating system user that is
# specified in this variable.
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.automatedBackup.osuid=

#--------------------------------------------------------------------------
-----
# Regardless of the type of storage that is chosen for backup and recovery,
if
# automated backups are enabled, a job will be scheduled to run daily to
backup
# the database. This job will run as the operating system user specified by
the
# above entry. The following entry stores the password for the above
operating
# system user.
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.automatedBackup.ospwd=
#--------------------------------------------------------------------------
-----
# Specify the type of storage to use for the database.
# It can be one of the following:
# - FILE_SYSTEM_STORAGE
# - ASM_STORAGE
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.storageType=

#--------------------------------------------------------------------------
-----
# Specify the database file location which is a directory for datafiles,
control
# files, redo logs.
#
# Applicable only when
oracle.install.db.config.starterdb.storage=FILE_SYSTEM_STORAGE
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=

#--------------------------------------------------------------------------
-----
# Specify the backup and recovery location.
#
# Applicable only when
oracle.install.db.config.starterdb.storage=FILE_SYSTEM_STORAGE
#--------------------------------------------------------------------------
-----
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=

#--------------------------------------------------------------------------
-----
# Specify the existing ASM disk groups to be used for storage.
#
# Applicable only when
oracle.install.db.config.starterdb.storageType=ASM_STORAGE
#--------------------------------------------------------------------------
-----
oracle.install.db.config.asm.diskGroup=

#--------------------------------------------------------------------------
-----
# Specify the password for ASMSNMP user of the ASM instance.
#
# Applicable only when
oracle.install.db.config.starterdb.storage=ASM_STORAGE
#--------------------------------------------------------------------------
-----
oracle.install.db.config.asm.ASMSNMPPassword=

#--------------------------------------------------------------------------
----
# Specify the My Oracle Support Account Username.
#
# Example : MYORACLESUPPORT_USERNAME=abc@oracle.com
#--------------------------------------------------------------------------
----
MYORACLESUPPORT_USERNAME=

#--------------------------------------------------------------------------
----
# Specify the My Oracle Support Account Username password.
#
# Example : MYORACLESUPPORT_PASSWORD=password
#--------------------------------------------------------------------------
----
MYORACLESUPPORT_PASSWORD=

#--------------------------------------------------------------------------
----
# Specify whether to enable the user to set the password for
# My Oracle Support credentials. The value can be either true or false.
# If left blank it will be assumed to be false.
#
# Example : SECURITY_UPDATES_VIA_MYORACLESUPPORT=true
#--------------------------------------------------------------------------
----
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false

#--------------------------------------------------------------------------
----
# Specify whether user doesn't want to configure Security Updates.
# The value for this variable should be true if you don't want to configure
# Security Updates, false otherwise.
#
# The value can be either true or false. If left blank it will be assumed
# to be false.
#
# Example : DECLINE_SECURITY_UPDATES=false
#--------------------------------------------------------------------------
----
DECLINE_SECURITY_UPDATES=true

#--------------------------------------------------------------------------
----
# Specify the Proxy server name. Length should be greater than zero.
#
# Example : PROXY_HOST=proxy.domain.com
#--------------------------------------------------------------------------
----
PROXY_HOST=

#--------------------------------------------------------------------------
----
# Specify the proxy port number. Should be Numeric and atleast 2 chars.
#
# Example : PROXY_PORT=25
#--------------------------------------------------------------------------
----
PROXY_PORT=
#--------------------------------------------------------------------------
----
# Specify the proxy user name. Leave PROXY_USER and PROXY_PWD
# blank if your proxy server requires no authentication.
#
# Example : PROXY_USER=username
#--------------------------------------------------------------------------
----
PROXY_USER=

#--------------------------------------------------------------------------
----
# Specify the proxy password. Leave PROXY_USER and PROXY_PWD
# blank if your proxy server requires no authentication.
#
# Example : PROXY_PWD=password
#--------------------------------------------------------------------------
----
PROXY_PWD=

#--------------------------------------------------------------------------
----
# Specify the proxy realm.
#
# Example : PROXY_REALM=metalink
#--------------------------------------------------------------------------
----
PROXY_REALM=
#--------------------------------------------------------------------------
----
# Specify the Oracle Support Hub URL.
#
# Example :
COLLECTOR_SUPPORTHUB_URL=https://orasupporthub.company.com:8080/
#--------------------------------------------------------------------------
----
COLLECTOR_SUPPORTHUB_URL=

#--------------------------------------------------------------------------
----
# Specify the auto-updates option. It can be one of the following:
# a.MYORACLESUPPORT_DOWNLOAD
# b.OFFLINE_UPDATES
# c.SKIP_UPDATES
#--------------------------------------------------------------------------
----
oracle.installer.autoupdates.option=SKIP_UPDATES
#--------------------------------------------------------------------------
----
# In case MYORACLESUPPORT_DOWNLOAD option is chosen, specify the location
where
# the updates are to be downloaded.
# In case OFFLINE_UPDATES option is chosen, specify the location where the
updates
# are present.
oracle.installer.autoupdates.downloadUpdatesLoc=
#--------------------------------------------------------------------------
----
# Specify the My Oracle Support Account Username which has the patches
download privileges
# to be used for software updates.
# Example : AUTOUPDATES_MYORACLESUPPORT_USERNAME=abc@oracle.com
#--------------------------------------------------------------------------
----
AUTOUPDATES_MYORACLESUPPORT_USERNAME=

#--------------------------------------------------------------------------
----
# Specify the My Oracle Support Account Username password which has the
patches download privileges
# to be used for software updates.
#
# Example :
APÉNDICE B: INIT DEL PRIMARY (initEGSDP_PRIMARY.ora)
*._trace_files_public=FALSE
*.aq_tm_processes=1
*.archive_lag_target=900
*.audit_file_dest='/u01/app/oracle/diag/rdbms/EGSDP/EGSDP/adump'
*.audit_sys_operations=FALSE
*.audit_trail='DB'
*.cluster_database=FALSE
*.compatible='11.2.0.3'
*.control_files='/u01/app/oracle/oradata/EGSDP/control/EGSDP_PF_CTL_01.ctl'
,'/u01/app/oracle/oradata/EGSDP/control/EGSDP_PF_CTL_02.ctl','/u01/app/orac
le/oradata/EGSDP/control/EGSDP_PF_CTL_03.ctl'
*.core_dump_dest='/u01/app/oracle/diag/rdbms/EGSDP/EGSDP/cdump'
*.db_block_checking='true'
*.db_block_size=8192
*.db_cache_advice='ON'
*.db_cache_size=6000M
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_files=200
*.db_name='EGSDP'
*.db_recovery_file_dest='/u01/app/oracle/oradata/EGSDP/recovery_area'
*.db_recovery_file_dest_size=30000M
*.db_writer_processes=2
*.diagnostic_dest='/u01/app/oracle'
*.disk_asynch_io=true
*.fal_client='EGSDP_PRIMARY'
*.fast_start_mttr_target=300
*.filesystemio_options='SETALL'
*.java_pool_size=16M
*.job_queue_processes=10
*.large_pool_size=64M
*.local_listener='EGSDP_PRIMARY'
*.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST MANDATORY ARCH
SYNC NOAFFIRM valid_for=(online_logfiles,primary_role)'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_format='EGSDP_D%d_T%tS%sR%r.ARC'
*.log_archive_max_processes=10
*.log_checkpoint_timeout=0
*.log_checkpoints_to_alert=TRUE
*.max_dispatchers=5
*.max_dump_file_size='10240'
*.max_shared_servers=16
*.O7_DICTIONARY_ACCESSIBILITY=FALSE
*.open_cursors=200
*.optimizer_dynamic_sampling=0
*.optimizer_mode='ALL_ROWS'
*.parallel_execution_message_size=4096
*.parallel_max_servers=16
*.pga_aggregate_target=512M
*.processes=300
*.recovery_parallelism=8
*.remote_login_passwordfile='EXCLUSIVE'
*.remote_os_roles=FALSE
*.resource_limit=TRUE
*.sec_case_sensitive_logon=FALSE
*.service_names='EGSDP_PRIMARY'
*.session_cached_cursors=100
*.sessions=335
*.sga_max_size=8000M
*.sga_target=8000M
*.shared_pool_reserved_size=50M
*.shared_pool_size=1000M
*.shared_servers=10
*.sort_area_retained_size=0
*.sort_area_size=0
*.sql92_security=TRUE
*.standby_file_management='AUTO'
*.statistics_level='TYPICAL'
*.timed_statistics=TRUE
*.undo_management='AUTO'
*.undo_retention=600
*.undo_tablespace='UNDOTBS'
*.utl_file_dir='/tmp'
*.workarea_size_policy='auto'
APÉNDICE C: INIT DEL STANDBY (initEGSDP_STANDBY.ora)
EGSDP_PRIMARY.__db_cache_size=7197425664
EGSDP_PRIMARY.__java_pool_size=16777216
EGSDP_PRIMARY.__large_pool_size=67108864
EGSDP_PRIMARY.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from
environment
EGSDP_PRIMARY.__pga_aggregate_target=536870912
EGSDP_PRIMARY.__sga_target=8388608000
EGSDP_PRIMARY.__shared_io_pool_size=0
EGSDP_PRIMARY.__shared_pool_size=1056964608
EGSDP_PRIMARY.__streams_pool_size=0
*._trace_files_public=FALSE
*.aq_tm_processes=1
*.archive_lag_target=900
*.audit_file_dest='/u01/app/oracle/diag/rdbms/EGSDP/EGSDP/adump'
*.audit_sys_operations=FALSE
*.audit_trail='DB'
*.cluster_database=FALSE
*.compatible='11.2.0.3'
*.control_files='/u01/app/oracle/oradata/EGSDP/control/EGSDP_PF_CTL_01.ctl'
,'/u01/app/oracle/oradata/EGSDP/control/EGSDP_PF_CTL_02.ctl','/u01/app/orac
le/oradata/EGSDP/control/EGSDP_PF_CTL_03.ctl'
*.core_dump_dest='/u01/app/oracle/diag/rdbms/EGSDP/EGSDP/cdump'
*.db_block_checking='true'
*.db_block_size=8192
*.db_cache_advice='ON'
*.db_cache_size=6000M
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_files=200
*.db_name='EGSDP'
*.db_recovery_file_dest='/u01/app/oracle/oradata/EGSDP/recovery_area'
*.db_recovery_file_dest_size=30000M
*.db_writer_processes=2
*.diagnostic_dest='/u01/app/oracle'
*.disk_asynch_io=true
*.fal_client='EGSDP_PRIMARY'
*.fal_server='EGSDP_STANDBY'
*.fast_start_mttr_target=300
*.filesystemio_options='SETALL'
*.java_pool_size=16M
*.job_queue_processes=10
*.large_pool_size=64M
*.local_listener='EGSDP_PRIMARY'
*.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST MANDATORY ARCH
SYNC NOAFFIRM valid_for=(online_logfiles,primary_role)'
*.log_archive_dest_2='service=EGSDP_STANDBY OPTIONAL REOPEN=30 LGWR ASYNC
NOAFFIRM valid_for=(online_logfiles,primary_role)'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='DEFER'
*.log_archive_format='EGSDP_D%d_T%tS%sR%r.ARC'
*.log_archive_max_processes=10
*.log_checkpoint_timeout=0
*.log_checkpoints_to_alert=TRUE
*.log_file_name_convert='/u01/app/oracle/oradata/EGSDP','/u01/app/oracle/or
adata/EGSDP'
*.max_dispatchers=5
*.max_dump_file_size='10240'
*.max_shared_servers=16
*.O7_DICTIONARY_ACCESSIBILITY=FALSE
*.open_cursors=200
*.optimizer_dynamic_sampling=0
*.optimizer_mode='ALL_ROWS'
*.parallel_execution_message_size=4096
*.parallel_max_servers=16
*.pga_aggregate_target=512M
*.processes=300
*.recovery_parallelism=8
*.remote_login_passwordfile='EXCLUSIVE'
*.remote_os_roles=FALSE
*.resource_limit=TRUE
*.sec_case_sensitive_logon=FALSE
*.service_names='EGSDP_STANDBY'
*.session_cached_cursors=100
*.sessions=335
*.sga_max_size=8000M
*.sga_target=8000M
*.shared_pool_reserved_size=50M
*.shared_pool_size=1000M
*.shared_servers=10
*.sort_area_retained_size=0
*.sort_area_size=0
*.sql92_security=TRUE
*.standby_file_management='AUTO'
*.statistics_level='TYPICAL'
*.timed_statistics=TRUE
*.undo_management='AUTO'
*.undo_retention=600
*.undo_tablespace='UNDOTBS'
*.utl_file_dir='/tmp'
*.workarea_size_policy='auto'
APÉNDICE D: crea_bd_EG_11g
spool EGSDP_crea_bd.lst

REM *
REM * Debe estar declarada las variables de entorno:
REM * ORACLE_DATABASE Nombre de la base de datos (EGSDP)
REM * ORACLE_SID Nombre del SID de la base de datos para la
instancia del nodo.
REM * ORACLE_HOME Directorio de oracle
REM * ORACLE_BASE Directorio base a partir del cual se
instalan todos los productos de oracle
REM * ORACLE_DATA Directorio de localizacion de los enlaces
simbolicos
REM * ORACLE_STORAGE Directorio de localizacion de los Raw
Devices
REM * ORACLE_ARCHIVE Directorio donde se vuelcan los ficheros de
Redo Log archivados
REM * ORACLE_PFILE Directorio donde se encuentra el directorio
init.ora para ese cluster
REM *

connect / as sysdba
startup nomount pfile=$ORACLE_HOME/dbs/initEGSDP_PRIMARY.ora

REM *
REM * Crea la base de datos
REM * Este nombre debe estar definido en el parametro DB_NAME del fichero
init${ORACLE_SID}.ora
REM *

create database
maxinstances 8
maxloghistory 1
maxlogfiles 192
maxlogmembers 3
maxdatafiles 1024
character set "WE8ISO8859P9"
national character set "AL16UTF16"
controlfile reuse
datafile
'/u01/app/oracle/oradata/EGSDP/dat_001/EGSDP_PF_SYS_01.dbf' size 100M
AUTOEXTEND ON NEXT 10240K extent management local
sysaux datafile
'/u01/app/oracle/oradata/EGSDP/dat_001/EGSDP_PF_SYSAUX_01.dbf' size 50M
AUTOEXTEND ON NEXT 10240K MAXSIZE 1024M
SMALLFILE default temporary tablespace TEMP tempfile
'/u01/app/oracle/oradata/EGSDP/dat_001/EGSDP_PF_TMP_01.dbf' size
50M AUTOEXTEND ON NEXT 640K MAXSIZE 2048M
SMALLFILE undo tablespace UNDOTBS datafile
'/u01/app/oracle/oradata/EGSDP/dat_001/EGSDP_PF_UNDO_01.dbf' size
100M AUTOEXTEND ON NEXT 5120K MAXSIZE 2048M
user SYS identified by "change_on_install" user SYSTEM identified by
"manager"
logfile
group 1
('/u01/app/oracle/oradata/EGSDP/redos_001/EGSDP_PF_RDO_T1G01M1.log') size
50M reuse,
group 2
('/u01/app/oracle/oradata/EGSDP/redos_001/EGSDP_PF_RDO_T1G02M1.log') size
50M reuse;

spool off

APÉNDICE E: crea_bd_EG_11g_2
REM *
REM * En este punto la base de datos debe estar levantada con su init.ora
correspondiente
REM *

connect / as sysdba

set term off


spool EGSDP_crea_catalog.lst

REM *
REM * Crea las vistas del dictionary
REM *
@?/rdbms/admin/catalog.sql

REM * Crea las vistas sobre los bloqueos


@?/rdbms/admin/catblock.sql

REM *
REM * Ejecucion para los procedimientos
REM *
@?/rdbms/admin/catproc.sql

REM * CATalog - Oracle Cryptographic ToolKit


@?/rdbms/admin/catoctk.sql

REM * Workspace Manager (usuario WMSYS)


@?/rdbms/admin/owminst.plb

REM *
REM * Ejecucion para Oracle Cluster
REM *
-- @?/rdbms/admin/catclust.sql
spool off
set term on

REM *
REM * Creacion de tablespaces
REM *
connect / as sysdba
spool EGSDP_crea_tabspcs_datos.lst

REM *
REM * Creacion de tablespaces de datos
REM *

create tablespace PP_DAT datafile


'/u01/app/oracle/oradata/EGSDP/dat_001/EGSDP_PP_DAT_01.dbf' size 200M
reuse autoextend on
segment space management auto;

create tablespace PP_IND datafile


'/u01/app/oracle/oradata/EGSDP/dat_001/EGSDP_PP_IND_01.dbf' size 100M
reuse autoextend on
segment space management auto;

create tablespace PP_LOB datafile


'/u01/app/oracle/oradata/EGSDP/dat_001/EGSDP_PP_LOB_01.dbf' size 100M
reuse autoextend on
segment space management auto;

REM *
REM * Modificacion de usuarios internos
REM *
alter user sys temporary tablespace temp;
alter user system default tablespace PP_DAT temporary tablespace temp;
alter user outln temporary tablespace temp;

connect system/manager

-- @?/rdbms/admin/catdbsyn.sql
@?/sqlplus/admin/pupbld.sql
@?/sqlplus/admin/help/hlpbld.sql helpus.sql

spool off
disconnect

REM *
REM * Creacion del usuario SDP
REM *
@crea_bd_EG_11g_3.sql
APÉNDICE F: crea_bd_EG_11g_3
REM *
REM * En este punto la base de datos tiene que estar levantada con su
correspondiente init.ora
REM *

connect system/manager
spool EGSDP_crea_usuario_SDP.lst

REM *
REM * Creacion del usuario SDP y asignacion de permisos
REM *
create user sdp identified by sdp
default tablespace PP_DAT
temporary tablespace temp
quota unlimited on PP_DAT
quota unlimited on PP_IND;

grant connect to sdp;


grant resource to sdp;
grant select_catalog_role to sdp;

connect / as sysdba

grant select on v_$database to sdp;


grant select on dba_free_space to sdp;
grant select on dba_data_files to sdp;
grant select on dba_tablespaces to sdp;
grant create synonym to sdp;
grant create database link to sdp;
grant create view to sdp;

spool off
disconnect
APÉNDICE G: crea_bd_EG_11g_4
REM *
REM * En este punto la base de datos tiene que estar levantada con su
correspondiente init.ora
REM *

connect / as sysdba
spool EGSDP_post_bd_creation.lst

shutdown immediate;

connect / as sysdba

startup mount;

alter database archivelog;


alter database open;
alter database force logging;
create spfile from pfile;

shutdown immediate;

connect / as sysdba

startup ;

execute utl_recomp.recomp_serial();

host /u01/app/oracle/product/11.2.0.3/db_1/bin/orapwd
file=/u01/app/oracle/product/11.2.0.3/db_1/dbs/orapwEGSDP_PRIMARY
password=&&oracle force=y

REM Para evitar el bloqueo de cuentas de usuario por clave invalida


alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS UNLIMITED;

shutdown immediate;
startup
spool off
disconnect
exit;

También podría gustarte