domingo, 11 de marzo de 2012

Creando una base de datos Oracle básica

Oracle tiene buenas herramientas para ayudarte a crear bases de datos (como Enterprise Manager o DBCA), pero si quieres crear una base de datos a mano o usando scripts y quieres sólo la base de datos sin componentes extra, entonces podrías querer revisar este método. Es casi el mismo para bases de datos Oracle 10g y 11g, y si eres nuevo en Oracle es una buena manera de entender cómo funciona.

Vamos a crear una base de datos 10g para este ejemplo, y el primer paso es crear un Pfile para esta base de datos y colocarlo en $ORACLE_HOME/dbs; tienes que nombrarlo initDBNAME.ora donde DBNAME es el nombre de tu base de datos. Si necesitas ejemplos de Pfile puedes ver este ejemplo para 10g y también este ejemplo para 11g.

A continuación necesitamos crear algunos directorios para la base de datos (para 11g solo $ORACLE_BASE/oradata/example):

oracle@myserver:~$ mkdir -p $ORACLE_HOME/admin/example/bdump
oracle@myserver:~$ mkdir $ORACLE_HOME/admin/example/cdump
oracle@myserver:~$ mkdir $ORACLE_HOME/admin/example/udump
oracle@myserver:~$ mkdir $ORACLE_HOME/oradata/example

Antes de crear la base de datos también necesitamos configurar variables de entorno:

oracle@myserver:~$ export ORACLE_SID=example
oracle@myserver:~$ set | grep ORA
ORACLE_BASE=/opt/oracle/app/oracle
ORACLE_HOME=/opt/oracle/app/oracle/product/10.2.0/db_1
ORACLE_SID=example

Ahora iniciamos la nueva base de datos en modo nomount y la creamos:

oracle@myserver:~$ sqlplus '/ as sysdba'

SQL*Plus: Release 10.2.0.5.0 - Production on Tue Sep 13 15:11:12 2011

Copyright (c) 1982, 2010, Oracle. All Rights Reserved.

Connected to an idle instance.

SQL> startup nomount
ORACLE instance started.

Total System Global Area 167772160 bytes
Fixed Size 1272600 bytes
Variable Size 88081640 bytes
Database Buffers 75497472 bytes
Redo Buffers 2920448 bytes
SQL> CREATE DATABASE example
MAXDATAFILES 500
MAXINSTANCES 1
MAXLOGFILES 10
MAXLOGMEMBERS 4
DATAFILE
'?/oradata/example/system01.dbf' size 512M
DEFAULT TEMPORARY TABLESPACE TEMP
TEMPFILE '?/oradata/example/temp01.dbf' size 256M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
LOGFILE
GROUP 1 (
'?/oradata/example/redo01a.rdo',
'?/oradata/example/redo01b.rdo') size 64M,
GROUP 2 (
'?/oradata/example/redo02a.rdo',
'?/oradata/example/redo02b.rdo') size 64M,
GROUP 3 (
'?/oradata/example/redo03a.rdo',
'?/oradata/example/redo03b.rdo') size 64M
SYSAUX
DATAFILE '?/oradata/example/sysaux01.dbf' size 512M
UNDO TABLESPACE UNDO
DATAFILE '?/oradata/example/undo01.dbf' size 512M
/

Database created.

Por supuesto tienes que configurar nombres de archivo que concuerden con el directorio oradata creado, modificar tamaños de archivos si son demasiado pequeños, colocar archivos en lugares adecuados como redo logs en diferentes sistemas de archivos, y finalmente modificar o agregar parámetros de acuerdo a tus necesidades específicas.

A continuación creamos el tablespace USERS y el catálogo de la base de datos:

SQL> CREATE TABLESPACE USERS LOGGING DATAFILE
'?/oradata/example/users.dbf' SIZE 256M REUSE AUTOEXTEND ON NEXT 16M MAXSIZE 512M
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

Tablespace created.

SQL> @?/rdbms/admin/catalog

...

Grant succeeded.


PL/SQL procedure successfully completed.

SQL> @?/rdbms/admin/catproc

...

1 row created.


PL/SQL procedure successfully completed.

SQL> @?/rdbms/admin/catexp

...

0 rows created.


Commit complete.

SQL> @?/rdbms/admin/catblock

...

Synonym created.


Grant succeeded.

SQL> connect system/manager
Connected.
SQL> @?/sqlplus/admin/pupbld

...

DROP PUBLIC SYNONYM PRODUCT_USER_PROFILE
*
ERROR at line 1:
ORA-01432: public synonym to be dropped does not exist



Synonym created.

SQL> @?/rdbms/admin/catdbsyn

...

Synonym created.


Synonym created.

SQL> exit;
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
oracle@myserver:~$ sqlplus '/ as sysdba'

SQL*Plus: Release 10.2.0.5.0 - Production on Tue Sep 13 15:39:32 2011

Copyright (c) 1982, 2010, Oracle. All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> @?/rdbms/admin/utlrp.sql

..

DOC>#

OBJECTS WITH ERRORS
-------------------
0

DOC> The following query reports the number of errors caught during
DOC> recompilation. If this number is non-zero, please query the error
DOC> messages in the table UTL_RECOMP_ERRORS to see if any of these errors
DOC> are due to misconfiguration or resource constraints that must be
DOC> fixed before objects can compile successfully.
DOC>#

ERRORS DURING RECOMPILATION
---------------------------
0


PL/SQL procedure successfully completed.

Tu nueva base de datos está casi completa, sólo tienes que crear un SPfile y revisar los componentes instalados:

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 167772160 bytes
Fixed Size 1272600 bytes
Variable Size 88081640 bytes
Database Buffers 75497472 bytes
Redo Buffers 2920448 bytes
Database mounted.
Database opened.
SQL> create spfile from pfile;

File created.

SQL> startup force;
ORACLE instance started.

Total System Global Area 167772160 bytes
Fixed Size 1272600 bytes
Variable Size 88081640 bytes
Database Buffers 75497472 bytes
Redo Buffers 2920448 bytes
Database mounted.
Database opened.
SQL> set pagesize 9999
SQL> col comp_id for a10
SQL> col comp_name for a40
SQL> col version for a15
SQL> column status format a10
SQL> select comp_id, comp_name, version, status from dba_registry;

COMP_ID COMP_NAME VERSION STATUS
---------- ---------------------------------------- --------------- ----------
CATALOG Oracle Database Catalog Views 10.2.0.5.0 VALID
CATPROC Oracle Database Packages and Types 10.2.0.5.0 VALID

Y si lo prefieres, puedes configurar PERFSTATS de esta manera:

SQL> CREATE TABLESPACE PERFSTAT DATAFILE
'?/oradata/example/perfstat.dbf' SIZE 192M AUTOEXTEND ON NEXT 16M MAXSIZE 512M
NOLOGGING ONLINE PERMANENT EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO FLASHBACK ON;

Tablespace created.

SQL> define default_tablespace='PERFSTAT'
SQL> define temporary_tablespace='TEMP'
SQL> define perfstat_password='perfstat'
SQL> @?/rdbms/admin/spcreate.sql

...

No errors.

NOTE:
SPCPKG complete. Please check spcpkg.lis for any errors.

Eso es todo! Tienes una mínima base de datos nueva lista para usar; sólo no olvides agregar tu base de datos al archivo oratab, crear un listener para esta base de datos, cambiar los passwords por default y desactivar cuentas por default, y hacer cualquier cosa administrativa como estas requerida.

No hay comentarios.:

Publicar un comentario