martes, 29 de marzo de 2016

Cambiar una BBDD de disco +ASM


Este procedimiento lo utilicé en su día para cambiar el Diskgroup de una BBDD. A veces que es necesario hacerlo para redistribuir los datos en nuevos discos. Cambiar el tamaño 'general' de los discos, o crear una estructura de discos homogénea para que todos los discos ocupen lo mismo en el Diskgroup.

Los pasos para realizar esta operativa son los siguientes :

1.- Creamos el Diskgroup 
 
CREATE DISKGROUP DATA1 EXTERNAL REDUNDANCY
DISK
'/dev/ORACLE_sdd'  NAME DATA1_001,
'/dev/ORACLE_sde'  NAME DATA1_002,
'/dev/ORACLE_sdf'  NAME DATA1_003,
'/dev/ORACLE_sdg'  NAME DATA1_004,
'/dev/ORACLE_sdh'  NAME DATA1_005  ;
 


 Y realizamos las comprobaciones 

SELECT  GROUP_NUMBER, name, STATE, path, REDUNDANCY from v$asm_disk;

GROUP_NUMBER NAME          STATE    PATH                   REDUNDA
------------ ------------- -------- ---------------------- ------- 
           1 DATA_0000     NORMAL   /dev/ORACLE_sdb        UNKNOWN
           2 DATA1_005     NORMAL   /dev/ORACLE_sdh        UNKNOWN
           2 DATA1_004     NORMAL   /dev/ORACLE_sdg        UNKNOWN
           2 DATA1_003     NORMAL   /dev/ORACLE_sdf        UNKNOWN
           2 DATA1_002     NORMAL   /dev/ORACLE_sde        UNKNOWN
           2 DATA1_001     NORMAL   /dev/ORACLE_sdd        UNKNOWN
 
select GROUP_NUMBER, NAME, TOTAL_MB, FREE_MB from v$asm_diskgroup;

GROUP_NUMBER NAME              TOTAL_MB    FREE_MB
------------ --------------- ---------- ----------
          1 DATA               1669120      237160
          2 DATA1              2048000     2047927
 

2.- Pasamos los ficheros 'pequeños': 

 
Esto se contempla dado que en el +ASM únicamente tenemos un Diskgroup (DATA1) que contiene TODOS los datos de la BBDD. Que vienen a ser - además de los Datafiles - el init y los Controlfiles

a) INIT (+ASM) del DATA al DATA1 :

SQL > create pfile='/ora11/sndr/init+ASM.ora' from spfile;

File created.

SQL > alter diskgroup DATA1 set attribute 'compatible.asm'='11.2.0.0.0';

Diskgroup altered.

SQL > create spfile='+DATA1' FROM PFILE='/ora11/sndr/init+ASM.ora';

File created. 
 
     Comprobamos 
ora11@Maquina:> srvctl config asm
ASM home: /ora11/app/oracle/product/grid
ASM listener: LISTENER
Spfile: +DATA1/asm/asmparameterfile/registry.253.842198787
ASM diskgroup discovery string: /dev/ORA*

b) Control Files 

SQL > select name from v$controlfile;

NAME
------------------------------------------------------------------
+DATA/mydb/controlfile/current.265.768518747

1.- Cambiamos la ruta de los controls:

alter system set control_files='+DATA/mydb/controlfile/current.265.768518747','+DATA1' scope=spfile sid='*';
 
2.- Reiniciamos la instancia en modo nomontado 

SQL > shutdown immediate;
Base de datos cerrada.
Base de datos desmontada.
Instancia ORACLE cerrada.
SQL > startup nomount;

Instancia ORACLE iniciada.

Total System Global Area 1603411968 bytes
Fixed Size                  2226912 bytes
Variable Size             754976032 bytes
Database Buffers          838860800 bytes
Redo Buffers                7348224 bytes
 

3.- Copiamos el controlfile utilizando RMAN

$ rman nocatalog

RMAN > connect target
RMAN > restore controlfile from '+DATA/mydb/controlfile/current.265.768518747' ;

El output debería ser algo como 

Starting restore at 08-NOV-07
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=147 instance=V1021 devtype=DISK

channel ORA_DISK_1: copied control file copy

output filename=+DATA1/v102/controlfile/current.261.637923577
output filename=+DATA1/v102/controlfile/current.269.638120375

Finished restore at 08-NOV-07

4.- Modificamos la ruta del controlfile con el nuevo fichero creado :

