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

gravatar
Compartir este post:
  • Google Buzz
  • Google Reader
  • Identi.ca
  • Meneame
  • PDF
  • Print
  • Twitter
  • Facebook
  • email
  • LinkedIn

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.

Etiquetas: , ,

Escrito por: Felipe Manriquez

Esta entrada se publicó , el Domingo, 21 de diciembre de 2008 a las 10:45 am horas y está guardada bajo Oracle, Oracle 10g, Oracle 9i. Puedes seguir cualquier respuesta a esta entrada mediante la fuente RSS 2.0. Puedes dejar un comentario o enviar un trackback desde tu propio sitio.

21 comentarios para “Scripts de creación de Base de Datos Oracle 9i y 10g”

  1. Scripts de creación de Base de Datos Oracle 9i y 10g - DbRunas dice:

    [...] http://dbagroup.cl/blog/?p=56 [...]

  2. base de datos dice:

    Hola, quería felicitarte por tu pagina, es excelente, si queres, pasa por mi pagina y dejame un comentario, tengo mucho trafico en mi sitio, si te interesa podemos hacer un intercambio de links, banners, cualquier cosa avisame, te dejo mi email tvinternet08@gmail.com, te mando un abrazo.
    El equipo de Marketing Mega Virtual

  3. JuanPablo dice:

    bueno el post. Una pregunta,
    ¿es posible conectar como “sqlplus / as sysdba” solo conociendo el nombre de la db?

    gracias

  4. Felipe Manriquez dice:

    Hola Juan Pablo

    En Linux o Unix, cuando uno se conecta de la forma “sqlplus / as sysdba” siempre se conecta a la base de datos que está identificada por una variable de ambiente llamada ORACLE_SID. Puedes colocar conectado al usuario oracle de tu plataforma el siguiente comando

    echo $ORACLE_SID

    que te sirve para ver el valor de la variable ORACLE_SID

    Este valor lo cambias de la siguiente manera

    ORACLE_SID=orion; export ORACLE_SID

    De esta manera te puedes conectar a una base de datos diferente.

    Otra forma de conectarse es estableciendo un string de conexion (tnsnames.ora)

    “sqlplus /@orion as sysdba”

    “sqlplus /@pluton as sysdba”

    donde orion y pluton son ejemplos de alias de TNS que se definen en el archivo de configuración de nombres de bases de datos llamado tnsnames.ora

    Suerte

  5. Margot dice:

    Hola, por casualidad tú sabes de alguna herramienta que te diseñe las relaciones de tablas, me dijeron que existía pero la verdad no la encuentro. Muchas gracias por tu ayuda.

  6. Felipe Manriquez dice:

    Hola Margot

    Mira existen muchas herramientas. Dependiendo lo que vayas hacer es la herramienta que te recomendaria. Si quieres hacer algo simple y rápido esta ERWIN de Compute Associate, si quieres trabajar con Oracle en un proyecto te recomiendo Oracle Designer que tiene claramente separada la herramienta para modelamiento de datos conceptual (ER Diagram) de la herramienta de modelamiento de datos fisicos (Design Editor). La gracia es que te queda todo documentado y es una herramienta ideal para Modelamiento de Datos Corporativo, donde hay que utilizar estructuras de datos que pertenecen a otros proyectos.

    Una lista completa de herramientas la puedes ver aqui

    http://www.databaseanswers.com/modelling_tools.htm

    Mucha Suerte

    Felipe

  7. Laura dice:

    Hola, es algo confuso….haber si me doy a explicar; tengo una base de datos con codificación de caracteres “ISO-88559″ y por medio de un PL voy a extraer información de la BD y la quiero guardar en un documento .txt por así decirlo pero que tenga una codificación de caracteres UTF8, es esto posible??? Además una vez hecho esto a ese mismo documento .txt con formato UTF8 necesito aplicarle un algoritmo de encriptación “sha” pero desde Oracle, por lo que también deseo saber como implementar esta herramienta en la base de datos Oracle 10g, si se le debe de instalar algún paquete o que se debe hacer??? Así como si existen riesgos ya que la base de datos esta en producción.

    Muchas gracias!!!!!……..espero puedas ayudarme :(

  8. Gonzalo dice:

    Hola, felicitaciones por la página, una consulta, si tengo instalado el Oracle en un server windows, ¿como puede accesarlo desde otro server pero unix?. Gracias.

  9. Felipe Manriquez dice:

    Hola Gonzalo

    Solo tienes que instalar un cliente oracle en la maquina UNIX y configurar los archivos de Oracle NET, normalmente TNSNAMES.ORA para que desde la maquina UNIX pueda ir a la maquina donde se encuentra la instancia en Windows

    Suerte

    Felipe

  10. javier gomez dice:

    Hola Gonzalo, Muchas gracias por tus ayudas.

    Me gustaría saber como averiguo el script con el cual fue creado un usuario en la Base de datos ORACLE.

    Muy amable por su respuesta.

    Gracias

  11. Edu Hernandez dice:

    Hola Gonzalo,

    Me gustaria saber como hago para cambiar la ubicacion de los ficheros contenidos en los directorios adump, dpdump y pfile, ya que no he visto el paso donde se puede cambiar como los directorios de los ficheros control, redo y datafiles. Estoy instalando Oracle 11g en una maquina Solaris sparc, y bueno necesito poner esos ficheros en otras ubicacion a la que me establece por defecto.

    Muchas gracias

  12. Miguel dice:

    Hola, muy buena la pagina. No tengo muy en claro como configurar el listener.ora y el tnsname.ora, te agradeceria mucho que me expliques.
    Saludos

  13. Felipe Manriquez dice:

    Miguel

    Mira el tema de networking no es como para explicartelo en forma tan breve. Te sugiero ver este link.

    http://download.oracle.com/docs/cd/B19306_01/server.102/b14196/network002.htm

    Saludos

    Felipe

  14. Juan Pablo dice:

    Cordial saludo: Felipe Manriquez me podrias colaborar en algo, es ke necesito empezar a programar en Oracle, pero no se por donde comenzar, me gustaria que me dijeras con que version comenzar,

    Gracias

  15. Felipe Manriquez dice:

    Hola Juan Pablo

    Disculpa la demora. Siempre es bueno comenzar por el principio :-)
    Te sugiero que bajes la version express de Oracle que existe para windows y Linux. Hay muchos recursos web disponibles.

    Te sugiero

    Si quieres ser desarrollador visita

    1.- http://www.oracle.com
    2.- http://otn.oracle.com millones de recursos para desarrolladores
    3.- Partir con un tutorial de SQL y PL/sql

    sUERTE

    Felipe

  16. condepatula2k dice:

    Buen dia Juan Pablo
    Me gustaria saber como puedo saber el tamaño total de mi base de datos. tengo oracle 9i, estan 2 cluster

  17. SAP Basis dice:

    hola amigo Disculpa
    quisiera saber como o con que comando puedo ejecutar para poder ver el historial de crecimiento de la BD a nivel SO unix y tambien el tamaño de cfrecimiento con sus deltas KB Free %used Etc.

    Saludos

  18. Marlon Fdez dice:

    Hola soy nuevo en Oracle con Linux y no se como levantar la herramienta de creacion de bd, me pudiera ayudar con esto. Ya cree una cuando lo instale pero ahora no se como crear otra base de datos.

  19. cesa dice:

    buenas..
    quisiera que me den una ayuda,, tengo oracle 11g y el sql plus se ejecuta en modo DOS y quisiera saber si se puede cambiar en modo bloc notas como salia en oracle 10g … gracias por su respuesta

  20. Octavio dice:

    Hola que tal muy buen articulo, tengo una pregunta ???
    tengo un servidor y mi base estahecha en oracle 9i y como se estan cambiando los SO de las maquinas a Win 7 Ultime tengo que utlizar una version mas reciente, mi pregunta es esta
    se puede conectar o de una maquina cliente oracle 11gR2 con SO win 7 a un servidor 9i con SO XP ??

    tengo otra pregunta la exportacion de mis bases de datos hecha en oracle 9i pueden correr en oracle 11gR2, no tendre algun problema

    muchas gracias

  21. Felipe Manriquez dice:

    Octavio

    Respuesta

    1.- se puede conectar o de una maquina cliente oracle 11gR2 con SO win 7 a un servidor 9i con SO XP ??: Respuesta: SI
    2.- tengo otra pregunta la exportacion de mis bases de datos hecha en oracle 9i pueden correr en oracle 11gR2, no tendre algun problema: Respuesta: No debiera, en general en Oracle existe forward compatibility en relación a los exports.

    Saludos
    Felipe

Deja un comentario