DBCA en modo Silencioso

Dentro de la totalidad de funciones que desempeña un administrador de bases de datos se encuentra el ser capaz de poder ejecutar tareas independientemente de la plataforma en la cual están las bases de datos que administra, todo Oracle DBA debe saber manejar una base de datos  en Windows, Linux, AIX, Solaris como si se tratara de lo mismo, pues en realidad la base de datos es la misma, es la plataforma la única que cambia. De la mano de esto también va la capacidad de poder administrar dichas bases de datos no solo a través de interfaces gráficas, sino también, a través de una simple terminal. Un DBA que puede instalar el software, crear una base de datos y administrarla sin necesidad de requerir GUI es un DBA completo. Es pues el objetivo de este artículo  proveer una pequeña introducción a “el modo silencioso” e iniciarlos en el inmenso mundo de las configuraciones en línea de comandos. A través de este articulo se verá un ejemplo pequeño, pero claro de cómo se crea una base de datos en RAC utilizando una terminal simple. Dentro de las herramientas más conocidas que cuentan con el modo silencioso están: Oracle Universal Installer (OUI),  Database Configuration Assistant (DBCA), Net Configuration Assistant (NETCA), entre otros.
DBCA – Vista General
El Asistente de configuraciones de Bases de Datos, o simplemente DBCA como acostumbramos llamarlo, ha ayudado a los administradores de bases de datos a realizar las configuraciones de una manera fácil e intuitiva a través de su interfaz gráfica que nos lleva de la mano a lo largo de del proceso que envuelve la tarea que estamos realizando, posee incluso mecanismos para continuar dicha tarea si en dado caso falla por alguna razón y hasta es capaz de avisarnos de cualquier anomalía durante el proceso. No cabe duda que el DBCA en modo gráfico es muy útil, sin embargo, desde el punto de vista técnico es complicado saber exactamente qué está realizando el DBCA en determinado momento pues el estado de la tarea que nos provee es de alguna manera genérica. Es por eso que realizar la misma tarea con la misma herramienta (DBCA) pero que nos provea un poco demás detalle sobre lo que está realizando y a su vez que nos permita controlar exactamente lo que va a realizar es una gran ventaja. Debido a esto es que muchas personas ( yo conozco a muchas) prefieren incluso crear la base de datos manualmente al 100%, es decir, sin usar el DBCA ni siquiera en modo silencioso.
El DBCA puede ser ejecutado desde los binarios de instalación de una base de datos o también puede ser ejecutado después de dicha instalación desde $ORACLE_HOME/bin. El DBCA no solo puede crear bases de datos sino también permite realizar otras tareas muy útiles como: Configurar las opciones de una instancia existente, eliminar una base de datos o incluso crear una plantilla para futuras creaciones de bases de datos, en la siguiente imagen podemos ver el DBCA siendo invocado como parte de la instalación de la base de datos. Si elige el tipo de instalación de facto, el DBCA se verá de la siguiente forma:

En la figura de abajo, podemos ver la ejecución del DBCA de manera independiente:

Problema:
Se necesita crear una base de datos en RAC pero no se tiene acceso a una interfaz gráfica, configurar todo lo necesario para ejecutar el DBCA en modo gráfico podría llevar varios minutos  y solamente tienes 30 minutos para dicha creación de base de datos. Considero que 30 minutos es suficiente para dicha creación utilizando un script que haga todo el trabajo.
Solución:
Si bien es cierto que realizar tareas en línea de comandos es un poco más complejo que el hecho de estar solamente apretando botones en una interfaz grafica, también es cierto que un script es más eficiente. Lo copio, le cambio los valores de los parámetros, lo ejecuto y listo. Teniendo los nodos con todos los prerrequisitos  y apoyándonos de una plantilla podemos llegar a crear esa base de datos en tan solo 30 minutos.
En este articulo se mostrará los comandos necesarios para llevar a cabo esta tarea mediante un script. La base de datos estará sobre RAC 11gR2 (11.2.0.3) y también se explicará cada uno de los parámetros de los comandos ejecutados. Para las personas que ya han creado bases de datos, gestionado plantillas y previamente utilizado el DBCA, verán que es exactamente lo mismo que ir respondiendo a las preguntas que el DBCA en su interfaz gráfica nos hace, solamente que a través de parámetros. Como buena práctica, se recomienda utilizar un archivo con todos los parámetros o “response file”  para evitar mostrar las contraseñas en la terminal que estemos utilizando y de ser posible usar las contraseñas encriptadas, esto con motivos de seguridad.
DBCA – Modo silencioso
A continuación se presenta todos los parámetros a incluir en el comando, a simple vista parece que son demasiados y complejos, pero si ya se está familiarizado con el DBCA en modo grafico, estos comandos nos serán muy familiares y serán muy fácil de comprender.
$ORACLE_HOME/bin/dbca -silent \
-createDatabase \
-templateName  'General_Purpose.dbc' \
-adminManaged \
-emConfiguration NONE \
-gdbName 'ORCL' \
-sid 'ORCL' \
-sysPassword ABC123 \
-systemPassword ABC123 \
-asmSYSPassword ABC123 \
-asmsnmpPassword ABC123 \
-storageType ASM \
-diskGroupName DATA \
-datafileJarLocation $ORACLE_HOME/assistants/dbca/templates \
-nodelist 'node01,node02' \
-characterset WE8MSWIN1252 \
-obfuscatedPasswords false \
-sampleSchema false \
-oratabLocation /etc/oratab \
-initParams db_unique_name=ORCL,processes=7000,db_name=ORCL \
-listeners LISTENER

