Manual - Administracion de Bases de Datos Con Oracle 9i
Manual - Administracion de Bases de Datos Con Oracle 9i
Manual - Administracion de Bases de Datos Con Oracle 9i
ndice general_
CURSORES.................................................................................187
11.
NDICES ....................................................................................199
formacin digital
GLOSARIO .........................................................................................217
ndice_
Instalacin de
Oracle 9i
Instalacin de
Oracle 9i
Instalacin de
Oracle 9i
Una vez pasada esta ventana, podemos observar las carpetas creadas en el disco duro:
Instalacin de
Oracle 9i
La segunda opcin instala las herramientas necesarias para administrar, pero sin crear una
B.D.
Finalmente, la tercera opcin slo instala los programas necesarios para poder acceder a una
B.D. Oracle desde un ordenador o puesto cliente.
Personalizado
Instalacin de
Oracle 9i
Las B.D. del tipo Procesamiento de Transacciones, son aquellas que reciben un gran
nmero de transacciones al segundo por parte de un volumen elevado de usuarios. Ejm.Entidades Bancarias.
Las B.D. del tipo Almacenes de Datos, son las B.D. conocidas con Data WareHouse,
destinadas a la toma de decisiones sobre grandes volmenes de datos e informacin a
procesar e interpretar, sin ningn nivel de transacciones.
1.5. VENTANA DE ORACLE SERVICES PARA MICROSOFT TRANSACTION SERVER
En ella se especifica el nmero del puerto por el cul Oracle escuchar las peticiones de
transacciones realizadas desde la aplicacin Microsoft Transaction Server (MTS). En este
caso el 2030, el cul se aconseja no cambiar salvo que este nmero de puerto se est
usando por otro programa o aplicacin.
Instalacin de
Oracle 9i
Instalacin de
Oracle 9i
Instalacin de
Oracle 9i
Instalacin de
Oracle 9i
SYS / change_on_install
SYSTEM / manager
Dicha ventana, adems de solicitarnos dichos cambios, nos muestra informacin de la B.D.
creada, qu fichero posee los parmetros de iniciacin de dicha B.D. y dnde est ubicado
fsicamente.
10
Instalacin de
Oracle 9i
11
recuerde_
Instalacin de
Oracle 9i
A la hora de instalar Oracle hay que tener muy claro dnde se instalar, es
decir, el ORACLE_HOME.
Una vez finalizada la creacin de la B.D., Oracle nos solicitar las password
para los usuarios SYS y SYSTEM por motivos de seguridad.
12
ndice_
Arquitectura
de Oracle 9i
13
Arquitectura
de Oracle 9i
Tablespaces
Segmentos
Extensiones
Bloques de Datos
Tabla A
Tabla B
Tabla C
.............
Espacio de Tabla
Fichero de Dato 1
Fichero de Dato 2
15
16
Arquitectura
de Oracle 9i
Arquitectura
de Oracle 9i
17
Arquitectura
de Oracle 9i
Tablespaces
Seg. 2
Seg. 1
E1
B1
E2
B2
B3
E3
B4
B5
E4
B6
B7
B.D.
TABLESPACE
DataFiles
SEGMENTO
EXTENSIONES
BLOQUES DE S.O.
BLOQUES
PARTE Fsica
PARTE Lgica
18
B8
2
Un Mapa de Tablespaces proporcionado por Oracle sera:
19
Arquitectura
de Oracle 9i
Arquitectura
de Oracle 9i
Unidad:\ORACLE\ORADATA\SID\system01.dbf
(Teniendo en cuenta que SID es el nombre de la INSTANCIA a la B.D., bien creada de forma
genrica en el proceso de instalacin o mediante la aplicacin Database Configuration
Assistant).
20
Arquitectura
de Oracle 9i
Temporales (TEMPORARY) y
Deshacer (UNDO)
Permanent.- La mayora de los tablespaces son permanentes, es decir, se crean para
almacenar tablas, ndices, informacin de restauracin de datos (RollBack).
Temporary.- Son espacios de tablas que se crean para operaciones SQL que conlleven
ordenaciones, uniones y generacin de ndices.
Undo.- Anteriormente ROLLBACK, son espacios de tablas que almacenan las acciones a
ejecutar en una sentencia Rollback.
Si inicialmente un tablespaces es creado PERMANENT y despus queremos que sea
TEMPORARY, podemos modificarlo mediante la siguiente sentencia SQL:
21
Arquitectura
de Oracle 9i
OffLINE. No permite que sus datos estn disponibles para los usuarios y/o las
aplicaciones, aunque la BD est arrancada o levantada.
Un tablespace se coloca OffLINE cuando existe algn problema con dicho tablespace y
tenemos que deshabilitar su uso. Tambin emplearemos la opcin OffLine ante la situacin
en la cul tenemos un tablespaces que contiene datos histricos que no se usan pero que no
podemos eliminar.
22
Arquitectura
de Oracle 9i
gestionados
localmente
Extensiones
Gestionadas
Localmente
(EXTENT
23
Arquitectura
de Oracle 9i
24
Arquitectura
de Oracle 9i
25
Arquitectura
de Oracle 9i
26
Arquitectura
de Oracle 9i
27
Arquitectura
de Oracle 9i
NOARCHIVELOG.
Si una B.D. esta en modo ARCHIVELOG, esto quiere decir que Oracle siempre realizar una
copia del fichero REDO LOG antes de borrar y volver a escribir. Es la forma de mantener
segura la informacin existente en la B.D. Este NO es el mtodo predeterminado.
El modo NOARCHIVELOG (Por defecto), no realiza copia de los ficheros REDO LOG,
recuperndose slo las ltimas transacciones realizadas.
28
recuerde_
Arquitectura
de Oracle 9i
29
ndice_
Creacin de
Tablespaces
31
Creacin de
Tablespaces
DDL (Data Definition Language ).- Nos permite manipular y definir la estructura dnde
se almacenarn los datos. stas son las instrucciones propias para crear, modificar y
borrar tablespaces, tablas, ndices, etc., es decir: CREATE, ALTER ,DROP.
DML (Data Management Language).- Son las que nos permiten el manejo ms bsico
de los datos, tales como insertarlos, consultarlos, modificarlos y borrarlos, es decir:
INSERT, SELECT, UPDATE, DELETE.
DCL (Data Control Language).- Son las instrucciones que permiten asignar funciones
de acceso, privacidad en los datos, poltica de seguridad, etc. Este tipo de
instrucciones o tareas son las propias que debe realizar el DBA. Por ejemplo: crear un
usuario, asignarle permiso de acceso, etc.
33
Creacin de
Tablespaces
Paso 2.- Una vez en ella, seleccionamos la B.D. sobre la cul se crear el Tablespace.
Para poder crear un Tablespace sobre una B.D., deberemos tener permiso. En nuestro
caso lo llevaremos a cabo mediante el usuario System.
34
Creacin de
Tablespaces
Paso 4.- En la ventana que nos aparece, escribimos el nombre PRUEBA. En dicha
ventana, podemos observar cmo Oracle de forma automtica asigna el mismo
nombre
del
tablespace
al
fichero
de
datos
lo
ubicar
por
defecto
en
35
Creacin de
Tablespaces
opciones por defecto asignadas a los parmetros de almacenamiento son las siguientes:
36
Creacin de
Tablespaces
Paso 5.- Una vez pulsado el botn de CREAR, nos debe aparecer el mensaje de
Tablespace creado. Una vez hecho esto, podremos comprobar como aparece dentro de
los tablespaces existentes en la carpeta Tablespaces.
La sintaxis de la sentencia SQL que creara el TABLESPACE prueba sera:
Lo primero que nos encontramos es el nombre del TABLESPACE, en este caso: PRUEBA.
A continuacin, la clusula LOGGING, que puede ser LOGGING
o NOLOGGING, nos
DATAFILE
'C:\ORACLE\ORADATA\GLOBAL\PRUEBA.ora'
SIZE
5M
.-
Ubicacin,
37
3
Los
DataFiles
poseen
un
tamao
inicial:
Creacin de
Tablespaces
DATAFILE
Una vez activada esa opcin, debemos especificar el valor Kbytes o Mbytes que queremos
que crezca el Datafiles y si deseamos que su crecimiento sea ilimitado (UNLIMITED) o
limitado (MAXSIZE valor).
38
Creacin de
Tablespaces
Grficamente sera:
39
Creacin de
Tablespaces
Para eliminar un tablespaces, es tan simple como hacer clic derecho sobre el nombre del
Tablespace, dentro de la aplicacin Enterprise Manager Console y seleccionar la opcin
Eliminar. En versiones anteriores, tras borrar un Tablespaces, el DataFile o Datafiles
asociados no eran eliminados fsicamente del Sistema Operativo. Esta opcin de Oracle nos
lo permite.
Tanto el nmero de Tablespaces que puede poseer una B.D. es limitado al igual que el
nmero de DataFiles por Tablespaces.
40
recuerde_
Creacin de
Tablespaces
41
Usuarios
ndice_
43
Usuarios
4.1. DEFINICIN
Los usuarios son los propietarios de los objetos de la B.D. (Tablas, ndices, Funciones,
Procedimientos, Paquetes, Secuencias, etc.).
En todo S.G.B.D. Oracle, diferenciamos dos usuarios muy importantes:
a) El usuario SYS.- Es el propietario de las tablas del DICCIONARIO DE DATOS, que es
dnde se almacena informacin correspondiente a la estructura de la B.D. Adems de
tener acceso a la ejecucin de los paquetes predefinidos ( DBMS_ ).
b) El usuario SYSTEM.-
45
Usuarios
Diferenciamos:
Privilegios de Sistema.- Permite al usuario realizar algn tipo de accin que afecte a
todo el Sistema. Son unos 155 aproximadamente. Por ejemplo:
ERROR:
ORA-01045: user USR_PRUEBA lacks CREATE SESSION privilege; logon
denied
GRANT ANY ROLE.- Nos muestra todos los Roles disponibles, PERO no quiere decir
que podamos asignarlos o revocarlos.
GRANT ANY PRIVILEGE.- Igual que GRANT ANY ROLE, pero aplicado a privilegios.
46
Usuarios
CONNECT.- Podemos catalogarlo como un Rol Bsico ya que permite al usuario que
se le asigna conectarse con la B.D., crear tablas, vistas, sinnimos, secuencias y otros
objetos de la B.D.
47
Usuarios
Tanto los Roles como los Privilegios, se pueden crear con opcin de Administracin (WITH
ADMIN OPTION), permitiendo al propio usuario que se le ha asignado gestionarlo, por
ejemplo revocarlo, conceder a otro usuario ese mismo privilegio o rol. Por defecto se asignan
con opcin de NO administracin.
Paso 1.- Abrimos la herramienta Enterprise Manager Console, tras conectar como
usuario System, seleccionamos el apartado Seguridad y despus la carpeta
Usuarios. Sobre dicha carpeta hacemos clic derecho y seleccionamos la opcin
Crear.
48
Usuarios
Paso 2.- En este paso slo escribiremos el nombre del usuario: USR_PRUEBA, y como
clave: usr_prueba, asignndoles el tablespaces por defecto PRUEBA_DEFAULT y como
temporal el PRUEBA_TEMPORAL. Si no se especificase ninguno, el tablespaces por
defecto es el USERS y el temporal TEMP ya que es un Tablespaces de tipo TEMPORAL y
es definido como temporal por defecto.
El tipo de AUTENTIFICACIN puede ser del tipo:
Contrasea.- Oracle solicita cada vez que un usuario decide tener acceso a una
herramienta suya, un nombre de usuario y una contrasea. Su comprobacin se
realiza en la propia gestin de usuarios de Oracle.
49
Usuarios
50
Usuarios
51
Usuarios
CREATE VIEW.- Crear Vista sobre las tablas. Una Vista es un subconjunto de
columnas de una tabla.
Aunque el Rol Connect engloba el privilegio Create Table, esto no proporciona CUOTA al
usuario sobre el TABLESPACES. Por ello, para poder usar los Tablespaces asociados a un
usuario, debemos especificar la CUOTA (QUOTA) ilimitada (UNLIMITED) del usuario hacia el
TABLESPACES o un valor de cuota.
Grficamente sera:
ALTER USER
"USR_PRUEBA"
QUOTA UNLIMITED ON
"PRUEBA_DEFAULT"
QUOTA UNLIMITED ON
"PRUEBA_TEMPORAL"
52
Usuarios
Los comandos para asignar y quitar privilegios y roles a los usuarios son GRANT y REVOKE
respectivamente.
Sintaxis:
Para conceder:
Privilegios de Sistema a Usuarios:
Ejemplo:
ROLES a Usuarios:
Ejemplo:
GRANT
"AUTHENTICATEDUSER","DBA" TO "USR_PRUEBA";
53
Usuarios
Ejemplo:
REVOKE INSERT
ON "USR_PRUEBA"."TABLA1"
FROM "USR_PRUEBA"
Revocar un Rol:
Podemos crear ROLES propios formado por otros roles y privilegios de sistema y de objetos.
Esto se recomienda cuando tenemos que crear muchos usuarios de la B.D. y asignarles roles
y privilegios.
Para ello, podemos usar la herramienta grfica EMC (Enterprise Manager Console) o
mediante la sentencia SQL.
54
4
Ejemplo:
IDENTIFIED BY "clave_rol";
Grficamente sera:
55
"ROL_PRUEBA"
Usuarios
Usuarios
Toda la informacin correspondiente a los Roles y Privilegios es almacenada en las vistas del
Diccionario de Datos, estas son:
ROLE_TAB_PRIVS-
Privilegios
de
Tablas
otorgados
56
Roles.
Usuarios
Por ltimo, el usuario que se crea se puede asignar a un Perfil (PROFILE), cuya funcin es
asignar un conjunto de restricciones referentes al consumo de recursos del Sistema, por
parte del usuario (Tiempo de CPU, Entradas/Salidas a disco, sesiones, etc.) y proteger el
control de acceso (caducidad de contrasea, histricos de contrasea, etc.).
Por defecto, si no se ha creado ningn Perfil se asigna el Default, en el cul todo es
ilimitado y sin restricciones.
Slo diferenciar entre Default e Unlimited.
57
58
Usuarios
recuerde_
Usuarios
Los usuarios SYS y SYSTEM son los de mayor PODER sobre la B.D.
59
Tablas
ndice_
61
Tablas
5.1. DEFINICIN
Las TABLAS son la estructura bsica en los diseos de B.D. Se componen de una serie de
columnas (campos) cuyo conjunto se denomina filas (registros). Ellas contienen o almacenan
los datos por columnas agrupadas en filas.
Es aconsejable que toda tabla tenga una columna denominada clave, es decir, es aquella
columna que identifica de forma nica a cada fila. Puede estar compuesta por ms de una
columna. A esa columna o columnas se le denomina PRIMERY KEY.
Ejemplo:
Tabla: VEHICULOS
Campos o Columnas: Matricula, Modelo, Color, Cilindrada, Fecha_Compra, Precio_Venta
Filas o Registros:
3234-BCV, OPEL, Blanco, 1600, 10/10/1998, 6100.56
SE-2356-FG, SEAT, Azul, 1400, 12/11/2000, 6500.75
VEHICULOS
Matricula
Modelo
Color
Cilindrada
Fecha_Compra Precio_Venta
3234-BCV
OPEL
Blanco
1600
10/10/1998
6100,55
SE-2356-FG
SEAT
Azul
1400
12/11/2000
6500,75
La columna Primery Key es la columna Matricula que es nica por cada fila.
63
Tablas
DATE.- Columna de longitud FIJA de 7 Bytes, que nos permite almacenar la fecha y la
hora. Su formato predeterminado es: DD-MON-YY HH:MI:SS. Con HH en formato AM
y PM.
LONG.- Columna que puede contener una cadena de longitud variable, con longitud
mxima de 2GBytes.
RAW.- Columna de longitud VARIABLE para datos binarios, de longitud mxima 2000
Bytes. Podemos decir que RAW es similar a VARCHAR2, pero con la diferencia de que
no se realizan conversiones entre conjuntos de caracteres distintos, de diferentes B.D.
LONG RAW.- Columna de longitud variable para datos binarios, de longitud mxima
2GBytes.
64
Tablas
los identificadores de fila, estos pueden ser convertidos a una cadena de caracteres
mediante la funcin ROWIDTOCHAR. Esta funcin genera una salida de 18 caracteres
con el formato:
BBBBBBBB.FFFF.AAAA
Donde:
BBBBBBBB.- Identifica el bloque de dato dentro del Datafile.
FFFF.- Identifica la Fila dentro del bloque.
AAAA.- El nmero de archivo.
Cada parte es un nmero hexadecimal, por ejemplo:
0000001E.00FF.0001 representa el bloque 30. fila 255 u fichero 1.
Los tipos de la Familia LOB disponibles a partir de Oracle 8 o superior se crearon para
solucionar y ampliar las prestaciones de los tipos LONG y LONG RAW.
Los LOB internos son BLOB, CLOB y NCLOB y el LOG externo es BFILE. Los LOB internos, se
manipulan usando rdenes DML SQL o el paquete predefinido DBMS_LOB.
NCLOB.- Tipo de dato CLOB, para juego de caracteres multibyte, hasta 4Gbytes.
BFILE.-
acceso es de slo lectura. Su informacin no es gestionada por Oracle, sino por el S.O.
por lo que no estn sujetos a transacciones.
FLOAT.- Abarca los tipos de datos ANSI/ISO estndar FLOAT, REAL, DOUBLE
PRECISION, todos ellos podemos englobarlo dentro del NUMBER.
65
Tablas
Esta forma de organizacin lgica, nos permite tener objetos con el mismo nombre, por
ejemplo dos tablas, en esquemas distintos sin crear ningn conflicto a la gestin interna de
Oracle.
Hay que tener MUY CLARO que toda nuestra estructura lgica de la B.D. se organiza en el
Esquema, adems de que un esquema est directamente relacionado con un
USUARIO, tal que el ESQUEMA tiene el mismo nombre que el USUARIO. Por ello, se crean
al crear un objeto perteneciente al usuario.
66
Tablas
67
Tablas
68
Tablas
Paso 3.- La siguiente ventana Paso 2 de 13, nos permite especificar las columnas
que componen nuestra tabla.
Campos
Columnas:
Matricula,
Modelo,
Color,
Cilindrada,
Fecha_Compra,
Precio_Venta
Paso 4.-
69
Tablas
Paso 5.- La siguiente ventana del asistente, nos permite especificar las restricciones
de valor nulo y de valor nico en las distintas columnas de nuestra B.D. Aquellas
columnas que deseemos sean nicas, podemos especificar el nombre de la restriccin,
o bien, que Oracle los asigne automticamente.
En nuestro ejemplo slo especificaremos que la columna COLOR pueda tomar el valor
NULO (NULL).
70
Tablas
Paso 6.- Es este paso del asistente Paso 5 de 13, se detalla qu columna de nuestra
tabla es una clave ajena de otra tabla, tambin conocida como FOREIGN KEY. Para
este ejemplo no tenemos ninguna.
Si la hubiese, tendramos que detallar el esquema en el que est la tabla Maestra
(Esquema de Referencia), nombre de la misma (Tabla de Referencia) y columna de la
tabla que se hereda (Columna de Referencia).
Paso 7.- El Paso 6 de 13, nos permite realizar un control sobre posibles valores a
tomar por la columna o conversiones automticas.
En nuestro ejemplo obligaremos a que los posibles valores de la columna MODELO
sean: OPEL, SEAT, RENAULT, MERCEDES, AUDI. Tambin que los valores de la
MATRICULA se encuentren en mayscula: MATRICULA = UPPER(MATRICULA).
71
72
Tablas
Tablas
parmetros de
73
Tablas
74
Tablas
El particionamiento, podemos hacerlo por bloques de filas, segn los rangos de valores
de columna especificados.
IMPORTANTE: Si una Tabla posee un tipo de dato LONG o LONG RAW, NO podremos
particionarla. En su lugar, a la hora de disear la tabla, definimos el campo del tipo LOB.
Aunque el Asistente slo nos permite particionar por un solo campo, la Tabla puede ser
particionada por ms de un campo.
75
Tablas
Una forma de ver si nuestro SGBD Oracle lo permite es abriendo la aplicacin SQL*Plus:
Tabla.
76
Tablas
77
Tablas
VARCHAR2(15)
NOT NULL,
"MODELO"
VARCHAR2(15)
NOT NULL,
"COLOR"
VARCHAR2(10),
"CILINDRADA"
NUMBER(4)
NOT NULL,
"FECHA_COMPRA"
DATE
NOT NULL,
"PRECIO_VENTA"
NUMBER(7, 2)
NOT NULL,
Ahora bien, Oracle nos proporciona una utilidad para obtener la sentencia DDL de un objeto.
Para obtener el de la tabla creada, slo tendremos que posicionarnos en el objeto desde la
consola del OEM
78
Tablas
Oracle nos muestra una ventana con el cdigo SQL, PERO mucho ms detallado, que el
mostrado por el asistente de creacin de tablas.
VARCHAR2(15 byte)
NOT NULL,
"MODELO"
VARCHAR2(15 byte)
NOT NULL,
"COLOR"
VARCHAR2(10 byte),
"CILINDRADA"
NUMBER(4)
NOT NULL,
DATE
NOT NULL,
NUMBER(7, 2)
NOT NULL,
"FECHA_COMPRA"
"PRECIO_VENTA"
79
Tablas
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0)
PCTFREE 10 INITRANS 2 MAXTRANS 255,
CONSTRAINT "SYS_C003038" CHECK(MATRICULA=UPPER(MATRICULA)),
CONSTRAINT "SYS_C003039" CHECK(MODELO IN ('OPEL', 'SEAT',
'RENAULT','MERCEDES','AUDI')))
TABLESPACE "PRUEBA_DEFAULT"
PCTFREE 10
PCTUSED 0
INITRANS 1
MAXTRANS 255
STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1
MAXEXTENTS 2147483645 PCTINCREASE 0)
LOGGING
MUY IMPORTANTE:
En los TABLESPACES gestionados localmente, el tablespaces se encarga de
gestionar su propio espacio manteniendo un mapa de bits en cada DATAFILES de los
bloques libres y ocupados del DataFiles, por lo que cada vez que una extensin se
libera o asigna para un nuevo uso, Oracle actualizar dicho mapa de bits. En este
sentido conviene aclara que dichas extensiones no necesitan ser agrupadas
manualmente ya que Oracle las determinar automticamente.
80
5
1.
2.
Tablas
3.
4.
5.
81
Tablas
Directorio de Filas.- Guarda informacin sobre las filas de las tablas que se
encuentran en ese momento en el bloque. Esta informacin est compuesta por la
direccin de la fila en la zona Datos de Filas, en la cul Oracle debe localizar los
Datos.
Al espacio ocupado por la Cabecera de Bloque, Directorio de Tablas y
Directorio de Filas se le denomina overhead.
Datos de Filas o Espacio de Datos.- Almacena las filas de datos de las Tablas,
ndices y Segmentos de Rollback, es decir, los datos propiamente dichos.
1.
82
5
2.
Tablas
Esto quiere decir que en un bloque NO se pueden insertar nuevas filas de datos,
hasta que el espacio ocupado por las filas de ese bloque no baje del 40 %.
Nota.- En datos del tipo ndice, no tiene utilidad este parmetro (PCTUSED), por
la propia estructura interna de estos datos. (rbol binario).
Las vistas del Diccionario de Datos, asociadas al usuario SYS que nos permiten
saber el valor de dicho parmetro son dba_tables y dba_indexes.
Por ejemplo:
select TABLE_NAME,PCT_FREE,PCT_USED
from dba_tables
where OWNER='USR_PRUEBA';
83
Tablas
COMPUTE
STATISTICS.-
Nos
proporciona
informacin
estadstica,
Por defecto, la opcin es DROP que borra todas las filas de la tabla y libera el
espacio ocupado por la tabla, pudiendo ser usado por otra tabla.
REUSE.- Elimina las filas de las tablas y conserva ese espacio para que se
puedan seguir almacenando datos en la tabla.
Hay que tener mucho cuidado con este tipo de sentencia DDL, ya que no genera
segmento de Rollback, por lo que no existe la posibilidad de deshacer.
Tambin, podemos chequear la tabla para comprobar si existen bloques corruptos.
84
Tablas
(esquema VARCHAR2
mtodo VARCHAR2,
filas_estimadas NUMBER DEFAULT NULL,
porcentaje_estimado NUMBER DEFAULT NULL);
Dnde:
mtodo.-
Puede
ser
NULL
ESTIMATE.
Si
es
ESTIMATE,
entonces
Este paquete predefinido es propiedad del usuario SYS. Para poder ser usado por
otro
usuario,
debe
tener
el
privilegio
de
EXECUTE.
El
procedimiento
execute DBMS_UTILITY.ANALYZE_SCHEMA(USR_PRUEBA,ESTIMATE,0,40);
3.
85
Tablas
Todos
los
parmetros
anteriores,
pueden
ser
modificados
usando
la
pestaa
86
Tablas
Keep.-
Entrada/Salida a disco.
87
Tablas
Ejemplo 2:
Ejemplo 3:
88
recuerde_
Tablas
Los tipos de DATOS usados con mayor frecuencia son: Number, Varchar2 y
Date.
89
ndice_
Operaciones
sobre tablas
91
Operaciones
sobre tablas
Ejemplo 1:
INTO
vehiculos
VALUES
(2037-BBA,
RENAULT,Blanco,1400,10/01/01,6010.50);
Ejemplo 2:
INSERT INTO vehiculos VALUES (2235-AAB, SEAT,null,1400,14/03/01,6650.50);
Igual a:
INSERT
INTO
vehiculos(matricula,modelo,color,cilindrada,fecha_compra,precio_venta)
VALUES (2235-AAB, SEAT,null,1400,14/03/01, 6650.50);
Igual a:
INSERT INTO vehiculos(matricula,modelo,cilindrada,fecha_compra,precio_venta)
VALUES (2235-AAB, SEAT,1400,14/03/01, 6650.50);
Sin la columna COLOR, ya que es la nica que en el proceso de creacin se especific que
pudiese no tomar valor.
Para ejecutar estas sentencias, Oracle nos proporciona dos herramientas:
SQL Plus
SQLPlus Worksheet
93
Operaciones
sobre tablas
Desde SQLPlus Worksheet, una vez conectado, slo tendramos que ejecutar la sentencia o
sentencias. Para ejecutar una sentencia, slo tendremos que pulsar la tecla F5 o hacer clic
en el botn de Ejecutar.
94
Operaciones
sobre tablas
Otra posibilidad es tener las instrucciones SQL escritas en un fichero de texto con extensin
SQL y cargar dicho fichero en el Worksheet.
Ahora bien desde la versin 8i, Oracle a travs de la herramienta grfica Oracle Enterprise
Console, nos proporciona la introduccin de datos. Slo tendremos que posicionarnos en la
tabla y seleccionar, una vez pulsado el clic derecho, la opcin Ver/Editar Contenido....
95
Operaciones
sobre tablas
Podemos usar el carcter comodn * , para especificar todas las columnas o campos de la
tabla.
Ejemplo 1:
96
Operaciones
sobre tablas
97
Operaciones
sobre tablas
Ejemplo:
Ejemplo 1:
98
Operaciones
sobre tablas
Para borrar los datos de una tabla usaremos la sentencia SQL DELETE, cuya sintaxis es:
Ejemplo 2:
LIKE. Este operador se usa para comparacin con patrones en cadena de caracteres.
El carcter % equivale a un conjunto de caracteres y el carcter _ equivale a un slo
carcter.
99
Operaciones
sobre tablas
Ejemplo:
BETWEEN. Este operador usa los operadores >= y <= en uno slo.
Ejemplo:
IS NULL. Para consultar filas dnde existan columnas con valor NULL,
NULL ya que la condicin = NULL, no dara un resultado correcto.
100
usamos IS
Operaciones
sobre tablas
Otra forma de hacer una copia de una tabla es crear la tabla y seleccionar los datos en el
proceso de creacin.
101
Operaciones
sobre tablas
La tabla creada contiene la misma estructura de datos que la tabla origen, PERO NO las
restricciones.
Desde la herramienta Enterprise Manager Console, podemos hacer una copia de la tabla
usando el botn Crear como.... Esta opcin nos permite crear una copia de la tabla tanto
de datos como de restricciones.
102
Operaciones
sobre tablas
de
NLS_LANGUAGE,
vista
v$nls_parameters,
me
informa
de
los
valores
VALUE
NLS_LANGUAGE
SPANISH
NLS_TERRITORY
SPAIN
NLS_CURRENCY
NLS_ISO_CURRENCY
SPAIN
NLS_NUMERIC_CHARACTERS
,.
NLS_CALENDAR
GREGORIAN
NLS_DATE_FORMAT
DD/MM/RR
NLS_DATE_LANGUAGE
SPANISH
NLS_CHARACTERSET
WE8ISO8859P1
NLS_SORT
SPANISH
NLS_NCHAR_CHARACTERSET
WE8ISO8859P1
103
Operaciones
sobre tablas
11 filas seleccionadas.
Valores devueltos por la vista en una B.D. Oracle 9i:
PARAMETER
VALUE
NLS_LANGUAGE
SPANISH
NLS_TERRITORY
SPAIN
NLS_CURRENCY
NLS_ISO_CURRENCY
SPAIN
NLS_NUMERIC_CHARACTERS
,.
NLS_CALENDAR
GREGORIAN
NLS_DATE_FORMAT
DD/MM/RR
NLS_DATE_LANGUAGE
SPANISH
NLS_CHARACTERSET
WE8MSWIN1252
NLS_SORT
SPANISH
NLS_TIME_FORMAT
HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT
DD/MM/RR HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT
HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT
NLS_DUAL_CURRENCY
NLS_NCHAR_CHARACTERSET
AL16UTF16
NLS_COMP
BINARY
NLS_LENGTH_SEMANTICS
BYTE
NLS_NCHAR_CONV_EXCP
FALSE
19 filas seleccionadas.
Ver la lista de lenguajes y territorios soportados por Oracle 9i en el Anexo A.
104
Operaciones
sobre tablas
LTRIN(cadena1,
[cadena2])
RTRIN(cadena1,
[cadena2]).-
Devuelve
la
105
Operaciones
sobre tablas
Ejemplo:
106
Operaciones
sobre tablas
CONVERT(cadena,conjunto_caracteres_destino[,conjunto_caracteres_fuente]
).- Convierte la
conjunto_caracteres_destino.
Si
no
se
especifica
el
107
Operaciones
sobre tablas
Ejemplo:
108
Operaciones
sobre tablas
texto
Da de la semana (1-7).
DD
DDD
Da del ao (1-366).
DY
DAY
IW
109
6
IYYY,IYY,IY,I
Y,YYYY
YEAR
Ao en letras.
Operaciones
sobre tablas
Minutos. (0-59)
MM
MON
MONTH
PM, P.M.
RM
SS
Segundos (0-59)
WW
Ejemplos:
')
TO_CHAR(numero
[,formato
[,NLS_NUMERIC_
CHARACTERS
NLS_NUMERIC_CHARACTERS
=decimalmiles
especifica
el
separador
110
Operaciones
sobre tablas
FM
RM o rm
EEEE
.,
Devuelve
un
punto
coma
en
la
posicin
especificada
independientemente de G o D
L
PR
Ejemplos:
Resultado: 01457
Resultado: XV
Resultado: 1E+06
Resultado: 1.000.000,00
111
Operaciones
sobre tablas
Resultado: 1,000,000.78
Resultado: 10.000,78
Resultado: EUR10.000,78
Resultado: -10.000,78
112
Operaciones
sobre tablas
113
Operaciones
sobre tablas
LAST_DAY(fecha).-
funcin es til para calcular el nmero de das que faltan para completar el mes actual.
Ejemplos:
114
Operaciones
sobre tablas
Ejemplos:
Atlntico)
ADT (Atlantic Daylight Time)
Atlntico)
BST (Bering Standart Time)
BDT (Bering Daylight Time)
CST (Central Standart Time) (Horario Estndar de la zona Central)
CDT (Central Daylight Time)
EST (Eastern Standart Time) (Horario Estndar de la costa Este)
EDT (Eastern Daylight Time)
GMT (Greenwich Mean Time) (Horario del meridiano de Greenwich)
HST (Alaska-Hawaii Standart Time)
HDT (Alaska-Hawaii Daylight Time)
MST (Mountain Standart Time) (Horario Estndar de las Rocosas)
MDT (Mountain Daylight Time) (Horario de Verano de las Rocosas)
NST (Newfoundland Standart Time) (Horario Estndar de Terranova)
PST (Pacific Standart Time)
PDT (Pacific Daylight Time)
YST (Yukon Standart Time)
YDT (Yukon Daylight Time)
115
Operaciones
sobre tablas
Ejemplos:
Select
to_char(NEW_TIME(TO_DATE('8/01/02
22:00:00','DD/MM/YY
HH24:MI:SS'),'GMT','AST')
,'DD/MM/YY HH24:MI:SS') from dual;
Resultado:
08/01/02 18:00:00
116
6
Partiendo de la tabla EMP del usuario SCOTT, es decir:
Tendramos:
Ejemplo:
117
Operaciones
sobre tablas
Operaciones
sobre tablas
AVG( [ DISTINCT || ALL] columna ).- Devuelve la media de los valores de las
columnas agrupadas.
Ejemplo:
DEPTNO
2916,66667
10
2175
20
1566,66667
30
DEPTNO
2916,66667 10
1968,75
20
1630
30
118
Operaciones
sobre tablas
DEPTNO
5000
10
3000
20
2850
30
DEPTNO
1300
10
800
20
950
30
119
DEPTNO
8750
10
10875
20
9400
30
120
Operaciones
sobre tablas
recuerde_
Operaciones
sobre tablas
121
Consultas
ndice_
123
Consultas
En este tipo de sentencias, Oracle filtra los registros segn la condicin del where antes de
agrupar. Una vez filtrado agrupa, y despus aplica la condicin de la clusula having.
Veamos un ejemplo aplicado a la tabla EMP (Empleados) del usuario Scott/tiger de Oracle.
Aqu, se solicitan nmeros de los departamentos que posean ms de dos empleados cuyo
puesto de trabajo sea CLERK. (Comercial).
125
Consultas
UNION.- Al usar este operador obtenemos todas las filas de las tablas implicadas,
pero sin repeticin de datos.
Por ejemplo, si partimos de una tabla A={1,2,3,4,5} y otra B={4,5,7,8,9} y
realizamos:
Select * from A
UNION
Select * from B;
El resultado es: 1,2,3,4,5,7,8,9.
UNION ALL.- Todas las filas de las tablas, incluyendo los valores repetidos. Para las
tablas del ejemplo anterior tendramos:
Select * from A
UNION ALL
Select * from B;
El resultado es: 1,2,3,4,5,4,5,7,8,9.
Select * from A
INTERSECT
Select * from B;
El resultado es: 4,5.
126
Consultas
MINUS.- Este operador nos muestra todas las filas de la primera tabla salvo los que
sean comunes a la segunda tabla. Para los datos A={1,2,3,4,5} y B={4,5,7,8,9}
tendramos:
Select * from A
MINUS
Select * from B;
El resultado es: 1,2,3.
Uniones Internas.- Son aquellas que combinan las filas de dos o ms tablas usando
para ello campos o columnas de las tablas comunes, es decir, usando las columnas
Primery Key y Foreign Key.
Este tipo de uniones slo devuelve las filas comunes entre ambas tablas, NUNCA
devuelve filas que no estn en una tabla y en otra no.
Un ejemplo aplicado a las tablas EMP y DEPT del usuario Scott/tiger sera la siguiente:
127
Consultas
Con esta select obtendramos los nombres de los empleados, sus puestos de trabajo y
el nombre del departamento al que pertenece.
128
Consultas
select e.DEPTNO,e.ename,e.job,d.dname,d.DEPTNO
from emp e, dept d
where e.DEPTNO=d.DEPTNO (+) ;
129
130
Consultas
Consultas
Estas UNIONES EXTERNAS son conocidas tambin como JOIN que pueden ser JOIN
por la derecha (RIGHT JOIN) o JOIN por la izquierda (LEFT JOIN), dependiendo de
lo que se desee obtener.
El equivalente a:
Sera:
select emp.DEPTNO,emp.ename,emp.job,dept.dname,dept.deptno
from dept LEFT JOIN emp ON
emp.deptno=dept.deptno;
131
Consultas
Este mismo resultado lo podemos obtener con RIGHT JOIN, pero cambiando las
tablas, es decir, empleado (emp) a la izquierda y departamento (dept) a la derecha.
select emp.DEPTNO,emp.ename,emp.job,dept.dname,dept.deptno
from emp RIGHT JOIN dept ON
emp.deptno=dept.deptno;
132
Consultas
7.4. SUBCONSULTAS
Una subconsulta es una sentencia SELECT dentro de otra sentencia SELECT (consulta
principal).
La sentencia Select se puede encontrar como:
Adems, siempre deben ir entre parntesis y nunca deben contener la clusula ORDER BY, ni
pueden ser UNION de varias sentencias select.
7.4.1. Select como parte de una clusula Where o Having
Supongamos que tenemos una tabla Clientes y otra Ventas. En esta ltima se almacenan el
total de ventas realizadas a los clientes. Partiendo de la estructura:
CLIENTES={ID_CLIENTE, Descrip_Cliente}
VENTAS={ID_VENTA, TOTAL_VENTAS, CLI_ID_CLIENTE}
100
150
La papelera s.a.
160
200
210
VENTAS
1
2.500
100
5.000
150
9.500
160
2.350
200
3.750
210
133
Consultas
Si queremos obtener los clientes cuyas ventas superan la media de ventas de la empresa,
sera:
5000
9500
3750
Otro ejemplo aplicado a la tabla EMP del usuario Scott/tiger podra ser: Obtener los
nombres y salarios de los empleados cuyo sueldo sea superior a la media de sueldos de la
empresa?
134
Consultas
CLIENTES={ID_CLIENTE, Descrip_Cliente}
VENTAS={ID_VENTA, TOTAL_VENTAS, FECHA_VENTA, CLI_ID_CLIENTE}
135
Consultas
150
La papelera s.a.
160
200
210
VENTAS
1
2.500
2/1/03
100
5.000
10/1/03
150
9.500
5/01/03
160
2.350
12/01/03 200
3.750
15/01/03 210
1.250
18/01/03 150
3.500
4/01/03
160
7.500
4/01/03
210
2.900
10/12/02 100
10
7.000
11/01/03 210
Si deseamos obtener la ltima fecha de venta de cada uno de nuestros clientes sera:
136
VENTAS where
Consultas
Este mismo resultado se podra obtener mediante el uso de GROUP BY y ORDER BY.
137
Consultas
Basndonos en los datos de las tablas CLIENTES y VENTAS, para obtener el cliente que ms
compras ha realizado, sera la siguiente sentencia SQL:
select sum(TOTAL_VENTAS),ID_CLIENTE,DESCRIP_CLIENTE
from clientes c, ventas v
where c.id_cliente=v.cli_id_cliente
group by ID_CLIENTE,DESCRIP_CLIENTE
having sum(TOTAL_VENTAS) = (SELECT max(SUM(TOTAL_VENTAS)) FROM VENTAS
GROUP BY CLI_ID_CLIENTE);
138
Consultas
Por ejemplo: supongamos una tabla que almacena la informacin de los mens de una
aplicacin informtica:
MENU
ID_MENU
DESCRIPCION
ID_PADRE
ARCHIVO
Salir
NAVEGADOR
Refrescar
Buscar
Si deseamos saber cuantos submens o hijos poseen los nodos o men principales, debemos
hacer una consulta como:
select m1.id_menu,m1.descripcion,count(*)
from menu m1, menu m2
where m1.id_menu=m2.id_padre
group by m1.id_menu,m1.descripcion;
El resultado sera:
139
Consultas
DECODE(expresion,
valor_a_comparar1,
valor1,
valor_a_comparar2,
valor2,.............,valorfinal)
140
recuerde_
Consultas
141
PL/SQL
ndice_
143
PL/SQL
Declaraciones de variables.
DECLARE
vi_password
NUMBER
:= 12525;
vi_nombre
VARCHAR2(10)
:= Juan;
vi_apellido1
VARCHAR2(10)
:=Garca;
vi_apellido2
VARCHAR2(10)
:=Martn;
BEGN
UPDATE usuarios SET password = vi_password WHERE nombre
= vi_nombre
145
PL/SQL
DECLARE
/* Bloque declarativo.- Es dnde declaramos las variables internas, cursores,
procedimientos y funciones locales del bloque. */
BEGIN
/* Bloque principal o ejecutable.- Dnde desarrollamos la ejecucin del programa.
*/
EXCEPTION
/* Bloque exception o errores.- En l tratamos las excepciones de ERROR*/
END;
La nica parte que es obligatoria dentro de un bloque es la seccin o bloque ejecutable. Por
lo que podemos desarrollar bloques sin secciones declarativas y sin secciones de error, bien
porque no se requieran o no las necesitemos.
Ejemplo 1:
BEGN
-- Bloque ejecutable
END;
146
PL/SQL
Ejemplo 2:
DECLARE
-- Bloque declarativo
BEGN
-- Bloque ejecutable
END;
2.147.483.647 y 2.147.483.647
Si su valor es desbordado no se produce error.
Esto no ocurre en Oracle 9i.
NUMBER
PLS_INTEGER
2.147.483.647 y 2.147.483.647
Si su valor es desbordado produce el error:
ORA-1426: numeric overflow
CHAR
VARCHAR2
147
PL/SQL
BOOLEAN
TRUE, FALSE
ROWID
UROWID
CLOB
BLOB
BFILE
-- Declaramos el tipo.
TYPE reg_cliente IS RECORD
(
id_cliente NUMBER(5),
Descripcion VARCHAR2(30)
);
-- Declaramos una variable del tipo anterior.
vi_registro reg_cliente;
Ejemplo 2:
148
PL/SQL
nombre_variable.componente;
Ejemplo:
vi_registro.descripcion;
vi_datos.dia;
Operador %TYPE y %ROWTYPE. Estos operadores nos sirven para asignar el tipo
de dato de una columna de una tabla (campo) o de toda una fila (registro) de la tabla.
Ejemplo 1:
DECLARE
vi_descripcion clientes.descripcion%TYPE;
Ejemplo 2:
DECLARE
vi_registro_clinete clientes%ROWTYPE;
Ejemplo 3:
Podemos leer un registro concreto de una tabla y almacenar su contenido en una
variable de tipo registro.
DECLARE
TYPE reg_cliente IS RECORD
(
id_cliente NUMBER(3), Descripcion VARCHAR2(30)
);
149
PL/SQL
vi_registro reg_cliente;
BEGIN
select
id_cliente,descrip_cliente
INTO
vi_registro
from
clientes
where
id_cliente=200;
dbms_output.put_line(vi_registro.id_cliente);
dbms_output.put_line(vi_registro.descripcion);
END;
TABLE. Podemos decir que este tipo de dato es un Array, Vector, Tabla o Matriz
especial ya que como diferencia su ndice no tiene porque empezar en 0 1,
pudiendo tomar valores desde
decir, BINARY_INTEGER.
Al igual que los RECORD, para poder hacer uso de Matrices, debemos definir primero
un tipo de dato propio y despus una variable de ese tipo.
150
PL/SQL
vi_matriz nombre_tabla;
DECLARE
-- Tipos
TYPE matriz_fecha IS TABLE OF date INDEX BY BINARY_INTEGER;
TYPE
matriz_cliente
IS
TABLE
OF
clientes.id_cliente%TYPE
INDEX
BY
BINARY_INTEGER;
-- Variables
vi_matriz_fecha matriz_fecha;
vi_matriz_cliente matriz_cliente;
nombre_variable_tipo_matriz (indice);
vi_matriz_fecha(1):=sysdate;
TYPE
matriz_cliente
IS
TABLE
BINARY_INTEGER;
vi_matriz_cliente matriz_cliente;
151
OF
clientes.%ROWTYPE
INDEX
BY
PL/SQL
vi_matriz_cliente(indice).descrip_cliente;
Ejemplo:
Vamos a almacenar en una tabla llamada vi_matriz_cliente en el ndice 160 el registro
correspondiente al cliente 160.
Oracle nos permite hacer uso de una serie de ATRIBUTOS de una matriz mediante el
nombre
de
la
variable
matriz
el
nombre
del
atributo,
vi_matriz_cliente.COUNT
Estos atributos son los siguientes:
COUNT
DELETE
EXISTS
FIRST
LAST
NEXT
PRIOR
152
es
decir:
PL/SQL
vi_
matriz.NEXT(indice).-Obtenemos
el
siguiente
ndice
de
la
tabla,
al
especificado en el ndice.
especificado en el ndice.
VARRAY. Este tipo de dato es equivalente a las matrices, vectores o arrays de otros
lenguajes de programacin, dnde el ndice comienza en 1 y se especifica en su
declaracin el ndice lmite.
Su sintaxis es:
Ejemplos:
DECLARE
TYPE array_fecha IS VARRAY(20) OF date;
TYPE array_registro IS VARRAY(10) OF cliente%ROWTYPE;
Una vez especificado el tipo, necesitamos la variable:
vi_array array_registro;
153
PL/SQL
Al tipo de datos VARRAY, podemos aplicarle los mismos atributos que existen para el
tipo e dato TABLE.
Ejemplo de VARRAY:
REF CURSOR. Este tipo de dato nos permite definir variables de tipo cursor. Sern
tratadas en el tema correspondiente a los cursores.
El AMBITO de una variable est sujeto al mdulo DECLARE existente por encima de
un bloque de cdigo BEGIN-END. Por ejemplo:
DECLARE
Variable1 NUMBER(10);
BEGIN
DECLARE
Variable2 VARCHAR2(50);
BEGIN
/* AMBITO de Variable2 */
END;
END;
154
PL/SQL
IF expresin THEN
Sentencias;
[ELSIF expresin THEN
secuencias;]
........
[ELSE
sentencias;]
END IF;
Ejemplo:
Partiendo de los datos de la tabla VENTAS existentes en la imagen grfica, deseamos
saber si la suma de las ventas del cliente cuyo id_cliente es 100, superan los 5.000
Euros. Como resultado debemos mostrar el mensaje Total de compras superior a
5.000 Euros o Total de compras inferior a 5.000 Euros.
155
PL/SQL
El resultado sera:
LOOP
Sentencias;
EXIT WHEN condicin;
END LOOP;
IF condicion THEN
EXIT;
END IF;
156
PL/SQL
DECLARE
vi_valor NUMBER(5) := 0;
BEGIN
FOR vi_contador IN 1..5000 LOOP
vi_valor := vi_valor + 2;
insert into PARES values(vi_valor);
END LOOP;
END;
157
PL/SQL
DECLARE
vi_valorA NUMBER(2) := 0;
vi_valorB NUMBER(2) := 12;
BEGIN
vi_valorB := vi_valorB / vi_valorA;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error al dividir por cero.');
END;
DECLARE
control_error_1 EXCEPTION;
158
PL/SQL
ORA-0001
DUP_VAL_ON_INDEX
ORA-1001
INVALID_CURSOR
ORA-1012
NOT_LOGGED_ON
ORA-1017
LOGIN_DENIED
ORA-1403
NO_DATA_FOUND
ORA-1422
TOO_MANY_ROOMS
ORA-1476
ZERO_DIVIDE
ORA-1722
INVALID_NUMBER
ORA-6500
STORAGE_ERROR
ORA-6501
PROGRAM_ERROR
ORA-6502
VALUE_ERROR
ORA-6511
CURSOR_ALREADY_OPEN
KEY.
DECLARE
Nombre_exception_propia EXCEPTION;
BEGIN
.
.......;
........;
IF condicion THEN
RAISE Nombre_exception_propia;
END IF;
EXCEPTION
WHEN Nombre_exception_propia THEN
Sentencias;
WHEN Nombre_exception_predefinida THEN
Sentencias;
159
8
WHEN
PL/SQL
Nombre_exception_predefinidaA
OR
Nombre_exception_predefinidaB WHEN
Sentencias;
WHEN others THEN
Sentencias;
END;
mensaje
de
error
(longitud
mxima
512
caracteres).
160
Estas
funciones
PL/SQL
161
PL/SQL
DECLARE
vi_id NUMBER := null;
BEGIN
select id_cliente INTO vi_id from clientes where id_cliente=100;
select id_cliente INTO vi_id from clientes where id_cliente=555;
select id_cliente INTO vi_id from clientes where id_cliente=200;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('N Error: ' || SQLCODE || ' Mensaje: ' ||
SQLERRM);
END;
162
recuerde_
PL/SQL
163
ndice_
Funciones, procedimientos,
paquetes y disparadores
9.1. INTRODUCIN..........................................................................167
9.2. PROCEDIMIENTOS ....................................................................168
9.3. FUNCIONES ..............................................................................172
9.4. VISTAS RELACIONADAS CON LOS PROCEDIMIENTOS
Y FUNCIONES ...........................................................................175
9.5. PAQUETES ................................................................................177
9.6. DISPARADORES........................................................................179
9.7. DISPARADORES O TRIGGER MUTANTES ....................................181
165
Funciones, procedimientos,
paquetes y disparadores
9.1. INTRODUCIN
Los programas PL/SQL vistos anteriormente son bloques annimos, es decir, no quedan
almacenados como un objeto dentro de la B.D. para poder ser usados posteriormente. Para
conseguir que un programa PL/SQL quede almacenado en Oracle, debemos englobarlo en
funciones o procedimientos.
Estos objetos son localizables dentro de la B.D. como cualquier otro objeto: Tablas, Indices,
Usuarios, Tablespaces, etc.
Estos objetos son localizables en el esquema y dentro de ste en la carpeta Tipos de
Origen.
167
Funciones, procedimientos,
paquetes y disparadores
9.2. PROCEDIMIENTOS
Para crear un procedimiento podemos hacerlo desde la herramienta grfica Consola de
Oracle Enterprise Manager:
168
Funciones, procedimientos,
paquetes y disparadores
EXCEPTION
<< Tratamiento de la excepciones >>
END [nombre_procedimiento];
CONSIDERACIONES:
1.
2.
3.
4.
Diremos que:
IN = Slo LECTURA
5.
Un procedimiento es una orden DDL, por lo que lleva de forma implcita un COMMIT.
6.
Un procedimiento puede ser llamado desde un mdulo PL/SQL annimo o desde otro
procedimiento, usando tan solo el nombre del procedimiento.
7.
169
Funciones, procedimientos,
paquetes y disparadores
Declare
Variable_1 NUMBER (5,2);
Variable_2 VARCHAR2(10);
/* Variable_1 y Variable_1 son parmetros reales */
Calcular(Variable_1, Variable_2);
8.
9.
Ejemplo:
Partiendo de la tabla CLIENTES cuya estructura es:
ID_CLIENTE
DESCRIP_CLIENTE
170
Funciones, procedimientos,
paquetes y disparadores
171
Funciones, procedimientos,
paquetes y disparadores
Para ver ejecutar el procedimiento anteriormente creado slo tendremos que hacer:
9.3. FUNCIONES
Son muy parecidas a los procedimientos, reciben argumentos, tienen apartados de
declaracin, de ejecucin y control de excepciones.
LA DIFERENCIA es que la funcin siempre devuelve un valor TEORICAMENTE y ste es
devuelto en el nombre de la propia funcin. Una funcin puede devolver ms de un valor si
usamos los parmetros o argumentos OUT, aunque se recomienda por tica que si
devuelve ms de un valor se use el procedimiento.
172
Funciones, procedimientos,
paquetes y disparadores
Su sintaxis es:
173
Funciones, procedimientos,
paquetes y disparadores
Para hacer uso de la funcin creada, slo con llamarla en un cdigo PL/SQL nos valdra.
174
Funciones, procedimientos,
paquetes y disparadores
user_objects
user_source
user_errors
user_objects.- Nos muestra informacin de los objetos que tiene un usuario. Las columnas
que contienen son las siguientes:
OBJECT_NAME
VARCHAR2(128)
SUBOBJECT_NAME
VARCHAR2(30)
OBJECT_ID
NUMBER
175
Funciones, procedimientos,
paquetes y disparadores
DATA_OBJECT_ID
NUMBER
OBJECT_TYPE
VARCHAR2(18)
CREATED
DATE
LAST_DDL_TIME
DATE
TIMESTAMP
VARCHAR2(19)
STATUSVAR
CHAR2(7)
TEMPORARY
VARCHAR2(1)
GENERATED
VARCHAR2(1)
SECONDARY
VARCHAR2(1)
Podemos obtener informacin cmo: Nombre del Objeto, Fecha de Creacin, Fecha de ltima
modificacin, estado actual, etc.
user_source.- Contiene el cdigo fuente del procedimiento o de la funcin. Es decir, dicha
vista est constituida por las columnas:
NAME
VARCHAR2(30)
TYPE
VARCHAR2(12)
LINE
NUMBER
TEXT
VARCHAR2(4000)
Ejemplo:
176
Funciones, procedimientos,
paquetes y disparadores
NAME
TYPE
VARCHAR2(12)
SEQUENCE
LINE
POSITION
TEXT
9.5. PAQUETES
Un paquete es una estructura PL/SQL que nos permite almacenar sentencias SQL y
programas PL/SQL. En un paquete se diferencian dos partes:
177
Funciones, procedimientos,
paquetes y disparadores
Cuerpo del paquete. Contiene el cdigo de los elementos que forman el paquete, es
decir, el cdigo de la funcin, procedimiento, etc.
Los elementos del cuerpo de un paquete NUNCA podrn ser compilados si no existe la
declaracin de los mismos en la cabecera del paquete.
Su sintaxis es:
Tanto la cabecera como el cuerpo son almacenados por Oracle en el Diccionario de Datos
como objetos diferentes.
178
Funciones, procedimientos,
paquetes y disparadores
IMPORTANTE
Todo elemento del paquete (Procedimiento, funcin,...) puede ser referenciado como se
muestra a continuacin:
Nombre_paquete.elemto_del_paquete
9.6. DISPARADORES
Los disparadores mas comnmente conocidos como TRIGGER son similares a los
procedimientos y a las funciones, salvo que no pueden ser llamados desde otro bloque
PL/SQL ni admiten argumentos.
Cuando sobre una tabla se lleva a cabo una operacin DML del tipo INSERT, UPDATE o
DELETE es cuando podemos hacer que se ejecute el disparador.
Su sintaxis es:
2.
179
Funciones, procedimientos,
paquetes y disparadores
I = Insert
U=Update
D=Delete
B= Before
A= After
O= Orden
F=Fila
I , B, O U , B, O D , B, O
I , B, F U , B, F
D , B, F
I , A, O U , A, O D , A, O
I , A, F U , A, F
D , A, F
2.
3.
2.1.
2.2.
Los pseudo-registros: OLD y: NEW. Sabemos que los disparadores por fila se
ejecutan una vez por cada fila afectada de la orden DML que hace saltar al
disparador. Los pseudo-registros :old y :new nos permiten tener acceso a los datos de
la fila afectada.
Estos pseudo-registros son del tipo tabla_asociada_al_disparador %ROWTYPE, es
decir TIPO_REGISTRO. No podemos manejar todo el registro o fila, slo podemos
hacer uso individual de las columnas que componen la fila o registro.
En la siguiente tabla detallamos qu valores pueden tomarse de las pseudo-columna
segn la orden DML que se est ejecutando:
INSERT
UPDATE
DELETE
:old
NULL
:new
NULL
180
Funciones, procedimientos,
paquetes y disparadores
Oracle nos permite programar un trigger o disparador hacia una tabla sobre la cual se vaya a
realizar ms de una operacin DML (insert, update y delete). Para distinguir qu accin se ha
realizado,
podemos
hacer
uso
de
INSERTING,
UPDATING
DELETING
en
el
cuerpo_del_disparador, es decir:
IF INSERTING THEN
Sentencia;
ELSIF UPDATING THEN
Sentencia;
ELSIF DELETING THEN
Sentencia;
END IF;
La vista del diccionario de datos que nos proporciona informacin sobre los trigger se llama
user_triggers.
TABLAS MUTANTES.- Son aquellas sobre las que acta una orden DML y la accin
del TRIGGER acta sobre ellas. Por lo que las sentencias o instrucciones del cuerpo del
disparador NO PODRAN leer o modificar de dicha tabla.
Si el INSERT hacia una tabla slo afecta a una fila, los trigger tanto del tipo BEFORE
como AFTER no darn el error de tabla mutante. Todo insert del tipo INSERT INTO
181
Funciones, procedimientos,
paquetes y disparadores
Select ... producir trigger mutantes, incluso si el resultado del Select es de una sola
columna o registro.
TABLAS de RESTRICCIONES.- Son aquellas de las que Oracle necesita leer para
verificar las restricciones de integridad referencial. Por ello, ningn TRIGGER podr
leer o modificar los campos o columnas que sean clave primaria, nica o foreign para
la tabla que se ha creado el disparador. Las columnas o campos, pueden ser
modificados sin ningn tipo de problema.
NOTA.-
Estas
restricciones
se
aplican
aquellos
disparadores
trigger
ENAME
VARCHAR2(10)
JOB
VARCHAR2(9)
MGR
NUMBER(4)
HIREDATE
DATE
SAL
NUMBER(7,2)
COMM
NUMBER(7,2)
DEPTNO
NUMBER(2)
DNAME
VARCHAR2(14)
LOC
VARCHAR2(13)
Si ejecutamos la sentencia:
select count(*),deptno from emp group by deptno;
182
Funciones, procedimientos,
paquetes y disparadores
Tendremos:
183
184
Funciones, procedimientos,
paquetes y disparadores
recuerde_
Funciones, procedimientos,
paquetes y disparadores
185
Cursores
ndice_
10
10.1.
10.2.
10.3.
10.4.
10.5.
187
10
10.1.
Cursores
TIPOS DE CURSORES
Un cursor es una referencia a una fila o conjunto de filas devueltas por una consulta a tablas
de la B.D.
Diferenciamos dos tipos de cursores:
Cursores Explcitos. Se usan para manejar un conjunto de datos (filas) devueltos por
una consulta a la B.D:
Los pasos para operar con ellos son:
1.
Slo hay que tener en cuenta que la orden Select no puede ser del tipo
SELECT....INTO....;
Si la consulta llevase variables, stas deben ser declaradas antes que el cursor, es
decir:
DECLARE
vi_fecha_nac DATE;
CURSOR
c_clientes
IS
SELECT
nombre,apellidos
WHERE
edad
>=
vi_fecha_nac;
BEGIN
END;
189
10
Cursores
3.
Leer los Datos.- Para poder leer una fila de los datos devueltos por el cursor
usamos la orden:
Hay que tener muy en cuenta que el nmero de variables existentes tiene que
coincidir con el mismo nmero de columnas usadas en la consulta Select, al igual
que con el tipo de dato.
4.
Cierre del Cursor.- Debemos cerrar el cursor o cursores para liberar el espacio de
memoria ocupado por ste. La sentencia es: CLOSE nombre_cursor;
190
10
10.2.
Cursores
ATRIBUTOS DE CURSORES
Van asociados al nombre del cursor y devuelven un valor que puede ser procesado en
instrucciones de bifurcacin o bucles.
Estos son:
Estos atributos podemos aplicarlos tanto a los cursores explcitos como implcitos.
Ejemplo aplicado a CURSORES implcitos.
Se desea actualizar una fila de una tabla CLIENTES, si ste no existe, se insertar un nuevo
registro.
191
10
Cursores
Otra forma de programar este mdulo PL/SQL es haciendo uso de una EXCEPTION de
errores.
10.3.
RECORRIDO DE CURSORES
Para recorrer toda la informacin referenciada por un cursor, podemos usar diferentes
modalidades de bucles. Distinguimos:
Bucles LOOP ..... END LOOP. La sintaxis para recorrer todos los registros de una
tabla llamada CLIENTES:
DECLARE
vi_registro CLIENTES%ROWTYPE;
CURSOR c_cliente IS SELECT * FROM clientes;
BEGIN
OPEN c_cliente;
DBMS_OUTPUT.PUT_LINE( 'Datos de los Cliente');
LOOP
FETCH c_cliente INTO vi_registro;
EXIT WHEN c_cliente%NOTFOUND;
DBMS_OUTPUT.PUT_LINE( vi_registro. descrip_cliente );
END LOOP;
CLOSE c_cliente;
COMMIT;
END;
Bucles WHILE. El ejemplo anterior pero usando WHILE ..... END LOOP.
DECLARE
vi_registro CLIENTES%ROWTYPE;
CURSOR c_cliente IS SELECT * FROM clientes;
BEGIN
OPEN c_cliente;
DBMS_OUTPUT.PUT_LINE( 'Datos de los Cliente');
FETCH c_cliente INTO vi_registro;
WHILE c_cliente %FOUND LOOP
DBMS_OUTPUT.PUT_LINE( vi_registro. descrip_cliente );
192
10
Cursores
Bucles FOR. Este tipo de bucle ejecuta una orden OPEN, FETCH y CLOSE de forma
implcita. El ejemplo anterior quedara:
193
10
10.4.
Cursores
Cuando abrimos un cursor (OPEN) Oracle, toma una instancia de las tablas o conjuntos de
tablas especificadas en el select del cursor. Si otra sesin cambia o modifica los valores de
esas tablas incluyendo la confirmacin de los cambios (commit), el cursor anteriormente
abierto, no tiene consistencia sobre los datos ledos, para ello se necesitara volver a abrir el
cursor.
Oracle nos permite bloqueos exclusivos sobre las filas involucradas en la consulta asociada al
cursor: Para ello, escribiremos al final de la sentencia select:
10.5.
VARIABLES DE CURSOR
Las variables de cursor, nos permiten DEVOLVER cursores creados en tiempo de ejecucin
en subprogramas PL/SQL para su procesamiento en aplicaciones externas.
Para declarar una variable cursor, primero tenemos que definir un tipo:
TYPE
tipo_variable_cursor
IS
REF
CURSOR
[RETURN
tipo_retorno_registro];
194
10
Cursores
Ejemplos:
DECLARE
TYPE tipo_registro IS RECORD
( id_cliente CLIENTES.id_cliente%TYPE,
datos_cliente CLIENTES .descrip_cliente%TYPE);
TYPE tipo_ref_cursor IS REF CURSOR RETURN tipo_registro;
variable_cursor tipo_ref_cursor;
La declaracin anterior, nos sirve para especificar una variable cursor con un nmero de
columnas especfica. Si se deseasen todas las columnas de la fila sera:
Una vez declarada, necesitamos abrirla para su manipulacin. Para ello usaremos:
Al igual que un cursor, la variable cursor tambin deben ser cerradas, con la sentencia
CLOSE nombre_variable_cursor;
Ejemplo.
Crearemos un procedimiento llamado mostrar_datos que usando una variable cursor, me
muestre los datos de la tabla CLIENTES.
195
10
vi_descripcion VARCHAR2(30);
BEGIN
OPEN variable_cursor FOR SELECT * FROM CLIENTES;
LOOP
FETCH variable_cursor INTO vi_id_cliente,vi_descripcion;
EXIT WHEN variable_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE( vi_id_cliente || ' ' || vi_descripcion);
END LOOP;
END;
El resultado:
196
Cursores
recuerde_
10
Cursores
197
ndices
ndice_
11
11.1.
DEFINICIN ..........................................................................201
11.2.
11.3.
11.4.
11.5.
11.4.1.
11.4.2.
11.4.3.
11.4.4.
11.4.5.
199
11
11.1.
ndices
DEFINICIN
Los ndices se aplican a columnas de una tabla, pudiendo estar constituidos por una o ms
columnas de la tabla. Su funcionalidad es localizar la informacin a buscar lo ms
rpidamente posible y con el menor nmero posible de E/S a disco, para conseguir de esta
forma un mayor rendimiento. No siempre es aconsejable crear ndices ya que stos deben
ser gestionados por Oracle, por lo que implica tiempo de gestin, lo cual hace que baje el
rendimiento en lugar de aumentarlo. Los ndices slo pertenecen a una tabla.
A continuacin, vamos a ver a groso modo la funcionalidad de los ndices.
Supongamos que tenemos una tabla compuesta de 26 columnas o campos cada uno de ellos
del tipo varchar2(30), es decir:
TABLA
Campo1
Campo2
Campo3
.......................
Campo26
Si se desea consultar el dato del Campo3, Oracle necesita extraer el resto de columnas
desde la 1 hasta la 26 y recorrer, por supuesto, toda la tabla. Suponiendo que se extraen 5
filas, tendramos un buffer de lectura de:
Tamao de columna: 30
N de columnas recuperadas: 26
Filas extradas: 5
TOTAL BUFFER = 30 x 26 x 5 = 3900 caracteres.
Si en lugar de ser 5 filas fuesen 50.000 filas, tendramos 39.000.000 de caracteres, es decir,
39 Mbyte de memoria cach.
Por tanto, debemos crear un ndice que haga referencia al Campo3, en el cual Oracle
almacena nicamente el contenido de dicho campo y la referencia a esos valores dentro de la
tabla. Cada vez que se produzca una variacin en ese campo, tambin se lleva a cabo en el
objeto ndice creado.
Si ahora deseamos consultar la informacin del Campo3, Oracle recorre el ndice. Por lo
tanto, para un total de 5 filas, tendremos 30 x 1 x 5 = 150 caracteres. Visto de otra forma,
para un Buffer de 3.900 caracteres, obtendramos una lectura de 130 filas extradas.
201
11
ndices
11.2.
Cuando se insertan datos en una tabla, no se sigue ningn tipo de orden, por lo que a la
hora de consultar dichos datos, Oracle necesita recorrer toda la tabla. Al crear un ndice,
Oracle ordena la informacin de dicho ndice bien sea ste de tipo carcter, numrico o
fecha.
Al crear un ndice, Oracle se encarga de mantenerlo si los datos del campo asociado al ndice
son borrados, actualizados o se inserta un dato nuevo en la tabla.
Por otra parte, debemos sealar que los ndices pueden ser unvocos o no unvocos. Si un
ndice asociado a un campo o columna de una tabla es nico, Oracle comprobar cada vez
que se inserte un dato en dicha columna que el valor es nico para cumplir la caracterstica
del ndice creado.
En cambio, si el ndice que se desea crear es de tipo nico sobre un campo que contiene
datos, que no son nicos, Oracle jams podr crear el ndice.
Si se elimina el ndice asociado a una o ms de una columna de una tabla, los valores de
esas columnas en la tabla no se eliminan.
Anteriormente, hemos mencionado que los ndices pueden ser creados sobre ms de una
columna. stos deben ser creados cuando observamos en la tabla que siempre que se
consulta un campo x lo hacemos de otro campo y, por lo que deberamos indexar ambos
campos. A estos ndices se les denomina ndices concatenados o ndices compuestos.
Oracle crea de forma automtica ndices para las columnas clave o Primary Key.
Tambin para las columnas sobre las cuales se aplique una restriccin UNIQUE.
202
11
11.3.
a.
ndices
b.
c.
203
11
d.
ndices
"C2"
"C3"
204
11
ndices
Las consultas de datos a travs de los campos o campo que formen la PRIMERY KEY
son mucho ms rpidas ya que son ndices nicos, por lo que el recorrido del objeto
index no es total.
e.
f.
Toda tabla que supere las 1.000 filas debe tener un ndice.
11.4.
TIPOS DE NDICES
Para poder localizar los datos, todas las filas de una tabla poseen un identificador o etiqueta
denominado RowID (Identificador de Fila). Este identificador indica a Oracle la ubicacin
fsica exacta de la fila (Datafile, Bloque de archivo y Fila de archivo).
Existen diferentes tipos de ndices:
11.4.1.
Es un tipo especial de ndices de tabla que ayudan a optimizar las consultas a grandes
volmenes de datos con columnas cuyos valores varan muy poco.
En lugar de almacenar los valores claves, se almacenan mapas de bits.
205
11
ndices
Cada mapa de bits es un conjunto de bit (unos y ceros), que sern distintos para los valores
de columnas diferentes.
Por ejemplo:
Supongamos que tenemos una tabla indexada (Arbol-B) por la columna C3. Al consultar la
tabla tendramos:
Select rownum, c3 from tabla;
ROWNUM
C3
Informtico
Abogado
Arquitecto
Abogado
Pedagogo
Informtico
Abogado
Arquitecto
Informtico
10
Arquitecto
11
Pedagogo
12
Abogado
13
Informtico
14
Pedagogo
15
Arquitecto
ROWNUM
C3
Abogado
Abogado
Abogado
12
Abogado
Arquitecto
Arquitecto
10
Arquitecto
15
Arquitecto
206
11
1
Informtico
Informtico
Informtico
13
Informtico
Pedagogo
11
Pedagogo
14
Pedagogo
ndices
As pues, el objeto ndice almacenara en lugar del rownum el RowId y los valores de C3.
Si observamos el ejemplo, el campo C3 slo posee 4 valores distintos. Si se crea un ndice de
mapa de bit (Bitmap), en el cual cada mapa de bit almacena informacin de 12 filas de la
tabla, obtendramos lo siguiente:
ROWNUM
C3
2,4,7,12
Abogado
12
0101.0010.0001
3,8,10
Arquitecto
12
0010.0001.0100
15
Arquitecto
13
24
0010.0000.0000
1,6,9
Informtico 1
12
1000.0100.1000
16
Informtico 13
24
0001.0000.0000
5,11
Pedagogo
12
0000.1000.0010
14
Pedagogo
13
24
0100.0000.0000
Por tanto, es aconsejable utilizar columnas cuyos valores sean poco variables, ya que
cuantos ms valores diferentes existan, mayor ser el tamao del objeto ndice y mayor
tiempo para poder ser gestionado.
11.4.3.
Son ndices basados en expresiones creadas por el usuario aplicadas a las columnas de la
tabla.
El ndice almacena el resultado de la expresin y el RowID de la fila.
As pues, su creacin se recomienda para aquellas operaciones de consulta y borrado que
usan frecuentemente la misma expresin en la clusula WHERE.
207
11
ndices
Una funcin creada por el usuario como objeto PL/SQL de tipo pblica.
Cluster o Agrupamiento
Oracle, nos permite almacenar fsicamente en el mismo bloque de datos aquellas tablas a las
que se acceda conjuntamente. Para ello, se crea el cluster que contenga dichas tablas. De
esta forma, se reduce el nmero de E/S a disco. Los cluster de datos es una alternativa a la
indexacin.
Las columnas relacionadas de las tablas se denominan clave de cluster.
Oracle nos proporciona dos tipos distintos de cluster:
a) Cluster de datos indexados. En este tipo, Oracle almacena fsicamente una fila en el
cluster por cada valor de la clave de cluster.
Dicha clave de cluster se indexa utilizando un ndice de cluster almacenndose slo
una vez su valor para las distintas tablas del cluster.
208
11
ndices
Ejemplo:
Para consultar los artculos que componen los distintos pedidos, se crea una consulta
entre ambas tablas. Si se crea un cluster para dichas tablas, en cada bloque de datos
se almacenar:
Bloque de Datos 1:
ID_Pedido: 100
Todos los artculos incluidos en el pedido 100
Bloque de Datos 2:
ID_Pedido: 200
Todos los artculos incluidos en el pedido 200
..................
Y as sucesivamente.
b) Cluster de datos hash. En ellos, Oracle almacena fsicamente una fila, segn el
resultado de aplicar una funcin hash al valor clave del cluster (columnas relacionadas
de las tablas) de la fila.
Adems, almacena en el mismo bloque todas aquellas filas que dan el mismo resultado
al aplicarles la funcin hash, es decir, esas filas forman un grupo hash.
Por tanto, a la hora de consultar datos en tablas con cluster hash, Oracle aplica dicha
funcin hash al criterio de seleccin, sabiendo perfectamente en qu bloque (grupo
hash) se encuentran los datos.
Consideraciones:
209
11
ndices
En definitiva, Los cluster resultan de gran utilidad cuando se consultan datos de varias tablas
con gran frecuencia, ya que dentro del cluster se almacenan dichas filas y todas ellas en el
mismo bloque de datos, por lo que aumenta el rendimiento y acceso al disco fsico. Al igual
que ganamos en la seleccin, las inserciones, borrados y actualizaciones pueden llegar a ser
menos eficaces que en las tablas no agrupadas en cluster.
11.5.
CREACIN DE NDICES
Los privilegios relacionados con los ndices que se pueden asignar a un usurario son los
siguientes:
Los ndices al igual que otros objetos de una B.D. Oracle, podemos crearlos mediante una
sentencia SQL o mediante la Consola del Enterprise Manager.
Desde la consola o interfaz grfica, una vez conectados, slo tendremos que ir al apartado
Esquema y seleccionar la carpeta Tabla o la carpeta ndices. Si lo hacemos a travs de
la carpeta Tabla, tendremos que posicionarnos en la carpeta ndice de la tabla
correspondiente.
210
11
ndices
Haciendo clic derecho y seleccionando la opcin Crear, nos aparece la ventana de Creacin
de ndice, cuyo aspecto es el que se muestra a continuacin:
211
11
ndices
Esquema.- Nombre del esquema al que pertenece el objeto que vamos a crear.
Esquema y Tabla.- Nombre del Esquema dnde se encuentra la Tabla para la que
se crea el ndice.
Listado de las columnas de la tabla sobre las cuales se puede aplicar el ndice.
212
11
ndices
Las opciones nico, Bitmap, No Ordenado, Revertir, excluyentes entre si, nos permiten
especificar la modalidad o tipo de ndice.
Finalmente, algunos ejemplos de sentencia SQL que nos permiten crear ndices son los que
se detallan a continuacin:
213
11
3.
ndices
214
recuerde_
11
ndices
215
glosario_
A
ADD DATAFILE. Clusula que nos sirve para aadir un fichero de datos a un
tablespace.
AUTOEXTEND. Clusula que nos permite especificar el crecimiento automtico
de los ficheros de datos.
B
BASE DE DATOS. Conjunto de Objetos tratados por un sistema gestor de Base
de Datos. Su funcionalidad es almacenar la informacin.
BLOQUE LOGICO. Unidad lgica mnima de almacenamiento para los datos,
directamente ligado al bloque fsico del sistema operativo.
C
CAMPOS. Unidad Lgica mnima de almacenamiento de un registro de la B.D.
COALESCE. Clusula usada para realizar eliminar la desfragmentacin en los
tablespaces.
COLUMNAS. Ver CAMPO.
CONTROLFILE. Ver FICHEROS DE CONTROL.
D
DATAFILE. Ver FICHEROS DE DATOS.
DBA. Administrador de la B.D.
DEALLOCATE UNUSED. Clusula que libera espacio de los segmentos de datos
e ndices.
E
ESQUEMA. Ver SCHEMA.
EXTENSION. Conjunto de Bloques contiguos.
F
FICHEROS DE CONTROL. Contienen la informacin necesaria para arrancar la
B.D. Como nombre, fecha de creacin, ficheros asociados, etc.
217
glosario_
P
PCTFREE. Porcentaje de espacio en un bloque de dato, reservado para las
modificaciones de los datos almacenados en dicho bloque.
PCTINCREASE. Porcentaje de crecimiento de la siguientes extensin con
respecto a la anterior asignada.
PCTUSED. Porcentaje que determina cuando un bloque de datos es candidato
para recibir inserciones.
PL/SQL. Lenguaje de programacin utilizado para acceder a la informacin
existente
en
una
B.D.
relacional
mediante
sentencias
SQL.
(Procedural
218
glosario_
R
REDOLOG. Ver FICHEROS REDO LOG.
ROL. Conjunto de privilegios concedidos a un usuario.
ROWID. Identificador nico por cada fila de una tabla de la B.D.
RUTA DE ACCESO. Ubicacin en disco duro dnde se instalarn los programas
de instalacin de Oracle.
S
SCHEMA. Objeto de la B.D. dnde se recoge de forma lgica la estructura de un
diseo relacional.
SEGMETOS DE DATOS. Conjunto de EXTENSIONES que almacena informacin
de las tablas.
SEGMETOS DE INDICE. Conjunto de EXTENSIONES que almacena informacin
de los ndices de las tablas.
SEGMENTO TEMPORAL. Conjunto de EXTENSIONES creadas por Oracle para
operaciones intermedias en operaciones SQL.
S.G.D.B. Un Sistema Gestor de Base de Datos es un programa informtico que
nos permite manejar Bases de Datos. Ejemplo: Oracle, SQL Server, Informix,
DB2, MySQL, Access.
SID. identificador de la instancia de la B.D.
S.Q.L. Conjuntos de sentencias usadas para manejar los datos de una B.D.
(Structured Query Language).
SYS. Usuario propietario de las tablas del Diccionario de Datos.
SYSTEM. Usuario Administrador de la B.D.
T
TABLA. Estructura lgica para almacenar los datos.
TABLESPACE. Estructura lgica de almacenamiento, con ficheros de datos
fsicos asociados a ella dnde se almacena informacin.
TRANSACCION. Conjunto de sentencias que se ejecutan o se deshacen como
un bloque hacia la B.D.
TRUNCATE. Sentencia S.Q.L. que libera extensiones de datos e ndices
asociados a la tabla.
219
glosario_
U
UNLIMITED. Clusula que permite a un usuario a hacer uso de todo el espacio
asignado a un tablespaces sin ningn tipo de restriccin.
USUARIOS.
existente en la B.D.
220