Operacion y Mantenimiento
Temas abordados
Operacion y Mantenimiento
Temas abordados
Características de la Asignatura
Con la evolución de la tecnología, se han alcanzado cantidades inimaginables para los sistemas de
almacenamiento secundario. Si bien es cierto que la idea original de la administración de bases de datos
se orientó en la construcción de las estructuras ideales y algoritmos eficientes para el almacenamiento y
recuperación de los datos, actualmente esos objetivos se ven rebasados pues es necesario que, lejos de
restringir a los usuarios y aplicaciones en la forma que han de almacenar la información, se pretende
que no haya un patrón o estructura específica para el almacenamiento de la información. La información
debe almacenarse en formatos cada vez más libres y heterogéneos, mientras que la recuperación de la
misma debe seguir siendo igual de eficiente.
Esta asignatura aporta al perfil del Ingeniero en Sistemas Computacionales la capacidad para
administrar sistemas de bases de datos observando las normas internacionales de manejo y seguridad
de la información, utilizando para ello herramientas y metodologías especializadas en el manejo de
grandes volúmenes de información, con el propósito de integrar soluciones computacionales con
diferentes tecnologías, plataformas y dispositivos, basadas en sistemas de bases de datos,
observándose siempre en el desempeño de sus actividades profesionales considerando los aspectos
legales, éticos, sociales y de desarrollo sustentable.
El propósito del presente curso es el de complementar los conocimientos adquiridos en las dos
materias antecesoras (Fundamentos de Base de Datos y Taller de base de datos), con la aplicación de
diferentes aspectos de otras materias, tales como:
Redes de Computadoras
Sistemas Operativos
Intención Didáctica
A fin de obtener los resultados esperados, la materia de “Administración de bases de datos” debe
centrarse en la realización de múltiples prácticas aplicadas al entorno de negocios de la región. Es
i
importante también, orientar al estudiante para lograr la obtención de una certificación como
ADMINISTRADOR DE BASE DE DATOS (Data Base Administrator) y preferentemente, participar en la
implementación de un proyecto conjunto con otra(s) materia(s).
Se organiza el temario, en cinco unidades. Los aspectos a considerar para seleccionar software de
base de datos, funciones del administrador de la base de datos y las nuevas tecnologías y aplicaciones
existentes se cubren en la primera unidad. La segunda unidad se destina a las características y
requerimientos para la instalación de los sistemas manejadores de base de datos. La tercera unidad
tiene que ver con la definición y configuración del espacio de almacenamiento en disco de la base de
datos, archivos de bitácora, definición de múltiples instancias, segmentos y memoria compartida. En la
cuarta unidad se abordan temas de operación y mantenibilidad de los sistemas manejadores de base de
datos. En la quinta unidad se presentan todos los aspectos relacionados con la seguridad de los
manejadores y de los datos de las organizaciones.
El enfoque sugerido para la materia requiere que las actividades prácticas promuevan el desarrollo de
habilidades para la configuración y administración de sistemas de bases de datos empresariales con
ciertos niveles de seguridad en su acceso, mediante la utilización de herramientas comerciales vigentes
en el mercado.
Asimismo, propiciar la implementación de casos de estudio reales que ofrezcan escenarios distintos,
mediante suficientes prácticas que permitan la aplicación de los conceptos y diseños, y el aprendizaje
sea más significativo para el desarrollo de las competencias.
ii
organizaciones.
iii
4.1.2. Recuperación (rollback)
4.1.3. Permanencia (commit)
4.2. Definición de los modos de operación de un DBMS (alta, baja, recovery)
4.3. Comandos de activación de los modos de operación
4.4. Manejo de índices
4.4.1. Tipos de Índices
4.4.2. Reorganización de índices
4.4.3. Reconstrucción de índices
UNIDAD 5.- Seguridad
iv
1.1. Administrador de Base de Datos (DBA)
1.1.1 Funciones de un DBA
Función principal:
recuperación de desastres
v
Una de sus tareas es la de asegurar la integridad del sistema de información de la
compañía. Además, es necesario que posea un buen entendimiento de DBMS para
optimizar las consultas, ajustar la configuración de DBMS o para sincronizar en forma
precisa las herramientas de control del acceso a las bases de datos.
Es posible que el administrador de bases de datos tenga que brindar asistencia técnica
a usuarios de las aplicaciones cliente o equipos de desarrollo para solucionar problemas,
dar consejos o ayudar a resolver consultas complicadas.
vi
base de datos aumente para asegurar un
Confianza de misión crítica con rendimiento óptimo.
mayor tiempo activo, rendimiento ultra
rápido y características mejoradas de Velocidad del procesador:
seguridad para cargas de trabajo de Mínimo: Procesador x86: 1,0
misión crítica. GHz o Procesador x64: 1,4 GHz
Recomendado: 2 GHz o más
Avances innovadores con
exploración de datos de auto-servicio Procesador:
administrado y capacidades Procesador x64: AMD Opteron,
asombrosas e interactivas de AMD Athlon 64, Intel Xeon compatible con
visualización de datos. Intel EM64T Intel Pentium IV compatible con
EM64T
La nube en sus propios términos al Procesador x86: compatible con
habilitar la creación y extensión de Pentium III o superior
soluciones a lo largo de la nube en las
instalaciones y en la nube pública.
Micros Compile bases de datos más Procesador: 500 Megahertz (MHz) o más
oft Access rápida y fácilmente que nunca. veloz.
Cree formularios e informes más Memoria (RAM): 256 Megabytes (MB) de RAM
impactantes. o más.
vii
diferentes plataformas
Proporciona sistemas como 9x, Me, NT, 2000, XP, o Windows Server
de almacenamiento 2003.
transaccionales y no
transaccionales Soporte para protocolo TCP/IP.
Un sistema de
reserva de memoria muy rápido
basado en threads
Un sistema de
privilegios y contraseñas que es
muy flexible y seguro, y que
permite verificación basada en el
host
InterBa InterBase nos garantiza que es un Versiones soportadas de Sistema
se producto fiable y robusto, probado Operativo: Windows 95 / Windows 98 / Windows
exhaustivamente y que ofrece unos NT Workstation 4.x / Windows 2000
buenos niveles de seguridad.
Protocolos soportados: TCP/IP
Código Abierto
Instalación: Un programa de cliente "shim" es
Mantenimiento prácticamente nulo cargado en los clientes. Éste cargará los
programas apropiados del Servidor para
Bajo Coste de Desarrollo completar la instalación.
viii
Espacio en disco recomendado: 1 GB de
espacio libre
DB2 DB2 UDB es un sistema para Sistema operativo: Windows XP
administración de bases de datos Professional, Vista Business, Vista Enterprise,
relacionales (RDBMS) multiplataforma, Vista Ultimate, 7 Professional, 7 Enterprise, 7
especialmente diseñada para Ultimate, 8 Standard, 8 Professional
ambientes distribuídos, permitiendo
que los usuarios locales compartan Hardware: Todos los procesadores Intel y
información con los recursos AMD capaces de ejecutar los sistemas operativos
centrales. Windows.
DBase Convertir sus datos en Información • Windows XP SP2
valiosa. • Intel Pentium 4, 2.40GHz SP2
32bits
Gestiona visualmente los archivos • 512MB de RAM
de aplicaciones. • 25mb En el disco duro
ix
con el sistema de base de datos desde que éste se diseña, elabora, termina y se usa
Los sistemas orientados a los datos se caracterizan porque los datos no son de una
aplicación sino de una Organización entera que los va a utilizar; se integran las
aplicaciones, se diferencian las estructuras lógicas y físicas. El concepto de relación cobra
importancia. Originalmente las aplicaciones cubrían necesidades muy específicas de
procesamiento, se centraban en una tarea específica. Las bases de datos evitan las
inconsistencias que se producían por la utilización de los mismos datos lógicos desde
distintos archivos a través de procesos independientes.
La redundancia de datos debe ser controlada, pero si se admite cierta redundancia
física por motivos de eficiencia.
x
Pretenden servir a toda la organización.
La independencia de los tratamientos sobre los datos y estos mismos, ha tenido una
enorme influencia en la arquitectura de los SGBD.
La definición y descripción del conjunto de datos contenido en la base debe ser única e
integrada con los mismos datos.
Los usuarios cada vez necesitamos más recursos en tecnología, es por eso que surgen
las evoluciones de sistemas, y por ende de las bases de datos, es impresionante ver
como la información se procesa en microsegundos, mientras se realizan transacciones al
mismo tiempo en la misma base de datos en lugares y estados diferentes.
xi
disponibles, al incorporar documentos multimedia.
Compartimiento de Datos
Una de las principales características de las bases de datos, es que los datos pueden
ser compartidos entre muchos usuarios simultáneamente, proveyendo, de esta manera,
máxima eficiencia.
Mantenimiento de la Integridad
Se conoce como transacción toda operación que se haga sobre la base de datos. Las
transacciones deben por lo tanto ser controladas de manera que no alteren la integridad
de la base de datos. La recuperación de fallas tiene que ver con la capacidad de un
sistema DBMS de recuperar la información que se haya perdido durante una falla en el
xii
software o en el hardware.
Seguridad
La disponibilidad de los datos puede ser restringida a ciertos usuarios. Según los
privilegios que posea cada usuario de la base de datos, podrá acceder a mayor
información que otros.
Velocidad
La mayoría de los sistemas DBMS están disponibles para ser instalados en múltiples
plataformas de hardware.
Introducción
Información
necesaria durante la ejecución del programa(por
ejemplo, el estado de las consultas)
La
información que comparten y con la cual se comunican los
procesos Oracle (por ejemplo, la información de bloqueo)
xiii
La Caché de Datos
Área
Global del sistema (SGA), la cual se comparte entre todos los servidores
y los procesos en segundo plano.
Áreas
globales de programas (PGA), que es privada para cada
servidor y proceso en segundo planos; a cada proceso se asigna un PGA.
Memoria Virtual
Figura 1. Estructura de la
memoria en Oracle
xiv
sistema operativo cuando la instancia se cierra. Por tanto, cada instancia posee su
propio SGA.
Una parte del SGA contiene información general acerca del estado de la base de
datos y de la instancia, a la que los procesos en segundo plano necesitan acceder ( SGA
fija), pero no se almacenan los datos de usuario. El SGA también incluye información de
comunicación entre procesos, como la información de bloqueos. Además, si el sistema
usa una arquitectura de servidor compartido, entonces las colas de petición y respuesta
y algunos contenidos del PGA se encuentran en el SGA.
Buffer del Dietario o del Registro del Rehacer (Redo Log Buffer).
Caché de Biblioteca.
Estructuras de Control.
Información diversa
Cada instancia Oracle está asociada a una base de datos. Cuando se inicia una base
de datos en un servidor (independientemente del tipo de ordenador), se le asigna un
área de memoria (SGA) y lanza uno o más procesos. A la combinación del SGA y de los
procesos es lo que se llama instancia. La memoria y los procesos de una instancia
gestionan los datos de la base de datos asociada de forma eficiente y sirven a uno o
varios usuarios.
xv
Figura 2. Estructura de una
instancia de Oracle
Cuando se inicia una instancia Oracle monta la base de datos, es decir, asocia dicha
instancia a su base de datos correspondiente. En un mismo ordenador pueden
ejecutarse varias instancias simultáneamente, accediendo cada una a su propia base de
datos física.
La caché de los buffers de la base de datos es una parte de la SGA que contiene
copias de los bloques de datos de lectura de las páginas. Todos los procesos de los
usuarios conectados concurrentemente a la instancia comparten el acceso a ella. Esta
caché junto con la caché compartida de SQL están lógicamente segmentadas en varios
conjuntos, lo que reduce la contención en sistemas multiprocesador.
Los buffers en la caché están organizados en dos listas: la lista en espera y la lista
xvi
LRU. La lista en espera contiene los buffers en espera (dirty buffers), los cuales
contienen datos que han sido modificados pero que aún no se han escrito en disco. La
lista LRU contiene los buffers libres, buffers que están siendo accedidos actualmente
(pinned buffers) y los buffers en espera, que aún no están almacenados en la lista en
espera. Cuando un proceso Oracle accede a un buffer, este lo sitúa al final de la lista
LRU.
La primera vez que un proceso de usuario necesita un dato concreto, este los busca
en los datos almacenados en la caché de los buffers. Si el proceso encuentra el dato en
uno de estos buffers, se lee directamente de la memoria (cache hit). Si no lo encuentra,
entonces debe copiar la página en disco a un buffer de la caché antes de leerlo (cache
miss). Acceder a los datos a través de un ‘cache hit’ es más rápido que hacerlo
mediante un ‘cache miss’.
Cuando un proceso de usuario realiza una exploración completa de la tabla, lee cada
bloque de la tabla en los buffers y los pone al final de la lista LRU. Se hace así porque
normalmente la exploración completa se necesita brevemente, por lo que los bloques
deben sacarse rápidamente para dejar espacio en la caché a los bloques que se usan
con mayor frecuencia.
Se puede configurar la cache del buffer con “buffer pools” distintos, en los que
cualquiera contiene datos, o están disponibles para nuevos datos tras usar los bloques
xvii
de datos. Objetos particulares del esquema (tablas, clusters, índices y particiones) se
asignan al buffer pool apropiado para controlar la forma en que los bloques de datos
“envejecen” en la cache.
El
buffer pool KEEP conserva los bloques de datos de los objetos del
esquema en memoria.
El
buffer pool RECYCLE elimina bloques de datos de la memoria tan
pronto como dejan de ser necesitados.
El
buffer pool DEFAULT contiene bloques de datos de los objetos del
esquema que no son asignados a ningún buffer pool, así como los objetos del esquema
que son explícitamente asignados al pool DEFAULT.
Los parámetros que configuran los buffer pools KEEP y RECYCLE son
DB_KEEP_CACHE_SIZE y DB_RECYCLE_CACHE_SIZE.
El redo log buffer es un buffer circular en el SGA que contiene información sobre
cambios hechos a la base de datos, la cual se almacena en las ‘entradas redo’. Estas
entradas contienen la información necesaria para reconstruir, o rehacer cambios hechos
en la base de datos mediante las operaciones INSERT, UPDATE, DELETE, CREATE,
ALTER o DROP y se usan para la recuperación de la base de datos, si fuera necesario.
Las entradas se copian por los procesos desde el espacio de memoria del usuario al
redo log buffer en el SGA, ocupando continuamente espacio secuencial. El proceso en
segundo plano LGWR escribe el redo log buffer en el fichero redo log activo (o grupo de
ficheros) en disco.
El parámetro LOG_BUFFER determina el tamaño (en bytes) del redo log buffer.
El Pool Compartido
Es la parte del SGA que contiene la cache de biblioteca, la cache de diccionario, los
buffers para los mensajes de ejecución paralela y las estructuras de control.
xviii
Caché de Biblioteca (Library Cache)
La cache de biblioteca incluye áreas de SQL compartidas, áreas SQL privadas (en
caso de una configuración de servidor compartido), procedimientos y paquetes PL/SQL,
y estructuras de control tales como bloqueos y el manejo de la cache de biblioteca.
Ya que las áreas de SQL compartidas son accesibles para todos los usuarios, la
caché de biblioteca está contenida en el Pool compartido dentro del SGA.
Oracle representa cada declaración de SQL con un área SQL compartida y un área
SQL privada. Oracle reconoce cuando dos usuarios están ejecutando la misma
instrucción SQL y reutiliza el área SQL compartida para esos usuarios. Sin embargo,
cada usuario debe tener una copia separada de la declaración del área SQL privada.
Un área SQL Compartida contiene el árbol de análisis y el plan de ejecución para una
instrucción SQL dada. Se ahorra memoria usando un solo área SQL compartida para
instrucciones SQL ejecutándose varias veces, lo cual ocurre con frecuencia cuando
varios usuarios ejecutan la misma aplicación.
Large Pool
xix
(usado donde las transacciones interactúan con más de una base de datos)
Procesamiento de E/S
El large pool satisface mejor las peticiones de gran cantidad de memoria que el pool
compartido. Sin embargo, no posee una lista LRU.
Java Pool
La memoria java pool se usa en la memoria del servidor para almacenar todo el
código y datos del JVM en las sesiones. Se usa de diferentes formas, dependiendo del
modo en que se ejecute el servidor Oracle.
Streams Pool
En una única base de datos, se puede especificar que los flujos de memoria se
asignen desde un pool en el SGA llamado Streams pool. Para configurarlo se especifica
el tamaño del pool en bytes usando el parámetro STREAMS_POOL_SIZE. Si un
streams pool no está definido, entonces se crea automáticamente cuando los flujos se
usan por primera vez.
Si SGA_TARGET está activo, entonces la memoria del SGA para los Streams pool
viene del pool global del SGA. Si no está activo, entonces se transfiere desde la cache
del buffer, aunque solo tiene lugar después del primer uso de los flujos. La cantidad
transferida es del 10% del tamaño del pool compartido.
Oracle accede con frecuencia al diccionario de datos, por lo que tiene dos
localizaciones especiales en memoria designadas a mantenerlo. Una de ellas es la
caché del diccionario de datos, también conocida como la cache de fila porque contiene
xx
datos sobre las filas en vez de los buffers (los cuales contienen bloques de datos), y la
otra es el cache de biblioteca.
El Parámetro SGA_MAX_SIZE
La base de datos puede configurar límites sobre cuanta memoria virtual se usa para
el SGA. Puede crear instancias con un mínimo de memoria y permitir que la instancia
use más, expandiendo la memoria asignada a los componentes del SGA, hasta un
máximo determinado por el SGA_MAX_SIZE. Si el valor es menor que la suma de
memoria asignada para todos los componentes, la base de datos ignora la configuración
de SGA_MAX_SIZE.
El tamaño del SGA queda determinado por muchos parámetros, aunque son los
siguientes los que tienen un gran efecto sobre el tamaño del SGA:
Descripción
Parámetro
xxi
Descripción
Parámetro
Cuando la gestión automática de memoria del SGA esta activada, el tamaño de los
diferentes componentes del SGA es flexible y pueden adaptarse a las necesidades del
trabajo sin requerir ninguna configuración adicional. La base de datos automáticamente
distribuye la memoria disponible entre varios componentes como se requiera,
permitiendo al sistema maximizar el uso de toda la memoria del SGA disponible.
El Parámetro SGA_TARGET
El parámetro SGA_TARGET refleja el tamaño total del SGA e incluye la memoria para
los siguientes componentes:
xxii
SGA Fija y otras asignaciones internas necesarias para la instancia.
El tamaño de los bloques no estándar de las cachés de los buffer (si
son especificados)
Este incluye toda la memoria del SGA, en diferencia con las versiones anteriores en
las que la memoria para la SGA interna y fija se configuraba a través de otros
parámetros. En consecuencia, el SGA_TARGET da un control preciso sobre el tamaño
de la región de memoria compartida asignada por la base de datos. Si está configurado
con un valor mayor que SGA_MAX_SIZE al inicio, entonces este último se usa como
respaldo para el SGA_TARGET.
Un área global de programa (PGA) es una región de memoria que contiene datos e
información de control para los procesos de servidores. Es una memoria no compartida
creada por Oracle cuando un proceso de un servidor es iniciado. Solo el servidor del
xxiii
proceso puede acceder a él y se lee y escribe solamente por un código de Oracle que
actúa en nombre del proceso.
Contenido de un PGA
Área SQL Privada: Un área SQL privada contiene datos como por ejemplo consultas
de información de ejecuciones y consultas de ejecuciones en áreas de trabajo. Cada
sesión que establece una sentencia tiene un área privada de SQL. Cada usuario que
emite la misma sentencia tiene su propia área SQL privada que usa un área SQL
compartida. Aunque, muchas áreas SQL privadas pueden ser asociadas con la misma
área SQL compartida.
La ubicación de un área privada SQL depende del tipo de conexión establecida para
una sesión. Si una sesión se conecta a través de un servidor dedicado, las áreas
privadas SQL esta localizadas en el servidor del proceso del PGA. De cualquier forma, si
una sesión se conecta a través de un servidor compartido, parte del área privada SQL se
mantiene en el SGA.
La administración de las áreas SQL privadas son responsabilidad de los procesos del
usuario. La asignación y liberación de las áreas SQL privadas dependen de en qué
herramienta de la aplicación se usan, aunque el número de áreas SQL privadas que un
proceso de usuario puede asignar está siempre limitado el parámetro
OPEN_CURSORS. El valor por defecto de este parámetro es 50.
xxiv
cerrado o la sentencia es liberada. Aunque Oracle libera el área de ejecución después
de que la sentencia se complete, el área persistente se mantiene en espera. Las
aplicaciones de desarrollo cierran todos los cursores abiertos que no van a ser usados
otra vez para liberar el área persistente y minimizar la cantidad de memoria requerida
por el usuario de la aplicación.
El área SQL privada de un cursor se divide en 2 áreas cuya duración son diferentes:
El
área persistente (Persistent Area), que contiene, por ejemplo, información
envuelta. Es liberada solamente cuando el cursor es cerrado.
El
área de ejecución (Run-time Area), que es liberada cuando la
ejecución, valga la redundancia, es terminada.
Oracle crea el área de ejecución en el primer paso que una ejecución es pedida. Para
una sentencia INSERT, UPDATE y DELETE Oracle libera el área de ejecución después
de que la sentencia ha sido ejecutada. Para las consultas, Oracle libera el área de
ejecución solamente cuando todas las filas han sido recorridas, o la consulta ha sido
cancelada.
Para las consultas complejas, una gran porción del área de ejecución es dedicada a
áreas de trabajo asignadas por operadores de memoria-intensiva como los siguientes:
Hash-join
Bitmap merge
Bitmap create
xxv
en la memoria mientras el resto son distribuidos en un disco temporal para ser
procesado luego. Aunque los operadores de bitmap no se distribuyen por el disco
cuando su área de trabajo es muy pequeña, su complejidad es inversamente
proporcional al tamaño de su área de trabajo. Estos operadores se ejecutan más rápido
en áreas de trabajo más grandes.
Las áreas de ordenaciones (Sort Areas) de Oracle son las zonas de memoria en las
que se ordenan los datos, es decir el espacio en memoria que necesita la organización y
ordenación de las filas.
El tamaño por defecto, expresado en bytes, es específico de cada SO. Sin embargo,
hay muchas razones importantes por las que este tamaño influye en el rendimiento. En
el manual de Oracle 10i encontramos cuatro de ellas:
xxvi
Aumentar el SORT_AREA_SIZE mejora la eficiencia de
ordenaciones grandes.
El
SORT_AREA_SIZE también se utiliza para selecciones y
actualizaciones en los índices de las tablas. Seleccionar un valor apropiado aquí, puede
dar como resultado que la tabla se actualice una única vez en cada operación DML,
pudiendo incluso haber cambiado varias filas a la vez.
Grandes
valores en este campo nos permitirán realizar mayores
búsquedas en memoria. Si se necesitase más espacio para la ordenación del que
tenemos, los datos se dividirán en trozos y se utilizarán segmentos de disco temporales
como apoyo en la ordenación.
Para
un mejor rendimiento del SGBD, la mayoría de las ordenaciones
deberían tener lugar únicamente en memoria ya que en caso de tener que escribir a
disco, obtendremos un claro efecto adverso sobre éste. Si las aplicaciones que acceden
a la base de datos suelen realizar búsquedas que no caben en el área de ordenaciones,
o incluso si las aplicaciones realizan demasiadas búsquedas innecesarias, entonces
sería conveniente modificar el parámetro de SORT_AREA SIZE.
Por lo tanto, como conclusión, alterar este parámetro, se puede considerar como un
paso importante para asegurarnos el rendimiento en ciertas circunstancias y situaciones.
xxvii
Sin embargo, determinar qué valor es el más apropiado, es por supuesto, la parte más
complicada.
La memoria virtual está mapeada en la RAM. Cuando no hay suficiente memoria con
ésta para ejecutar los programas (en caso de Oracle las sentencias, búsquedas, etc) se
necesita un espacio auxiliar que normalmente suele ser el disco duro. Para el traspaso
de información se utilizan dos técnicas principales: el Paging o paginación y el
Swapping.
Paginación
xxviii
Swapping
El espacio Swap o espacio de intercambio es una zona de disco (un fichero o una
partición) que se usa para guardar las imágenes de los procesos que no han de
mantenerse en memoria física.
Con respecto al tamaño que debe tener el directorio Swap, hay muchas discusiones
sobre ello como por ejemplo la antigua creencia de “El Swap debe tener el doble de
tamaño que la RAM.” cosa que no es válida hoy día debido a la gran capacidad de la
memoria RAM de la mayoría de ordenadores.
Como conclusión, hay que destacar que el uso de la memoria virtual por parte de
Oracle, va a influir bastante en el rendimiento, disminuyéndolo drásticamente en
comparación con el uso únicamente de la memoria RAM.
xxix
Por otra parte, los programas de usuario también pueden ser compartidos o no.
Algunas utilidades y herramientas de Oracle (como ocurre con Oracle Forms y
SQL*Plus) pueden ser instalados de forma compartida, pero otras no. Múltiples
instancias de Oracle pueden usar la misma SCA con diferentes bases de datos si están
corriendo en la misma máquina.
Hay que tener en cuenta que la opción de instalar software compartido puede no estar
disponible en función del sistema operativo, como ocurre por ejemplo en máquinas con
Windows.
Cuando un usuario se conecta a una base de datos de Oracle ejecuta dos módulos
de código diferentes, que además el encargado de gestionar estos procesos es el
sistema operativo, estos dos módulos diferentes son:
Código del Servidor de Oracle: son los diferentes procesos que se han
de ejecutar en el servidor para atender las peticiones del usuario.
De los procesos que se ejecutan en el servidor podemos hacer dos grandes grupos:
Procesos de Usuarios: Cada vez que un usuario ejecuta una aplicación, ya sea
propia o de Oracle se crea un proceso, que puede ser de dos tipos.
xxx
Esto permite que desde un mismo equipo se puedan conectar varios usuarios
simultáneamente, y que un usuario se pueda conectar desde diferentes equipos
simultáneamente.
El proceso LGWR es responsable del manejo del redo log buffer, las escrituras del
redo log buffer al archivo de redo log en el disco. El LGWR escribe todos los registros de
redo que han sido copiados en el buffer desde la última vez que éste se escribió. El redo
log buffer es un buffer circular. Cuando LGWR escribe los registros del redo log buffer al
redo log file, el proceso servidor puede copiar nuevos registros sobre aquellos que se
pasaron a disco. LGWR normalmente escribe lo suficientemente rápido para asegurar
xxxi
que el espacio esté siempre disponible en el buffer para nuevos registros, aun cuando la
escritura al redo log file sea lenta.
Existe un mito con respecto a la escritura en el redo log buffer, se dice que en el redo
log buffer o redo log file aparecerán sólo las transacciones comprometidas. En el redo
log file se escriben todas las transacciones, no sólo las comprometidas, es por ello que
el redo log permite rehacer los segmentos de undo del cualquier punto en el tiempo
cuando se hace recuperación incompleta (point in time recovery).
Los Redo Log Files se agrupan en grupos de Redo Log. Todos los miembros de un
Redo Log Group son idénticos, es decir contendrán la misma información. Dentro de un
grupo de Redo Log se "multiplexan" los archivos para evitar los puntos de fallas, es decir
si se perdiera un archivo de Redo Log habría otro que contendría la información y que
permitiera la recuperación de la base de datos.
Los redo log se utilizan de forma circular, mediante grupos de archivos. Por defecto la
base de datos Oracle genera 3 grupos de archivos. Se considerará el grupo current
(actual) aquel donde se esté utilizando para escribir las transacciones actuales de la
base de datos. Se considera un grupo active (activo), aquel que no es el actual y que
posea transacciones cuyos cambios no se han hecho permanentes en los archivos de
xxxii
datos e inactivo aquel que contenga transacciones que han sido completamente escritas
a disco, finalmente también se puede tener que un grupo de redo log esté limpio porque
nunca haya sido escrito.
Cuando un checkpoint ocurre, Oracle debe actualizar todas las cabeceras de los
archivos de datos con los detalles del checkpoint, ésta es una tarea del CKPT.
xxxiii
oportuno alguna zona de los discos.
Recoverer (RECO)
Este proceso solo se observa cuando la base de datos ejecuta la opción distribuida de
Oracle. La transacción distribuida es una en la que dos o más emplazamientos de datos
deben mantenerse sincronizados, Por ejemplo cuando se tiene una copia de los datos
en diferentes ciudades y por fallas en una línea telefónica se pierde una transacción en
la mitad de su actualización. El proceso recuperador entonces resuelve las
transacciones que hayan quedado inconsistentes en las dos ciudades.
Lock (LCKn)
Es un proceso opcional, configurado para manejar los bloqueos entre bases de datos
Oracle cuando estas se encuentran en distintos computadores y compartiendo el mismo
conjunto de discos (es decir en modo servidor en paralelo).
xxxiv
ejecutar y asegurar que todos deben de terminar en algún momento.
Dispatcher (Dnnn)
Este tipo de proceso se encarga de atender a cada uno de los clientes conectados a
la base de datos compartiendo los procesos del servidor.
Oracle MySQL
Requerimiento
RAM 512 512
MB MB
xxxv
Oracle MySQL
Requerimiento
Tamaño máximo de la base de datos 4 GB Sin
limite
La regla general para determinar el tamaño de la memoria virtual depende del tamaño
de memoria RAM instalada. Si su sistema tiene menos de 4 GB de RAM por lo general
el espacio de intercambio debe ser de al menos dos veces este tamaño. Si usted tiene
más de 8 GB de memoria RAM instalada puede considerar usar el mismo tamaño como
espacio de intercambio. Cuanta más memoria RAM tenga instalada, es menos probable
usar el espacio de intercambio, a menos que tenga un proceso inadecuado.
Debido al constante crecimiento de datos que generan las empresas hoy en día, se
ha vuelto muy necesaria la búsqueda de nuevas plataformas para almacenar y analizar
la información, ambientes que consuman menos recursos, que sean más escalables y
que provean una alta disponibilidad. La solución consiste en el procesamiento paralelo
de los datos de una base de datos.
Una base de datos en modo transaccional significa que la BD será capaz de que las
operaciones de inserción y actualización se hagan dentro de una transacción, es un
componente que procesa información descomponiéndola de forma unitaria en
operaciones indivisibles, llamadas transacciones, esto quiere decir que todas las
operaciones se realizan o no, si sucede algún error en la operación se omite todo el
proceso de modificación de la base de datos, si no sucede ningún error se hacen toda la
operación con éxito.
xxxvi
datos es transaccional; si el software de la BD no es "transaccional", en realidad NO es
un "software" de BD; en todo caso, es un software que emula el funcionamiento de un
verdadero software de BD. Cada transacción debe finalizar de forma correcta o
incorrecta como una unidad completa. No puede acabar en un estado intermedio.
Y depende que base de datos uses para efectuar las operaciones pero, es la misma
teoría para cualquier BD.
3. Ejecute el archivo:
xxxvii
4. Procesa a instalar en el modo por defecto. Es necesario tener conexión a
Internet
xxxviii
6. Es este punto se configura como se comportará nuestro servidor y el servicio.
Además se descargan e instalan los paquetes necesarios.
xxxix
7. Ahora proceda a configurar MySQL Workbench; es una herramienta visual de
diseño de bases de datos que integra desarrollo de software, administración de
bases de datos, diseño de bases de datos, creación y mantenimiento para el
sistema de base de datos MySQL. Es el sucesor de DBDesigner 4 de
fabFORCE.net, y reemplaza el anterior conjunto de software, MySQL GUI Tools
Bundle.
xl
específicas que se crean al momento de entrar al sistema, pero también hay variables
que pueden ser definidas por el usuario. Las variables son una forma de pasar
información a los programas al momento de ejecutarlos.
Toman su valor inicial generalmente de un archivo .profile, pero hay veces en que el
usuario tiene que modificar los valores de alguna variable de ambiente cuando está
tratando de instalar o ejecutar un nuevo programa
flush: Graba en disco todos los comandos SQL que se ejecuten (modo de trabajo, sin
transacción).
general-log = valor: Con valor uno, permite que funcione el archivo LOG para
almacenar las consultas realizadas.
long-query-time = n: Segundos a partir de los cuales una consulta que tardes más,
se considerará una consulta lenta.
xli
og-bin = ruta: Permite indicar la ruta al registro binario.
Registro de Consultas Lentas (Slow Query Log File): Registra las consultas que
xlii
tardaron más del tiempo mínimo establecido. El archivo está (salvo quese especifique
slow-log-file como parámetro) en la carpeta de datos de MySQL con el nombre
host_name-slow.log
xliii
El proceso de instalación es muy simple y prácticamente no requiere intervención por
parte del usuario.
Cada vez que veo la pantalla de la GNU GPL me lleno de felicidad. No sólo por las
condiciones y el precio: es además, para mí, una garantía de profesionalidad.
xliv
Estadísticamente, la instalación típica será la que mejor se adapte a tus necesidades.
xlv
Todo listo; presiona Install cuando quieras.
xlvi
Una vez instalado MySQL, la siguiente fase es la configuración del servidor en sí
mismo. Asegúrate de que la marca Launch the MySQL Instance Configuration
Wizard esté activa.
xlvii
2.1.7 Procedimiento para Configuración de un DBMS
Para configurar nuestro DBMS podemos acceder a las siguientes pantallas, para
Oracle o MySQL.
Por otro lado MySQL presenta dos esquemas information_schema y MySQL ambos
xlviii
guardan información sobre privilegios y procedimientos del gestor y no deben ser
eliminados.
xlix
Ha llegado un momento crucial. Dependiendo del uso que vayamos a darle a nuestro
servidor deberemos elegir una opción u otra, cada una con sus propios requerimientos
de memoria. Puede que te guste la opción Developer Machine, para desarrolladores, la
más apta para un uso de propósito general y la que menos recursos consume. Si vas a
compartir servicios en esta máquina, probablemente Server Machine sea tu elección o,
si vas a dedicarla exclusivamente como servidor SQL, puedes optar por Dedicated
MySQL Server Machine, pues no te importará asignar la totalidad de los recursos a esta
función.
l
De nuevo, para un uso de propósito general, te recomiendo la opción por defecto,
Multifunctional Database.
li
InnoDB es el motor subyacente que dota de toda la potencia y seguridad a MySQL.
Su funcionamiento requiere de unas tablas e índices cuya ubicación puedes configurar.
Sin causas de fuerza mayor, acepta la opción por defecto.
lii
Esta pantalla nos permite optimizar el funcionamiento del servidor en previsión del
número de usos concurrentes. La opción por defecto, Decision Support (DSS) /
OLAP será probablemente la que más te convenga.
liii
Deja ambas opciones marcadas, tal como vienen por defecto. Es la más adecuada
para un uso de propósito general o de aprendizaje, tanto si eres desarrollador como no.
Aceptar conexiones TCP te permitirá conectarte al servidor desde otras máquinas (o
desde la misma simulando un acceso web típico).
liv
Hora de decidir qué codificación de caracteres emplearás, salvo que quieras empezar
a trabajar con Unicode porque necesites soporte multilenguaje, probablemente Latin1 te
sirva (opción por defecto).
lv
Instalamos MySQL como un servicio de Windows (la opción más limpia) y lo
marcamos para que el motor de la base de datos arranque por defecto y esté siempre a
nuestra disposición. La alternativa es hacer esto manualmente.
lvi
Pon una contraseña al usuario root. Esto siempre es lo más seguro.
lvii
Última etapa, listos para generar el fichero de configuración y arrancar el servicio.
lviii
Sólo damos al botón de Finalizar y terminamos con la configuración del DBMS.
lix
2.1.8 Comandos Generales de Alta y Baja del DBMS
Una tabla de una base de datos es similar en apariencia a una hoja de cálculo, en
cuanto a que los datos se almacenan en filas y columnas. Como consecuencia,
normalmente es bastante fácil importar una hoja de cálculo en una tabla de una base de
datos. La principal diferencia entre almacenar los datos en una hoja de cálculo y hacerlo
en una base de datos es la forma de organizarse los datos.
lx
MySQL
MySQL soporta varios motores de almacenamiento que tratan con distintos tipos de
tabla. Los motores de almacenamiento de MySQL incluyen algunos que tratan con
tablas transaccionales y otros que no lo hacen:
lxi
El motor de almacenamiento CSV guarda datos en archivos de texto usando formato
de valores separados por comas.
Comando Describe
MySQL proporciona este comando que resulta útil para conocer la estructura de una
tabla, las columnas que la forman y su tipo y restricciones. La sintáxis es la siguiente:
DESCRIBE f1;
El comando SHOW TABLES muestra las tablas dentro de una base de datos y SHOW
CREATE TABLES muestra la estructura de creación de la tabla.
Tablas Temporales
Las tablas temporales solo existen mientras la sesión está viva. Si se corre este
código en un script de PHP (Cualquier otro lenguaje), la tabla temporal se destruirá
automáticamente al término de la ejecución de la página. Si no específica MEMORY, la
tabla se guardará por defecto en el disco.
lxii
);
Este tipo de tabla solo puede ser usada por el usuario que la crea.
Si creamos una tabla que tiene el mismo nombre que una existente en la base de
datos, la que existe quedará oculta y trabajaremos sobre la temporal.
Se almacenan en memoria
Las tablas MEMORY se comparten entre todos los clientes (como cualquier otra tabla
no-TEMPORARY).
) ENGINE = MEMORY;
Modificación
Esta operación se puede realizar con el comando ALTER TABLE. Para usar ALTER
TABLE, necesita permisos ALTER, INSERT y CREATE para la tabla. La sintaxis para
MySQL es
lxiii
alter_specification:
[reference_definition]
[FIRST|AFTER col_name]
| DISABLE KEYS
lxiv
| ENABLE KEYS
| ORDER BY col_name
| DISCARD TABLESPACE
| IMPORT TABLESPACE
| table_options
Para la gestión del almacenamiento de una base de datos existen 4 conceptos bien
definidos que deben ser conocidos para poder comprender la forma en la que se
almacenan los datos. Vamos a ver la diferencia entre bloque, extensión, segmento y
espacio de tablas.
Espacio de Tablas: Formado por uno o más datafiles, cada datafile solo puede
pertenecer a un determinado tablespace.
lxv
fundamentalmente) no se realiza sobre el archivo o archivos físicos de la base de
datos, sino que se hace a través de estructuras lógicas de almacenamiento que tienen
por debajo a esos archivos físicos, y que independizan por tanto las sentencias de
creación de objetos de las estructuras físicas de almacenamiento. Esto es útil porque
permite que a esos "espacios de objetos " les sean asociados nuevos dispositivos
físicos (es decir, más espacio en disco) de forma dinámica cuando la base de datos
crece de tamaño más de lo previsto. Posibilita además otra serie de operaciones como
las siguientes:
Para hacer más grande una base de datos, las opciones disponibles son tres:
lxvi
Cada base de datos contiene un tablespace llamado SYSTEM que es creado
automáticamente al crear la base de datos. Contiene las tablas del diccionario de datos
para la base de datos en cuestión. Es recomendable no cargar datos de usuario en
SYSTEM, para dejarlos como espacio de objetos del sistema.
Las bases de datos suelen ser creadas para almacenar grandes cantidades de datos
de forma permanente. Por lo general, los datos almacenados en éstas suelen ser
consultados y actualizados constantemente.
Las razones por las cuales las bases de datos se almacenan en memorias
secundarias son:
lxvii
En general, las bases de datos son demasiado grandes para entrar en la
memoria primaria.
La memoria secundaria suele ser más barata que la memoria primaria
(aunque esta última tiene mayor velocidad).
3.1.2.- Definición y Creación del Espacio Asignado para cada Base de Datos
lxviii
Si se utiliza la palabra clave default o se omite completamente la cláusula on, el
DBMS pone la base de datos en uno o más de los dispositivos predeterminados de
base de datos especificados en master.sysdevices.
Para especificar un tamaño (por ejemplo, 4MB) para una base de datos que se va a
almacenar en una ubicación predeterminada, se utiliza: on default = size de esta forma:
3.1.3.- Bitácoras
Cada registro de la bitácora escribe una única escritura de base de datos y tiene lo
siguiente:
La instrucción en MySQL para crear una bitácora en .txt se crea antes de acceder a
la base de datos con la instrucción:
La bitácora debe registrar todos los movimientos (insertar, eliminar y modificar) que
lxix
se realicen en las tablas de la base de datos. Para lograr lo anterior es necesario crear
un trigger para que se ejecute después de la operación de insertar, otro para después
de eliminar y el último para después de modificar para cada una de las 3 tablas de la
base de datos.
3.1.4.- Particiones
Cuando alguna de las tablas de una base de datos llega a crecer tanto que el
rendimiento empieza a ser un problema, es hora de empezar a conocer algo sobre
optimización. Una característica de MySQL son las particiones.
);
La última partición (partDefault) tendrá todos los registros que no entren en las
particiones anteriores. De esta manera nos aseguramos que la información nunca
lxx
dejará de insertarse en la tabla.
PARTITION partDecada90 VALUES IN (1990, 1991, 1992, 1993, 1994, 1995,
1996, 1997, 1998, 1999),
PARTITION partDecada00 VALUES IN (2000, 2001, 2002, 2003, 2004, 2005,
2006,
PARTITION partDecada10 VALUES IN (2010, 2011, 2012, 2013, 2014, 2015,
2016,
);
PARTITIONS 7;
lxxi
ALTER TABLE contratos
PARTITIONS 7;
Borrar Particiones
Añadir particiones
El problema es que todos los INSERT que se hagan después de mayo de 2012 se
insertarán en pDefault. La solución sería añadir particiones nuevas para cubrir los
próximos meses:
lxxii
THAN (TO_DAYS ("2012-07-01")));
Consultar Particiones
Para consultar información de particiones creadas en una tabla así como también los
registros que contiene cada una ejecutamos:
Cuando se recibe una base de datos, se averiguar cómo están estructurados los
datos, revisar de manera general el panel de control. Puede ofrecer algún indicio sobre
las tareas que el diseñador de la base de datos consideró que realizarían los usuarios
habitualmente con los datos.
lxxiii
Hay muchos problemas de almacenamiento que deben ser resueltos antes de que
un DBA pueda crear una base de datos. Uno de los temas más importantes es la
cantidad de espacio para permitir la base de datos.
El cálculo espacial debe tener en cuenta no sólo tablas, índices, sino también, y
dependiendo del DBMS, el registro de transacciones. Cada una de estas entidades
probablemente requerirá un archivo separado o conjunto de datos, para el
almacenamiento persistente.
Mejorar el rendimiento
3.2 Segmentos
Una serie de bloques contiguos es una extensión, que es una unidad lógica de
almacenamiento. Una serie de extensiones es un segmento. Cuando un objeto es
creado, se reserva una extensión en su segmento. Cuando el objeto crezca, necesitará
más espacio y se reservarán más extensiones.
lxxiv
maxextents: número máximo de extensiones (99).
pctused: porcentaje de utilización del bloque por debajo del cual Oracle considera
que un bloque puede ser utilizado para insertar filas nuevas en él.
Segmentos de Datos
Segmentos de Índice
Los índices crecen en tamaño en mayor proporción que las tablas asociadas si los
datos en la tabla son modificados frecuentemente. La gestión del espacio es mejor si
se mantienen los índices de tablas grandes en espacios de tablas separados.
Segmentos de Rollback
lxxv
bloque de datos) y la recuperación.
Segmentos Temporales
Create Index
uniones no indexadas.
lxxvi
Instancia de Oracle
Una instancia de Oracle permite acceder a la base de datos Oracle y permite abrir
únicamente una sola base de datos.
Procesos en segundo plano que administran y aplican las relaciones entre las
estructuras físicas y las estructuras de memoria. Existen dos categorías:
Log buffer
Así como otras estructuras para la gestión de bloqueos externos (lock), internos
(match), datos estadísticos, etc.
lxxvii
datos iniciando una conexión. Se comunica únicamente con el proceso de servidor
correspondiente.
El Proceso de Servidor
Cuando comenzamos a trabajar con Oracle una de las primeras cosas que
aprendemos es a diferenciar entre estos conceptos: base de datos, instancia e
instancia de base de datos.
Cuando se habla de base de datos, nos referimos a los archivos físicos que
componen nuestra base de datos.
lxxviii
Una instancia de Oracle es un conjunto de estructuras de memoria que están
asociadas con los archivos de datos (datafiles) en una máquina. Una base de datos es
una colección de archivos físicos.
Instancia de Oracle
La integran los procesos 'background' y la SGA. Abre una y sólo una BDO, y permite
acceder a ella.
Nota: con Oracle Real Application Cluster (RAC), más de una instancia usarán la
misma BD.
lxxix
la instancia con la que estamos trabajando.
Vistas
V$INSTANCE (Instancia).
V$SGA (SGA).
V$PROCESS (Procesos).
lxxx
En contraste, en un ambiente de una única instancia, una base de datos Oracle es
usada por sólo UNA Instancia corriendo en el servidor. Por lo Tanto, los usuarios
accediendo a la base de datos pueden conectarse a ésta, sólo a través de ese 'Único'
servidor.
En un Oracle RAC, una base de datos puede ser montada por más de una instancia,
y en cualquier punto, una instancia será parte de sólo una Base de datos. El almacén
no volátil para archivos de datos que comprende la Base de datos es igualmente
disponible a todos los nodos, para el acceso de lectura y escritura. De lo anterior se
desprende que un RAC de Oracle necesita coordinar y regular el acceso “simultaneo” a
los datos desde múltiples servidores (nodos), por ende, debe existir una red privada
que sea eficiente, confiable y de alta rapidez, entre los nodos del clúster para enviar y
recibir datos
Tener dos instancias o más tiene entre otras las siguientes justificaciones. Una se
dedicará a desarrollo, para hacer las modificaciones y pruebas necesarias y otra al de
producción.
Proceso
Copiar la carpeta data que se encuentra en nuestro caso en c:\MySQL, como data2
lxxxi
Copiar y pegar la configuración de MySQL. Es decir, del archivo my.ini (en linux
my.cnf) generamos una copia que podría llamarse my2.ini.
lxxxii
Ahora con cuidado editamos my2.ini, procure no tocar my,ini a menos que este
seguro de lo que hace.
Desde la consola de ms-dos en modo administrador. [Tecla Win] + [X] y damos clic
en Símbolo de Sistema (Administrador). Ahora introduzca desde la línea de comandos:
lxxxiii
cd /MySQL/MySQL Server 5.6/bin
lxxxiv
Unidad 4: Operación y Mantenibilidad
4.1 Bitácoras de Trabajo del DBMS
La estructura más ampliamente usada para grabar las acciones que se llevan en la base
de datos.
lxxxv
Pueden obtenerse datos específicos de la transacción como:
2. Usuario de BD
3. Fecha
4. Máquina
5. Programa
6. Tipo de conexión
7. Estado
Se puede implementar en los sistemas de información que utilicen las principales bases
de datos: Oracle, SQL Server, Informix, Sybase.
Nombre de la Transacción
Valor antiguo
Valor Nuevo
lxxxvi
Es fundamental que siempre se cree un registro en la bitácora cuando se realice una
escritura antes de que se modifique la base de datos.
Los registros de la bitácora deben residir en memoria estable como resultado el volumen
de datos en la bitácora puede ser exageradamente grande.
En SQL, ROLLBACK es un comando que causa que todos los cambios de datos desde
la última sentencia BEGIN WORK, o START TRANSACTION sean descartados por el
sistema de gestión de base de datos relacional (RDBMS), para que el estado de los datos
sea "rolled back"(devuelto) a la forma en que estaba antes de que aquellos cambios
tuvieran lugar.
lxxxvii
estar en uso.
Una sentencia COMMIT en SQL finaliza una transacción de base de datos dentro de un
sistema gestor de base de datos relacional (RDBMS) y pone visibles todos los cambios a
otros usuarios. El formato general es emitir una sentencia BEGIN WORK, una o más
sentencias SQL, y entonces la sentencia COMMIT. Alternativamente, una sentencia
ROLLBACK se puede emitir, la cual deshace todo el trabajo realizado desde que se emitió
BEGIN WORK. Una sentencia COMMIT publicará cualquiera de los savepoints (puntos de
recuperación) existentes que puedan estar en uso.
La vida de todo archivo comienza cuando se crea y acaba cuando se borra. Durante su
existencia es objeto de constante procesamiento, que con mucha frecuencia incluye
acciones de consulta o búsqueda y de actualización. En el caso de la estructura archivos,
entenderemos como actualización, además de las operaciones, vistas para vectores y
listas enlazadas, de introducir nuevos datos (altas) o de eliminar alguno existente (bajas), la
modificación de datos ya existentes, (operación muy común con datos almacenados). En
esencia, es la puesta al día de los datos del archivo.
lxxxviii
almacenar el registro correspondiente: al principio, en el interior o al final de un archivo.
Altas
El algoritmo para dar de alta un registro al final del fichero es como sigue:
algoritmo altas
leer registro de alta
inicio
abrir archivo para añadir
mientras haya más registros hacer {algunos lenguajes ahorran este bucle}
leer datos del registro
fin_mientras
escribir (grabar) registro de alta en el archivo
cerrar archivo
fin
Bajas
Existen dos métodos para dar de baja a un registro en un archivo secuencial, donde no
es fácil eliminar un registro situado en el interior de una secuencia: Para ello podemos
seguir dos métodos:
1) Utilizar y por tanto crear un segundo archivo auxiliar transitorio, también secuencial,
copia del que se trata de actualizar. Se lee el archivo completo registro a registro y en
función de su lectura se decide si el registro se debe dar de baja o no. En caso afirmativo,
se omite la escritura en el archivo auxiliar. Si el registro no se va a dar de baja, este registro
lxxxix
se reescribe en el archivo auxiliar
Tras terminar la lectura del archivo original, se tendrán dos archivos: original (o maestro)
y auxiliar. El proceso de bajas del archivo concluye borrando el archivo original y
cambiando el nombre del archivo auxiliar por el del inicial.
2) Guardar o señalar los registros que se desean dar de baja con un indicador o bandera
que se guarda en un array; de esta forma los registros no son borrados físicamente, sino
que son considerados como inexistentes.
Inevitablemente, cada cierto tiempo, habrá que crear un nuevo archivo secuencial con el
mismo nombre, en el que los registros marcados no se grabarán.
Como administrador de copia de seguridad, es posible que se le pida que realice otros
deberes que se relacionan con copia de seguridad y recuperación:
xc
datos o un host a otro.
De Protección de Datos
Mientras que varios problemas pueden detener el funcionamiento normal de una base
de datos Oracle o afectar a las operaciones de base de datos de E / S, solamente la
siguiente normalmente requiere la intervención del DBA y de recuperación de datos: un
error de medios, errores de usuario, y los errores de aplicación. Otros fallos pueden
requerir intervención DBA sin causar la pérdida de datos o que requieren la recuperación
de copia de seguridad. Por ejemplo, es posible que tenga que reiniciar la base de datos
tras un fallo de instancia o asignar más espacio de disco después de un fallo debido a la
declaración de un archivo de datos completo.
xci
Las Fallas de Medios
La falta de medios es un problema físico con un disco que provoca un fallo de una leer o
escribir en un archivo de disco que se requiere para ejecutar la base de datos. Cualquier
archivo de base de datos puede ser vulnerable a un fallo de comunicación. La técnica de
recuperación adecuada después de un fallo de los medios de comunicación depende de
los archivos afectados y el tipo de copia de seguridad disponible.
Un aspecto particularmente importante de la copia de seguridad y recuperación se está
desarrollando una estrategia de recuperación ante desastres para proteger contra la
pérdida de datos catastrófica, por ejemplo, la pérdida de toda una serie de bases de datos.
Los errores del usuario cuando se producen, ya sea debido a un error en la lógica de la
aplicación o un error manual, los datos en una base de datos se modifican o eliminan
incorrectamente. Errores de usuario se estima que la mayor causa de inactividad de base
de datos.
La pérdida de datos debido a un error del usuario puede ser localizada o generalizada.
Un ejemplo de daño localizado está eliminando a la persona equivocada en la tabla
empleados. Este tipo de lesiones requiere la detección y la reparación quirúrgica. Un
ejemplo de un daño generalizado es un trabajo por lotes que borra las órdenes de la
empresa para el mes en curso. En este caso, se requiere una acción drástica para evitar
una extensa base de datos de tiempo de inactividad.
Errores de Aplicación
A veces, un mal funcionamiento de software puede dañar los bloques de datos. En una
corrupción física, que también se conoce como la corrupción los medios de comunicación,
la base de datos no reconoce el bloque en absoluto: la suma de comprobación no es
válida, el bloque contiene todos los ceros, o el encabezado y el pie de página del bloque no
coinciden. Si el daño no es muy amplio, puede a menudo repara fácilmente con bloque de
recuperación de medios.
Preservación de Datos
xcii
Conservación de datos se relaciona con la protección de datos, pero tiene un propósito
diferente. Por ejemplo, puede que tenga que conservar una copia de una base de datos tal
como existía al final de la cuarta parte del negocio. Esta copia de seguridad no es parte de
la estrategia de recuperación de desastres. Los medios a los que estas copias de
seguridad se escriben a menudo disponible después de la copia de seguridad. Usted
puede enviar la cinta en almacenamiento incendio o enviar un disco duro portátil a un
centro de pruebas. RMAN proporciona una manera conveniente para crear una copia de
seguridad y eximirla de su política de retención de copia de seguridad. Este tipo de copia
de seguridad se conoce como una copia de seguridad de archivo.
Transferencia de Datos
En algunas situaciones, es posible que tenga que tomar una copia de seguridad de una
base de datos o base de datos de componentes y moverlo a otra ubicación. Por ejemplo,
puede utilizar el Administrador de recuperación (RMAN) para crear una copia de base de
datos, cree una copia de tabla que se puede importar en otra base de datos, o mover una
base de datos completa de una plataforma a otra. Estas tareas no son, estrictamente
hablando, parte de una estrategia de backup y recuperación, pero requieren el uso de
copias de seguridad de bases de datos, por lo que pueden incluirse en las tareas de un
administrador de copia de seguridad.
Recovery Manager está completamente integrado con la base de datos Oracle para
llevar a cabo una serie de actividades de copia de seguridad y recuperación, incluyendo el
mantenimiento de un repositorio de RMAN de datos históricos acerca de las copias de
seguridad. Se puede acceder a RMAN través de la línea de comandos oa través de Oracle
Enterprise Manager.
Recuperación de Comandos
xciii
Ustedes son responsables de determinar todos los aspectos de cuándo y cómo las
copias de seguridad y la recuperación se hacen.
Una copia de seguridad incremental almacena sólo los bloques modificados desde la
última copia de seguridad. Por lo tanto, proporcionan copias de seguridad más compacta y
una recuperación más rápida, lo que reduce la necesidad de aplicar de rehacer en archivo
de datos de recuperación de los medios de comunicación. Si se habilita el seguimiento de
cambios de bloque, entonces usted puede mejorar el rendimiento al evitar escaneos
completos de todos los archivos de datos de entrada. Utilice el comando Copia de
seguridad incremental para realizar copias de seguridad incrementales.
Usted puede reparar un archivo de datos con sólo un pequeño número de bloques de
datos corruptos sin tomarlo fuera de línea o la restauración desde copia de seguridad.
Utilice el comando BLOQUE RECOVER para realizar la recuperación del bloque de
comunicación.
Compresión Binaria
xciv
de seguridad avanzada. Para crear copias de seguridad encriptadas directamente en cinta,
RMAN debe utilizar la copia de seguridad de Oracle Secure interfaz SBT, pero no requiere
la opción de seguridad avanzada.
Ya sea que utilice RMAN o métodos administrados por usuarios, puede complementar
las copias de seguridad físicas con copias de seguridad lógicas de objetos de esquema
realizados con la utilidad Export Data Pump. Más tarde, puede utilizar Data Pump Import
para volver a crear los datos después de la restauración y la recuperación. Copias de
seguridad lógicas son en su mayoría más allá del alcance de la copia de seguridad y de
recuperación de documentación.
Para ser uso de los diferentes comandos para un modo de operación debemos estar
como administrador o asuma un rol que incluya el perfil de derechos Service Management.
Comando STARTUP
Para el arranque de una base de datos hay tres fases de arranque, para realizar estas
fases podemos utilizar startup más un comando, las tres fases son las siguientes:
Fase de no Montaje: se leen los parámetros del sistema, se inician las estructuras de
memoria y los procesos de segundo plano. La instancia se arranca sin asociarla a la base
de datos. Normalmente se utiliza cuando se modifica o se necesita crear el archivo de
control:
startup nomount ;
xcv
startup mount;
Fase de Apertura: se abren los archivos de datos y los registros rehacer. La base de
datos queda disponible para las operaciones normales. Es necesario que existan registros
rehacer de lo contrario si no hay registros usamos el comando resetlogs, que crea registros
nuevos. Para esta fase se pueden usar dos comandos:
startup open;
startup restrict (sólo permite la conexión de usuarios con el privilegio restricted sesion).
Comando SHUTDOWN
Shutdown Transactional: Se produce una parada hasta que hayan terminado las
transacciones activas, no admite nuevas conexiones y tampoco nuevas transacciones, una
vez que las transacciones activas van terminando va desconectando a los usuarios. En el
próximo arranque la base datos no requiere procedimientos de recuperación.
xcvi
Shutdown Abort: Aborta todos los procesos de una base de datos, durante el proceso
de parada no permite nuevas conexiones y las actuales la desconecta, las transacciones
que no estén commit se hará roolback de ellas. En el próximo arranque la base datos
puede requerir procedimientos de recuperación.
Comando Describe
Este comando permite conocer la estructura de una tabla, las columnas que la forman y
su tipo y restricciones.
DESCRIBE f1;
Modificación
Para realizar una modificación utilizamos el comando ALTER TABLE. Para usar ALTER
TABLE, necesita permisos ALTER, INSERT y CREATE para la tabla.
El índice de una base de datos es una estructura alternativa de los datos en una tabla. El
propósito de los índices es acelerar el acceso a los datos mediante operaciones físicas
más rápidas y efectivas. En pocas palabras, se mejoran las operaciones gracias a un
aumento de la velocidad, permitiendo un rápido acceso a los registros de una tabla en una
base de datos. Al aumentar drásticamente la velocidad de acceso, se suelen usar sobre
aquellos campos sobre los cuáles se hacen búsquedas frecuentes.
Resumen de Índices
Un índice es una estructura opcional, asociado con una mesa o tabla de clúster, que a
veces puede acelerar el acceso de datos. Mediante la creación de un índice en una o
varias columnas de una tabla, se obtiene la capacidad en algunos casos, para recuperar un
pequeño conjunto de filas distribuidas al azar de la tabla. Los índices son una de las
muchas formas de reducir el disco I / O.
Si una tabla de montón organizado no tiene índices, entonces la base de datos debe
xcvii
realizar un escaneo completo de tabla para encontrar un valor. Por ejemplo, sin un índice,
una consulta de ubicación 2700 en la tabla hr.departments requiere la base de datos para
buscar todas las filas de cada bloque de la tabla para este valor. Este enfoque no escala
bien como datos de aumento de volúmenes.
Del mismo modo, el administrador podría crear índices separados para los últimos
nombres de los empleados, los ID de departamento, y así sucesivamente.
En general, considerar la creación de un índice en una columna en cualquiera de las
siguientes situaciones:
Características de Indexación
Los índices son objetos de esquema que son lógica y físicamente independiente de los
datos de los objetos con los que están asociados. Por lo tanto, un índice se puede quitar o
creado sin afectar físicamente a la tabla para el índice.
xcviii
Nota: Si se le cae un índice, las aplicaciones siguen funcionando. Sin embargo, el
acceso de los datos previamente indexado puede ser más lento.
Facilidad de Uso
Visibilidad
Los índices son visibles (por defecto) o invisible. Un índice invisible se mantiene por las
operaciones DML y no se utiliza de forma predeterminada por el optimizador. Cómo hacer
una invisible índice es una alternativa a lo que es inutilizable o se caiga. Índices invisibles
son especialmente útiles para probar la eliminación de un índice antes de dejarlo caer o
mediante índices temporalmente sin afectar a la aplicación general.
Base de datos Oracle Performance Tuning Guide para aprender cómo ajustar los
índices
Teclas y Columnas
xcix
Una clave es un conjunto de columnas o expresiones en las que se puede construir un
índice. Aunque los términos se usan indistintamente, los índices y las claves son diferentes.
Los índices son estructuras almacenados en la base de datos que los usuarios a
administrar el uso de sentencias de SQL. Las claves son estrictamente un concepto lógico.
Índices Compuestos
Los índices compuestos pueden acelerar la recuperación de datos para las instrucciones
SELECT en la que el DONDE referencias cláusula totalidad o la parte principal de las
columnas en el índice compuesto. Por lo tanto, el orden de las columnas utilizadas en la
definición es importante. En general, las columnas de acceso más común van primero.
Por ejemplo, supongamos que una aplicación realiza consultas frecuentes a apellidos,
job_id, y columnas de salario en la tabla empleados. También asumir que last_name tiene
alta cardinalidad, lo que significa que el número de valores distintos que es grande en
comparación con el número de filas de la tabla. Se crea un índice con el siguiente orden de
las columnas:
Las consultas que acceden a las tres columnas, sólo la columna last_name, o sólo el
last_name y columnas job_id utilizan este índice. En este ejemplo, las consultas que no
tienen acceso a la columna last_name no utilizan el índice.
Nota: En algunos casos, tales como cuando la columna principal tiene muy baja
cardinalidad, la base de datos puede utilizar una búsqueda selectiva de este índice.
c
Múltiples índices pueden existir para la misma mesa, siempre y cuando la permutación
de columnas difiere para cada índice. Puede crear varios índices que utilizan las mismas
columnas si se especifica claramente diferentes permutaciones de las columnas. Por
ejemplo, las siguientes sentencias SQL especifican permutaciones válidas:
Los índices pueden ser únicos o no únicos. Índices únicos garantizar que no hay dos
filas de una tabla tienen valores duplicados en la columna de clave o columna. Por ejemplo,
dos empleados no pueden tener el mismo ID de empleado. Por lo tanto, en un índice único,
existe una ROWID para cada valor de datos. Los datos de los bloques de hojas se ordenan
sólo por clave.
Oracle Database no filas de la tabla de índice en el que todas las columnas clave son
nulas, a excepción de los índices de mapa de bits o cuando el valor de la columna clave de
clúster es nulo.
Tipos de Índices
Base de Datos Oracle ofrece varias combinaciones de indexación, que proporcionan una
funcionalidad complementaria sobre el rendimiento. Los índices se pueden clasificar de la
siguiente manera:
Estos índices son el tipo de índice estándar. Son excelentes para la clave principal y los
índices altamente selectivos. Utilizado como índices concatenados, B-tree índice pueden
recuperar los datos ordenados por las columnas de índice. Índices B-tree tienen los
siguientes subtipos:
ci
sí mismo el índice.
En este tipo de índice, los bytes de la clave de índice se invierten, por ejemplo, 103 se
almacena como 301. La inversión de bytes extiende inserta en el índice durante muchos
bloques.
Índices Descendentes
Este tipo de índice almacena los datos en una columna o columnas de concreto en
orden descendente.
Este tipo de índice se utiliza para indexar una clave de clúster tabla. En lugar de apuntar
a una fila, los puntos clave para el bloque que contiene filas relacionadas con la clave de
clúster.
En un índice de mapa de bits, una entrada de índice utiliza un mapa de bits para que
apunte a varias filas. En cambio, los puntos de entrada de un índice B-tree en una sola fila.
Un índice de combinación de mapa de bits es un índice de mapa de bits para la unión de
dos o más tablas. Consulte "Indicadores de mapa de bits".
Este tipo de índice incluye columnas que, o bien se transforman por una función, tales
como la función UPPER, o incluidos en una expresión. Índices B-tree o mapa de bits puede
ser basado en las funciones.
Este tipo de índice se crea por un usuario para los datos en un dominio específico de la
aplicación. El índice físico no tiene que utilizar una estructura de índice tradicional y se
puede almacenar ya sea en la base de datos Oracle como tablas o externamente como un
archivo. Consulte "Indicadores de dominio de aplicación".
Índices B-Tree
Árboles B, abreviatura de árboles balanceados, son el tipo más común de índice de base
de datos. Un índice B-tree es una lista ordenada de valores dividida en rangos. Mediante la
asociación de una tecla con una fila o rango de filas, los árboles B proporcionan un
cii
excelente rendimiento de la recuperación para una amplia gama de consultas, incluyendo
coincidencia exacta y búsquedas por rango.
La figura 3-1 ilustra la estructura de un índice B-tree. El ejemplo muestra un índice en la
columna department_id, que es una columna de clave externa en la tabla empleados.
Un factor clave para conseguir una E/S de disco mínima para todas las consultas de
bases de datos es asegurarse de que se creen y se mantengan buenos índices. Una vez
creados los índices, se debe procurar mantenerlos para asegurarse que sigan trabajando
en forma óptima. A medida que se agregan, modifican o borran datos se produce
fragmentación. Esta fragmentación puede ser buena o mala para el rendimiento del
sistema, dependiendo de las necesidades del trabajo de la base de datos.
Detección de Fragmentación
ciii
El primer paso para decidir qué método de desfragmentación se va a utilizar consiste en
analizar el índice para determinar el nivel de fragmentación. Si se usa la función del
sistema sys.dm_db_index_physical_stats, se puede detectar la fragmentación de los
índices de la base de datos thuban-homologada.
SELECT DISTINCT
A.INDEX_ID 'IDIndice';
sys.TABLES.name 'Tabla',
b.name 'Indice',
FROM
sys.dm_db_index_physical_stats (
DB_ID ()N'thuban-himologada'),
OBJECT_ID (N'dbo.*'),
NULL,
NULL,
sys.TABLES
WHERE
sys.TABLES.object_id = b.object_id
ORDER BY
civ
avg_fragmentation_in_percent DESC
La grilla de resultados emitida por la anterior sentencia incluye las siguientes columnas:
Descripción
Columna
Id Índice El número de índice dentro de la tabla.
Tabla Nombre de la tabla a la que corresponde el índice.
Índice Nombre del índice.
% Fragmentación El porcentaje de fragmentación lógica (páginas del
índice fuera de orden).
Cantidad de fragmentos La cantidad de fragmentos (páginas físicas
consecutivas) en el índice.
Promedio de páginas por Promedio de número de páginas en un fragment del
fragmentos índice.
Una vez que se toma conciencia del nivel de fragmentación, se debe utilizar la tabla a
continuación para determinar el mejor método para su corrección.
Sentencia correctiva
% Fragmentación
> 5% and < = 30% ALTER INDEX REORGANIZE
> 30% ALTER INDEX REBUILD WITH (ONLINE = ON)*
La reconstrucción del índice puede ejecutarse tanto en línea como fuera de línea. La
reorganización de los índices debe ejecutarse siempre en línea. Para adquirir una
disponibilidad similar a la de la opción de reorganización, los índices deben ser
reconstruidos en línea.
Estos valores proveen una estricta guía para determinar el punto en el que se debe
cambiar de ALTER INDEX REORGANIZE a ALTER INDEX REBUILD.
Los niveles muy bajos de fragmentación (menores que el 5 por ciento) no deben ser
corregidos por ninguno de estos comandos porque el beneficio de la remoción de una
cantidad tan pequeña de fragmentación es casi siempre superado ampliamente por el
costo de reorganización o reconstrucción de índices.
Reorganización de Índices
cv
Para reorganizar uno o más índices se debe usar la sentencia ALTER INDEX con la
cláusula REORGANIZE. Por ejemplo:
Es importante tener actualizadas las estadísticas de la base de datos. Para saber si las
estadísticas se están lanzando correctamente podemos hacer una consulta sobre la tabla
dba_indexes y ver el campo last_analyzed para observar cuando se ejecutaron sobre ese
índice las estadísticas.
Blevel (branch level) es parte del formato del B-tree del índice e indica el número de
veces que Oracle ha tenido que reducir la búsqueda en ese índice. Si este valor está por
encima de 4 el índice deberá de ser reconstruido.
Nota: En algunos casos cuando alguno de los índices tiene algún tipo de corrupción no
es posible reconstruirlo. La solución en este caso es borrar el índice y recrearlo.
Unidad 5: Seguridad
5.1 Respaldo y Recuperación
cvi
El respaldo es uno de los pasos más importantes que puedes dar para proteger tu
información. Cuando algo sale mal, como fallas en disco duro, borrado accidental de
archivos o infecciones por malware, son tu último recurso. En esta edición, te
explicamos cómo respaldar tu información y preparar una estrategia adecuada para ti.
Existen dos aspectos fundamentales para decidir qué respaldar: la información que
hayas generado o que sea importante para ti, como documentos, fotografías o videos;
o toda, incluyendo tu sistema operativo y cualquier programa que hayas instalado. El
primer aspecto limita el proceso de respaldo, mientras que el segundo hace que sea
más fácil recuperar el sistema en caso de un fallo completo. Si no estás seguro de qué
respaldar, respalda todo. A continuación, tendrás que decidir qué tan seguido respaldar
tu información. Lo más común es hacerlo cada hora, diariamente, semanalmente, etc.
Para usuarios caseros, los programas de respaldo personal como Time Machine de
Apple o Copias de seguridad y restauración de Windows, permitirán fijar un horario
automático de respaldo “prográmalo y olvídate”. Otras soluciones ofrecen “protección
continua”, en la cual los archivos nuevos o modificados son respaldados
inmediatamente tan pronto sean cerrados. Si perteneces a una organización con
muchas computadoras, quizás te gustaría definir tu propio calendario. Sería bueno que
consideraras cuánta información estás dispuesto a perder en el peor de los casos. Por
ejemplo, si respaldas diariamente, puedes perder una jornada de trabajo si tu
computadora falla al final del día. Muchas organizaciones programan respaldos diarios
fuera de las horas pico para minimizar el impacto la operación normal.
Cómo Respaldar
cvii
transportar y almacenar los respaldos de forma segura. Dependiendo de qué tan
sensibles sean y dónde se almacenen los respaldos, tal vez convenga cifrarlos.
Recuperación
Base de Datos Espejo (Database Mirroring) es una configuración donde dos o tres
servidores de dase de datos, ejecutándose en equipos independientes, cooperan para
mantener copias de la base de datos y archivo de registro de transacciones (log).
Tanto el servidor primario como el servidor espejo mantienen una copia de la base
de datos y el registro de transacciones, mientras que el tercer servidor, llamado el
servidor árbitro, es usado cuando es necesario determinar cuál de los otros dos
servidores puede tomar la propiedad de la base de datos. El árbitro no mantiene una
cviii
copia de la base de datos. La configuración de los tres servidores de base de datos (el
primario, el espejo y el árbitro) es llamado Sistema Espejo (Mirroring System), y el
servidor primarioy espejo juntos son llamados Servidores Operacionales (Operational
Servers) o Compañeros (Partners).
La creación de reflejo de la base de datos es una estrategia sencilla que ofrece las
siguientes ventajas:
cix
5.1.1.2 Activación de Espejeo en un DBMS
cx
cxi
cxii
The Shared Global Area (SGA) in Oracle contributes to efficient memory management by acting as a repository for shared information needed by database processes. The main components of the SGA include the Database Buffer Cache, Redo Log Buffer, Shared Pool, Library Cache, and Data Dictionary Cache. These components house data copies, SQL execution plans, and control structures, facilitating quick access and reducing the need for repeated disk reads. The SGA is shared among all user processes to manage the execution environment efficiently, enhancing performance through resource sharing .
Incremental backups improve the efficiency of database recovery processes by storing only the data blocks that have changed since the last backup, reducing the volume of data that needs to be backed up and restored. This reduces the storage space required for backups and accelerates recovery times, as fewer blocks need reapplication of redo logs during a restore. Thus, it offers a more compact backup solution while ensuring faster point-in-time recovery, as not all unchanged blocks since the initial backup need to be processed .
Recovery Manager (RMAN) is vital in Oracle backup strategies as it integrates deeply with the Oracle database to automate and streamline the backup and recovery processes. RMAN maintains a repository of metadata about backups, enabling efficient data recovery by tracking changes and managing dependencies. Unlike user-managed backups that rely on manual processes and scripts, RMAN offers advanced features such as incremental backups, data deduplication, and automatic handling of corruption recovery, minimizing human error and enhancing reliability .
Oracle's Database Buffer Cache uses a combination of a pin list and a Least Recently Used (LRU) list to manage the buffering of database blocks efficiently. The pin list holds buffers currently in use, preventing them from being flushed prematurely, while the LRU list holds recently accessed buffers, optimizing memory usage by quickly discarding the least-used data in favor of new data. This dual-list system minimizes contention and maximizes hit ratios in multiprocessor environments by ensuring that frequently accessed data remains available in memory without unnecessary disk reads .
In Oracle, the concept of an 'instance' is closely linked to the combination of memory structures and processes managing database access, with a one-to-one or many-to-one relationship with the database itself. In contrast, DBMS like Microsoft SQL Server define an 'instance' as a collection of databases sharing common server resources, allowing a one-to-many relationship where a single SQL Server instance can manage multiple databases. This fundamental difference impacts resource allocation, scaling, and management strategies across these systems .
A DBMS ensures data security and integrity through features like user access control, data encryption, and backup and recovery systems. User access control restricts data availability to certain users based on their privileges, enhancing security by limiting access to sensitive information. Data encryption protects data from unauthorized access during storage and transmission. The backup and recovery system allows for data recovery in case of hardware or software failures, ensuring the integrity of the database by allowing restoration of lost data . Furthermore, the independence of data organization from application programs in DBMS reduces the risk of data tampering, as applications do not directly interact with data storage structures .
Maintaining both physical and logical backups in a database backup strategy is crucial because they complement each other in protecting against data loss. Physical backups, which cover datafiles and control files, ensure that the database can be restored to a previous consistent state in case of a hardware failure. Logical backups, involving exports of database objects like tables and schemas, allow for selective recovery of specific data elements and help in scenarios such as data corruption or logical errors. Together, they provide a robust solution against different types of failures .
The Program Global Area (PGA) is a memory region that contains data and control information for a single server process in Oracle's architecture. Unlike the Shared Global Area (SGA), which is shared among all server processes, the PGA is dedicated to an individual process, storing session-specific information. It includes memory for sorting operations, session-specific database connections, and other private SQL execution areas. The isolation of the PGA ensures that session-specific data does not interfere with other processes, thereby enhancing performance and security in a multi-user environment .
In Oracle, a database instance refers to the combination of memory structures (SGA) and background processes that manage access to database files, while a database consists of the physical files that store data . This distinction allows for multi-instance architectures such as Oracle's Real Application Cluster (RAC), where multiple instances share a single database to provide scalability and availability. Each instance in RAC runs on separate nodes, accessing the same set of datafiles on shared storage, thus enhancing load distribution and fault tolerance .
Failures in a DBMS can arise from hardware malfunctions, software errors, or user mistakes, potentially leading to data loss or inconsistency. To manage these challenges, robust mechanisms like transaction logs, backups, and recovery processes are employed. Transaction logs ensure that all changes can be traced and rolled back if necessary, while backup systems safeguard data against loss through regular snapshots stored offsite. Recovery processes are designed to restore the database to a consistent state by applying these logs and backups effectively during an outage .