A continuación se dará una pequeña descripción de cada línea del comando que se ejecutará:

$ORACLE_HOME/bin/dbca -silent - Esta es la parte donde se indica que el DBCA debe ser ejecutado en modo silencioso, es decir, sin cargar la interfaz grafica de java, si yo fuera a utilizar un archivo con parámetros lo único que tendría que agregar al comando es el parámetro -ResponseFile, por lo que el comando completo quedaría así:
$ORACLE_HOME/bin/dbca -silent -ResponseFile <Ruta_archivo_de_parámetros>

-createDatabase – Este es el parámetro que le indica al DBCA que debe crear una nueva base de datos, como pudieron ver anteriormente, el DBCA no solamente sirve para crear bases de datos sino también tiene otras funcionalidades más.

-templateName 'General_Purpose.dbc' – Con este parámetro se le indica al  DBCA que cree una base de datos basándose en una plantilla. En este caso se está utilizando una de las plantillas que Oracle proporciona de facto llamada “General_Purpose.dbc”, sin embargo, Oracle provee también la plantilla “Oracle Data_Warehouse.dbc” o también se puede utilizar una creada por nosotros mismos.

-adminManaged – Con este parámetro se indica de qué manera serán gestionados los recursos de la base de datos, esta funcionalidad es llamada “Policy Managed”:
Administrator Managed: Con esta política todos los recursos son manejados manualmente por el DBA. Esta es prácticamente la forma en que que Oracle trabajaba en versiones anteriores a 11gR2.
Policy Managed: Con esta policita el DBA únicamente especifica en que pool de servidores se ejecutarán los recursos y el Clusterware de Oracle es el responsable de gestionarlos.
-emConfiguration NONE – Dado que esta base de datos se creará para fines de estudio no necesitamos configurar el Enterprise Manager por lo tanto estamos indicando que no se configure.
-gdbName 'ORCL' – Este es el nombre global de la base de datos.
-sid 'ORCL' – Este es el SID de la base de datos.
-sysPassword ABC123 – La contraseña del usuario SYS.
-systemPassword ABC123 – La contraseña del usuario SYSTEM.
-asmSYSPassword ABC123 – La contraseña de ASMSYS
-asmsnmpPassword ABC123 - La contraseña de ASMSNMP
-storageType ASM – Con este parámetro se indica en donde se crearán todos los archivos de la base de datos, ASM es la solución más popular hoy en día, sin embargo también se puede hacer uso de otro Filesystem siempre y cuando esté soportado por Oracle.

-diskGroupName DATA – Dado que se utilizará ASM para esta creación de base de datos debemos especificar el nombre del “Diskgroup” que se utilizará para guardar los archivos, dicho nombre lo hemos establecido a “DATA”.

-datafileJarLocation $ORACLE_HOME/asistentes/DBCA/templates – Este parámetro es utilizado cuando se realizará una operación basada en plantilla, dado que indicamos que utilizará la plantilla de propósitos generales este parámetro debe de ser especificado. Este parámetro indica la ruta de los archivos de la plantilla.
-nodelist 'node01, node02' – Este parámetro le indica al DBCA cuales serán los nodos que formen parten de esta base de datos.
  
-characterset WE8MSWIN1252 – Este parámetro indica cual será el set de caracteres con que se creará la base de datos.
-obfuscatedPasswords false – Este parámetro indica sí se utilizará contraseñas encriptadas.
-sampleSchema false – Este parámetro indica si los esquemas de ejemplo serán creados (HR / OE / Scott y otros)
-oratabLocation /etc/oratab – Este parámetro indica en que lugar se encuentra el archivo oratab.

-initParams db_unique_name=ORCL,processes=7000,db_name=ORCL – También se puede especificar parámetros de la instancia.   

