Creación de una base de datos en Windows

Este post tiene la intención de mostrar cómo se puede crear una base de datos por medio de scripts en Windows. Haremos la instalación de la versión 10.2.0.1 con un upgrade a 10.2.0.4. Escogí estas versiones porque son las que predominan en este momento. Espero hacer después un post con la nueva versión 11g.

Nota. Todas las imagenes incluidas en este post están reducidas, para verlas en tamaño real, hay que darles clic.

Software necesario

Primero debemos obtener el software para la instalación de la base de datos. Para eso, debemos ir a la página de Oracle para bajar el software base. El parche para el upgrade, es el número 6810189 y se puede bajar de Metalink.

Ya que tenemos el software de la base de datos y el parche, procedamos con la instalación, para esto, debemos tener ya 2 carpetas una con el software de la base de datos y otra con el parche:

db_inst_software

Instalación RDBMS 10.2.0.1

Entramos en la carpeta del software de instalación de la base de datos para correr el programa Setup.exe:

db_inst_10201

Con esto, nos aparece el diálogo inicial del wizard de instalación de la base de datos, de éste, seleccionamos la opción Instalación Avanzada:

db_inst_10201_01

Después de presionar el botón Siguiente, en el diálogo que aparece, seleccionar el tipo de instalación, para efectos que podamos hacer pruebas completas de cualquier cosa, hay que elegir Enterprise Edition:

db_inst_10201_02

Aquí, antes de presionar el botón Siguiente, hay que realizar un paso importante. Muchas veces, las traducciones que se hacen de productos que nacieron en inglés, no están bien hechas, por lo que recomiendo ampliamente instalar en dicho idioma el RDBMS. Esta selección se ve reforzada por el hecho de que los errores y su solución, se encuentran en el internet en ese idioma. Así, hay que presionar el botón Idioma del producto con lo que aparece el siguiente diálogo:

db_inst_10201_03

De dicho diálogo, seleccionamos Español (México) o el país que aparezca, y con el botón <, se quita dicho idioma quedando como sigue:

db_inst_10201_04

Después de esto, presionamos Aceptar y en el diálogo original, Siguiente para que nos aparezca el que se muestra a continuación:

db_inst_10201_05

En él, le ponemos un nombre a nuestra instalación, en este caso, elijo db10_home para delimitarla, después, presiono Examinar para elegir el directorio de instalación:

db_inst_10201_06

En él, si no se tiene ya creado un directorio para el software de la base de datos, se puede teclear en el campo Directorio. De acuerdo a la OFA, y de acuerdo a mi post de Distribución de particiones en Windows, la estoy instalando en mi partición de Oracle en el directorio E:\Oracle\Product\10.2.0. Después de presionar el botón Aceptar, regresamos al diálogo anterior ya con los datos correctos:

db_inst_10201_071

Del mismo, presionamos Siguiente para llegar al diálogo que se muestra enseguida, donde se hace un análisis de los requisitos necesarios para la instalación y buen funcionamiento de la base de datos:

db_inst_10201_08

En este caso, marca un warning por un fallo en el análisis de la configuración de DHCP. Esto, no es problema para nuestra instalación, así que le damos Siguiente, llegando al diálogo:

db_inst_10201_09

En dicho diálogo, es donde podemos crear una base de datos de inicio. Como nuestro objetivo, es crearla manualmente, elegiremos la opción Instalar sólo Softare de Base de datos. Esto y presionando el botón Siguiente, nos lleva al diálogo:

db_inst_10201_10

En este, se presenta el resumen de lo que se ha configurado en los diálogos anteriores. Aquí, nos resta presionar el botón Instalar para comenzar con la instalación:

db_inst_10201_11

y finalizar con la pantalla de confirmación de que la instalación fue exitosa:

db_inst_10201_12

Instalación Parche 10.2.0.4

Una vez instalado el RDBMS 10.2.0.1, vamos a proceder a un upgrade sencillo (sin la existencia de una base de datos) a la versión 10.2.0.4. Para esto, vamos a la carpeta donde se depositó el software del upgrade:

