Scripts de creación de Base de Datos Oracle 9i y 10g

En ciertas circunstancias un DBA debe ser capaz de crear una base de datos Oracle sin ayuda de los utilitarios gráficos disponibles en Oracle (DBCA).

Es bueno experimentar con la creación manual de bases de datos Oracle, ya que entrega una experiencia que permite entender y decantar muchos conceptos en relación al funcionamiento del motor Oracle.

Este artículo describe las tareas que el DBA debe realizar para crear una base de datos en ambiente (Linux-Unix) haciendo uso solo de la clásica consola de administración sqlplus.

Pasos para crear una base de datos Oracle:

  1. Decidir  nombre único para la instancia, nombre de base de datos, tamaño del bloque Oracle, set de caracteres, número máximo de archivos de datos, y número máximo de archivos de redolog.
  2. Decidir la estructura de almacenamiento físico de la base de datos (ASM, File System, Raw Devices) . En el ejemplo se usa almacenamiento por file system, y se han definido y creado los puntos de montaje de acuerdo al modelo OFA de Oracle.
  3. Copiar y editar el archivo de parámetros (init.ora) que permite inicializar la instancia Oracle.
  4. Configurar las variables apropiadas del sistema operativo (ORACLE_SID), otras variables tales como ORACLE_HOME, ORACLE_BASE deberian estar previamente definidas.
  5. Crear archivo de password (según el valor que se haya definido para el parámetro REMOTE_LOGIN_PASSWORDFILE)
  6. Invocar el SQLPLUS y conectarse a la base como sysdba.
  7. Iniciar la instancia en estado NOMOUNT. En este estado se crea una base de datos nueva.
  8. Crear la base de datos (ejecutar script de creación de la base de datos)

Ejemplo de archivo de parámetro inittest.ora

*.audit_file_dest=’/u01/app/oracle/admin/test/adump’

*.background_dump_dest=’/u01/app/oracle/admin/test/bdump’*.compatible=’10.2.0.1.0′

*.control_files=’/u02/oradata/test/control01.ctl’, ‘/u02/oradata/test/control02.ctl’,’/u02/oradata/test/control03.ctl’
*.core_dump_dest=’/u01/app/oracle/admin/test/cdump’
*.db_block_size=8192
*.db_domain=’midominio.cl’
*.db_file_multiblock_read_count=16
*.db_name=’test’
*.db_recovery_file_dest=’/u01/app/oracle/flash_recovery_area’
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=testXDB)’
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=92274688
*.processes=150
*.remote_login_passwordfile=’EXCLUSIVE’
*.sga_target=277872640
*.undo_management=’AUTO’
*.undo_tablespace=’TS_UNDO’
*.user_dump_dest=’/u01/app/oracle/admin/test/udump’

Ver archivo inittest.ora inittest

Ejemplo de Creación Manual de Base de Datos Oracle 9i

En los ejemplos que vienen a continuación se ha preparado un archivo llamado inittest.ora que contiene los parámetros de la instancia llamada test.

u01/app/oracle/database/oracle9iR2/dbs >sqlplus «/ as sysdba»

SQL*Plus: Release 9.2.0.2.0 – Production on Wed Apr 05 14:08:37 2006

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Connected to an idle instance.

SQL> startup nomount pfile=?/dbs/inittest.ora
ORACLE instance started.

Total System Global Area  160925320 bytes
Fixed Size                   730760 bytes
Variable Size             109051904 bytes
Database Buffers           50331648 bytes
Redo Buffers                 811008 bytes

