lunes, 10 de enero de 2011

Crear Una Base de Datos Oracle 11gR2 en Linux - Parte III

Bienvenidos a un nuevo año aqui en Oracle en Español, y para empezar este 2011, vamos a terminar con la serie de crear una base de datos en Linux, para los que llegan directo a esta serie, la Parte I cubre la instalacion de la maquina virtual y el sistema operativo Linux , la Parte II cubre la instalacion de los binarios de Oracle e hicimos una entrada especial para los prerequisitos de la instalacion de los binarios.


Verificar Variable de Ambiente

Aqui tenemos que decidir el nombre que va a tener nuestra instancia, aunque ya es algo que vimos en los prerequisitos, mas vale volver a verificar el nombre, aqui un ejemplo utilizando Korn shell, si utilizas C Shell, usa el comando setenv

  • variable ORACLE_SID
    export ORACLE_SID=TESTDB 
  • variable ORACLE_BASE
    export ORACLE_BASE='/mount/oracle'
  • variable ORACLE_HOME
    export ORACLE_HOME='/mount/oracle/product/11.2.0.2v1'
  • variable PATH
    export PATH=$ORACLE_HOME/bin:$PATH
Crear el archivo de parametros

Aqui esta un ejemplo de un archivo init para que arranques, este no es para nada uno a tener en produccion ya que ese tiene que ser revisado para las necesidades de la instancia, pero para nuestras pruebas, con este es mas que suficiente.Este archivo lo guarde en la siguiente ruta /mount/dba01/oracle/TESTDB/pfile/initTESTDB.ora, tu lo puedes guardar en la ruta que a ti te sirva y lo puedas tener a la mano.

audit_file_dest ='/mount/oracle/dump01/TESTDB/adump'
audit_trail ='db'
compatible ='11.2.0'
control_files = (/mount/u01/oracle/TESTDB/control/control01.ctl,
/mount/u01/oracle/TESTDB/control/control02.ctl)
db_block_size =8192
db_domain =''
db_name ='TESTDB'
db_recovery_file_dest ='/mount/oracle/copy01/flash_recovery_area/TESTDB'
db_recovery_file_dest_size =2G
diagnostic_dest ='/mount/oracle/dump01'
memory_target =1G
open_cursors =300
processes =150
remote_login_passwordfile ='EXCLUSIVE'
undo_tablespace ='UNDOTBS1'

Conectarnos a la base de datos y crear el archivo de parametros binario a partir del archivo initTESTDB.ora

Nos vamos a conectar a la base de datos autenticandonos con el sistema operativo y una vez conectados vamos a crear el archivo binarios (spfile).


$ sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> CREATE SPFILE
FROM PFILE = '/mount/dba01/oracle/TESTDB/pfile/initTESTDB.ora';

Crear Nuestra Base de Datos

Una vez que creamos nuestro archivo binario de parametros, vamos a levantar la base de datos en modo nomount

SQL> startup nomount;

Ahora vamos a correr el siguiente SQL para crear nuestra base de datos. Vamos a inicializar la instancia con el comando

SQL> CREATE DATABASE TESTDB
   USER SYS IDENTIFIED BY sys_password
   USER SYSTEM IDENTIFIED BY system_password
   LOGFILE GROUP 1 ('/mount/u01/oracle/TESTDB/redo01a.log','/mount/u02/oracle/TESTDB/redo01b.log') SIZE 100M ,
           GROUP 2 ('/mount/u01/oracle/TESTDB/redo02a.log','/mount/u02/oracle/TESTDB/redo02b.log') SIZE 100M ,
           GROUP 3 ('/mount/u01/oracle/TESTDB/redo03a.log','/mount/u02/oracle/TESTDB/redo03b.log') SIZE 100M
   MAXLOGFILES 5
   MAXLOGMEMBERS 5
   MAXLOGHISTORY 1
   MAXDATAFILES 100
   CHARACTER SET UTF8
   NATIONAL CHARACTER SET AL16UTF16
   EXTENT MANAGEMENT LOCAL
   DATAFILE '/mount/u01/oracle/TESTDB/data/system01.dbf' SIZE 500M REUSE
   SYSAUX DATAFILE '/mount/u01/oracle/TESTDB/data/sysaux01.dbf' SIZE 500M REUSE
   DEFAULT TABLESPACE users
      DATAFILE '/mount/u02/oracle/TESTDB/data/users01.dbf'
      SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
   DEFAULT TEMPORARY TABLESPACE tempts1
      TEMPFILE '/mount/u02/oracle/TESTDB/data/temp01.dbf'
      SIZE 20M REUSE
   UNDO TABLESPACE undotbs1
      DATAFILE '/mount/u01/oracle/TESTDB/data/undotbs01.dbf'
      SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

Correr scripts para crear las vistas del Diccionario de Datos

Una vez que la base de datos se haya creado, vamos a correr los siquientes tres scripts para crear las vistas y procedimientos del diccionario de datos, este es un paso obligatorio asi que no te lo saltes, catalog.sql y catproc.sql deben de correr con el usuario sys y los encuentras en $ORACLE_HOME/rdbms/admin, el script pupbld.sql debe de correr con el usuario system y lo encuentras en el directorio $ORACLE_HOME/sqlplus/admin. Aqui un ejemplo de como correrlos:


TESTDB >CONNECT SYS AS SYSDBA
spool catalog.log
@/mount/oracle/product/11.2.0.2v1/rdbms/admin/catalog.sql
spool off
spool catproc.log
@/mount/oracle/product/11.2.0.2v1/rdbms/admin/catproc.sql
spool off
TESTDB >CONNECT SYSTEM
Enter password:
spool pupbld.log
@/mount/oracle/product/11.2.0.2v1/sqlplus/admin/pupbld.sql
spool off

Conclusion
Una vez que ya hemos seguido las ultimas tres entradas,hemos logrado crear una base de datos desde cero, espero que te sirva como ejemplo para poder crear tus base datos de ejemplos y de ahi puedas crear una para produccion.

2 comentarios:

  1. Hola campeòn, bueno creo que hay error minimo,mira:

    En el control file indicas el nombre del tablespace undotbs1 (undo_tablespace ='UNDOTBS1') lo cual es correcto, pero al correr el script para crear la base de datos pones
    UNDO TABLESPACE undotbs DATAFILE '/mount/u01/oracle/TESTDB/data/undotbs01.dbf'

    te comiste el nùmero 1 , XD

    Deberia ser :

    UNDO TABLESPACE undotbs1 DATAFILE '/mount/u01/oracle/TESTDB/data/undotbs01.dbf'

    jajajja, es minimo el error pero podrìa causar dolores de cabeza para un novato..

    Saludos

    ResponderBorrar
  2. Muchas gracias Oscar, corregido , cierto para alguien que es u primera vez, esto puede ser todo un dolor de cabeza.

    ResponderBorrar