-listeners LISTENER – Indicamos el nombre del Listener.
Ejemplo:
[oracle@oel62-11g ~]$ $ORACLE_HOME/bin/dbca -silent -createDatabase  -templateName  'General_Purpose.dbc'  
-adminManaged -emConfiguration NONE -gdbName 'ORCL' -sid 'ORCL' -sysPassword  ABC123 -systemPassword ABC123 
-asmSYSPassword ABC123 -asmsnmpPassword ABC123  -storageType ASM -diskGroupName DATA -datafileJarLocation  
$ORACLE_HOME/assistants/dbca/templates -nodelist 'node01,node02' -characterset  WE8MSWIN1252 -obfuscatedPasswords 
false -sampleSchema false -oratabLocation  
/etc/oratab -initParams db_unique_name=ORCL,processes=7000,db_name=ORCL  -listeners LISTENER
Copying database files
1% complete
3% complete
30% complete
Creating and starting Oracle instance
32% complete
36% complete
40% complete
44% complete
45% complete
48% complete
50% complete
Creating cluster database views
52% complete
70% complete
Completing Database Creation
73% complete
76% complete
85% complete
94% complete
100% complete

Look at the log file "/oracle/app/product/cfgtoollogs/dbca/ORCL/ORCL.log"  for further details.

Verificando los servicios:
[oracle@oel62-11g ~]$ crs_stat -t

Name           Type           Target    State     Host        
----------------------------------------------------------
ora.DATA.dg    ora....up.type ONLINE    ONLINE    node01  
ora.GRDINF.dg  ora....up.type ONLINE    ONLINE    node01  
ora....ER.lsnr ora....er.type ONLINE    ONLINE    node01  
ora....N1.lsnr ora....er.type ONLINE    ONLINE    node02  
ora....N2.lsnr ora....er.type ONLINE    ONLINE    node01  
ora....N3.lsnr ora....er.type ONLINE    ONLINE    node01  
ora.asm        ora.asm.type   ONLINE    ONLINE    node01  
ora....SM1.asm application    ONLINE    ONLINE    node01  
ora....01.lsnr application    ONLINE    ONLINE    node01  
ora....i01.gsd application    OFFLINE   OFFLINE               
ora....i01.ons application    ONLINE    ONLINE    node01  
ora....i01.vip ora....t1.type ONLINE    ONLINE    node01  
ora....SM2.asm application    ONLINE    ONLINE    node02  
ora....02.lsnr application    ONLINE    ONLINE    node02  
ora....i02.gsd application    OFFLINE   OFFLINE               
ora....i02.ons application    ONLINE    ONLINE    node02  
ora....i02.vip ora....t1.type ONLINE    ONLINE    node02  
ora.cvu        ora.cvu.type   ONLINE    ONLINE    node01  
ora.glipod.db  ora....se.type ONLINE    ONLINE    node01  
ora.gsd        ora.gsd.type   OFFLINE   OFFLINE               
ora....network ora....rk.type ONLINE    ONLINE    node01  
ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    node01  
ora.ons        ora.ons.type   ONLINE    ONLINE    node01  
ora.scan1.vip  ora....ip.type ONLINE    ONLINE    node02  
ora.scan2.vip  ora....ip.type ONLINE    ONLINE    node01  
ora.scan3.vip  ora....ip.type ONLINE    ONLINE    node01  

Verificando la configuración del Cluster
[oracle@oel62-11g ~]$ srvctl config database  –d ORCL
srvctl config database -d ORCL
Database unique name: ORCL
Database name: ORCL
Oracle home: /oracle/app/product/11203/db_1
Oracle user: oracle
Spfile: +DATA/ORCL/spfileORCL.ora
Domain: 
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: ORCL
Database instances: ORCL1,ORCL2
Disk Groups: DATA
Mount point paths: 
Services: 
Type: RAC
Database is administrator managed

Verificando la base de datos
[oracle@oel62-11g ~]$ sqls
SQL*Plus: Release 11.2.0.3.0 Production on Fri Oct 17 18:41:32 2014
Copyright (c) 1982, 2011, Oracle.   All rights reserved.
 
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit  Production
With the Partitioning, Real Application Clusters, Automatic Storage  Management, OLAP,
Data Mining and Real Application Testing options
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
+DATA/orcl/datafile/users.277.861020021
+DATA/orcl/datafile/undotbs1.256.861020021
+DATA/orcl/datafile/sysaux.257.861020019
+DATA/orcl/datafile/system.264.861020019
+DATA/orcl/datafile/undotbs2.396.861020113

Comentarios

Entradas populares de este blog

Installing Oracle GoldenGate for Oracle 12c

Replicación de datos con múltiples procesos "Extract" y "Replicat" con el modo de captura integrada utilizando Oracle GoldenGate 12c

How To Rename ASM Diskgroup With RAC Database