SQL> CREATE DATABASE test
LOGFILE group 1 (‘/u01/oradata/test/redolog1a.dbf’,
‘/u02/oradata/test/redolog1b.dbf’ ) SIZE 10M,
group 2 (‘/u01/oradata/test/redolog2a.dbf’,
‘/u02/oradata/test/redolog2b.dbf’ ) SIZE 10M,
group 3 (‘/u01/oradata/test/redolog3a.dbf’,
‘/u02/oradata /test/redolog3b.dbf’ ) SIZE 10M
DATAFILE ‘/u02/oradata/test/system01.dbf’ SIZE 200M
CHARACTER SET WE8ISO8859P1
national character set utf8
EXTENT MANAGEMENT LOCAL
undo tablespace ts_undo
datafile ‘/u02/oradata/test/undo01.dbf’
size 50M
default temporary tablespace ts_temp
tempfile ‘/u02/oradata/test/temp01.dbf’
size 50M autoextend on next 50M maxsize 300M;

Si se genera un error ORA-01031: insufficient privileges, eso significa que lo más probable, es que el usuario actual no está en el grupo dba (en unix), o en el grupo ORA_DBA (Windows).

Si el archivo init.ora no está en su ubicación por defecto o no se ha encontrado con el atributo pfile, se genera un error ORA-01078: failure in processing system parameters y  se emite un error LRM-00109: could not open parameter file ‘/u01/app/oracle/product/database/9.2.0/db_1/dbs/inittest.ora’

Ejemplo de Creación Manual de Base de Datos Oracle 10g

/u01/app/oracle/product/database/10.2.0/db_1/dbs >sqlplus «/ as sysdba»

SQL*Plus: Release 10.2.0.1.0 – Production on Wed Apr 05 14:08:37 2007

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

Connected to an idle instance.

SQL> startup nomount pfile=?/dbs/inittest.ora
ORACLE instance started.

Total System Global Area  160925320 bytes
Fixed Size                   730760 bytes
Variable Size             109051904 bytes
Database Buffers           50331648 bytes
Redo Buffers                 811008 bytes

SQL>CREATE DATABASE test
LOGFILE group 1 (‘/u01/oradata/test/redolog1a.dbf’,
‘/u02/oradata/test/redolog1b.dbf’ ) SIZE 10M,
group 2 (‘/u01/oradata/test/redolog2a.dbf’,
‘/u02/oradata/test/redolog2b.dbf’ ) SIZE 10M,
group 3 (‘/u01/oradata/test/redolog3a.dbf’,
‘/u02/oradata/test/redolog3b.dbf’ ) SIZE 10M
DATAFILE ‘/u02/oradata/test/system01.dbf’ SIZE 400M autoextend on next 16M maxsize unlimited
CHARACTER SET WE8ISO8859P1
national character set utf8
EXTENT MANAGEMENT LOCAL
sysaux datafile ‘/u02/oradata/test/sysaux01.dbf’ size 300M autoextend on next 16M maxsize unlimited
undo tablespace ts_undo
datafile ‘/u02/oradata/test/undo01.dbf’ size 50M autoextend on next 16M maxsize unlimited
default temporary tablespace ts_temp
tempfile ‘/u02/oradata/test/temp01.dbf’ size 50M autoextend on next 50M maxsize 300M
/

El comando anterior lo puede obtener haciendo clicl crea_db

El comando create database también ejecuta un archivo cuyo nombre es determinado por el parámetro de inicio (oculto) _init_sql_file. Después de la creación de la base de datos, ésta puede ser montada y abierta para su uso.

Una vez creada la base de datos cruda, se deben completar algunas tareas adicionales:

Tareas de post creación de la base de datos

Una vez que se ha creado la base datos con el comando create database, ésta debe ser complementada con la ejecución de algunos scripts para crear el catálogo y la opción procedural que permite ejecutar programas PL/SQL.

Ejecute como SYS
·    ?/rdbms/admin/catalog.sql
·    ?/rdbms/admin/catproc.sql y

Donde ? representa un shortcut para el valor de la variable de ambiente $ORACLE_HOME (solo en sqlplus)

catalog.sql llama, por ejemplo, a catexp.sql que es un requisito para el utilitario exp que permite crear respaldos lógicos o dbmsstdx.sql que es un requisito para crear triggers.

El usuario  system también puede ejecutar ?/sqlplus/admin/pupbld.sql. pupbld.sql crea una tabla que permite bloquear a alguien más el uso de sqlplus.