Índices

Publicado: julio 12, 2011 en Oracle

Definición de índice ¿qué es un índice? ¿para qué sirve?

El índice de una base de datos es una estructura de datos que mejora la velocidad de las operaciones, permitiendo un rápido acceso a los registros de una tabla. Al aumentar drásticamente la velocidad de acceso, se suelen usar sobre aquellos campos sobre los cuales se vayan a realizar búsquedas frecuentes.

El índice tiene un funcionamiento similar al índice de un libro, guardando parejas de elementos: el elemento que se desea indexar y su posición en la base de datos. Para buscar un elemento que esté indexado, sólo hay que buscar en el índice de dicho elemento para, una vez encontrado, devolver el registro que se encuentre en la posición marcada por el índice.

Los índices pueden ser creados usando una o más columnas, preparando la base de datos tanto para búsquedas rápidas al azar como para ordenaciones eficientes de los registros.

Los índices son construidos sobre árboles B, B+, B* o sobre una mezcla de ellos, funciones de cálculo u otros métodos.

El espacio en disco requerido para almacenar el índice es típicamente menor que el espacio de almacenamiento de la tabla (puesto que los índices generalmente contienen solamente los campos clave de acuerdo con los que la tabla será ordenada, y excluyen el resto de los detalles de la tabla), lo que da la posibilidad de almacenar en memoria los índices de tablas que no cabrían en ella. En una base de datos relacional un índice es una copia de parte de una tabla.

 

Cómo crear índices en Oracle

Creación de un índice al crear una tabla de Oracle

Para crear un índice en la creación de una tabla de Oracle podemos utilizar SQL*Plus (herramienta de línea de comandos incluida con Oracle), se puede utilizar también Oracle Enterprise Manager (modo gráfico) o una aplicación externa que permita acceso a Oracle, como por ejemplo:

AjpdSoft Administración Bases de Datos

Abriremos esta aplicación e introduciremos los datos para la conexión (nombre de la base de datos, nombre de usuario, contraseña, tipo de acceso):

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

Crearemos una tabla para el ejemplo de creación de índices ejecutando la siguiente consulta SQL:

CREATE TABLE facturacion (
codigo number(10) not null,
fecha date default sysdate,
codigocliente number(10),
nombrecliente varchar(100),
observacion varchar(2000),
constraint pk_facturacion_codigo primary key (codigo)
) tablespace USERS

Como se puede observar en la consulta SQL anterior, al añadir la línea:

constraint pk_facturacion_codigo primary key (codigo)

Estamos indicando a Oracle que cree la tabla "facturacion", con el campo "codigo" y que éste sea clave primaria, por lo que creará un índice automáticamente para este campo. Esta es una forma de crear índices, en la creación de la tabla:

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

Tras crear la tabla insertaremos algunos registros con la instrucción SQL:

insert into facturacion
(codigo, codigocliente, nombrecliente)
values (1, 50, ‘AjpdSoft’)

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

Puesto que hemos indicado que la columna "codigo" sea clave primaria, Oracle no permitirá valores duplicados para esta columna, esta comprobación la realizará basándose en el índice creado. Si intentamos agregar un nuevo registro con con el valor de "codigo" a "1" (que ya existe) nos mostrará este error:

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

Con el texto: ORA-00001: restricción única (SYSTEM.PK_FACTURACION_CODIGO) violada, indicando que la restricción únicaPK_FACTURACION_CODIGO no se ha cumplido por lo que no dejará insertar el registro.

Insertaremos varios registros (cambiando el valor de "codigo"). Ejecutando la consulta SQL:

select * from facturacion

Podremos ver los registros insertados en la tabla "facturacion":

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

Para ver el índice creado se puede utilizar esta consulta.

 

Crear un índice en una tabla ya existente en Oracle

La creación de un índice en Oracle se realiza mediante el comando create index. Cuando se define una clave primaria o una columna unívoca (UNIQUE) durante la creación de una tabla o su mantenimiento, Oracle creará automáticamente un índice de tipo UNIQUE que gestione dicha restricción, como hemos indicado anteriormente. La sintaxis completa de create index es la siguiente:

create [bitmap | unique] index nombre_indice on 
nombre_tabla (nombre_columna [, nombre_columna2] …) [reverse];

  • bitmap indica que se cree un índice de mapa de bits que permite crear índices en columnas con muy pocos valores diferentes.
  • unique indica que el valor de la o las columnas indexadas debe ser único, no puede haber duplicidades.
  • nombre_indice debe ser un nombre unívoco (no debe existir otro nombre de objeto en Oracle) que siga los convenios de denominación de Oracle para nombrar columnas.
  • nombre_tabla será el nombre de la tabla donde se creará el índice.
  • nombre_columna (o columnas) será la columna de la tabla nombre_tabla en la que se creará el índice. Se puede crear un índice para varias columnas.
  • reverse indica a Oracle que invierta los bytes del valor indexado, lo que puede mejorar la distribución del procesamiento y de los datos cuando se insertan muchos valores de datos secuenciales.

Para crear un índice en Oracle podemos utilizar SQL*Plus (herramienta de línea de comandos incluida con Oracle), se puede utilizar Oracle Enterprise Manager (modo gráfico) o una aplicación externa que permita acceso a Oracle, como por ejemplo:

AjpdSoft Administración Bases de Datos

Abriremos esta aplicación e introduciremos los datos para la conexión (nombre de la base de datos, nombre de usuario, contraseña, tipo de acceso):

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

Siguiendo con el ejemplo, añadiremos un índice normal para la columna "nombrecliente" de la tabla "facturacion". Para ello ejecutaremos la siguiente consulta SQL:

create index IN_FACTURACION_NOMBRECLIENTE 
on FACTURACION (NOMBRECLIENTE)

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

Para ver el índice creado podemos ejecutar la siguiente consulta SQL (como indicamos aquí):

select index_name Nombre, index_type Tipo,
table_name Tabla, tablespace_name Tablespace,
secondary Secundario
from all_indexes
where table_name = ‘FACTURACION’

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

Para añadir un índice de tipo UNIQUE, obligando a que los valores del campo indexado sean unívocos, no se puedan repetir en el campo de la tabla, ejecutaremos la siguiente sentencia SQL:

create unique index IN_FACTURACION_COD_CODCLI_FE
on FACTURACION (CODIGOCLIENTE, FECHA)

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

De esta forma Oracle no permitirá que haya dos registros en la tabla "facturacion" con el mismo valor en los campos "codigocliente" y "fecha", es decir, sólo podrá añadirse una factura por cliente y por día, un cliente no podrá tener dos facturas en un mismo día. Por ejemplo, si insertamos este registro:

insert into facturacion
(codigo, codigocliente, fecha)
values (6900, 500, to_date(’31/12/2009′, ‘DD-MM-YYYY’))

Intentaremos insertar un segundo registro con el mismo valor en codigocliente y en fecha:

insert into facturacion
(codigo, codigocliente, fecha)
values (6910, 500, to_date(’31/12/2009′, ‘DD-MM-YYYY’))

Oracle detectará que se está intentando infringir una restricción única, por lo que mostrará el siguiente mensaje de error y no dejará que se inserte el registro:

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

Con el texto: ORA-00001: restricción única (SYSTEM.IN_FACTURACION_COD_CODCLI_FE) violada.

Cómo saber si un índice se está utilizando, monitorización del uso de índices en Oracle

Para consultar las estadísticas sobre el uso de uno o varios índices de tablas de Oracle, en primer lugar deberemos activar la monitorización del índice que queramos, para ello utilizaremos el siguiente comando SQL:

alter index nombre_indice monitoring usage;

Por ejemplo, en nuestro caso, para monitorizar el índice IN_FACTURACION_NOMBRECLIENTE:

alter index IN_FACTURACION_NOMBRECLIENTE monitoring usage;

Tras activar la monitorización, podremos ver si el índice ha sido usado ejecutando la siguiente consulta SQL. En nuestro caso comprobaremos si han sido usado los índices monitorizados de la tabla FACTURACION:

select *
from v$object_usage
where table_name = ‘FACTURACION’

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

Mostrará un registro indicando los siguientes datos:

  • INDEX_NAME: nombre del índice usado.
  • TABLE_NAME: nombre de la tabla a la que pertenece el índice usado.
  • MONITORING: estado de monitorización, si está activa mostrará "YES".
  • USED: mostrará "NO" si aún no ha sido usado.
  • START_MONITORING: fecha y hora de inicio de monitorización.
  • END_MONITORING: fecha y hora de fin de monitorización.

Si insertamos algunos registros en la tabla FACTURACION y hacemos alguna consulta SQL ordenando por "nombre_cliente" para que el índice sea usado podremos ver cómo cambia el valor de USED en v$object_usage:

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

 

Para desactivar la monitorización ejecutaremos el siguiente comando SQL:

alter index nombre_indice nomonitoring usage;

En nuestro ejemplo:

alter index IN_FACTURACION_NOMBRECLIENTE nomonitoring usage

Ejecutando nuevamente la consulta:

select *
from v$object_usage
where table_name = ‘FACTURACION’

Veremos que ha cambiado el valor de MONITORING a "NO" y ha añadido la fecha y hora a END_MONITORING:

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

 

Mostrar información de los índices de una tabla en Oracle

Mostrar todas las restricciones de una tabla de Oracle

Para mostrar todas las restricciones de una tabla oracle (nombre de la restricción, nombre de la tabla, columnas a las que afecta) ejecutaremos la siguiente consulta SQL:

select constraint_name Nombre, table_name Tabla,
substr(column_name, 1, 255) Columnas
from all_cons_columns
where table_name = ‘FACTURACION’

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

Mostrar todos los índices de una tabla en Oracle

La siguiente consulta SQL mostrará todos los índices de la tabla "FACTURACION" de Oracle (nombre del índice, tipo de índice, nombre de la tabla, tablespace en el que se guarda, si es secundario):

select index_name Nombre, index_type Tipo, 
table_name Tabla, tablespace_name Tablespace, 
secondary Secundario
from all_indexes 
where table_name = ‘FACTURACION’

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

Obtener el tamaño ocupado por un índice de una tabla de Oracle

La siguiente consulta SQL mostrará el tamaño en megabytes de un índice determinado, en nuestro caso del índice PK_FACTURACION_CODIGO perteneciente a la tabla FACTURACION y el campo CODIGO del ejemplo. La consulta SQL para mostrar el tamaño ocupado por un índice es la siguiente:

select segment_name, sum(bytes)/1024/1024 MB
from dba_extents
where segment_name = ‘PK_FACTURACION_CODIGO’
group by segment_name

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

 

 

Reconstrucción de índices ¿cúando es necesaria? ¿cómo hacerla?, parámetros de los índices en Oracle

Reconstruir índices en Oracle

Oracle proporciona la capacidad de realizar una reconstrucción rápida de índices, que permite crear de nuevo un índice sin necesidad de eliminar el índice existente. El índice actualmente disponible se usa como origen de datos para el índice nuevo, en lugar de utilizar la tabla como origen de datos. Durante la reconstrucción del índice pueden cambiarse los parámetros de almacenamiento (storage) y la asignación del espacio de tablas (tablespace).

Para reconstruir un índice de una tabla utilizaremos la cláusula rebuild con el comando alter index. Un ejemplo de reconstrucción de un índice en Oracle podría ser:

ALTER INDEX nombre_indice REBUILD;

Siguiendo nuestro ejemplo, para reindexar el índice PK_FACTURACION_CODIGO ejecutaremos la siguiente instrucción SQL:

ALTER INDEX PK_FACTURACION_CODIGO REBUILD;

Ejecutaremos esta consulta desde Oracle Enterprise Manager, accediendo a la opción "Hoja de Trabajo de SQL", desmarcaremos la opción "Permitir Sólo Sentencias SELECT", en "Comandos SQL" introduciremos:

ALTER INDEX PK_FACTURACION_CODIGO REBUILD;

Y pulsaremos en "Ejecutar". Si todo es correcto nos devolverá en "Resultados": SQL se ha ejecutado correctamente.

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

 

Cambiar los parámetros de configuración de un índice en Oracle

Si queremos cambiar algún parámetro de configuración de algún índice, como el almacenamiento (storage) o incluso el espacio de tablas (tablespace) podremos ejecutar la siguiente instrucción SQL:

alter index nombre_indice rebuild
storage (initial 8M next 4M)
tablespace nombre_tablespace;

Con la instrucción anterior se reconstruirá el índice "nombre_indice" asignándole un tamaño inicial de extensión de 8MB y un tamaño para las siguientes extensiones de 4MB. El índice "nombre_indice" será creado en el tablespace "nombre_tablespace". Por lo que esta instrucción SQL servirá para cambiar de tablespace un índice (si así lo deseamos).

 

Cambiar la ubicación de un índice a otro tablespace en Oracle

Oracle recomienda que los índices sean almacenados en un tablespace que apunte a una unidad física diferente a la de los tablespaces de los datos. A continuación explicamos cómo cambiar la ubicación (tablespace) de un índice ya creado.

En primer lugar necesitaremos disponer de un tablespace para los índices, crearemos uno accediendo a Oracle Enterprise Manager, pulsando en "Servidor" y en la sección "Almacenamiento" pulsando en "Tablespaces". Nos mostrará los tablespaces actuales, pulsaremos "Crear":

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

 

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

 

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

 

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

 

AjpdSoft Cómo crear índices en Oracle con AjpdSoft Administración de Bases de Datos

O bien ejecutando una consulta SQL como la siguiente:

CREATE SMALLFILE TABLESPACE "TB_INDICES" DATAFILE ‘F:Oracleindicesf_tbindices.dbf’ SIZE 100M LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO DEFAULT NOCOMPRESS