alter system set control_files='+DATA/mydb/controlfile/current.265.768518747','+DATA1/dtm_sde/controlfile/current.269.638120375' scope=spfile sid='*';

5.- Paramos y arrancamos de nuevo la BBDD

RMAN > sql 'alter database mount';
RMAN > sql 'alter database open';

6.- Validamos que existen los dos

select name from v$controlfile; 

7.- Podemos ya eliminar 1.

SQL > alter system set control_files='+DATA1/mydb/controlfile/current.256.842199449' scope=spfile sid='*';

3.- Cambio de los Datafiles

Esto se hace con RMAN con la BBDD en MOUNT o NOMOUNT. La forma de proceder es conectarnos al RMAN sobre los ficheros de control y ejecutamos lo siguiente:

rman target / nocatalog

run {
backup as copy database format '+DATA1';
}

Una vez que ha ejecutado el backup sobre el otro DISKGROUP, hacemos un switch database para que te pille el nuevo nombre de los ficheros el controlfile

ora11@maquina:~/ruta >  rman target / nocatalog

Recovery Manager: Release 11.2.0.2.0 - Production on Mon Mar 17 08:59:36 2014

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
connected to target database: MYDB (DBID=90116375, not open)
using target database control file instead of recovery catalog

RMAN > switch database to copy;

datafile 1 switched to datafile copy "+DATA1/mydb/datafile/system.312.842215435"
[...]
datafile 66 switched to datafile copy "+DATA1/mydb/datafile/ts_visinte_dad.307.842215149"

RMAN >

4.- Recreamos los REDO.

Procedimiento Standard para recrear grupos de REDO en una BBDD. Pendiente 'actualizar' el blog con esta info. 

5.- Recreamos el Temporal. 

Procedimiento Standard para recrear el temporal en una BBDD. Pendiente 'actualizar' el blog con esta info.

6.- Configuración DB:

Cambiamos - finalmente - la  configuración de la BBDD para que figure únicamente 1 Diskgroup:

ora11@MAQUINA:>  srvctl config database -d mydb
Database unique name: MYDB
Database name: MYDB 
Oracle home: /ora11/app/oracle/product/11.2.0
Oracle user: ora11
Spfile: +DATA/MYDB/spfileMYDB.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk Groups: DATA,DATA1
Services:   

srvctl modify database -d mydb -p '+DATA1/MYDB/spfileMYDB.ora'
srvctl modify database -d mydb -a 'DATA1'

ora11@MAQUINA:> srvctl config database -d mydb
Database unique name: MYDB
Database name: MYDB 
Oracle home: /ora11/app/oracle/product/11.2.0
Oracle user: ora11
Spfile: +DATA/MYDB/spfileMYDB.ora
Domain:
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Disk Groups: DATA1
Services:   
 

 
Fuentes 

Dismount a diskgroup (siempre con SYSASM) 


    

viernes, 17 de mayo de 2013

Instalación Catalogos: JAVA 11G & XDK


A la hora de instalar el Java en 11G correctanente, junto al XDK, hay que instalar los siguientes paquetes: 

JServer JAVA Virtual Machine
Oracle9i Java Packages
XDK (Oracle XML Developers Kit 11g)

Para ello, se ejecutarán en la Base de Datos los siguientes paquetes: 

JServer JAVA Virtual Machine :-   @?/javavm/install/initjvm.sql
Java Packages:-                                  @?/rdbms/admin/catjava.sql

XDK (Siguiendo este orden)

@?/javavm/install/initjvm.sql
@?/xdk/admin/initxml.sql
@?/xdk/admin/xmlja.sql
@?/rdbms/admin/catjava.sql

COMPROBACIONES

1.- Comprobar que se ha instalado correctamente la versión XDK

CREATE OR REPLACE FUNCTION XMLVersion RETURN VARCHAR2
  IS LANGUAGE JAVA NAME
  'oracle.xml.parser.v2.XMLParser.getReleaseVersion() returns java.lang.String';
/

select xmlversion from dual;

2.- Comprobar los Objetos Java en la Base de Datos: 

select count(*), object_type from all_objects
where object_type like '%JAVA%' group by object_type;

  COUNT(*) OBJECT_TYPE
---------- ---------------
       317 JAVA DATA
       763 JAVA RESOURCE
     19974 JAVA CLASS

3.- Comprobar el Estado del JAVA en Oracle

connect / as sysdba