db_inst_patchsetup

Al dar doble-clic al Setup.exe, nos aparecerá un diálogo como el que sigue:

db_inst_patchsetup_01

En él, simplemente damos clic a Siguiente, con lo que nos aparecerá el siguiente diálogo:

db_inst_patchsetup_02

En este, hay que seleccionar por medio de la flecha del campo Nombre, el nombre de la instalación a la cual, le haremos el upgrade. Automáticamente, en la parte de Ruta de Acceso, aparece la ruta donde instalamos nuestro RDBMS 10.2.0.1. Una vez que los datos están correctos, presionamos el botón Siguiente para que aparezca el diálogo de verificación de pre-requisitos:

db_inst_patchsetup_03

En este caso, aparecen todos correctos, si hubiera algún problema, nos podemos apoyar siempre de Metalink para resolverlos. Una vez que todo está correcto, presionamos el botón Siguiente hasta  llegar al diálogo que muestro enseguida:

db_inst_patchsetup_05

En ella se puede ver el resumen de lo que estamos por instalar, de aquí, nos resta presionar el botón Instalar para que comience el proceso:

db_inst_patchsetup_06

Y finalmente, ver el diálogo de que todo quedó instalado correctamente.

db_inst_patchsetup_07

Con esto, ya nuestro software de la base de datos ha quedado actualizado a la versión 10.2.0.4.

db_inst_final

Directorios y archivos importantes

Ahora requerimos tener los directorios y archivos importantes en nuestra estructura de disco. Para lograr esto, vamos a hacer una lista lo que tenemos que tener:

Pfile

Es el archivo que determina el comportamiento de la base de datos. Se puede aprender un poco más de esto en Pfile vs Spfile. De momento, incluyo aquí un ejemplo de un archivo Pfile que uso para crear mi base de datos de ejemplo.

background_dump_dest='E:\oracle\product\admin\bdump'
compatible='10.2.0.1.0'
control_files='E:\oracle\product\admin\ctl\lab01.ctl','E:\oracle\product\admin\ctl\lab02.ctl'
core_dump_dest='E:\oracle\product\admin\cdump'
db_cache_size=200M
db_block_size=16384
db_file_multiblock_read_count=16
DB_FILES=1500
db_flashback_retention_target=0
db_name='lab'
java_pool_size=25M
large_pool_size=200M
job_queue_processes=20
open_cursors=300
optimizer_index_cost_adj=50
parallel_execution_message_size=65535
parallel_max_servers=64
parallel_min_servers=2
parallel_threads_per_cpu=1
pga_aggregate_target=1063256064
processes=400
query_rewrite_enabled='true'
remote_login_passwordfile='EXCLUSIVE'
shared_pool_size=200M
undo_management='AUTO'
undo_tablespace='UNDOTBS'
undo_retention=300
user_dump_dest='E:\oracle\product\admin\udump'
query_rewrite_enabled=true
recyclebin=OFF
sort_area_size=524288
sort_area_retained_size=65536

Este archivo, deberá llamarse initSID.ora. En este caso, se llama initlab.ora y puesto que estamos poniendo en Windows la base de datos, deberá estar ORACLE_HOME\Database.

db_inst_initlab

Directorios a usar

Los parámetros background_dump_dest, core_dumb_dest y user_dump_dest, determinarán la creación de 3 carpetas muy importantes en nuestra estructura del disco. En nuestro ejemplo, la crearemos en e:\oracle\product\admin, las carpetas llevan el nombre bdump, cdump y udump.

Dentro de la misma estructura y por tener un sólo sitio para poner los control files y los database files, agrego una carpeta para cada uno, quedando mi estructura como sigue:

db_inst_adminfld

Tnsnames.ora

Es el archivo que se usa por parte de software de Oracle para crear la conexión con el listener de la base de datos. A continuación, muestro un ejemplo de este archivo ya acoplado para mi instalación actual:

lab =
  (description =
     (address_list =
           (address =
              (protocol = tcp)
              (host     = localhost)
              (port     = 1688)
           )
     )
     (connect_data =
           (sid = lab)
           (server = dedicated)
     )
  )