Relaciones y Propiedades de tabla

Publicado: julio 12, 2011 en Oracle

Las Restricciones de Integridad en ORACLE

Resumen

Las restricciones de integridad son propiedades de la base de datos que se deben satisfacer en cualquier momento.

Oracle es un sistema de gestión de base de datos (SGBD) relacional que permite la definición de restricciones de integridad dentro del diseño de su base de datos al ser creada.

Se estudiará los diferentes tipos de restricciones que comprenden los siguientes puntos:

· Tratamiento de valores nulos.

· Valores por defecto.

· Integridad de clave primaria.

· Claves alternativas.

· Integridad referencial.

· Restricciones de integridad estáticas.

Estas restricciones serán definidas en la fase de diseño de la base de datos e incluidas en la los scripts de creación de tablas.

Otra cualidad del sistema de gestión de Oracle es la posibilidad de modificar las restricciones definidas para una tabla. Esto puede llevar conllevar a “inconsistencia” de los datos ya introducidos en la base de datos. Por ello, Oracle tiene definidos mecanismos para modificación de los datos ya existentes.

Además se estudiará cuando son ejecutas las restricciones de integridad dentro del esquema de funcionamiento de una base de datos Oracle.

1. Introducción

La integridad de los datos es la propiedad que asegura que información dada es correcta, al cumplir ciertas aserciones.

Las restricciones de integridad aseguran que la información contenida en una base de datos es correcta.

En los primeros puntos del trabajo, se realizará una definición a modo general de lo que son las restricciones de integridad, los tipos y ventajas que tiene su implementación en el esquema de la base de datos.

La segunda parte está orientada más a la parte práctica. Se especifica más concretamente las definiciones y modificaciones que se pueden realizar sobre restricciones de integridad en ORACLE.

Para todos y cada uno de los puntos se especificará el formato de la cláusula correspondiente en ORACLE y un ejemplo de la misma.

La modificación de las restricciones de integridad en ORACLE tan sólo se puede implementar a través de la cláusula ALTER TABLE.

2. Definición de restricciones

2.1 Descripción general

La evolución en el tiempo de una Base de Datos puede describirse por una secuencia de estados.

Dato un estado D, su sucesor D’, se obtiene aplicando a D una transacción T, tal que D ® T ® D’ [1].

Las restricciones de integridad aseguran que la información contenida en la base de datos cumple ciertas restricciones para los diferentes estados.

Existen dos tipos de restricciones:

· Estáticas: limitan los estados permitidos de la Base de Datos.

· Dinámicas: restringen las posibles transiciones de estados de la base datos.

Para incorporar el tratamiento de las restricciones de integridad en el sistema pueden realizarse:

· Añadiendo código adicional para verificar y asegurar que se cumplen las restricciones.

· Declarando las restricciones como parte del esquema de la base de datos.

La definición en la fase de diseño de las restricciones de integridad proporciona mayor número de ventajas, ya que:

· Reduce el coste de desarrollo de software.

· Es más confiable al ser centralizado y uniforme.

· Mantenimiento más fácil.

En las siguientes secciones se describirán más ampliamente la definición de las restricciones de integridad a modo general, así como los tipos de restricciones que podemos encontrar y otras clasificaciones.

También se describirá como se implementa el tratamiento de las restricciones en ORACLE, declarándolas como parte del esquema de la base de datos en la fase de creación de las tablas y cómo se pueden ser modificadas con posterioridad.

2.2 Representación de restricciones de integridad estáticas.

· Restricciones de Cardinalidad: se restringe la cantidad de objetos que puede referenciar a través de un atributo o la cantidad de objetos agregados que lo pueden referenciar como elemento de la agregación. Incluye el control de permiso para que un atributo pueda incluir un indicador definido por el sistema, como es el indicador NULL y que represente información faltante.

· Restricción de Dominio: sólo los objetos especificados pueden servir como dominio de un atributo.

· Restricción de Unicidad: un objeto podrá ser unívocamente identificable usando un determinado atributo.

· Restricción de Inverso: si un Atributo A1 es el inverso de otro A2, entonces si O2 es un valor del atributo A1 de algún objeto O1 implica que O1 es un valor del atributo A2 para el objeto O2.

· Restricción de Coexistencia: una instancia de la clase hija debe ser también existir como instancia de sus clases padre.

· Restricción de Clases hijas Disjuntas: las instancias de la clase padre sólo pueden pertenecer a una clase hija dentro de la jerarquía.

· Restricción de Cobertura: todas las instancias de al menos una clase hija dentro de la jerarquía.

2.3 Comprobación de la integridad.

La comprobación de la integridad consiste en asegurar que un par de estados (D,D’), implicados en una transacción, satisface las restricciones dinámicas y que el estado final D’ satisface las restricciones estática /dinámicas.

La comprobación de la integridad dentro de ORACLE, se realiza mediante el algoritmo OR, donde se define la ejecución del evento intercalado con la ejecución de las reglas activadas por él y la comprobación de las restricciones de integridad relevantes para el evento.

2.4 Restricciones de integridad elementales.

· Integridad de Entidades: ningún componente de clave primaria de una relación puede aceptar nulos. Nulo se referirá a información faltante. El concepto de unicidad es parte de la definición de clave primaria en sí.

· Integridad Referencial: la base de datos no puede contener valores de clave ajena sin concordancia. La posibilidad de aceptación de valores nulos deberá ser evaluada por el analista, al igual de las opciones a seguir (restricción, propagación o anulación)

En el caso de ORACLE, todas las definiciones de restricciones (tratamiento de nulos, claves primarias, ajenas etc.) ya sean a nivel de columna o a nivel de tabla, tienen un nombre.

Como esta asignación de nombre por parte del diseñador es opcional, si no se le asigna nombre en el momento de la definición, ORACLE le asigna uno interno. En cualquier caso, es conveniente declarar una restricción con su nombre porque así es posible referenciarla posteriormente en sentencias ALTER TABLE, para activarla o desactivarla.

A continuación se indicarán cómo son tratadas las distintas variantes de las restricciones de integridad elementales dentro de ORACLE.

2.5 Tratamiento de valores nulos en ORACLE.

Esta restricción especifica si una columna puede contener o no valores nulos. ORACLE por defecto se asume que la columna admite valores nulos.

Formato:

atributo tipo [CONSTRAINT nombre] NOT NULL | NULL.

Ejemplo:

Dni integer CONSTRAINT nn_dni NOT NULL

2.6 Tratamiento de los valores por defecto en ORACLE.

En este caso, las restricciones de integridad se utilizan para especificar valores que serán asignados a una columna, cuando en ésta no se introduzca ningún valor. El valor especificado en este campo debe ser del mismo tipo que la columna.

Las restricciones se especifican como parte de la definición de la columna.

Para el tratamiento de información faltante, se le puede especificar un NULL como valor por defecto siempre que la columna permita nulos.

En la expresión no se puede hacer referencia a otras columnas.

Formato:

atributo tipo DEFAULT expresión.

Ejemplo:

Num integer DEFAULT 1+3.

2.7 Tratamiento de clave primaria en ORACLE

En este caso la restricción de integridad designa una columna o combinación de columnas como clave primaria de la tabla.

Para facilitar su especificación, ORACLE permite definir la restricción a nivel de columna (en el ámbito de definición de una columna) o a nivel de tabla (si se definen después de introducir todas las columnas, en una sección genérica final de definición de restricciones).

– A nivel de columna: Se define dentro de una constraint asociada a la misma. La definición de una clave primaria lleva implícita la restricción de valores no nulos. La misma columna puede ser definida como primaria y ajena pero no como primaria y alternativa.

– A nivel de tabla: Se utiliza para definir claves primarias compuestas. Se declara antes o después de haber introducido las columnas de la tabla en cuestión.

Formato:

A nivel columna:

atributo tipo [CONSTRAINT nombre] PRIMARY KEY.

A nivel tabla:

[CONSTRAINT nombre] PRIMARY KEY(colum1,.. colum ..).

Ejemplo:

A nivel columna:

Dni integer [CONSTRAINT pk_dni] PRIMARY KEY

A nivel tabla:

CONSTRAINT pk_nomapelli PRIMARY KEY(nom,apelli).

Por defecto, ORACLE no permite la inserción de valores nulos en las columnas definidas como clave primaria.

2.8 Tratamiento de claves alternativas en ORACLE

Para las claves alternativas en ORACLE, se designa una columna o combinación de columnas como clave única alternativa a la clave seleccionada como primaria.

Existen dos posibilidades para seleccionar una clave primaria,

– Para definir una columna como única se especifica dentro de una constraint asociada a dicha columna.

Formato:

atributo tipo [CONSTRAINT nobmre] UNIQUE.

Ejemplo:

nombre char CONSTRAINT unq_nombre UNIQUE.

– Para definir una combinación de columnas como clave única se especifica dentro de una constraint asociada a la tabla.

Formato:

[CONSTRAINT nombre] UNIQUE (columan1, columana2 …)

Ejemplo:

CONSTRAINT unq_nomapell UNIQUE(nombre, apellidos)

2.9 Tratamiento de claves ajenas en ORACLE

En ORACLE pueden definirse claves ajenas a nivel columna o a nivel de tabla.

La integridad referencial de claves ajenas a nivel columna se declara detrás del tipo asociado al atributo en cuestión, con el formato presentado a continuación, en el que la palabra columna representa la clave primaria o única referenciada en la tabla n_tabla. Si no se especifica la columna o columnas, sino tan sólo el nombre de la tabla, se asume por defecto que estamos referenciando a su clave primaria.

A diferencia de la columna a la que se hace referencia, la columna donde se define el REFERENCES puede tener valores nulos.

A acciones a realizar:

1. Restringir (restrict),

2. poner a nulos (set null),

3. propagar (cascade),

Si la clave primaria a la que hace referencia la clave ajena es borrada o actualizada, en este caso sólo podemos especificar la situación en que se borre la clave primaria y queramos propagarlo a la clave ajena.

Esto es realizado mediante la cláusula on delete cascade. Si ésta no aparece, al igual que para actualizaciones de la clave primaria, la operación se asume restringida. Para incluir esas características faltantes hay que generar (es decir, programar) los disparos correspondientes.

Formato:

atributo tipo [CONSTRAINT nombre] REFENCES ntabla[(columna)] [ON DELETE CASCADE]

Ejemplo:

Dep char(10) REFERENCES departamento(nom)

Si las restricciones se definen a nivel de tabla se especifica la columna o composición de columnas que forman parte de la clave ajena después de la palabra clave FOREIGN KEY y la columna o columnas a la que se hace referencia después de la palabra clave REFERENCES.

Obviamente, el número de columnas y tipos de la clave ajena debe coincidir con el número de columnas y tipos de la clave primaria referenciada.

Formato:

[CONSTRAINT nombre] FOREIGN KEY (columna1, columna2, …) REFERENCES n_tabla[(columna1, columna2,…)] [ON DELETE CASCADE]

Ejemplo:

FOREIGN KEY(dep) REFERENCES departamento(nom)

2.10 Tratamiento de las restricciones de integridad estáticas en ORACLE

Las restricciones de integridad estáticas serán aquellas fórmulas bien formadas de primer orden construidas con atributos de la tabla como términos básicos, que depende satisfacerse en todos los estados válidos para las tuplas de una relación.

Estas restricciones de integridad están especificadas en ORACLE dentro de una restricción de tipo CHECK asociada a una columna o una tabla.

La implementación de esta restricción en una columna sería:

Formato:

atributo tipo [CONSTRAINT nombre] CHECK condición.

Ejemplo:

Saldo integer CHECK saldo!=saldo_base

A diferencia de otros gestores, en esa condición se puede hacer referencia a cualquier columna de la tabla.

No se pueden introducir en estas condiciones atributos de otras tablas. En ese caso, sólo queda el recurso de programar explícitamente la restricción de integridad, lo que habitualmente se hace generando disparos (“triggers”) de la base de datos.

La implementación a nivel de tabla sería equivalente.

3. Modificación de restricciones

Una vez creada una tabla es inevitable enfrentarse a situaciones en las que cambios no previstos obliguen a modificar las restricciones de integridad declaradas en el momento de su creación.

La flexibilidad proporcionada por un SGBD para abordar este tipo de modificaciones es un factor diferenciador que puede resultar básico. Se trata de un problema clásico en Base de Datos, al que se le conoce como Gestión de Evolución de Esquemas.

Entre las modificaciones a que está expuesta una base de datos en explotación, es importante distinguir entre:

– Aquellas que no afectan a la integridad de los datos ya existentes (por ejemplo, añadir una columna nueva a una tabla, o permitir que admita nulos un atributo que hasta ahora no los admitía).

– Y las que sí afectan a la integridad de los datos e implican toma de decisiones (por ejemplo, cambiar una restricción de integridad: la cuestión que se plantea es qué hacer con los datos preexistentes que no la cumplen, ¿borrarlos? ¿ignorarlos y aplicar la restricción a partir del momento de su introducción en el esquema?). Las elección del mecanismo a seguir para mantener la base de datos íntegra deberá ser elegida por el diseñador de la base de datos, según considere oportunas. Estas comprobaciones se realizarán mediante disparos o reglas de actividad definidas también en la base de datos.

La sentencia ALTER TABLE sirve para añadir o redefinir una columna, añadir o borrar una restricción de integridad y para activar o desactivar cualquier restricción de integridad o disparo.

Su implementación en ORACLE sería la siguiente:

Formato:

ALTER TABLE [esquema.]nom_tabla

[ADD nom_col + defe_de_restriccion_col]

[MODIFY nom_col tipo + def_de_restriccion_col]

[ADD + def_restriccion_tabla]