spool jvm_stats.log

set serveroutput on
set echo on
set pagesize500
set linesize 100
column comp_name format a40

select comp_name, version, status from dba_registry;

select owner, status, count(*) from all_objects
where object_type like '%JAVA%' group by owner, status;

select owner, object_type, count(*) from all_objects
where object_type like '%JAVA%' and status <> 'VALID' group by owner, object_type;

select owner, status, object_type, object_name from all_objects
where object_name like'%DBMS_JAVA%';

select owner, status, object_type, object_name from all_objects
where object_name like'%INITJVMAUX%';     

select role from dba_roles where role like '%JAVA%';

select * from v$sgastat where POOL = 'java pool' or NAME = 'free memory';

show parameter pool_size

show parameter sga

select owner, object_type, status, dbms_java.longname(object_name) from all_objects
where object_type like '%JAVA%' and status <> 'VALID';

spool off


martes, 9 de abril de 2013

Instalación Catalogos: Oracle Workspace Manager

Es un catálogo 11g, y la instalación es bastante sencilla. 

Nos conectamos a la BBDD como sysdba y ejecutamos

@?/rdbms/admin/owminst.plb

Luego comprobamos que efectivamente se ha instalado correctamente:

SQL> select dbms_wm.getWorkspace from dual;

GETWORKSPACE
-----------------------------------------------------------------
LIVE

Fuente :- Oracle

sábado, 23 de marzo de 2013

Borrar, Activar (Recrear) el dbconsole (EM)

En esta ocasión, voy a listar los comandos necesarios para Activar, Borrar y Recrear el dbconsole. Es decir el Enterprise Manager. La herramienta gráfica para administrar/revisar que incluye el Software de Oracle para revisar las Bases de Datos.

Yo no soy muy amiga de las herramientas gráficas, pero pero muchas veces, no sólo son nuestras 'amigas', sino que además facilitan las cosas... O simplemente nos pide 'el cliente' configurar la herramienta gráfica por que le guste los dibujitos y colorines.

Como sea, detallamos los comandos y las ejecuciones necesarias para Borrar, Activar, Recrear y configurar el EM (dbconsole)


*Nota:- Para ejecutar estos comandos hay que exportar la variable ORACLE_HOSTNAME, con el nombre de la máquina, o en su defecto con la IP Virtual configurada en el parámetro HOST de la configuración del lístener

1.- ACTIVAR

Para crear la configuración del Database Control y la creación del repositorio, se ejecutaría :

emca -config dbcontrol db -repos create cluster*

*(El parámetro cluster, es opcional, y sólo utilizado en entornos configurados en Cluster). 

Con este comando, no solo configuraríamos el dbconsole, sino que se crearían los paquetes del repositorio sobre el esquema SYSMAN en la Base de Datos. Es decir, de no existir el usuario SYSMAN en la Base de Datos, dicho comando lo crearía con los requisitos necesarios para el funcionamiento del EM. 

La ejecución de este comando, nos pedirá los siguientes parámetros: 


Enter the following information:
Database unique name:(Nombre de la Base de Datos, no de la Instancia; Si se trata de un RAC de 2 Instancias - ORAC01/ORAC02 - se configuraría el nombre de la instancia solamente: ORAC)
Listener port number: (Puerto del listener de la BBDD) 
Cluster name: crs (si se tratara de una BBDD configurada en Cluster)
Password for SYS user: (Passwd del SYS)
Password for DBSNMP user: (Passwd del SYS)
Password for SYSMAN user: (Passwd para el usuario SYSMAN; en este paso es cuando se crearía el usuario SYSMAN)
Email address for notifications (optional):
Outgoing Mail (SMTP) server for notifications (optional):

Los siguientes parámetros nos los pediría si estuviéramos trabajando con una BBDD con ASM configurado: 

ASM ORACLE_HOME [ /ruta/oracle/home/ASM ]:
ASM port [ 1521 ]:
ASM user role [ SYSDBA ]:
ASM username [ SYS ]:
ASM user password: xxxxx


2.- BORRAR

El comando que hay que ejecutar para eliminar la configuración del EM de una BBDD sería 

emca -deconfig dbcontrol db -repos drop -cluster*

*(El parámetro cluster, es opcional para entornos configurados en Cluster). 

Con este comando desconfigura el EM, y borra el esquema SYSMAN de la BBDD, y por tanto, todos los datos que el esquema SYSMAN contenga. 

