Está en la página 1de 31

INSTALACIÓN DE ORACLE

Manual explicado paso a paso (con capturas de pantalla) cómo instalar Oracle 9i en Windows (cualquier
versión). Incluyendo soluciones de algunos errores en el arranque de Oracle.

1. INSTALACIÓN DE ORACLE 9i EN WINDOWS

• Introduciremos el CD 1 de la instalación, los tres CDs que componen el programa de instalación se


pueden descargar gratuitamente (siempre que no sea con fines lucrativos) desde la propia web de
oracle: www.oracle.co m

• Tras seleccionar la ruta de los ficheros de oracle pulsaremos en Siguiente.


• A continuación seleccionaremos el tipo de instalación que deseemos:
En nuestro caso, puesto que crearemos la base de datos en el servidor donde estamos realizando la
instalación seleccionaremos Oracle9i Database 9.2.0.1.0. Si ya disponemos de un servidor de Oracle con
las correspondientes bases de datos a las que queramos acceder será suficiente con seleccionar la
opción Oracle9i Client 9 .2.0.1.0, en este caso la instalación es bastante más simple, pues sólo es
necesario especificar la IP o el nombre de red del servidor de Oracle así como el nombre (sid) de la base
de datos a la que queramos acceder.

• Seleccionaremos el tipo de instalación que queramos realizar:


En nuestro caso, seleccionaremos Enterprise Edition , si queremos realizar una instalación más avanzada
(especificando manualmente las opciones a instalar) seleccionaremos Personalizado , en este caso
aparecería una ventana como esta:

• Seleccionaremos la siguiente opción dependiendo del uso que le quer amos dar a nuestra base de
datos, normalmente es para Uso General. Si no queremos crear una base de datos en el proceso de
instalación (se puede crear en otro momento) seleccionaremos Sólo software:

• Seleccionaremos el puerto para Oracle MTS Service, normalmente se suele seleccionar el puerto por
defecto 2030. Este parámetro es muy importante pues, si decidimos cambiar el puerto por defecto,
cuando queramos que un cliente se conecte al servidor deberemos especificar el puerto que hayamos
seleccionado en este punto de la instalación:
• Especificaremos el nombre de la base de datos (con un máximo de 8 caracteres):

Nota: el SID es el identificador interno que utilizará Oracle para referenciar a nuestra base de datos, se
puede elegir uno diferente al del nombre de la Base de Datos, aunque se suele utilizar el mismo.