[DROP PRIMARY KEY | UNIQUE | CONSTRAINT nombre [CASCADE]]

[ENABLE PRIMARY KEY | UNIQUE | CONSTRAINT nombre | ALL TRIGGERS]

[DISABLE PRIMARY KEY | UNIQUE | CONSTRAINT nombre [CASCADE]]

donde:

def_de_restriccion_col y def_restriccion_tabla se refieren a las declaraciones de restricciones que se pueden realizar en el ámbito de una columna o de la tabla en su conjunto respectivamente.

– Si deshabilitamos una restricción tenemos la posibilidad de deshabilitar en cascada todas las restricciones que dependan de ella a través de la cláusula cascade.

– Si habilitamos una restricción de integridad referencial, la restricción de clave primaria o única asociada debe ser habilitada con anterioridad (si no lo estaba ya).

– Las opciones asociadas a UNIQUE identifican la clave única implicada en la modificación indicándola entre paréntesis.

La cláusula ENABLE ALL TRIGGERS permite activar disparos que puedan haber sido desactivados con la orden ALTER TRIGGER opción DISABLE proporcionada por ORACLE.

4. Mecanismo de activación de las restricciones de integridad en ORACLE.

La ejecución de los eventos en una base de datos ORACLE viene definida por el Algoritmo A2 or y OR.

Algoritmo A2or recursivo:

Mientras existan reglas activadas

1. seleccionar una regla activada R

2. comprobar la condición de R

3. si la condición de R es cierta:

a. ejecutar la acción de R

b. ejecutar OR para las reglas activadas por la acción de R

fin mientras

El algoritmo OR indica como se intercala la ejecución de las reglas activadas por él y la comprobación de las restricciones de integridad relevantes para el evento.

1. Procesar con A2or las reglas activadas de tipo BEFORE evento FOR EACH STATEMENT.

2. Para cada tupla afectada por el evento

  1. Procesar con A2 or las instancias (para la tupla actualizada= de las reglas activadas de tipo BEFORE evento FOR EACH ROW
  1. Ejecutar la actualización sobre la tupla y comprobar las restricciones de integridad relevantes para la tupla actualizada. Aquí se comprueba las restriciones de integridad relevantes par ael evento que son comprobadas a nivel de tupla individual (NOT NULL, CHECK(), …).
  1. Procesar con A2or las instancias (para la tupla actualizada ) de las reglas activadas de tipo AFTER evento FOR EACH ROW

3. Comprobar las restricciones de integridad relevantes para la operación de actualización a nivel de sentencia SQL (FOREING KEY).

5. Procesar con A2or las reglas activadas de tipo AFTER evento FOR EACH STATEMENT.

6. Ejemplo práctico sobre una base de datos común.

clip_image002

El diseño de las tablas de esta pequeña base de datos vendría dado por:

CREATE TABLE Departamento

(codigo CHAR(5) NOT NULL,

nombre VARCHAR(100) NOT NULL,

director VARCHAR(50),

telefono CHAR(11),

CONSTRAINT CP_dpto PRIMARY KEY (codigo);

Para la tabla “departamento” tiene definidas las restricciones de integridad de:

· tratamiento de no nulos para las columnas:

· código

· nombre

· tratamiento de clave primaria denominada CP_dpto para la columna código

CREATE TABLE Profesor

(codigo CHAR(5) NOT NULL,

nombre VARCHAR(100) NOT NULL

direccion VARCHAR(50),

telefono CHAR(11),

categoria CHAR(3) NOT NULL CONSTRAINT RI_cat CHECK (categoria=’TEU’ OR categoria=’CU’ OR categoria=’CEU’), dpto CHAR(5),

CONSTRAINT CP_prof PRIMARY KEY (codigo),

CONSTRAINT Caj_prof_dpto FOREIGN KEY (dpto) REFERENCES Departamennto);

Como puede verse, la tabla “profesor” tiene definidas las restricciones de integridad de:

· tratamiento de no nulos para las columnas:

· código

· nombre

· categoría

· restricciones de integridad estáticas con la cláusula check llamada RI_cat para la columna categoría, que delimita el rango de valores que puede contener la columna a tres cadenas de caracteres, ‘TEU’, ‘CU’ y ‘CEU’.

· tratamiento de clave primaria denominada CP_prof para la columna código

· tratamiento de clave ajena denominada Caj_prof_dpto de la columna dpto haciendo referencia a la tabla departamento.

CREATE TABLE Asignatura

(codigo CHAR(5) NOT NULL,

nombre VARCHAR(100) NOT NULL,

cre_teo NUMBER(3,1) NOT NULL CONSTRAINT RI_teo CHECK (cre_teo>0),

cre_pra NUMBER(3,1) NOT NULL CONSTRAINT RI_teo CHECK (cre_pra>0),

dpto CHAR(5),

CONSTRAINT CP_asg PRIMARY KEY (codigo),

CONSTRAINT Caj_asg_dpto FOREIGN KEY (dpto), REFERENCES Departamento);

La tabla “asignatura” tiene definidas las restricciones de integridad de:

· tratamiento de no nulos para las columnas:

· código

· nombre

· cre_teo

· cre_pra

· restricciones de integridad estáticas con la cláusula check para las columnas:

· cre_teo (denominada RI_teo)

· cre_pra (denominada RI_pra)

· tratamiento de clave primaria denominada CP_asg para la columna código

· tratamiento de clave ajena denominada Caj_asg_dpto de la columna dpto haciendo referencia a la tabla departamento.

CREATE TABLE Docencia

(cod_prof CHAR(5) NOT NULL,

cod_asg CHAR(5) NOT NULL,

creditos NUMBER(3,1) NOT NULL CONSTRAINT RI_cre CHECK (creditos>0),

CONSTRAINT CP_doc PRIMARY KEY (cod_prof, cod_asg),

CONSTRAINT Caj_doc_prof FOREIGN KEY (cod_prof) REFERENCES Profesor,

CONSTRAINT Caj_doc_asg FOREIGN KEY (cod_asg) REFERENCES Asignatura);

Finalmente, la tabla “docencia tiene definidas las restricciones de integridad de:

· tratamiento de no nulos para las columnas:

· cod_prof

· cod_asg

· créditos

· restricciones de integridad estáticas con la cláusula check denominada RI_cre para la columna créditos.

· tratamiento de clave primaria denominada CP_doc para la combinación de columnas cod_prof y cod_asg.

· tratamiento de clave ajena denominada CAj_doc_prof de la columna cod_prof haciendo referencia a la tabla profesor.

· Tratamiento de clave ajena denominada CAj_doc_asg de la columna cod_asg haciendo referencia a la tabla asignatura.

7. Conclusiones

Finalmente, podemos establecer que la inclusión de las restricciones de integridad dentro del diseño del esquema de la base de datos se traduce en ventajas.

ORACLE da muchas posibilidades a la hora de implementar los distintos tipos de restricciones de integridad que se pueden dar sobre una base de datos. Las restricciones de entidades son definidas al mismo tiempo que son creadas las tablas. Las restricciones referenciales se definen primeramente en la creación de las tablas, y su mecanismo de validación de datos puede hacerse mediante disparos (triggers).

Los disparos (triggers) es un punto importante dentro de las restricciones de integridad que no ha sido desarrollado en este trabajo. La razón de no profundizar sobre los disparadores es debido a que otros compañeros nuestros son los encargados de desarrollar el tema.

Relaciones

Publicado: julio 12, 2011 en Oracle

El Modelo Relacional

El modelo relacional

  • E.F. Codd propuso el modelo relacional para sistemas de b.d. En 1970.
  • Sustituyó a los modelos más populares del momento: el jerárquico y el de red. Facilidad de uso y flexibilidad.
  • Constituye la base para el sistema manejador de bd. Relacionales (RDBMS).

El modelo de datos E-R

  • El modelo de datos E-R se basa en una percepción de un mundo real que consiste en:
    • Una colección de objetos básicos ENTIDADES
    • Relaciones entre estos objetos RELACIONES
    • Restricciones de los datos Cardinalidad de Asignación
  • Una entidad se compone de Atributos.

Diagrama E-R

  • Mundo real Modelo conceptual (E-R)
  • Estructura de un diagrama E-R:
    • RECTÁNGULOS Entidades
    • ELIPSES Atributos
    • ROMBOS Relaciones
    • LÍNEAS Conectores
  • Ejemplo de un diagrama E-R:

Terminología de una b.d. relacional

Relaciones entre tablas

Oracle 8: ORDBMS

  • Posibilidad de almacenar objetos (extensión a Oracle7)
    • Modelo de datos relacional orientado a objeto
    • Ventajas de la programación orientada a objetos
  • Respecto a Oracle7:
    • > rendimiento y funcionalidad de transacciones online
    • Soporte de aplicaciones cliente-servidor
    • Soporte de aplicaciones basadas en Web distribuidas
    • Escalabilidad a decenas de miles de usuarios
    • Hasta 512 petabytes
    • Manejo de datos multimedia (imagen sonido, video)

Tablas

Publicado: julio 12, 2011 en Oracle

image

 

image

 

image

 

Tipos de datos

 

""Los tipos de datos soportados por Oracle se agrupan en los siguientes conjuntos.
Los valores alfanuméricos van encerrados entre comilla simple: ‘Alfanumérico’ Los valores numéricos son número simples: 123 Las fechas van encerradas entre comillas simples: ‘1/12/2000’ Los valores binarios no pueden ser representados (son fotos, videos…)

Tipo de dato CHAR(b)

Almacena cadenas de caracteres de longitud fija, desde 1 a 2.000 bytes de ocupación. El número de caracteres que se pueden almacenar se rige según la siguiente fórmula.
nº caracteres = bytes / character set Para ASCII, el conjunto de caracteres ocupa un byte, por lo que coincide el número de caracteres máximos con la ocupación del tipo de dato. Si se introduce un valor de 10 caracteres en un campo de CHAR(100), se rellenará con espacios las 90 posiciones restantes. Así la siguiente expresión es cierta:
‘Hola pepe’ = ‘Hola pepe ‘
Si se intenta introducir un valor demasiado grande para el campo, se intentará eliminar los espacios finales, y si cabe sin espacios, se introduce. Si aún así no cabe, se retorna un error.

Tipo de dato VARCHAR2(b)

Almacena cadenas de caracteres de longitud variable. Si se define una columna de longitud 100 bytes, y se introduce en ella un valor de 10 bytes, la columna ocupará 10 y no 100 como hacía con el tipo de dato CHAR.

Tipo de dato VARCHAR(b)

En Oracle8 es equivalente a VARCHAR2, en futuras versiones permitirá distintos criterios de comparación.

Tipo de dato NCHAR(b)

Almacena un valor alfanumérico de longitud fija con posibilidad de cambio de juego de caracteres. Puede almacenar tanto caracteres ASCII, EBCDIC, UNICODE…

Tipo de dato NVARCHAR2(b)

Almacena un valor alfanumérico de longitud variable con posibilidad de cambio de juego de caracteres. Puede almacenar tanto caracteres ASCII, EBCDIC, UNICODE…

Tipo de dato NUMBER(p,s)

Almacena valores numéricos en punto flotante que pueden ir desde 1.0 x 10-130 hasta 9.9…(38 nueves)… 9 x 10125. El almacenamiento interno de los valores numéricos en notación científica:
Mantisa x 10exponente
La mantisa puede contener cualquier número, entero o decimal, positivo o negativo. El exponente podrá contener cualquier número entero, positivo o negativo. El parámetro “p” indica la precisión (número de dígitos contando los decimales) que contendrá el número como máximo. Oracle garantiza los datos con precisiones de 1 a 38. El parámetro “s” indica la escala, esto es, el máximo de dígitos decimales. Hay que tener en cuenta que una columna definida NUMBER(10,5), podrá contener como máximo cualquier número siempre y cuando el número de dígitos enteros más el número de dígitos decimales no supere 10 (y no 15). La escala puede ir de -84 a 127. Para definir número enteros, se puede omitir el parámetro s o bien poner un 0 en su lugar. Se puede especificar una escala negativa, esto lo que hace es redondear el número indicado a las posiciones indicadas en la escala. Por ejemplo un número definido como NUMBER(5,-2), redondeará siempre a centenas. Así si intentamos introducir el valor 1355, en realidad se almacenará 1400.

Tipo de dato FLOAT(b)

Almacena un número en punto decimal sin restricción de dígitos decimales. El parámetro b indica la precisión binaria máxima que puede moverse en el rango 1 a 126. Si se emite el defecto será 126. Una columna FLOAT(126) es equivalente a una columna NUMBER(38), aunque la diferencia está en que la columna NUMBER no podrá contener decimales y la columna FLOAT si y en con cualquier escala.

Tipo de dato DATE

Almacena un valor de fecha y hora.
Para un tipo de dato DATE, Oracle almacena internamente los siguiente datos: ƒ Siglo ƒ Año ƒ Mes ƒ Día ƒ Hora ƒ Minuto ƒ Segundo
El formato por defecto de las fechas es: ‘DD-MON-YYYY’
Esto es: Dos dígitos para el día Las tres primeras siglas del año (depende del idioma instalado). Cuatro dígitos para el año.
Por ejemplo: ‘1-JAN-2001’ ó ‘2-DEC-1943’
Este formato puede ser alterado en cualquier momento.
Internamente un fecha se almacena como el número de días desde cierto punto de inicio (por ejemplo el año 0). Esto permite que las fechas puedan ser tratadas en operaciones aritméticas normales:
‘1-JAN-2001′ + 10 = ’11-JAN-2001’ ‘1-JAN-2000′ – 1 = ’31-DEC-1999′ ’10-MAY-2000’ – ‘1-MAY-2000’ = 9

Tipos de datos binarios

Permiten almacenar información en formato "crudo", valores binarios tal y como se almacenan en el disco duro o como residen en memoria. Estas columnas se pueden utilizar tanto para almacenar grandes cantidades de datos (hasta 4Gb.), como para almacenar directamente cualquier tipo de fichero (ejecutables, sonidos, videos, fotos, documentos Word, librerías…) o para transportar datos de una base de datos a otra, ya que el formato binario es el único formato común entre cualquier sistema informático.

Tipo de dato LONG

Almacena caracteres de longitud variable hasta 2 Gb. Este tipo de dato se soporta para compatibilidad con versiones anteriores. En Oracle8 y siguientes versiones se deben usar los tipos de datos CLOB y NLOB para almacenar grandes cantidades de datos alfanuméricos.

Tipo de dato ROWID

Representa una dirección de la base de datos, ocupada por una única fila. El ROWID de una fila es un identificador único para una fila dentro de una base de datos. No hay dos filas con el mismo ROWID. Este tipo de dato sirve para guardar punteros a filas concretas. El ROWID se compone de:
-Número de datafile donde se almacena la fila (se pueden ver en DBA_DATA_FILES) -Dirección del bloque donde está la fila -Posición dentro del bloque
Siempre que queramos obtener una fila de la firma más rápida posible, debemos hacerlo a través de su ROWID. Un uso típico suele ser obtener un listado de ROWIDs con un SELECT, y después acceder a cada una de las filas directamente con la condición del ROWID. ""

 

 

Secuencias

CONCEPTO

Mediante las secuencias, Oracle puede proporcionar una lista consecutiva de números unívocos que sirve para simplificar las tareas de programación. La primera vez que una consulta llama a una secuencia, se devuelve un valor predeterminado. En las sucesivas consultas se obtendrá un valor incrementado según el tipo de incremento especificado. Las secuencias pueden ser útiles, por ejemplo, para simular el tipo de datos AUTOINCREMENTO de Paradox, Access y MySQL.

¿Cómo crear una secuencia mediante SQL?

Para crear una secuencia en Oracle mediante SQL utilizaremos el comando create sequence con la siguiente sintaxis:

CREATE SEQUENCE nombre_secuencia
INCREMENT BY numero_incremento
START WITH numero_por_el_que_empezara
MAXVALUE valor_maximo | NOMAXVALUE 
MINVALUE valor_minimo | NOMINVALUE
CYCLE | NOCYCLE
ORDER | NOORDER

Por ejemplo, si queremos crear una secuencia que empiece en 100 y se incremente de uno en uno utilizaremos la siguiente consulta SQL:

CREATE SEQUENCE incremento_id_cliente
INCREMENT BY 1
START WITH 100

Para utilizar la secuencia, en primer lugar, crearemos una tabla de prueba (para insertar un registro y comprobar que la secuencia anterior funciona correctamente):

create table clientes (
codigo number not null primary key, 
nombre varchar2(100) unique not null, 
cif varchar2(15) unique, 
fechaalta date)

Para utilizar la secuencia creada en una inserción de fila:

insert into clientes values (
incremento_id_cliente.NextVal, 
‘AjpdSoft’, 
‘11225522F’, 
sysdate)

Realizamos otra inserción para comprobar que el incremento es de 1:

insert into clientes values (
incremento_id_cliente.NextVal, 
‘Otro cliente’, 
‘00000G’, 
sysdate)

Como se puede observar en el ejemplo anterior, para obtener el siguiente valor de la secuencia almacenada se utiliza el comando:nombre_secuencia.NextVal.

Para comprobar que la secuencia ha funcionado en los inserts anteriores hacemos un SELECT a la tabla "clientes":

select * from clientes

El resultado de este SELECT debe ser de dos registro con "codigo" 100 y 101:

AjpdSoft Administración BD

Ejemplo de creación de una secuencia cíclica (cuando llegue al valor máximo empezará por el valor inicial)

CREATE SEQUENCE incremento_ciclico
INCREMENT BY 1
START WITH 10
MAXVALUE 30 
CYCLE

Creamos una tabla para las pruebas:

create table prueba_ciclo (
codigo number not null primary key, 
ciclo number not null, 
fechaalta date)

Ahora realizamos la inserción de más de 20 filas para comprobar que la secuencia cíclica funciona:

insert into prueba_ciclo values (
incremento_id_cliente.NextVal,
 
incremento_ciclico.NextVal
, 
sysdate)

Como se puede observar en el ejemplo anterior hemos utilzados dos secuencias "incremento_id_cliente" y "incremento_ciclico".

Para comprobar que el ciclo funciona realizamos un SELECT sobre la tabla "prueba_ciclo":

select * from prueba_ciclo

AjpdSoft Administración BD

Crear una secuencia decreciente

Para crear una secuencia decremental el parámetro INCREMENT BY tendrá valor -1 y el parámetro START WITH coincidirá con el parámetro MAXVALUE:

CREATE SEQUENCE secuencia_decremental 
INCREMENT BY -1 
START WITH 100 MAXVALUE 100

Para hacer la prueba crearemos la tabla "prueba_decremental":

create table prueba_decremental (numero number, fecha date)

Ahora insertaremos unas cuantas filas para comprobar que la secuencia funciona correctamente:

insert into prueba_decremental values (secuencia_decremental.NextVal, sysdate)

Haremos un SELECT para comprobar que la secuencia es decremental:

select * from prueba_decremental

AjpdSoft Administración BD


Arquitectura de una base de datos Oracle

Publicado: julio 12, 2011 en Oracle

Arquitectura ORACLE

La arquitectura de ORACLE tiene tres componentes básicos:
– la Estructura de Memoria (Para almacenar los datos y el código ejecutable).
– Los Procesos (que corren el sistema de bases de datos y tareas de cada usuario conectado a la BD).
– Los Archivos (Sirven para el almacenamiento físico en disco de la información de la BD)

dibujo1.jpg

Instancias

Para permitir el acceso a los datos, Oracle utiliza un conjunto de procesos que son compartidos por todos los usuarios. Además, existen estructuras de memoria que son utilizadas para almacenar los datos más recientemente solicitados a la BD.

Una instancia de BD es el conjunto de estructuras de memoria y de procesos que acceden a los ficheros de datos.

Los parámetros que determinan el tamaño y composición de una instancia están almacenados en un fichero llamado init.ora. Este fichero es leido durante el arranque de la BD y puede ser modificado por el DBA. Cualquier modificación de este fichero no tiene efecto hasta la siguiente vez que se arranque la BD.

Las estructuras de la BD Oracle pueden ser divididas en tres clases:

  • aquellas que son internas a la BD,
  • aquellas que son internas a las áreas de memoria (incluidas la memoria compartida y procesos),
  • aquellas que son externas a la BD.

 

El Enterprise Manager

Esta herramienta es instalada por el OUI al finalizar la creación de la base de datos, y aprender a utilizarla es fundamental para la gestión de una base de datos Oracle.

El Enterprise Manager permite que usuarios con poca experiencia puedan realizar tareas complejas de administración en un entorno web intuitivo.

Para arrancar el Enterprise Manager hay que escribir en un navegador la dirección

http://direccion:puerto/EM

donde la dirección es la del servidor donde se ha instalado la base de datos, y el puerto por defecto 1158, siendo una url válida por ejemplo:

http://hugo:1158/EM

Mostrándose la cónsola de conexión donde se han de introducir los datos de un usuario válido, como por ejemplo "SYS" o "SYSTEM" que son superusuarios y tienen todos los privilegios necesarios para acceder a todas las opciones posibles.

Enterprise Manager. Introducción

Introducción al Enterprise Manager Database Control

Además de monitorizar el rendimiento de la instancia de la base de datos, algunas de las tareas que habitualmente ha de realizar el administrador son:

Iniciar la instancia y abrir la base de datos. La instancia suele estar configurada de forma que se arranca automáticamente y se abre la base de datos cuando se inicia el sistema operativo, pero puede ser necesario cerrarla y pararla para realizar operaciones de mantenimiento o recuperación.

Configurar las conexiones de red para permitir la conexión de clientes al servidor de base de datos.

Gestionar las estructuras de almacenamiento tales como : tablespaces y ficheros de datos, ficheros de redo logs y ficheros de control.

Administrar usuarios y la política de seguridad. Al crear nuevos usuarios se le asignan privilegios y roles para controlar el acceso que tienen a los objetos de la base de datos.

Gestión de los objetos de un esquema, creando usuarios y los objetos que necesiten.

Definir la política de copias de seguridad y recuperación. Puede establecer una política básica utilizando el archivado automático de los ficheros de redo log.

Los Archivos


Los archivos que maneja ORACLE se clasifican en 4 grupos:
Archivos de Datos: estos archivos sirven para el almacenamiento físico de las tablas, índices y procedimientos. Dichos archivos son los únicos que contienen los datos de los usuarios da la BD.Las unidades lógicas más grandes manejadas por ORACLE, para el almacenamiento de los datos son llamados espacios de tabla, que le permiten manejar o controlar el espacio en los discos.

Archivos de Control: tiene la descripción física y dirección de los archivos de la BD y los archivos de rehacer, para el arranque correcto de la BD. Estos archivos son los que especifican cuales datafiles conforman la BD para tener acceso a los datos y poder recuperar la BD ante una falla.

Archivo de Rehacer: tienen los cambios hechos de la base de dato para la recuperación ante fallas o manejo de transacciones es decir poseen el valos antes de una transacción, la orden ejecutada y opcionalmente el valor después de la transacción. Su principal objetivo es servir de respaldo de los datos en la memoria RAM.

Archivos fuera de Línea: son archivos opcionales donde se guarda información vieja de los archivos de rehacer, muy convenientes para los respaldos de la BD.


dibujo2.jpg

Instalación

Publicado: julio 11, 2011 en Oracle

Este artículo muestra cómo instalar Oracle 10g Express Edition (XE). Esta nueva versión gratuita está dirigida a estudiantes, pequeñas empresas y desarrolladores que quieran emplearla junto con sus aplicaciones. Es una versión limitada en características pero perfectamente operativa para pruebas y pequeñas empresas. Os explicamos cómo instalar esta versión de Oracle Database en Windows XP Profesional.

 

Instalar Oracle Database 10g XE Express Edition en Windows

Esta versión limitada de Oracle 10g sólo podrá correr en servidores con 1 sólo procesador y con hasta 1 Gb de RAM, y podrá manejar un tamaño máximo de 4 Gb de almacenamiento en el disco.

A continuación os mostramos, paso a paso, cómo instalar Oracle 10g Express Edition en un PC con Windows:

1. Descargaremos el fichero OracleXE.exe de la web de Oracle:

http://www.oracle.com/technology/software/products/database/xe/index.html

(necesitaremos ser usuarios registrados de Oracle, el registro es gratuito)

2. Ejecutaremos el fichero descargado, pulsaremos Siguiente para iniciar la instalación:

Instalar Oracle Database 10g Express Edition - Asistente de instalación

3. Aceptaremos el contrato de licencia y pulsaremos Siguiente:

Instalar Oracle Database 10g Express Edition - Acuerdo de licencia

4. Marcaremos Oracle Database 10g Express Edition y especificaremos la ruta de instalación de Oracle, pulsando el botón Examinar podremos cambiar la ruta por defecto: C:/oraclexe:

Instalar Oracle Database 10g Express Edition - Ruta de instalación

Nota: necesitará un espacio mínimo de 1,6 GB.

5. Introduciremos la contraseña para el usuario SYS y para el usuario SYSTEM y pulsaremos Siguiente:

Instalar Oracle Database 10g Express Edition - Contraseña para el usuario SYS y SYSTEM

6. A continuación aparecerá una ventana con las opciones de instalación elegidas, pulsaremos Instalar para iniciar el proceso:

Instalar Oracle Database 10g Express Edition - Resumen de las opciones de instalación

Carpeta de Destino: C:/oraclexe/
Puerto para ‘Listener de Base de Datos Oracle’: 1521
Puerto para ‘Oracle Services para Microsoft Transaction Server’: 2030
Puerto para Listener HTTP: 8080

Se inicia el proceso de copia de ficheros:

Instalar Oracle Database 10g Express Edition - Inicio del proceso de copia de ficheros

y el proceso de configuración automática de la base de datos. Por defecto, el instalador de Oracle 10g Express Edition, crea y configura una base de datos:

Instalar Oracle Database 10g Express Edition - Creación y configuración automática de la base de datos

7. Tras la finalización del proceso de creación de la base de datos, el asistente permite iniciar la página de configuración de la base de datos, lo dejaremos chequeado y pulsaremos en Terminar:

Instalar Oracle Database 10g Express Edition - Fin de la instalación

Tras unos segundos nos aparecerá esta página web para administrar Oracle 10g Express Edition, accesible introduciendo en el explorador de Internet:http://127.0.0.1:8080/apex. En Username introduceremos el nombre del usuario (system ó sys) y en Password introduciremos la contraseña especificada en el paso 5 de este manual:

Instalar Oracle Database 10g Express Edition - Acceso a la administración de Oracle XE

Nos aparecerá una ventana de administración (limitada con respecto la las versiones completas) con varias opciones: Administration (para configurar las opciones de almacenamiento, memoria, usuarios y monitorización), Object Browser (para visualizar, modificar y crear tablas, vistas, índices, funciones, triggers, procedimientos, paquetes, secuencias, etc), SQL (para ejecutar consultas SQL, scripts, etc), Utilities (exportación, importación, papelera de reciclaje, informes, generación de sentencias DDL, etc):

Instalar Oracle Database 10g Express Edition - Ventana principal de la administración

Videos Oracle

Publicado: julio 10, 2011 en Oracle