De aquí, señalo en negritas lo importante:

lab es el alias de nuestra conexión a nuestra base de datos, es el connect string que pide Oracle para conectarse acompañado del usuario y el password.

host es la ip o nombre de la computadora donde uno se conecta. En este caso, se pone localhost para que busque la ip en la misma computadora.

port es el número de puerto en el que el listener está “escuchando”.

sid es el nombre de nuestra instancia, igual al que ponemos en el ORACLE_SID.

Este archivo deberá estar en el ORACLE_HOME\network\admin.

Listener.ora

Es el archivo que determina, cómo la aplicación Listener de Oracle, estará “escuchando” las peticiones de conexión a la base de datos. Muestro enseguida, un ejemplo de este archivo:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1688))
      )
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = lab)
      (ORACLE_HOME = e:\oracle\product\10.2.0)
    )
  )

En él, en negritas, nuevamente aparecen los datos explicados en la parte del tnsnames.ora. Este archivo, también deberá residir en el ORACLE_HOME\network\admin.

Sqlnet.ora

Bajo ciertas configuraciones, es necesario cambiar los parámetros de este archivo que reside en el ORACLE_HOME\network\admin.  En este caso y para Windows, le estoy poniendo el valor NTS a los dos parámetros del mismo:

SQLNET.AUTHENTICATION_SERVICES = (NTS)
SQLNET.AUTHENTICATION = (NTS)

Al final de la configuración de los 3 últimos archivos y después de ponerlos en el ORACLE_HOME\network\admin, deberá verse algo así en dicho directorio:

db_inst_networkfld

Creación de la base de datos

Ya que tenemos todos los archivos y directorios en su lugar, nos resta el crear la base de datos. Para esto, tenemos que seguir los pasos que enumero a continuación:

1. Variables de ambiente.

En ella ambientarnos con las variables ORACLE_HOME y ORACLE_SID. La primera determina el directorio de instalación del RDBMS y la segunda el nombre de la base de datos. El formato para asignar estas variables, es:

set [VARIABLE=valor]
usar set solo, para ver el valor de las variables de ambiente

por ejemplo:

db_creacion01

2. Creación del servicio.

En el caso de Windows, se requiere la creación de un servicio para levantar la instancia de la base de datos. Para esto, usamos el siguiente comando:

ORADIM -NEW -SID nombre_sid -INTPWD password -STARTMODE MANUAL -PFILE ORACLE_HOME\database\initSID.ora

Si se requiere borrar un servicio, se usa:

ORADIM -DELETE -SID nombre_sid

En este caso, mi nombre_sid es lab como ya lo hemos visto y lo ejecutaremos desde ORACLE_HOME\bin:

db_creacion02

Con esto, ya estará creado nuestro servicio y lo podemos ver en Panel de Control – Herramientas Administrativas – Servicios, el servicio que se crea tiene el formato OracleServiceSID como se puede ver a continuación:

db_creacion03

3. Creación de la base de datos.

Ya que está creada nuestra instancia por medio del servicio, vamos a crear nuestra base de datos. Para esto, usaremos un script como el que sigue para una base de datos de tamaño pequeño apta para nuestras pruebas:

startup nomount pfile=%ORACLE_HOME%\database\initlab.ora
CREATE DATABASE lab
    MAXDATAFILES  500
    MAXINSTANCES  1
    MAXLOGFILES   8
    MAXLOGMEMBERS 4
    CHARACTER SET UTF8
    DATAFILE
        'e:\oracle\product\admin\oradata\labsyst01.dbf' size 300M
    DEFAULT TEMPORARY TABLESPACE TEMP
         TEMPFILE 'e:\oracle\product\admin\oradata\labtemp01.dbf' size 500M
         EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
    LOGFILE
        GROUP 1 (
        'e:\oracle\product\admin\oradata\lab1a.rdo',
        'e:\oracle\product\admin\oradata\lab1b.rdo')       size 20M,
        GROUP 2 (
        'e:\oracle\product\admin\oradata\lab2a.rdo',
        'e:\oracle\product\admin\oradata\lab2b.rdo')       size 20M
    SYSAUX
        DATAFILE 'e:\oracle\product\admin\oradata\labaux01.dbf' size 300M
    UNDO TABLESPACE UNDOTBS
        DATAFILE 'e:\oracle\product\admin\oradata\labundo01.dbf' size 500M