Los parámetros que este comando nos solicita serían: 

Enter the following information:
Database unique name:(nombre de la bbdd en RAC)
Listener port number:(puerto del listener, no confundir con el puerto que usa dbconsole)
Password for SYS user:(Passwd de SYS) 
Password for SYSMAN user: (Passwd de SYSMAN)

Do you wish to continue? [yes(Y)/no(N)]:Y

3.- COMPROBAR LA CONFIGURACIÓN

Si queremos comprobar la configuración existente en un EM ya activado, se ejecutaría el siguiente comando : 


emca -displayConfig dbcontrol -cluster

nos pide:

Enter the following information:
Database unique name: SID

Do you wish to continue? [yes(Y)/no(N)]: Y

Nos muestra la siguiente información:

**************** Current Configuration ****************
INSTANCE            NODE          DBCONTROL_UPLOAD_HOST
--------           -----          ---------------------
SID1               node1                          node1
SID2               node2                          node1



4.- Cambiar los Puertos de la DBCONSOLE

Por defecto, el EM se configura automáticamente sobre el puerto 5500. Pero si por circunstancias necesitásemos reconfigurar el puerto de acceso (por ejemplo, si coexistieran dos Bases de Datos en la misma máquina y no pudieran compartir puerto), ejecutaríamos el siguiente comando: 

emca -reconfig ports -cluster -DBCONTROL_HTTP_PORT 1158

Y el acceso al EM sería 

 https://< IP máquina >:1158/em 




Fuentes:- 

domingo, 3 de marzo de 2013

Valores del comando SET


Aquí dejo el listado de algunas de las variables SET y sus posibles usos:

(Nota:- Está traducido de un texto en inglés, con lo que es posible que existan errores en la traducción o alguna mala descripción, agradeceré todo tipo de comentarios para mejorar las descripciones)

VARIABLE SETUSO
SET ARRAY[SIZE] {15|n}Configura el número de Filas que el SQL*Plus puede recoger de la Base de Datos a la vez.
SET AUTO[COMMIT] {OFF | ON | 
IMM[EDIATE] | n }
Controla cuando Oracle ejecute un COMMIT dependiendo de los cambios pendientes en la Base de Datos.
SET AUTOT[RACE] { OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]Utilizado – sobretodo – en la obtención del plan de ejecución de sentencias. (Explain Plan).
SET COLSEP {_ | text }Configura el texto que será mostrado entre la separación de las columnas.
SET DEF[INE] {'&' | c | OFF | ON}Establece el carácter que se utiliza como sustitución de prefijo de variablas a C
SET ECHO {OFF|ON}Controla si muestra o no los comandos ejecutados en un fichero de Script
SET EDITF[ILE] filename[.ext]Define el valor por defecto del fichero generado a través del comando EDIT.
SET EMB[EDDED] {OFF | ON}Controla cuando cada informe empieza en la página.
SET ESC[APE] {\ | c | 
OFF | ON }
Define el carácter que se introduce como carácter de ‘Escape’.
SET FEED[BACK] {6 | n | 
OFF | ON}
Muestra el número de registros que es devuelto por una sentencia cuando la sentencia recoge – al menos – n registros.
SET FLAGGER {OFF | ENTRY | 
INTERMED[IATE] | FULL}
Realiza un chequeo para asegurarse que la sentencia SQL ejecutada está de acuerdo con el Standard ANSI/ISO SQL92
SET FLU[SH] {OFF | ON}Controla cuando la salida es enviada a la consola del usuario.
SET HEA[DING] {OFF | ON}Controla si muestra la cabecera de los informes.
SET HEADS[EP] {| | c | 
OFF | ON}
Define el carácter que se utilice como separador de cabeceras.
SET LIN[ESIZE] {80 | n }Establece el número de caracteres que el SQL*Plus mostrará en la siguiente línea.
SET LONG {80 | n}Establece el número máximo de bytes que será mostrado en valores LONG, CLOB y NCLOB; y para copia de varoles LONG
SET LONGC[HUKSIZE] {80 | n}Establece el tamaño (en Bytes) del incremento el cual el SQL*PLUS devuelve un valor LONG, CLOB o NCLOB
SET NEWP[AGE[ {1 | n | NONE}Establece el número de líneas en blanco que serán incluidas en lo alto del título
SET NULL textEstablece el texto que representará un valor nulo como resultado de una sentencia SELECT de SQL
SET NUMF[ORMAT] formatEstablece el formato que serán mostrado los números.
SET NUM[WIDTH] {10 | n}El tamaño – por defecto – en el que se mostrarán los valores numéricos
SET PAGES[IZE] {24 | n }Establece el número de líneas por página
SET SERVEROUT[PUT] {OFF | ON} [SIZE n] [FOR[MAT] {WRA[PPED] | WOR[D_WRAPPED] |TRU[NCATED]}]Controla la forma en la que se mostrará la salida (A través del paquete DBMS_OUTPUT.PUT_LINE) en un procedimiento almacenado de SQL*Plus
SET SHOW[MODE] {OFF|ON}Controla que el SQL*Plus liste los nuevos y antiguos valores de configuración para las variables del sistema que se establecen mediante el comando SET.
SET SQLBL[ANKLINES] {ON | OFF}Controla que el SQL*Plus permita las líneas en Blanco en comandos SQL
SET SQLC[ASE] {MIX[ED] | LO[WER] | UP[PER]}Convierte el tipo de letra (mayúscula/minúscula/mixta) de los comandos SQL previo a la ejecución.
SET SQLCO[NTINUE] 
{> | text}
Establece una secuencia de caracteres que muestra el SQL*Plus en el PROMPT al continuar un comando en la línea siguiente
SET SQLN[UMBER]{OFF | ON}Establece en el Prompt el número de línea consecuente en una sentencia SQL
SET SQLPRE[FIX] {# | c}Establece un carácter prefijo del SQL*Plus, el cual se usa en una línea separada para ejecutar un comando inmediatamente sin afectar a la sentencia SQL que se esté escribiendo.
SET SQLP[ROMPT] 
{SQL > | text}
Configura el texto que aparece en el PROMPT del SQL*Plus.
SET SQLT[ERMINATOR] 
{; | c | OFF | ON}
Establece el carácter que se va a usar para ejecutar una sentencia SQL.
SET SUF[FIX] {SQL | text}Define la extensión, por defecto, del fichero de comandos de SQL*Plus que será utilizada.
SET TERM[OUT] {OFF | ON}Configura si se muestra o no por consola (o en el fichero de salida), los comandos ejecutados en un fichero de Comandos
SET TI[ME] {OFF | ON}Configura que aparezca la fecha actual en el PROMPT.
SET TIMI[NG] {OFF | ON}Cronometra el tiempo que se tarda en ejecutar una sentencia SQL
SET TRIM[OUT] {OFF |ON}Controla si los caracteres blancos son eliminados del final de cada línea mostrada.
SET TRIMS[POOL] {ON | OFF }Controla si los caracteres blancos son eliminados del final de cada línea de un fichero de Spool
SET UND[ERLINE] 
{ - | c | ON | OFF}
Configura el carácter que será utilizado como línea baja (subrayado) en las columnas de las Cabeceras en un informe de SQL*Plus
SET VER[IFY] {OFF | ON}Controla cuando en una sentencia SQL, en el que se produce una sustitución de variables, se muestre la sentencia ANTES y DESPUÉS de reemplazar las variables por valores.
SET WRA[P] {OFF | ON}Configura la posibilidad del SQL*Plus de truncar el resultado devuelto de unas filas seleccionadas, si dichas filas son demasiado largas para la longitud actual configurada para la línea.

NID (11g) Cambiando de Nombre una Base de Datos

El cambio de Nombre de Base de Datos, es una operación muy sencilla en la 11g. Se realiza a nivel de Sistema Operativo con el comando nid ($ORACLE_HOME/bin/nid).

IMPORTANTE:- Si la Base de Datos a la que vamos a cambiar el SID tiene configurado el Enterprise Manager (dbconsole), habría que borrarlo antes del cambio de nombre y recrearlo después de cambiarle el nombre. Se puede revisar el procedimiento para Crear, Configurar y Borrar el EM aqui.


Los pasos para ejecutar el cambio de nombre, son muy sencillos. 

1.- initNewBd.ora

Como vamos a arrancar la Base de Datos con un nombre nuevo, también necesitamos un nuevo fichero de configuración o init.ora. Para ello, podemos crear uno de nuestro propio SPFILE con la sentencia: 

SQL > CREATE PFILE='$ORALCE_HOME/dbs/initNewBd.ora' FROM SPFILE;

Una vez creado, lo editamos y modificamos el parámetro de db_name al nuevo nombre que va a tener la Base de Datos. Así como Todos los parámetros que hagan referencia a la antigua base de datos. Es decir, los parámetros que tengamos tipo OldBd.__.NombreParámetro pasarían a ser NewBd.__.NombreParámetro:

     OldBd.__.db_cache_size=2130706432
     ...
     *.db_name=OldBd

Modificado sería: 

     NewBd.__.db_cache_size=2130706432
     ...
     *.db_name=NewBd


2.- Ejecución del NID.

Se hace a nivel de Sistema Operativo. Tenemos que tener exportada, en las variables de entorno, el nombre de la Base de Datos que queramos cambiar el nombre. Y asegurarnos que la Base de Datos está Montada en Modo Exclusivo. Y con la contraseña del usuario SYS ya ejecutamos el cambio de nombre: 

$ export ORACLE_SID=OldBd
$ sqlplus "/As sysdba"

SQL > Shutdown immediate
SQL > Startup Mount Exclusive
SQL > EXIT

$ nid TARGE=sys/  DBNAME=NewBd

3.- Levantando la NewBd

Una vez que ejecutemos el cambio de nombre y nos haya salido correctamente. Levantamos la Base de datos. Que como nos sugiere al final de la ejecución del NID, tendremos que levantarla en dos fases Primero la montamos, y después la abrimos con la clausula NORESETLOGS: 

$ export ORACLE_SID=NewBd
$ sqlplus "/As sysdba"

SQL > Startup mount
SQL > Alter Database Open NORESETLOGS;

y ya tendríamos la Base de Datos cambiada el nombre. Así de sencillo. 

Fuente :- Metalink  ID Note [863800.1] :- (How to Change the DBID, DBNAME Using NID Utility in version 10gR2 onwards)


sábado, 2 de marzo de 2013

Create Database (By Script)

Es un comando 'sencillo'. Te mandan Crear una BBDD y cualquier DBA tiene que saberlo hacer... Pero... ¿Por qué cuando llega el momento no te acuerdas del comando básico? Y o tienes configuradas las X's  y lo realizas cómodamente mediante una bonita interfaz Gráfica mediante el Asistente de Configuración de Bases de Datos (DBCA) o te pones a Googlear a ver si encuentras el comando adecuado para crear la BBDD. 

Yo debo reconocer, que soy un poco masoca, y aunque lo más sencillo es ejecutarlo mediante la DBCA, prefiero hacerlo en un modo más rudimentario, que es mediante la consola de SQL*Plus. No sé por qué, no me gustan mucho las herramientas gráficas, ni me llevo bien con ellas. Soy de la opinión que todo lo que se puede hacer mediante herramienta gráfica, también se puede hacer mediante Consola, al menos en Oracle, y trato de minimizar el uso de herramientas gráficas a casi anularlo. Para aprender a manejar una herramienta gráfica para la Administración de una Base de Datos, siempre hay tiempo, pero como se deje de picar código por consola... Lo olvidas. 

Así, pues, la sentencia básica (Muy, muy básica), que se puede utilizar para crear una Base de Datos tipo sería algo parecido a esto: 

CREATE DATABASE MIBBDD
MAXINSTANCES 8
MAXLOGHISTORY 910
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXDATAFILES 5000
DATAFILE
    '/ruta/datafile/sys.dbs' size 2001M 
     EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '/ruta/datafile/sysaux.dbs' size 1001M 
UNDO TABLESPACE UNDOTBS
   DATAFILE '/ruta/datafile/undo_1.dbs'  size 1001M ,
            '/ruta/datafile/undo_2.dbs'  size 1001M 
DEFAULT TEMPORARY TABLESPACE TEMP
   TEMPFILE '/ruta/datafile/tmp.dbs' size 1001M 
     EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1048576
CHARACTER SET "UTF8"
NATIONAL CHARACTER SET AL16UTF16
LOGFILE
  GROUP 1 ('/ruta/logfile/grupo1/rdo1.rdo' ,
           '/ruta/logfile/grupo1/rdo2.rdo')  size 500M ,
  GROUP 2 ('/ruta/logfile/grupo2/rdo1.rdo' ,
           '/ruta/logfile/grupo2/rdo2.rdo')  size 500M ,
  GROUP 3 ('/ruta/logfile/grupo3/rdo1.rdo' ,
           '/ruta/logfile/grupo3/rdo2.rdo')  size 500M ;

*Nota:- Si se tratara de una recreación, Podemos sacar el comando 'base' mediante un simple ALTER DATABASE BACKUP CONTROLFILE TO TRACE as '/ruta/fichero/control_backup.trc';  Esto nos genera un fichero en el UserDump con el comando exacto que se necesita ejecutar para recrear la BBDD. 

Si se tratara de una recreación, podríamos ver que todas las todas las referencias a los datafiles tienen la cláusula REUSE, dado que se entiende que los Datafiles todavía existen en la máquina. Aun sí, se puede utilizar para la Creación de una Base de Datos desde Cero en otro entorno, si es que existierann las rutas de los scripts (Si estuviéramos migrando la Base de datos, por Ejemplo), por que lo que indica la cláusula REUSE, es que si existe el fichero, lo reutilice, y si no existiera, que lo cree

CATÁLOGOS 

Una vez creada la BBDD, toca la ejecución de los Catálogos del Diccionario. Los catálogos ESENCIALES en la creación de una Base de datos Son (en 11g): 

· El Catalog
spool $ORACLE_HOME/rdbms/admin/catalog.log
@$ORACLE_HOME/rdbms/admin/catalog.sql;
spool off


· El Catproc
spool $ORACLE_HOME/rdbms/admin/catproc.log
@$ORACLE_HOME/rdbms/admin/catproc.sql;
spool off


· Y el pupbld. 
    *Este último es importante, por que sino, no se permite la conexión de los usuarios a la Base de Datos 
connect "SYSTEM"/"&systemPassword"
spool $ORACLE_HOME/sqlplus/admin/pupbld.log
@$ORACLE_HOME/sqlplus/admin/pupbld.sql;
spool off


Adicionalmente, también se pueden incluir los siguientes: 

· El Catblock (Crea las vistas para los bloqueos de Oracle. )
spool $ORACLE_HOME/rdbms/admin/catblock.log
@$ORACLE_HOME/rdbms/admin/catblock.sql;
spool off


· El Catclust (Crea las vistas específicas para bases de datos en Cluster - RACs ): 
spool $ORACLE_HOME/rdbms/admin/catclust.log 
@$ORACLE_HOME/rdbms/admin/catclust.sql; 
spool off 


Las sentencias que podemos utilizar para comprobar los catálogos instalados en la BBDD, su versión y su estado son : 

· 9i (y posteriores) 

select COMP_ID, COMP_NAME, VERSION, STATUS from dba_registry;

COMP_ID    COMP_NAME                      VERSION    STATUS
---------- ------------------------------ ---------- ------
CATALOG    Oracle9i Catalog Views         9.2.0.7.0  VALID
CATPROC    Oracle9i Packages and Types    9.2.0.7.0  VALID

· 8i (y anteriores): 

select * from v$option;

PARAMETER                           VALUE
----------------------------------- ----------
Partitioning                        TRUE
Objects                             TRUE
Real Application Clusters           FALSE
Advanced replication                TRUE
Bit-mapped indexes                  TRUE
Connection multiplexing             TRUE
Connection pooling                  TRUE
Database queuing                    TRUE
Incremental backup and recovery     TRUE
Instead-of triggers                 TRUE
Parallel backup and recovery        TRUE
Parallel execution                  TRUE
Parallel load                       TRUE
Point-in-time tablespace recovery   TRUE
Fine-grained access control         TRUE
Proxy authentication/authorization  TRUE
Change Data Capture                 TRUE
Plan Stability                      TRUE
Online Index Build                  TRUE
Coalesce Index                      TRUE
Managed Standby                     TRUE
Materialized view rewrite           TRUE
Materialized view warehouse refresh TRUE
Database resource manager           TRUE
Spatial                             TRUE
Visual Information Retrieval        TRUE
Export transportable tablespaces    TRUE
Transparent Application Failover    TRUE
Fast-Start Fault Recovery           TRUE
Sample Scan                         TRUE
Duplexed backups                    TRUE
Java                                TRUE
OLAP Window Functions               TRUE
Block Media Recovery                TRUE
Fine-grained Auditing               TRUE
Application Role                    TRUE
Enterprise User Security            TRUE
Oracle Data Guard                   TRUE
Oracle Label Security               FALSE
OLAP                                TRUE
Heap segment compression            TRUE
Join index                          TRUE
Trial Recovery                      TRUE
Oracle Data Mining                  TRUE
Online Redefinition                 TRUE
Streams                             TRUE
File Mapping                        TRUE