• En este punto de la instalación seleccionaremos la ubicación de los archivos de la base de datos que la
instalación creará. Oracle recomienda que la ubicación de los archivos de la base de datos esté en un
disco físico distinto al de los archivos de la instalación (software de Oracle). También recomienda que los
archivos de Redo Log estén multiplexados (varias copias, esto se configura en la consola de
administración de Oracle) y en diferentes discos físicos. Lógicamente es lo recomendable por Oracle y
sólo se configura así cuando se trata de una Base de Datos que tendrá múltiples accesos concurrentes
(al mismo tiempo) y con un volumen de datos importante, pues el desembolso económico en harware
para la correcta instalación de Oracle puede ser importante. En nuestro caso, instalaremos los archivos
de la base de datos en un segundo disco duro instalado exclusivamente para Oracle. A pesar de todo no
hay ningún problema por instalar la bas e de datos en el mismo disco duro que el software de Oracle. Si
nuestra organización dispone, por ejemplo, de unos 20 usuarios conectados a Oracle no habría una
pérdida del rendimiento por instalarla en el mismo disco duro. Por supuesto esto es orientativo pues
dependerá también del volumen de datos que necesite cada usuario así como de otros factores (rpm del
disco duro, características del servidor de Oracle (procesadores, memoria RAM, …), velocidad de la red
local, tipo de conexión que realice el software de nuestra empresa que acceda a Oracle (el acceso nativo
sin necesidad de utilizar controladores ODBC incrementa considerablemente el rendimiento frente a
accesos mediante controladores ODBC que no dejan de ser una pasarela entre el software y Oracle):

• Seleccionaremos el juego de caracteres que vayamos a utilizar, si dejamos el juego de caracteres por
defecto Oracle utilizará el juego de caracteres que tengamos configurado en nuestro sistema operativo,
es la opción recomendada. Este parámetro sólo sería importante en el caso en que queramos exportar
nuestra base de datos a otro servidor de Oracle, en este caso será importante que el juego de caracteres
del servidor que recibirá los datos coincida con el que los exportó. Si no coinciden podrían aparecer
erróneamente caracteres como “€” alojados en nuestra base de datos:
• Como último paso de la preinstalación nos aparecerá una ventana con el software que se va a instalar,
tras comprobar que es correcto pulsaremos en Instalar:

• Introduciremos los CDs de instalación conforme los vaya pidiendo el programa:

• Tras la instalación de Oracle y la creación de la base de datos aparecerá una ventana indicando que el
proceso de instalación ha finalizado:
En esta ventana nos indica que ha finalizado el proceso de instalación y que podemos acceder desde
cualquier otro PC de la red introduciendo en el navegador de Internet:
http://nombre_o _IP_del_servidor_oracle:7778

El acceso vía Internet está permitido pues al seleccionar la instalación Enterprise Edition se instala e
inicia por defecto Oracle http Server (servidor web de Oracle).
Si al intentar acceder a la Consola de Oracle En terprise Manager nos aparece este error:

Deber emos configurar el Listener manualmente, para ello accederemos a Inicio – Programas – Ora cle –
OraHome92 – Configuration and Migration Tools – Net Configuration Assistant:
Seleccionamos Configuración de Listener y a continuación Volver a Configurar:

Nos aparecerá el Listener que el programa de instalación de Oracle crea automáticamente:

Seleccionamos el protocolo a utilizar (TCP):


Seleccionamos el puerto a utilizar, por defecto 1521:

Con esto habremos vuelto a actualizar el Listener:


Si el error ORA-12541: TNS: no hay ningún listen er continúa apareciendo deberemos seguir los pasos
que se indican en el punto 1 del anexo.

CONFIGURACIÓN DE USUARIO PARA ACCESO V ÍA HTTP A LOS PROCEDIMIENTOS PL -SQL


ALMACENADOS

Si tenemos iniciado el Servidor http de Ora cle podr emos acceder desde cualquier equipo de la red local
y, también, desde cualquier parte del mundo (siempre que tengamos configurado el router con el
puerto 7778 redirigido a la IP local del Servidor de Oracle). Es suficiente con poner en el navegador de
Internet: http://IP_Servidor_Oracle:7778, nos aparecerá una ventana como esta:

Desde aquí podremos configurar los usuarios que tendrán acceso a través de Internet a Oracle, así como
los procedimientos que se ejecutarán en el inicio.

ERRORES CON EL ORACLE

1.- ALGUNOS ERRORES AL INICIAR ORACLE Y SU SOL UCIÓN

• Al iniciar la Enterprise Manager Console o al intentar conectarme a la Base de Datos de Oracle aparece
el siguiente error:

TNSLSNR.EXE ha detectado un problema y deb e cerrarse.


Más información: szAppName: TNSLSNR.EXE szAppVer: 0.0.0.0 szModNa me: orantcp9.dll
Y tras pulsar en Cerrar el servicio OracleOraHome92TNSListener se detiene.

Solución:
Accedemos al Regedit, desde el botón Inicio – Ejecu tar ponemos regedit y pulsamos en Acepta r:
buscamos la siguiente clave:
HKEY_LOCAL_MACHINE/SOFTW ARE/ORACLE/HOME0
E insertamos una nueva entrada de tipo Valor de cadena expandible con el valor TRUE:
USE_SHARED_SOCKET=TRUE

Una vez añadida esta clave reiniciaremos el sistema. En teoría ya debería haberse solucionado el
problema.
Si el problema sigue produciéndose tras reiniciar, será conveniente comprobar el fichero
WinsockXPFix.exe
• El espacio en disco no para de decrecer, hasta quedarse sin espacio. Este problema es producido por el
Servidor HTTP de O racle Basado en Apache, cuando dicho servidor encuentra algún problema con el
Listener (como el descrito en el punto 1), lo informa escribiendo en el log que crea a tal efecto. Dicho
fichero de log va creciendo desproporcionadamente hasta dejar el disco duro sin espacio. La línea del
fichero de log podría ser como esta:

[warn] FastCGI: server "c:/oracle/o ra92/bin/isqlplus" can't be resta rted :exceeded max resta rts

Solución:
Para solucionar este problema, en primer lugar deberemos detener el servicio
OracleOraHome92HTTPServer y deshabilitarlo para que no se vuelva a iniciar, al menos, hasta que
solucionemos el problema, a continuación eliminaremos el fichero de log de Apache ubicado en:
C:/oracle/ora92/Apache/Apache/logs

Eliminaremos el fichero error_log, si no nos deja eliminarlo será porque el servicio no se ha detenido
correctamente, con lo cual deberíamos deshabilitar dicho servicio y reiniciar el equipo.

Con esto hemos solucionado el problema parcialmente pues, aunque ya no vamos a tener problemas
con el espacio en disco, el servidor de Apache estará deshabilitado, con lo cual no podremos acceder a
Oracle vía Internet.

Para poder iniciar el servicio de Apa che sin que deje el disco sin espacio editaremos el fichero:

C:/oracle/ora92/Apache/Apache/conf/httpd.conf

Y modificaremos la línea LogLevel warn por Log Level erro r . De esta forma evitaremos que el log se llene
de warning y sólo se guardarán los errores. Una vez guardado el fichero httpd.conf podremos volver a
iniciar el servicio OracleOraHome92HTTPServer.

• Al intentar conectar a Oracle aparece el error "TNS-12535: TNS:timeout de la operación" ó "ORA-


12535: TNS:operation timed out". Dicho error se puede comprobar en el directorio de instalación de
Oracle: C:/oracle/ora92/bin/sqlnet.log

Solución:
Normalmente es debido a un fallo de conexión de red con el servidor. Si, tras comprobar que la red
funciona adecuadamenete, el problema sigue apareciendo se puede deber también a la intervención de
un cortafuegos (tanto hardware como software). Por ejemplo, si tenemos instalado Oracle Server en un
PC con Windows XP, el cortafuegos software que éste incorpora inpedirá el acceso a la Base de Datos
Oracle desde otros PCs. Para solucionarlo deberemos configurar adecuadamente en cortafuegos
abriendo los puertos que utiliza Oracle, tales como el 1521.

2.- INICIAR / PARAR / PROBAR LA BASE DE DATOS MAN UALMENTE

Para iniciar una base de datos de Oracle manualmente seguiremos los siguientes pasos:

Desde la línea de comandos (consola de MS-DOS) pondremos:

o Sqlplus /nolog: Para conectarnos a SQLPlus que es la consola de Oracle para MS-DOS,
útil para realizar tareas de mantenimiento de la Base de Datos, tales como reparación,
apagado manual, inicio manual
o Connect / as sysdba: Para conectarnos a Oracle como administradores, al no poner
nombre de usuario delante de “/” se asume el usuario del sistema operativo (éste ha
de ser administrador)
o Select status from v$instance: con esta consulta comprobamos que la base de datos
no está iniciada, para ello deberá devolver un valor distinto a STARTED
o Select database_status from v$instance
o startup nomount: con esta sentencia iniciaremos la base de datos sin montar, puede
ser útil para reparar algún datafile dañado o para realizar tareas que no se podrían
llevar a cabo con la base de datos montada
o shutdown immediate: cierra la base de datos, incluso aunque haya usuarios
conectados
o startup: inicia y monta la base de datos , la deja lista para ser usada
o alter user hr identified by hr account unlock: esta instrucción sirve para desbloquear
un usuario bloqueado y cambiarle la contraseña, en este caso hemos desbloqueado un
usuario que Oracle crea por defecto, llamado hr y le hemos asignado la contraseña hr
o connect hr/hr: nos conectamos con el usuario hr para hacer una Select y comprobar
que funciona correctamente
o select * from employees: hacemos una consulta de selección para que nos muestre el
contenido de la tabla employees que Oracle crea automáticamente en la instalación

Para realizar este manual hemos utilizado:

Oracle9i Database 9.2.0.1.0.


Microsoft Windows XP.

Nota: este manual no tiene por qué ser la mejor forma de instalar Oracle, es una de las muchas
configuraciones que se pueden realizar.

INSTALACIÓN DE ORACLE 11G EN WINDOWS XP

Requerimientos:

Permisos de Administrador: Es necesario tener per misos de administrador para ejecutar el instalador.
Requisitos mínimos de Hardware: Es necesario cumplir con los siguientes requerimientos mínimos en
Esta es una guía rápida de instalación de Oracle 11g en Windows 32 -Bit, así que solo se tocaran los
puntos más importantes para dejar corriendo los servicios básicos de Oracle.

Requerimientos:

1. Permisos de Administrador: Es necesario tener per misos de administrador para ejecutar el


instalador.

2. Requisitos mínimos de Hardw are: Es nec esario cumplir con los siguientes requerimientos
mínimos en equipo donde se desea instalar:

Requisito Mínimo
Memoria Física (RAM) 1Gb
Memoria Virtual El doble de tamaño que la RAM
(2Gb)
Espacio en disco Instalación Básica: 4.55Gb
Instalación Avanzada: 4.92Gb
Adaptación de Vídeo 256 colores
Procesador 550Mhz

3. Requisitos mínimos de Software:

Arquitectura de procesador Intel (x86), AMD64, o Intel EM64T


Sistema Operativo oWindows 2000 Service
Pack 1 o superior
o Windows Server 2003 o
Superior
o Windows XP Professional
o Windows Vista Businnes o
Superior
*Windows NT no esta soportado
Compilador o ACUCOBOL-GT version 6.2
o Micro Focus Net Express
5.0
Protocolo de red o TCP/IP
o TCP/IP with SSL
o Named Pipes

4. Navegadores web soportados:

o Netscape Navigator 7.2 o Superior


o Mozilla version 1.7 o Superior
o Microsoft Internet Explorer 6.0 SP2 o Superior
o Firefox 1.0.4 o Superior

Instalación:

1. Si está instalando Oracle en un equipo con muchos alias, defina la variable de entorno
ORACLE_HOSTNAME en el Panel de Control para definir el alias que se va a usar.
2. Ingrese al directorio donde descomprimió el instalador
3. Ejecute el instalador con permisos de Admi nistrador. Si el usuario que en el que estas logueado
actualmente no tiene esos permisos(En Windows Vista es obligatorio usar el usuario
Administrador / Administrador para esto), da clic derecho al instalador, elige la opción ejecutar
como…. y selecciona un usuario con los permisos adecuados:

4. Se selecciona el producto que se va a instalar:

5. Usualmente se elige la opción Básica, pero esta vez va mos a pasar por la parte avanzada. así
que elegimos Instalación Avanzada:
6. Si es la primer instalación que hace de Oracle es probable que tenga que especificar, la ruta
seria: “/u01/app/oraInventory“.

7. Ahora seleccionaremos Custom y clic al botón Next:

8. Ahora dejamos todos los parámetros de la localización de la instalación tal como están por
default:

9. A continuación se nos muestran los componentes a ser instalados. Seleccionamos los que
necesitemos o podemos dejarlo tal como esta:
10. Llego la hora de la instalación de la base de datos. Seleccionamos el tipo de base de datos que
necesitemos:

11. Antes de instalarse se nos muestra un breve sumario que detalla cada parámetro de la
instalación, si todo esta correcto damos clic en Install:
12. Seguro que a estas alturas ya se antoja una taza de café (ahora mismo hace frío acá en
Montemor elos,NL), así que sientete en la libertad de irte a preparar uno o charlar un rato con
tu chapis; porque esto va a tardar un buen rato:

13. Espero que te hallas divertido mientras Oracle se instalaba, si no ocurrió ningún
problema….felicidades Oracle está instalado en tu máquina y listo para comenzar a trabajar:

Cualquier duda a problema con la instalación porfavor no preguntes aquí, no soy un experto en la
administración de BD Oracle. Este solo es un trabajo presentado en cumplimiento de una materia, por el
contrario te animo visites el sitio que te r ecomiendo a continuación; espero allí puedas resolver todas
tus dudas.

CREAR UNA BASE DE DATOS ORACLE

CONFIGURAR UNA BASE NUEVA


Para configurar una nueva base de datos ingresamos al “Asistente de configuración de Bases de Datos”:
Seguimos los 15 pasos, en el paso 3 escribimos el nombre de la nueva base de datos, y en el paso 5
seleccionamos el uso de la misma contraseña para todos los usuarios, y la escribimos, en los demás
pasos seleccionamos los valores por defecto:
Creamos un usuario para poder ingresar con una conexión a la base de datos.
El usuario tiene que tener asignado por defecto la tablespace SYSTEM y como temporal TEMP, también
tiene que tener todos los privilegios, por eso seleccionamos en la misma ventana la viñeta de privilegios
del sistema.

Finalmente en el SQL Developer realizamos una nueva conexión de la base de datos creada con el
nombre del usuario.
CREACIÓN DE TABLAS

Los nombres de las tablas deben cumplir las siguientes reglas:

 Deben comenzar con una letra


 No deben tener más de 30 caracteres
 Sólo se permiten utilizar letras del alfabeto (inglés), números o el signo de subrayado (también
el signo $ y #, pero esos se utilizan de manera especial por lo que no son recomendados)
 No puede haber dos tablas con el mismo nombre para el mismo usuario (pueden coincidir l os
nombres si están en distintos esquemas)
 No puede coincidir con el nombre de una palabra reservada de Word

La sentencia CREATE TABLE es la orden SQL que permite crear una tabla. Por defecto será almacenad en
el tablespace por defecto del usuario que crea la tabla.

Sintaxis:

Ejemplo:

CREATE TABLE Region


(
RegionID NUMBER NOT NULL,
RegionDescription CHAR(50) NOT NULL,
CONSTRAINT PK_Region
PRIMARY KEY (RegionID)
)
/

La sentencia DESCRIBE, per mite obtener la estructura de una tabla.

Ejemplo:

DESCRIBE Region;

Y aparecerán los campos de la tabla proveedores.

La sentencia INSERT permite añadir datos a las tablas.

Su sintaxis básica es:

Indicando la tabla se añaden los datos que se especifiquen tras el apartado VALUES en un nuevo
registro. Los valores deben corresponderse con el orden de las columnas. Si no es así se puede indicar
tras el nombre de la tabla y entre paréntesis.
Ejemplo:

Begin
INSERT INTO Region(RegionID, RegionDescription)
VALUES (1, 'Eastern');
commit;
end;/
BORRADO TABLAS

Borrar tabla

La sentencia DROP TABLE seguida del nombre de una tabla, permite eliminar la tabla en cuestión.
Al borrar una tabla:

 Desaparecen todos los datos.


 Cualquier vista y sinónimo refer ente a la tabla seguirán existiendo, pero ya no funcionarán
(conviene eliminarlos).
 Las transacciones pendientes son aceptadas (COMMIT).
 Sólo es posible realizar esta operación si se es el propietario de la tabla o se posee el privilegio
DROP ANY TABLE.

El borrado de una tabla es irreversible, y no hay ninguna petición de confirmación, por lo que conviene
ser muy cuidadoso con esta operación.

Borra contenido de tablas

La sentencia TRUNCATE TABLE seguida del nombre de una tabla, hace que se elimine el contenido de la
tabla, pero no la tabla en sí. Incluso borra del archivo de datos el espacio ocupado por la tabla.
Esta orden no puede anularse con un ROLLBACK.

MODIFICAR TABLAS
La versátil ALTER TABLE per mite hacer cambios en la estructura de una tabla.

Cambiar nombre de tablas


La sentencia RENAME permite el cambio de nombre de cualquier objeto.
Sintaxis:

Añadir columnas

Permite añadir nuevas columnas a la tabla. Se deben indicar su tipo de datos y sus propiedades si es
necesario (al estilo de CREATE TABLE).
Las nuevas columnas se añaden al final, no se puede indicar otra posición.
Borrar columnas

Elimina la columna indicada de manera irreversible e incluyendo los datos que contenía.
No se puede eliminar la última columna (habrá que usar DROP TABLE).

Modificar columna
Permite cambiar el tipo de datos y propiedades de una determinada columna.
Sintaxis:

Los cambios que se permiten son:

 Incrementar precisión o anchura de los tipos de datos


 Sólo se puede reducir la anchura si la anchura máxima de un campo si esa columna posee nulos
en todos los registros, o todos los valores so o no hay registros.
 Se puede pasar de CHAR a VARCHAR2 y viceversa (si no se modifica la anchura)
 Se puede pasar de DATE a TIMESTAMP y viceversa.

Añadir comentarios a las tablas

Se le pueden poner comentarios a las tablas y las columnas. Un comentario es un texto descriptivo
utilizado para documentar la tabla.
Sintaxis:

Para mostrar los comentarios puestos se usan las siguientes vistas del diccionario de datos mediante la
instrucción SELECT:

• USER_TAB_COMMENTS. Comentarios de las tablas del usuario actual.


• USER_COL_COMMENTS. Comentarios de las columnas del usuario actual.
• ALL_TAB_CO MMENTS. Comentarios de las tablas de todos los usuarios (sólo administradores)
• ALL_CO L_COMMENTS. Comentarios de las columnas de todos los usuarios (sólo administradores).

RESTRICCIONES

Una restricción es una condición de obligado cumplimiento para una o más columnas de la tabla. A cada
restricción se le pone un nombre, en el caso de no poner un nombr e (en las que eso sea posible)
entonces el propio Oracle le coloca el nombre que es un mnemotécnico con el nombre de tabla,
columna y tipo de restricción.
Su sintaxis general es:

Las restricciones tienen un nombre, se puede hacer que sea Oracle el que les ponga nombre, pero
entonces será críptico. Por eso es mejor ponerle uno mismo.
Los nombres de restricción no se pueden repetir para el mismo esquema, por lo que es buena idea
incluir de algún modo el nombr e de la tabla, los campos involucrados y el tipo de restricción en el
nombre de la misma.

Prohibir nulos

La restricción NOT NULL permite prohibir los nulos en una determinada tabla. Eso obliga a que la
columna tenga que tener obligatoriamente un valor para que sea almacenado el registro.
Se puede colocar durante la creación (o modificación) del c ampo añadiendo la palabra

NOT NULL tras el tipo:


CREATE TABLE Territories (TerritoryID VARCHAR2(20) NOT NULL);
En ese caso el nombre le coloca Oracle. La otra forma (que admite nombr e) es:
CREATE TABLE Territories(TerritoryID VARCHAR2(20)
CONSTRAINT TerritoryID _sinnulos NOT NULL(TerritoryID));

Valores únicos

Las restricciones de tipo UNIQUE obligan a que el contenido de uno o más campos no puedan repetir
valores. Nuevamente hay dos formas de colocar esta restricción:
CREATE TABLE cliente(dni VARCHAR2(9) UNIQUE);

En ese caso el nombre de la restricción la coloca el sistema Oracle. Otra forma es:
CREATE TABLE cliente(dni VARCHAR2(9) CONSTRAINT dni_u UNIQUE);
Esta forma permite poner un nombre a la restricción. Si la repetición de valores se refiere a varios
campos, la forma sería:
CREATE TABLE alquiler(dni VARCHAR2(9),
cod_pelicula NUMBER(5),
CONSTRAINT alquiler_uk UNIQUE(dni,cod_pelicula) ;

La coma tras la definición del campo cod_pelicula hace que la restricción sea independiente de ese
campo. Eso obliga a que, tras UNIQUE se indique la lista de campos.

Clave prim aria

La clave primaria de una tabla la forman las columnas que indican a cada registro de la misma. La clave
primaria hace que los campos que la forman sean NOT NULL (sin posibilidad de quedar vacíos) y que los
valores de los campos sean de tipo UNIQUE (sin posibilidad de repetición).

Si la clave está formada por un solo campo basta con:


CREATE TABLE Shippers(ShipperID NUMBER NO T NULL, CO NSTRAINT
PK_Shippers PRIMARY KEY (ShipperID))
Clave se cundaria o foráne a

Una clave secundaria o foránea, es uno o más campos de una tabla que están relacionados con la clave
principal de los campos de otra tabla. La forma de indicar una clave foránea es:

CREATE TABLE alquiler(dni VARCHAR2(9),


cod_pelicula NUMBER(5),
CONSTRAINT alquiler_pk PRIMARY KEY(dni,cod_pelicula),
CONSTRAINT dni_fk FOREIGN KEY (dni)
REFERENCES clientes(dni),
CONSTRAINT pelicula_fk FOREIGN KEY (cod_pelicula)
REFERENCES peliculas(cod));

La integridad referencial es una herramienta imprescindible de las bases de datos relacionales. Pero
provoca varios problemas. Por ejemplo, si borramos un registro en la tabla principal que está
relacionado con uno o varios de la secundaria ocurrirá un error, ya que de permitírsenos borrar el
registro ocurrirá fallo de integridad (habrá claves secundarios refiriéndose a una clave principal que ya
no existe).

Por ello Oracle nos ofrece dos soluciones a añadir tras la cláusula REFERENCES:

 ON DELETE SET NULL. Coloca nulos todas las claves secundarias relacionadas con la borrada.
 ON DELETE CASCADE. Borra todos los registros cuya clave secundaria es igual que la clave del
registro borrado.

Restricciones de validación

Son restricciones que dictan una condición que deben cumplir los contenidos de una columna. La
expresión de la condición es cualquier expresión que devuelva verdadero o falso, pero si cumple estas
premisas:

 No puede hacer refer encia a números de fila


 No puede hacer refer encia a objetos de SYSTEM o SYS
 No se permiten usar las funciones SYSDATE, UID, USER y USERENV
 No se per miten referencias a columnas de otras tablas (si a las de la misma tabla)

Una misma columna puede tener múltiples CHECKS en su definición (se pondrían varios
CONSTRAINT seguidos, sin comas).

Ejemplo:

CREATE TABLE ingresos(cod NUMBER(5) PRIMARY KEY,


concepto VARCHAR2(40) NO T NULL,
importe NUMBER(11,2) CONSTRAINT importe_min
CHECK (importe>0)
CONSTRAINT importe_max
CHECK (importe<8000)
);

Mostrar restricciones

La vista del diccionario de datos USER_CONSTRAINTS permite identificar las restricciones colocadas por
el usuario (ALL_CO NSTRAINTS per mite mostrar las restricciones de todos los usuarios, pero sólo está
permitida a los administradores). En esa vista aparece toda la información que el diccionario de datos
posee sobre las restricciones.
CREACIÓN DE ÍNDICES

Tipos de índices

Existen tres tipos de índices cuya naturaleza depende de la forma en que haya sido creado. Estos tipos
son:

Un índice único es aquel que tiene la restricción adicional de que el grupo de columnas indexadas define
una única fila. Sin embargo, si no van a existir más grupos de columnas con estas características dentro
de una misma tabla, se recomienda crear el conjunto como una clave primaria ya que de todas formas
Oracle asociará un índice único a esta restricción (la clave primaria).

Un índice no único, que es aquel que no impone la restricción de que las filas no deban repetirse.

Un índice compuesto es aquel que agrupa varias columnas de la tabla. Este tipo es muy útil cuando las
sentencias de selección (SELECT) efectúan búsquedas por varios criterios (columnas) en una misma
tabla. Es importante el orden en que se ponen las columnas al crear el índice; la columna más
referenciada debería ser puesta en primer lugar y así sucesivamente.

Es importante decidir qué columnas indexar. Siga las siguientes reglas cuando tenga que tomar esta
decisión:

 Escoja las columnas que se utilizan con mayor frecuencia en las cláusulas
WHERE de las consultas.
 No indexe aquellas columnas que tengan demasiados valores repetidos en ellas.
 Las columnas que toman valores únicos son excelentes candidatas para indexar.
Oracle automáticamente indexa las claves primarias de las tablas.
 Indexe las columnas que sirven para unir una tabla con otras (join en las consultas).
 Si hay columnas que no tienen valores únicos por sí solas pero que en conjunto con otra
columna forman una dupla única o con pocas repeticiones (menos que las columnas
individualmente), entonces conviene indexarlas (siempre y cuando existan consultas que las
utilicen en conjunto). Estos índices reciben el nombre de índices compuestos.

Sintaxis de creación de índices:

CREATE INDEX nombre_indice ON [esquema.]nombre_tabla


(columna1 [, colu mna2,...])
TABLESPACE nombre_tablespace;

2. LENGUAJE DE CONSUL TA ESTRUCTURADO

Los comandos básicos del DBMS es un conjunto de sentencias que está orientado a la consulta y manejo
de datos de los objetos creados, básicamente consta de 4 sentencias:
SELECT, INSERT, DELETE, UPDATE.

INSTRUCCIÓN SELECT

Es la encargada de indicar las columnas que se desean mostrar de una tabla en el resultado, con
cualquier tipo de condición, agrupación u ordenación. Una sentencia
SELECT retorna un único conjunto de res ultados, por lo que podrá ser aplicada en cualquier lugar donde
se espere un conjunto de resultados.

Las distintas columnas deben aparecer separadas por coma ( , ), opcionalmente puede ser cualificadas
con el nombre de su tabla utilizando la sintaxis:
Si se quieren mostrar todas las columnas de una tabla, se podrá incluir el carácter *, o bien TABLA.*
La sintaxis básica es:

SELECT * / columna1, colu mna2,...


FROM nombre_tabla
WHERE condición
GROUP BY columnas de agrupación
HAVING condición agrupada
ORDER BY colu mnas de ordenación;

Todas las cláusulas son opcionales excepto SELECT y FRO M.


Si se incluye la cláusula DISTINCT después de SELECT, se suprimirán aquellas filas del resultado que
tenga igual valor que otras.

La sentencia FROM se indican el (los) conjunto(s) de resultado(s) que interviene(n) en la consulta.


Normalmente se utilizan tablas, pero se admite cualquier tipo de conjunto (tabla, select, vista…). Si
apareciese más de una tabla, deben ir separadas por coma. Las tablas deben existir y si no existiera
alguna aparecería un error.

La sentencia WHERE indica qué condiciones debe cumplirse para que una fila entre dentro del conjunto
de resultados retornado. Para construir las condiciones se podrán utilizar todos los operadores lógicos.

Es posible construir condiciones complejas uniendo dos o más condiciones simples a través de los
operadores lógicos AND y OR.

La sentencia GROUP BY.- La expresión GROUP BY se utiliza para agrupar valores que es necesario
procesar como un grupo.

La sentencia HAVING.- Se utiliza cuando se quiere poner condiciones al resultado de un grupo. Sólo se la
puede utilizar si se ha incluido la cláusula GROUP BY.

La sentencia ORDER BY.- Se utiliza para ordenar las filas del conjunto de resultados final.
Todas las columnas por las que se desea realizar el orden tienen que encontrarse en la sentencia SELECT
de la consulta.

INSTRUCCIÓN DELETE.

Borra una o más filas de una tabla, dependiendo de la condición WHERE, para guardar cambios hay que
ejecutar COMMIT; y para cancelar el borrado podemos hacer
ROLLBACK; su sintaxis es la siguiente:
DELETE FROM no mbre_tabla
WHERE condición;

Si no se pone condición, borra todas las filas de una tabla.

Ejemplo de DELETE
Tabla antes del borrado

Tabla después del borrado

INSTRUCCIÓN UPDATE.

Actualiza valores de una o más columnas para un subconjunto de filas de una tabla, para guardar
cambios hay que ejecutar COMMIT; y para cancelar la modificación podemos hacer ROLLBACK;
su sintaxis es la siguiente:

UPDATE no mbre_tabla
SET columna1 = valor1, columna2 = valo r2, ...
WHERE condición;

Actualiza las filas que cumplan con la condición, si no se pone condición de selección, la actualización se
da en todas las filas de la tabla.

No existe una gran diferencia entre la sintaxis básica de SQL Server 2005 y Oracle 11g, la única diferencia
es que para ejecutar la consulta, inserción, actualización o borrado en SQL se ponía al final GO, mientras
que en Oracle solo se pone punto y coma (;).

Ejemplo de UPDATE
Antes de la actualización

Después de la actualización

CONSULTAS

SQL es un conjunto de sentencias u órdenes que todos los programas y usuarios deben utilizar para
acceder a bases de datos Oracle. No hay otra manera de comunicarse con Oracle si no es a través de
SQL. Dado que SQL es un estándar, todas las bases de datos comerciales de la actualidad utilizan SQL
como puente de comunicación entre la base de datos y el usuario.

Ejemplo de consultas

SUBCONSUL TAS

Una subconsulta es una instrucción SELECT anidada dentro de una instrucción SELECT,
SELECT...INTO, INSERT...INTO, DELETE, o UPDATE o dentro de otra subconsulta.

Puede utilizar tres formas de sintaxis para crear una subconsulta:


 Comparación: Es una expresión y un operador de comparación que compara la expresión con el
resultado de la subconsulta.
Sintaxis: co mparación [ANY | A LL | SOME] (instru cción sql);
 Expresión: Es una expresión por la que se busca el conjunto resultante de la subconsulta.

Sintaxis: expresión [NOT] IN (instrucción sql);


 Instrucción SQL: Es una instrucción SELECT, que sigue el mismo formato y reglas que cualquier
otra instrucción SELECT. Debe ir entre paréntesis.

Sintaxis: [NOT] EXISTS (instrucción sql)


VISTAS

Una vista no es más que una consulta al macenada a fin de utilizarla tantas veces como se desee. Una
vista no contiene datos sino la instrucción SELECT necesaria para crear la vista.

Hay dos tipos de vistas:


 Simples: Las forman una sola tabla y no contienen funciones de agrupación. Su ventaja es que
permiten siempre realizar operaciones DML sobre ellas.
 Complejas: Obtienen datos de varias tablas, pueden utilizar funciones de agrupación. No
siempre permiten operaciones DML.

Creación de vistas
Sintaxis:

Donde:
 OR REPLACE. Si la vista ya existía, la cambia por la actual.
 FORCE. Cr ea la vista aunque los datos de la consulta SELECT no existan
 vista. Nombre que se le da a la vista
 alias. Lista de alias que se establecen para las columnas devueltas por la consulta

SELECT en la que se basa esta vista. El número de alias debe coincidir con el número de columnas
devueltas por SELECT.

 WITH CHECK OPTION. Hace que sólo las filas que se muestran en la vista puedan ser añadidas
(INSERT) o modificadas (IPDATE). La restricción que sigue a esta sección es el nombre que se le
da a esta restricción de tipo CHECK OPTION.
 WITH READ ONLY. Hace que la vista sea de sólo lectura. Permite grabar un nombre para esta
restricción.

Procedimientos almacenados
Un procedimiento almacenado es un conjunto de instrucciones en PL/SQL, que pueden ser llamado
usando el nombre que se le haya asignado.
La sintaxis para crear un procedimiento es la siguiente:
CREATE [OR REPLACE] PROCEDURE name ([param [IN|OUT|IN OUT|] datatype ], . . .)
AS sql_subprogram

El uso de OR REPLACE permite sobreescribir un procedimiento existente. Si se omite, y el procedimiento


ya existe, se producirá un error.
Los modificadores IN, OUT, IN OUT indican si el parametro es de entrada, salida o ambos.
Si se desea eliminar (borrar) un procedimiento almacenado, se usa la instrucción:
DROP PROCEDURE name;