/

Como se puede ver, la base de datos se llama lab, tendrá el character set UTF8 con un data file para cada uno de los  Tablespaces: System de 300mb, Temp de 500mb, Sysaux de 300mb y Undo de 500mb. El nombre del Tablespace Undo deberá concordar con el nombre que se agregó para dicho tablespace en el Pfile.

Se están incluyendo 2 grupos de 2 redo logs con espacio de 20mb para cada grupo.

Para realizar esto, nos tenemos que conectar a la base de datos como sqlplus / as sysdba, para conectarnos como el administrador total de la misma. Esto lo hacemos desde ORACLE_HOME\bin:

db_creacion04

4. Correr catálogos.

Una vez que está creada la base de datos, hay que correr los catálogos para la creación de todos los objetos del diccionario de la base de datos. Estos son:

con sys:
@%ORACLE_HOME%\rdbms\admin\catalog.sql
@%ORACLE_HOME%\rdbms\admin\catproc.sql
@%ORACLE_HOME%\rdbms\admin\catexp.sql
@%ORACLE_HOME%\rdbms\admin\catblock.sql
con system:
@%ORACLE_HOME%\sqlplus\admin\pupbld.sql
@%ORACLE_HOME%\rdbms\admin\catdbsyn.sql

db_creacion05

En el caso de los scripts de system, antes de ejecutarlos, hay que asignar un password a dicho usuario y cambiarse a él para poder ejecutar los catálogos que le corresponden:

db_creacion06

5. Creación del resto de objetos de la base de datos.

A partir de este punto, ya nuestra base de datos está creada y lista. Lo que resta, es la creación de los objetos restantes como usuarios, tablespaces, tablas, y demás para poder satisfacer las necesidades a la información. Es necesario recordar que para conectarse remotamente a la misma o desde una aplicación como el SQL Plus para Windows, tiene que estar levantado el listener.

Para esto, desde el sistema operativo en ORACLE_HOME\bin, ejecutamos el lsnrctl start. Por ejemplo:

db_creacion07

Conclusión

Espero que este Post les haya sido de utilidad, como siempre, está hecho con la mejor de mis intenciones y para que puedan aplicar este conocimiento para la mejora en su desempeño con la base de datos Oracle.

Posteriormente, espero crear un post para hacer un upgrade de una base de datos ya creada.

Glosario

OFAOptimal Flexible Architecture, es un estándar desarrollado por Oracle para la instalación de sus productos. Este generalmente tiene la rama /Oracle/Product/producto, donde producto es por ejemplo, lo que se ve en este Post, 10.2.0 para dar a entender que es una base de datos de esta versión. Tengo un post llamado ¿Qué es la OFA?, donde podrán ver más detalles.

Parche – Es un software que se aplica a otro para corregir problemas o mejorar características que ya se tengan a un software determinado. Los parches aplican a cualquier software, desde bases de datos, sistemas operativos, etcétera.

RDBMS – Relational Data Base Management System, es básicamente, el software manejador de la base de datos. Hay diversos en el mercado, Oracle (que vemos bastante en mi blog), DB2 de IBM, Informix de Unix, SQL Server de Microsoft, etcétera.

Upgrade – Es la actualización de un software de una determinada versión a otra, por medio de la instalación de un software e incluso, el movimiento de parámetros.

Si la información de este post te ha sido de utilidad o quieres que agregue algo más, deja por favor un comentario, contestaré a la brevedad.

Anuncios

2 Responses to Creación de una base de datos en Windows

  1. Andrés Carrillo says:

    Excelente tuto bastante funcional y muy claro es uno de los mejores que he visto

  2. Orlando Olguín Olvera says:

    Hola Andrés.

    Qué bueno que te ha sido de utilidad.

    Orlando.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: