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:
- 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.
- 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.
- Copiar y editar el archivo de parámetros (init.ora) que permite inicializar la instancia Oracle.
- Configurar las variables apropiadas del sistema operativo (ORACLE_SID), otras variables tales como ORACLE_HOME, ORACLE_BASE deberian estar previamente definidas.
- Crear archivo de password (según el valor que se haya definido para el parámetro REMOTE_LOGIN_PASSWORDFILE)
- Invocar el SQLPLUS y conectarse a la base como sysdba.
- Iniciar la instancia en estado NOMOUNT. En este estado se crea una base de datos nueva.
- 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: Administración de Bases de Datos, CREATE DATABASE, dba
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.


26 de diciembre de 2008 a las 10:39 pm
[...] http://dbagroup.cl/blog/?p=56 [...]
14 de enero de 2009 a las 6:08 pm
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
15 de enero de 2009 a las 11:58 am
bueno el post. Una pregunta,
¿es posible conectar como “sqlplus / as sysdba” solo conociendo el nombre de la db?
gracias
15 de enero de 2009 a las 12:18 pm
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
10 de febrero de 2009 a las 9:03 am
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.
10 de febrero de 2009 a las 9:31 am
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
28 de abril de 2009 a las 7:42 pm
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
26 de mayo de 2009 a las 11:28 pm
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.
27 de mayo de 2009 a las 9:09 pm
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
26 de julio de 2009 a las 11:39 pm
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
29 de septiembre de 2009 a las 5:00 am
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
2 de octubre de 2009 a las 10:32 am
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
5 de octubre de 2009 a las 9:58 pm
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
23 de noviembre de 2009 a las 8:09 pm
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
25 de noviembre de 2009 a las 9:53 am
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
3 de diciembre de 2009 a las 9:27 pm
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
13 de enero de 2010 a las 12:49 pm
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
21 de enero de 2010 a las 6:20 pm
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.
21 de marzo de 2010 a las 3:46 am
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
6 de julio de 2010 a las 1:38 pm
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
15 de agosto de 2010 a las 10:44 pm
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