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.
-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
Publicar un comentario