Professional Documents
Culture Documents
INTRODUCCIÓN A LA
ADMINISTRACIÓN DE ORACLE
INDICE TEMATICO
INDICE TEMATICO........................................................................................................................................ 2
INDICE DE FIGURAS..................................................................................................................................... 4
INTRODUCCIÓN ............................................................................................................................................. 5
Roles y Responsabilidades del DBA de Oracle .......................................................................................... 7
Tareas básicas del DBA.............................................................................................................................. 7
Tareas adicionales del DBA ....................................................................................................................... 8
La Base de Datos........................................................................................................................................... 9
La Capa Física ............................................................................................................................................ 9
La Capa Lógica .......................................................................................................................................... 9
Los Tablespaces y los Datafiles ................................................................................................................10
Segmentos, Extensiones y Bloques ...........................................................................................................11
El Esquema de la base de datos .................................................................................................................12
Arquitectura de Oracle ...............................................................................................................................13
LA INSTANCIA ORACLE ..............................................................................................................................14
El Área Global del Sistema (SGA) .............................................................................................................15
Procesos de la Instancia ..............................................................................................................................16
El Área Global de Programas (PGA).........................................................................................................17
Las Transacciones .......................................................................................................................................17
CREACIÓN DE UNA BASE DE DATOS.......................................................................................................18
Generalidades ..............................................................................................................................................18
Creación de una Instancia ..........................................................................................................................19
Arranque de la Instancia ............................................................................................................................19
Creación de una base de datos....................................................................................................................20
AREAS LOGICAS Y ARCHIVOS FISICOS ..................................................................................................21
Tablespaces y Datafiles ...............................................................................................................................21
Creación de un Tablespace ........................................................................................................................21
Eliminación de un Tablespace...................................................................................................................22
Manipulación de Datafiles.........................................................................................................................23
Los segmentos de Rollback .........................................................................................................................24
Creación de un segmento de Rollback.......................................................................................................25
Estados de un segmento de Rollback.........................................................................................................26
Los archivos “Redo Log” ............................................................................................................................27
MANEJO DE DATOS......................................................................................................................................28
Export...........................................................................................................................................................28
Import...........................................................................................................................................................31
2
Introducción a la administración de Oracle
3
Introducción a la administración de Oracle
INDICE DE FIGURAS
4
Introducción a la administración de Oracle
INTRODUCCIÓN
5
Introducción a la administración de Oracle
6
Introducción a la administración de Oracle
Monitorización
El DBA debe monitorear continuamente el rendimiento del sistema y estar preparado para
efectuar ajustes de sintonización de éste. En ciertas oportunidades esto involucra cambiar
sólo algunos parámetros y otras veces reconstruir índices o reestructurar tablas.
7
Introducción a la administración de Oracle
Respaldos
Debido a que la tarea más importante del DBA es proteger la integridad de los datos, se
deberá desarrollar una estrategia efectiva de respaldos y recuperación de datos para
mantener la estabilidad de toda la información guardada. Las frecuencias de estos respaldos
deberán decidirse dependiendo de la cantidad de procesos que alteran los datos a través del
tiempo.
Prevención de riesgos
Otra tarea del DBA es la de calendarizar mantenciones a las bases de datos (archivos
lógicos) o cooperar en el mantenimiento de las máquinas al administrador del sistema. El
DBA debe fortalecer sus esfuerzos en orden a eliminar problemas o situaciones
potencialmente peligrosas.
8
Introducción a la administración de Oracle
La Base de Datos
La base de datos de Oracle tiene una capa lógica y otra física. La capa física consiste de
archivos que residen en el disco y los componentes de la capa lógica son estructuras que
mapean los datos hacia estos componentes físicos.
LA CAPA FÍSICA
Ya se dijo que consiste de archivos físicos que se encuentran en los discos. Estos pueden
ser de tres tipos diferentes:
- Uno o más datafiles
Los datafiles almacenan toda la información ingresada en una base de datos. Se pueden
tener sólo uno o cientos de ellos. Muchos objetos (tablas, índices) pueden compartir
varios datafiles. El número máximo de datafiles que pueden ser configurados está
limitado por el parámetro de sistema MAXDATAFILES.
- Dos o más archivos redo log (de deshacer)
Los archivos del tipo redo log almacenan información que se utiliza para la
recuperación de una base de datos en caso de falla. Estos archivos almacenan la historia
de cambios efectuados sobre la base de datos y son particularmente útiles cuando se
necesita corroborar si los cambios que la base de datos ya ha confirmado se han
efectuado realmente en los datafiles.
- Uno o más control files
Estos archivos contienen información que se utiliza cuando se levanta una instancia, tal
como la información de dónde se encuentran ubicados los datafiles y los archivos redo
log. Estos archivos de control deben encontrarse siempre protegidos.
LA CAPA LÓGICA
La capa lógica de una base de datos consta de los siguientes elementos:
- Uno o más tablespaces
- El esquema de la base de datos (schema), el cual consiste de objetos como tablas,
clusters, índices, vistas, procedimientos almacenados, triggers, secuencias y otros.
9
Introducción a la administración de Oracle
En la figura siguiente se aprecia la diferencia entre estos tres conceptos. Una base de datos
de ejemplo contiene tres tablespaces lógicos (parte superior de la figura) que utiliza para
almacenar información del sistema, de los datos del usuario y de los índices de las tablas.
Asimismo, existen los espacios físicos (datafiles) que guardan esta información en los
diferentes discos disponibles y que se señalan en la parte inferior del dibujo.
Figura No. 2 Relación entre la base de datos, los tablespaces y los datafiles
10
Introducción a la administración de Oracle
11
Introducción a la administración de Oracle
12
Introducción a la administración de Oracle
Arquitectura de Oracle
13
Introducción a la administración de Oracle
LA INSTANCIA ORACLE
Una instancia de Oracle está conformada por varios procesos y espacios de memoria
compartida que son necesarios para acceder a la información contenida en la base de datos.
La instancia está conformada por procesos del usuario, procesos que se ejecutan en el
background de Oracle y los espacios de memoria que comparten estos procesos.
14
Introducción a la administración de Oracle
15
Introducción a la administración de Oracle
Procesos de la Instancia
Según lo que se advierte en la figura 5, los procesos que se implementan en una instancia
de Oracle y su función principal son los siguientes:
LGWR (log writer): Es el responsable de escribir información desde el buffer de log hacia
el archivo redo log.
PMON (process monitor): Su misión es monitorizar los procesos del servidor y tomar
acciones correctivas cuando alguno de ellos se interrumpe en forma abrupta, limpiando la
caché y liberando los posibles recursos que pudieran estar asignados en ese momento.
También es responsable por el restablecimiento de aquel proceso que se ha interrumpido
bruscamente.
SMON (system monitor): Levanta una instancia cuando se le da la instrucción de partida (al
comienzo del trabajo, encontrándose previamente en shutdown). Enseguida limpia los
segmentos temporales y recupera las transacciones que pudieran haberse interrumpido
debido a una falla del sistema. Además disminuye la fragmentación del sistema agrupando
aquellas extensiones libres que existen dentro de la base de datos.
16
Introducción a la administración de Oracle
Las Transacciones
El término transacción describe a una unidad lógica de trabajo que está compuesta de una o
más sentencias SQL, que deben terminar con una instrucción commit o rollback. En ese
instante, una nueva transacción dará comienzo y estará activa hasta que se ejecute alguno
de esos dos comandos otra vez.
Cabe destacar que una transacción no se considera confirmada hasta que ésta se termina de
escribir en el archivo de redo log.
17
Introducción a la administración de Oracle
Generalidades
En este capítulo no se discutirá en detalle como se debe crear una instancia o activar sus
servicios porque se supone conocido el mecanismo de conectarse a una base de datos o
instancia ya creada. Sin embargo, se repasarán los principales comandos que un DBA
debiera reconocer para configurarla porque es un hecho que siempre utilizará alguna
herramienta gráfica que le permita con mucha facilidad crear instancias y cree
automáticamente los archivos de configuración. Un repaso no viene nada de mal.
En primer lugar debemos suponer que el software de Oracle ya se encuentra instalado o que
estamos en ello. En la misma operación de instalación se nos preguntará si deseamos crear
una instancia y, posteriormente, una base de datos dentro de ella.
Si no es el caso y debemos configurar cada una de ellas ya sea porque no existen, porque
las que existen no nos satisfacen o están relacionadas con otros temas o porque no disponen
de suficiente espacio, entonces la secuencia correcta es la siguiente:
18
Introducción a la administración de Oracle
Donde se han omitido los parámetros opcionales y los nombres “mkt” y “mypass”
corresponden a los valores elegidos para nombrar la instancia y el password de la cuenta
internal, que es el usuario DBA por defecto que se crea.
Arranque de la Instancia
Una instancia de Oracle puede ser arrancada de forma manual o automática. La primera
opción puede efectuarse tanto desde la línea de comandos como desde una interfaz gráfica
(Oracle Enterprise Manager o DBA Studio).
Para la configuración del arranque automático debe establecerse esta opción en algún lugar
del sistema operativo. Así, en Windows NT se configura como un servicio y en Unix, por
ejemplo, se establecen las opciones en un archivo del sistema.
En el caso de tener que arrancar la instancia en forma manual, se puede utilizar el siguiente
comando:
STARTUP parámetros
19
Introducción a la administración de Oracle
1
Al montar una base de datos ésta no queda disponible para todos los usuarios, salvo si tienen privilegios
especiales (ej: usuarios DBA) y al abrirla entonces sí pueden acceder a ella los usuarios de cualquier perfil.
20
Introducción a la administración de Oracle
Tablespaces y Datafiles
Ya hemos dicho que un tablespace es una unidad lógica que denota el espacio de
almacenamiento de datos dentro de una base de datos y que están constituidos por uno o
más datafiles, que son los archivos físicos que ocupan efectivamente el espacio en el disco
duro. Cuando se crea una base de datos, hay que crear al menos un tablespace, por lo que
durante el proceso de creación de ésta siempre se indica el tablespace principal, de nombre
SYSTEM. Su correspondiente datafile será entonces el fichero físico al que habrá que
asignar una ruta, un nombre y un tamaño.
Los usuarios con características de DBA que se generan automáticamente al crear una
instancia son SYS y SYSTEM. Es a partir del trabajo de ellos que la base de datos
comienza a crecer y es posible configurar nuevos usuarios, otras áreas de datos
(tablespaces) e implementar en forma física un modelo de datos en algún esquema.
No es recomendable crear nuevos usuarios o procesos que compartan el tablespace del
sistema, por lo que una de las primeras tareas del DBA consiste en crear nuevos esquemas
(cuentas de usuario) y asignarles tablespaces diferentes (que también se deberán crear).
CREACIÓN DE UN TABLESPACE
Para crear un tablespace desde la interfaz de comandos, se debe escribir la siguiente
sentencia:
CREATE TABLESPACE nombre DATAFILE ‘ ruta_y_nombre_del_datafile’ SIZE tamaño;
Ejemplo:
create tablespace datos_prueba datafile ‘c:\oracle81\oradata\mkt\tb_mkt01.dbf’ size 100M;
21
Introducción a la administración de Oracle
ELIMINACIÓN DE UN TABLESPACE
Para eliminar un tablespace que no se vaya a ocupar más, el DBA debe en primer lugar
asegurarse que éste no está albergando objetos que se estén utilizando en alguno de los
sistemas que se encuentren en explotación (o desarrollo).
Una de las primeras medidas de seguridad que se deben considerar es no eliminar el
tablespace inmediatamente, sino que dejarlo “deshabilitado” un tiempo prudente mientras
se espera a recibir algunas incidencias de los usuarios por este hecho (que no podrán
acceder a él, como si se hubiese eliminado). Si se comprueba que efectivamente el
tablespace ya no es necesario, entonces se puede proceder a eliminarlo sin problemas.
22
Introducción a la administración de Oracle
MANIPULACIÓN DE DATAFILES
Mediante el manejo de los archivos físicos de una base de datos (datafiles) podemos
redimensionar los tablespaces, permitiendo la asignación de más espacio.
Para aumentar el tamaño de un tablespace se puede optar por alguno de estos dos caminos,
representados por las instrucciones que permiten implementar la medida:
La primera instrucción indica que se va a crear un nuevo datafile para el tablespace que se
ha quedado pequeño, aumentando su capacidad en 50 megabytes.
En el segundo ejemplo, no se menciona el tablespace porque lo que se hace es
redimensionar un datafile, cuyo nombre es único en la ruta mencionada y que Oracle ya
conoce que está asociado a algún tablespace (datos_prueba en el ejemplo). Su tamaño se
debe escribir de nuevo, por lo que realmente no se han añadido 150 megabytes como dice
la instrucción, sino sólo 50, porque ya tenía 100 megabytes al inicio.
23
Introducción a la administración de Oracle
24
Introducción a la administración de Oracle
25
Introducción a la administración de Oracle
Para cambiar el estado de un segmento de rollback se debe ejecutar una instrucción cuya
sintaxis es como sigue:
ALTER ROLLBACK SEGMENT nombre_segmento estado;
Para conocer qué segmentos de rollback existen en todos los tablespaces y el estado en que
se encuentran, podemos ejecutar la siguiente sentencia:
Que ciertamente, por los objetos a los que accede, sólo podrá ejecutar un DBA.
26
Introducción a la administración de Oracle
27
Introducción a la administración de Oracle
MANEJO DE DATOS
Export
Este utilitario está diseñado para registrar en un archivo especial todas las definiciones de
objetos y los datos que se deseen dentro de una base de datos. Este archivo es conocido
como “el archivo de export” y su formato es únicamente reconocido por el utilitario Import
de Oracle. Las diferentes intenciones que podrían movernos para efectuar una exportación
de datos pueden ser:
a) Respaldar la base de datos: El utilitario Export puede ser usado para efectuar un
respaldo total de la base de datos (aunque no sea el mecanismo más eficiente para
ese propósito).
b) Mover datos entre bases de datos: Los datos y objetos exportados desde una base de
datos pueden perfectamente ser recuperados en otra diferente.
c) Reconstruir una base de datos: Si su base de datos tiene los tablespaces demasiado
fragmentados, ésta es una buena opción para volver a compactarlos.
d) Reorganizar los datafiles: Siguiendo la misma lógica anterior, también se puede
redistribuir la información en los archivos físicos que se desee.
28
Introducción a la administración de Oracle
Para simplificar la utilización del comando cuando se va a repetir varias veces con los
mismos parámetros u opciones, éstas se pueden escribir en un archivo de texto y referenciar
desde la línea de comandos de la siguiente manera:
EXP80 usuario/password PARFILE=archivo [opciones...]
BUFFER=bytes Especifica el tamaño del buffer de copia (en bytes) usado por el
utilitario. Si el valor es cero, entonces se recuperan las filas de a
una.
29
Introducción a la administración de Oracle
ROWS=[Y o N] Se utiliza para exportar todos los datos de las tablas (“Y”) o
solamente la estructura de los objetos (“N”).
TABLES=(tabla1, tabla2...) Lista de tablas que se van a exportar. Es válido cuando sólo se
exporta un solo esquema de usuario.
Finalmente, se puede utilizar el parámetro HELP para obtener una lista de las posibles
opciones disponibles con la utilidad. En ese caso deberíamos escribir:
EXP80 HELP=Y;
Y entonces se desplegará una pantalla con todas las opciones posibles para el comando
EXP80 (o EXP) sin ejecutar ninguna acción de exportación.
30
Introducción a la administración de Oracle
Import
La utilidad de importación se utiliza en conjunto con la de exportación, esto es por que no
se puede importar ningún archivo que no sea el resultado de una exportación de datos hecha
con anterioridad.
Las opciones de esta utilidad son similares a las de exportación; a continuación sólo
presentaremos algunas de ellas, que no son comunes a ambos programas. En este caso,
como en la exportación siempre será posible obtener una lista de las opciones disponibles
escribiendo:
IMP80 HELP=Y;
31
Introducción a la administración de Oracle
En este capítulo se conocerá cómo se definen y modifican los usuarios, perfiles y roles de
una base de datos.
Es una tarea bastante común de cualquier DBA, ya que constantemente se están
incorporando nuevos usuarios al sistema o modificando las opciones de éstos. Aquí se
repasarán todas las opciones que permiten manejar estas características y se aprenderá a
simplificar la carga mediante la administración de perfiles y roles, que son conceptos que
controlan diferentes tipos de recursos.
Rol: Un rol es utilizado para asignar privilegios a los usuarios y que les permiten
acceder a diferentes objetos y operaciones.
Perfil: Un perfil denota la cantidad de recursos del sistema que se permite consumir
a un usuario o grupo de ellos.
Creación de Usuarios
Cuando se da de alta a un usuario basta, como mínimo, con indicar el nombre y el password
de la cuenta (esquema) que se está creando. Enseguida se asigna un espacio físico al nuevo
esquema dentro de la base de datos con los parámetros por defecto.
Para crear un usuario especificando las opciones adecuadas sin considerar los valores por
defecto, se debería respetar la siguiente sintaxis:
32
Introducción a la administración de Oracle
[PROFILE nombre_perfil]
[PASSWORD EXPIRE]
[ACCOUNT LOCK o ACCOUNT UNLOCK]
33
Introducción a la administración de Oracle
Modificación de Usuarios
La forma de modificar usuarios a través de comandos es utilizando la opción Alter User,
cuya sintaxis completa es muy similar a la de creación de usuarios. Todos los parámetros
que fueron establecidos en el instante de la creación pueden ahora modificarse con esta
instrucción:
Es tan poderosa que da la sensación de estar creando al usuario de nuevo, pero no es así
porque todos los objetos que tuviera creados bajo su esquema siguen permaneciendo allí.
Eliminación de Usuarios
Para eliminar un usuario se ejecuta la siguiente instrucción:
34
Introducción a la administración de Oracle
Creación de Perfiles
Los perfiles se crean para limitar las posibilidades de los usuarios del sistema de base de
datos. Por ejemplo, se pueden establecer 3 tipos de usuarios:
- Administradores: Que podrían tener acceso a recursos ilimitados dentro del sistema.
- Desarrolladores: Que podrían disponer de un número ilimitado de sesiones pero
restringida la utilización de la CPU.
- Otros.
35
Introducción a la administración de Oracle
Creación de Roles
Los Roles constituyen la forma más segura y rápida de asignar recursos a los grupos de
usuarios. Es una tarea muy tediosa para cualquier DBA tener que asignar o revocar
permisos a todos los usuarios, de a uno por uno, y es por eso que agrupando un conjunto de
usuarios bajo las mismas características es posible manejar sus permisos como un grupo.
Para crear roles se utiliza la siguiente sintaxis:
CREATE ROLE nombre_rol NOT IDENTIFIED o IDENTIFIED BY password
Y para asignar el rol a un usuario o para comenzar a asignar / quitar ciertos privilegios al
rol se debe utilizar los comandos siguientes:
Grant: Otorga privilegios a un rol (o a un usuario cualquiera) o también asigna un
rol a un usuario.
Revoke: Elimina privilegios otorgados previamente a un rol (o a un usuario).
Los roles o privilegios se pueden asignar varios al mismo usuario o grupo en una sola línea
de comandos, siguiendo la sintaxis siguiente:
GRANT nombre_rol o nombre_privilegio [, nombre_rol o nombre_privilegio]
TO nombre_usuario o nombre_rol o PUBLIC [, nombre_usuario o nombre_rol]
[WITH ADMIN OPTION]
Ejemplo:
1) Creación del rol ROLE_DML:
CREATE ROLE role_dml NOT IDENTIFIED;
2) Asignar el privilegio de Select al rol recién creado:
GRANT select TO role_dml;
3) Asignar el rol a los usuarios JPEREZ y LGONZALEZ:
GRANT role_dml TO jperez, lgonzalez;
Esto hace que los usuarios anteriores posean el privilegio de SELECT. Cada uno de los
usuarios que se incorporen a este rol, tendrá el mismo privilegio recién mencionado.
Si los privilegios se otorgan con la cláusula “with admin option” esto quiere decir que los
usuarios que reciben los privilegios pueden a su vez otorgarlos a otros.
36
Introducción a la administración de Oracle
Tablas
Una tabla se crea en un segmento. Este segmento posee una o más extensiones. Si la tabla
crece hasta alcanzar el tamaño máximo de una extensión, entonces se crea uno nuevo para
esa tabla. Las extensiones crecen de la manera en que se definieron cuando se creó la tabla,
dentro de la cláusula Storage. Cuando la cláusula anterior no se define para una tabla,
entonces se utilizan los parámetros por defecto definidos dentro del tablespace donde se
está usando. Si tampoco existen, entonces se utilizan los parámetros del sistema.
LA CLÁUSULA STORAGE
La sintaxis de la cláusula mencionada cuando se crea una tabla es la siguiente:
37
Introducción a la administración de Oracle
TABLAS PARTICIONADAS
Estos objetos siguen correspondiendo a las tablas que conocemos hasta ahora, pero la
diferencia radica en cómo se va a almacenar la información físicamente.
En efecto, al instante de crear una tabla podemos elegir qué rangos de datos van a quedar
almacenados en un tablespace u otro. Y aunque lo anterior no denote espacio físico de
almacenamiento (un tablespace es un segmento lógico), recordemos que sí podemos elegir
dónde estarán ubicados (en qué discos) los datafiles de esos tablespace y entonces sí que
podremos decir que estamos escogiendo el lugar físico donde se grabarán ciertos rangos de
datos de una tabla, lo que nos da las siguientes ventajas:
38
Introducción a la administración de Oracle
Por ejemplo, si deseamos tener una tabla que almacene los países del mundo, con la
siguiente estructura:
Y deseamos particionarla por el código, entonces la sintaxis de creación tendría que ser
como sigue:
39
Introducción a la administración de Oracle
PCTUSED: Este parámetro está relacionado con la frecuencia de inserciones que se pueden
hacer a una tabla. Determina el mínimo porcentaje de espacio usado que será mantenido
para cada bloque de datos, antes de crear el próximo segmento.
Si la actividad de inserción es alta o baja, los valores sugeridos para setear este parámetro
son los siguientes:
• Alta: Establézcase el porcentaje cercano o igual a 40.
• Si es alta y además con mucha frecuencia de actualizaciones, establézcase un valor
de 60.
• Si la frecuencia de inserciones de filas es baja, un porcentaje del 60% también es
válido para este parámetro.
40
Introducción a la administración de Oracle
Vistas
Una vista es una especie de ventana dentro de una tabla. Es una estructura lógica que tiene
la apariencia de una tabla, sin llegar a serla. El objetivo de crear vistas es el de tener que
prescindir de la tabla cuando se desea permitir la manipulación de datos a otros usuarios;
así como también de prevenir que se altere de manera involuntaria el contenido de la
información más sensible que pudiera encontrarse en ciertas tablas.
Las vistas se forman haciendo una selección de campos de una o varias tablas. También se
puede reemplazar una vista que ya existe con una sintaxis diferente, manteniendo su
nombre.
La sintaxis de la creación de vistas es:
Sinónimos
Los sinónimos son objetos del sistema que apuntan a otros objetos. Implementan alias de
tablas, vistas, secuencias o unidades de programas. Por lo general se utilizan para esconder
ciertos detalles del objeto que representan al usuario final.
Los sinónimos pueden ser públicos o privados. Los primeros son aquellos que caen dentro
del esquema PUBLIC y son vistos por todos los usuarios de la misma base de datos. Los
sinónimos privados se crean dentro del esquema de un usuario en particular y sólo estará
visible para quienes él estime conveniente.
41
Introducción a la administración de Oracle
Indices
Un índice es una estructura diseñada para obtener un acceso más rápido a los datos
contenidos dentro de una tabla.
Un índice es independiente de los datos almacenados en la tabla y cuando se encuentra bien
definido, es decir, cuando se forma atendiendo a la gran mayoría de las consultas que se
harán sobre una tabla, reduce significativamente la búsqueda, aumentando el rendimiento.
Inmediatamente luego de creado el índice, Oracle comienza a mantenerlo de acuerdo a las
inserciones, actualizaciones y eliminaciones de registros de la tabla en la cual se ha
implementado.
TIPOS DE ÍNDICES
Existen tres tipos de índices cuya naturaleza depende de la forma en que haya sido creado.
Estos tipos son:
Cuando se crea un índice (de cualquier tipo) también se crea un segmento de datos para
guardar esa información, que también se verá afectada por la misma cláusula storage que se
estudió para el caso de las tablas.
42
Introducción a la administración de Oracle
Considere las siguientes reglas de indexación para cuando se enfrente a la tarea de decidir
qué tablas indexar:
- Indexe solamente las tablas cuando las consultas (queries) no accedan a una gran
cantidad de filas de la tabla. Use índices cuando una query acceda a un porcentaje
menor al 5% de las filas de una tabla.
- No indexe tablas que son actualizadas con mucha frecuencia.
- Indexe aquellas tablas que no tengan muchos valores repetidos en las columnas
escogidas. Recuerde que finalmente el índice hace una búsqueda secuencial dentro
de un conjunto de filas objetivo.
- Las queries muy complejas (en la cláusula WHERE) por lo general no toman
mucha ventaja de los índices. Cuando posea más experiencia podrá corroborar esta
afirmación y estará preparado para arreglar estas situaciones.
43
Introducción a la administración de Oracle
También 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.
INDICES PARTICIONADOS
Tal como en el caso de las tablas, los índices también pueden ser almacenados en
tablespaces separados. La sintaxis de creación de los índices de este tipo es similar a la de
creación de las tablas particionadas:
Observe que el valor representado por la palabra reservada MAXVALUE será siempre el
mayor valor presente en la tabla para la columna especificada.
44
Introducción a la administración de Oracle
Secuencias
A menudo es preciso generar números en forma ordenada para implementar, por ejemplo,
una clave primaria en una tabla o garantizar que esos números no se repiten y van siempre
en un orden predefinido por el desarrollador (no necesariamente secuenciales).
La forma tradicional de efectuar lo anterior sería almacenar el último número utilizado en
un registro especial, bloquearlo, obtener el próximo valor, actualizar el registro,
desbloquearlo y utilizar el número. Sin embargo, para eso Oracle implementa los objetos
denominadas secuencias, que permiten hacer lo anterior de manera transparente para el
usuario.
Cuando se define una secuencia se deben indicar, como mínimo, el valor de partida (valor
mínimo) y el incremento.
45
Introducción a la administración de Oracle
GLOSARIO DE TERMINOS
La siguiente es una lista de los términos más utilizados cuando se trabaja con bases de datos
Oracle. Las definiciones ayudarán a comprender con mayor claridad algunos conceptos que
se mencionan a lo largo de los diferentes capítulos de este manual.
Bloque
Un bloque es la unidad más pequeña de almacenamiento en una base de datos Oracle. El
tamaño mínimo es de 2 KB y el máximo no debiera superar los 16 KB.
Buffer
Este término se refiere a una cantidad de memoria utilizada para almacenar información.
Un buffer comúnmente almacena datos que están a punto de ser usados o se acaban de
utilizar recientemente. En la mayoría de los casos son copias exactas de datos que se
encuentran almacenados en el disco y se mantienen en memoria con el fin de lograr un
acceso más rápido y ayudar de esa manera a mejorar el rendimiento de un sistema.
En Oracle, los buffers del SGA almacenan los bloques de datos usados más recientemente.
El conjunto de buffers que guardan estos bloques reciben el nombre de database buffer
cache; y aquellos que se utilizan para guardar temporalmente las entradas del tipo redo log
hasta que se escriben en el disco, se conocen como redo log buffers.
46
Introducción a la administración de Oracle
Caché
Es un área de almacenamiento implementada en la memoria RAM del computador que
permite accesos más rápidos a la información ya que es mucho más veloz que la memoria.
En Oracle, los buffers de bloques y el área shared pool son consideradas áreas caché. Estas
guardan los datos que se utilizan con mayor frecuencia y los mantienen disponibles por si
son requeridos en los procesos de consulta hasta que nuevos datos más frecuentemente
usados los reemplazan.
Checkpoint
Un checkpoint es una operación que fuerza a que todos los cambios registrados en bloques
de datos en memoria, sean escritos en el disco.
Clean buffer
Un buffer de este tipo es aquel que no ha sido modificado y que por lo tanto el proceso
DBWR no utilizará para confirmar los cambios en el disco (porque no ha sufrido cambios).
Concurrencia
Este término se refiere a la capacidad de permitir muchas funciones al mismo tiempo.
Oracle provee a muchos usuarios el acceso simultáneo a sus servicios, implementando de
esta forma la concurrencia.
DBA
Vea Administrador de la Base de Datos
DBMS
El database management system o DBMS corresponde al software y grupo de herramientas
que permiten manejar la base de datos. Un RDBMS es un DBMS relacional, es decir, cuya
naturaleza es la formación de relaciones al interior del mismo.
47
Introducción a la administración de Oracle
Diccionario de Datos
El diccionario de datos es un grupo de tablas de Oracle que se utilizan para almacenar
información sobre el resto de las tablas, índices, clusters y otros objetos de la base de datos.
Esquema
Un esquema es una colección de objetos asociados dentro de una base de datos.
Función
Una función es un grupo de sentencias SQL, escritas generalmente en PL/SQL que
implementan una serie de rutinas que devuelven un valor. Son casi idénticas a los
procedimientos y sólo se diferencian en esa última condición. Implementando funciones en
el servidor de base de datos se reduce el tráfico de comunicaciones en la red, ya que sólo se
envían a la función los parámetros de entrada y ésta sólo devuelve el valor al final de todo
el proceso, el que es ejecutado en la misma máquina donde reside la base de datos
mejorando así el rendimiento general del sistema.
48
Introducción a la administración de Oracle
Memoria Virtual
Indica la memoria que puede ser utilizada por programas que corren en un sistema
operativo y que está implementada físicamente en sectores del disco y no en la RAM. El
proceso de copiar datos de la RAM al disco (o memoria virtual) se llama paginación
(paging, en inglés). El archivo resultante es llamado el “swap file” y cada vez que un
programa accede a esta memoria virtual disminuye el rendimiento del mismo debido a que
realmente está accediendo al disco y no a la RAM.
Procedimiento
Un Procedimiento almacenado es un grupo de sentencias SQL o PL/SQL que implementan
un programa que se ejecuta en el servidor de base de datos, pero que a diferencia de las
funciones, no devuelve un valor. Al igual que las funciones su implementación permite
reducir el tráfico en la red, potenciando el rendimiento del sistema.
Query
Es una consulta efectuada contra la base de datos en lenguaje SQL. Se genera utilizando la
sentencia SELECT. Su principal característica es que no efectúa cambios en la base de
datos; por este motivo es llamada también una transacción de sólo lectura.
49
Introducción a la administración de Oracle
Transacción
Una transacción es una unidad lógica de trabajo que consiste de una o más sentencias SQL,
que pueden finalizar con un commit o un rollback. Las métricas de rendimiento utilizan
comúnmente las unidades “transacciones por segundo” o “transacciones por minuto”.
Trigger
Un trigger es un mecanismo que permite escribir procedimientos que son ejecutados en
forma automática (sin una orden explícita del usuario o programador) cuando ocurre un
evento de INSERT, UPDATE o DELTE sobre una tabla o vista. Generalmente se utilizan
los triggers para forzar las restricciones de integridad entre las tablas o automatizar alguna
otra función específica.
Unidad de Almacenamiento
La información es almacenada dentro del computador en forma binaria. Las unidades que
se refieren a estos conceptos (datos binarios) son las siguientes:
50
Introducción a la administración de Oracle
EJERCICIO DEMOSTRATIVO
Creación de Usuarios
Para crear un usuario se debe seleccionar, en primer lugar, la opción correspondiente en la
aplicación, de la siguiente manera:
Haciendo clic con el botón derecho una vez que estamos sobre la opción “Users” del
administrador de seguridad (figura anterior), aparece la interfaz de creación de usuarios,
que tiene las siguientes características y que se rellena con los datos que se muestran:
51
Introducción a la administración de Oracle
Además, como se observa en la figura anterior, existen otras fichas que permiten asociar al
usuario algún rol, privilegios sobre objetos comunes o del sistema y cuotas de espacio,
entre otros.
Otras opciones que es necesario configurar la primera vez se refieren a brindar la capacidad
al usuario de poder conectarse a una base de datos e iniciar una sesión por primera vez,
dándosele también la oportunidad de crear objetos en su espacio o esquema, asignando un
volumen máximo a ese espacio, para cada usuario que se crea.
52
Introducción a la administración de Oracle
El símbolo a la izquierda del rol resource significa que esa es una línea que se está
agregando en la lista. En efecto, sólo se asigna por defecto el rol connect y nosotros
debemos agregar el segundo cada vez para permitir al usuario crear objetos en su esquema.
Enseguida, para definir la cuota de espacio, tenemos que abrir la última pestaña de la
ventana de creación de usuarios y empezar a asignar, tablespace por tablespace, el espacio
definido para este usuario en particular. De esta forma podemos establecer las cuotas de
cada usuario en cada uno de los espacios definidos en el sistema.
53
Introducción a la administración de Oracle
54
Introducción a la administración de Oracle
Creación de Tablespaces
Para efectos prácticos vamos a suponer que los usuarios creados en este ejercicio deben
estar asignados a un espacio de tablas diferente a los ya existentes. Por lo tanto, no nos
sirve que tengan el tablespace users asignado por defecto.
Para crear un nuevo tablespace y asignarlo a los usuarios creados, se debe proceder de la
siguiente manera, si estamos usando DBA Studio:
55
Introducción a la administración de Oracle
Ahora, para asignar el espacio de tablas recién creado a nuestros usuarios, basta con editar
sus características (botón derecho sobre el nombre del usuario) y asignar el nuevo
tablespace a cada uno de ellos.
Posteriormente, con el fin de poder otorgarle al usuario la posibilidad de crear tablas en su
esquema, no debemos olvidarnos de asignar una cuota de espacio a cada usuario dentro del
tablespace.
56
Introducción a la administración de Oracle
57
Introducción a la administración de Oracle
Creación de Tablas
Enseguida, con el fin de conocer en la práctica cómo trabaja Oracle las extensiones de las
tablas y aprender a monitorearlas para evitar que crezcan demasiado y puedan llegar a
causar detenciones de la base de datos.
Un error muy común es que una tabla haya alcanzado el máximo posible de sus extensiones
(valor indicado al crearla) y que por lo tanto no pueda seguir creciendo en tamaño, por lo
que cada vez que se intente insertar datos o actualizarla incrementando su tamaño, aparezca
un error de Oracle que nos lo impida.
Ejemplo:
Al crear una tabla, los parámetros que identifican los tamaños y cantidad de extensiones
posibles para una tabla son los siguientes:
58
Introducción a la administración de Oracle
Las opciones que le permiten a Oracle efectuar el manejo del espacio de almacenamiento se
ingresan (considerando la figura anterior), en la pestaña “Storage”:
59
Introducción a la administración de Oracle
60
Introducción a la administración de Oracle
USER_SEGMENTS:
Campo Significado
SEGMENT_NAME Nombre del segmento de datos. Por ejemplo, una tabla
PARTITION_NAME Nombre de la partición, si se trata de una tabla particionada
SEGMENT_TYPE Tipo del segmento, que puede ser una tabla, secuencia, etc.
TABLESPACE_NAME Nombre del tablespace donde reside el objeto indicado por el
segmento
BYTES Tamaño en bytes del objeto. Divídase por 1.024 para tener el valor
en Kilobytes o por 1.048.576 para expresarlo en Megabytes
BLOCKS Cantidad de bloques de datos utilizados por el objeto
EXTENTS Cantidad de extensiones utilizadas por el objeto. Este número
corresponde con el total de registros que vamos a encontrar para el
mismo objeto en la tabla user_extents
INITIAL_EXTENT Tamaño de la extensión inicial (en bytes)
NEXT_EXTENT Tamaño de las extensiones consecutivas (en bytes)
MIN_EXTENTS Número mínimo de extensiones definidas para el objeto
MAX_EXTENTS Número máximo de extensiones definidas para el objeto
PCT_INCREASE Porcentaje de incremento de los tamaños de las extensiones
siguientes
61
Introducción a la administración de Oracle
USER_EXTENTS:
Campo Significado
SEGMENT_NAME Nombre del segmento de datos al que está asociada la extensión
PARTITION_NAME Nombre de la partición, si se trata de una tabla particionada
SEGMENT_TYPE Tipo del segmento, que puede ser una tabla, secuencia, etc.
TABLESPACE_NAME Nombre del tablespace donde reside el objeto indicado por el
segmento
EXTENT_ID Correlativo de la extensión dentro del segmento al que pertenece
BYTES Tamaño en bytes de la extensión
BLOCKS Cantidad de bloques de datos utilizados por la extensión
62