Este documento describe varias funciones de Oracle para mejorar la disponibilidad de las bases de datos, como Flashback Drop, Flashback Database, LogMiner y reorganización en línea de objetos. Flashback Drop permite restaurar objetos eliminados a su estado original. Flashback Database devuelve la base de datos a un punto en el tiempo anterior utilizando registros de flashback. LogMiner analiza los archivos de registro para ver los cambios realizados. Se pueden reorganizar índices y tablas en línea sin interrumpir el acceso de los usuarios.
1. Capítulo 14. Diversas funciones de alta disponibilidad
En el capítulo se verán las características principales para mejorar las aplicaciones de las bases de
datos. Una de estas aplicaciones es el LogMiner entre otras las cuales son mejoras de versiones
anteriores de Oracle. La papelera de reciclaje y el comando flashback de base de datos, se han
introducido en Oracle Database 10g y mejorado en Oracle Database 11g.
Funciones para mejorar la disponibilidad de la base de datos:
-Flashback Gota
-Flashback Database
-LogMiner
-Online reorganización objetos opciones
Flashback Drop Este se comporta como la papelera de reciclaje en Windows puede restaurar a su a
su estado original objetos con todos los índices y limitaciones intactos. Flashback base de datos se
basa en los datos almacenados en el área de recuperación flash, esta área se introdujo a Oracle
Database 10g. LogMiner, disponible desde Oracle9i, se basa en los archivos de registro de rehacer
para ver los cambios realizados en las tablas, índices y otras estructuras de bases de datos
La recuperación de las Tablas eliminadas mediante Flashback Gota
Cuando se elimina una tabla (índices asociados, limitaciones y las tablas anidadas), Oracle No
suelta inmediatamente el espacio de la tabla en disco para su uso por otros objetos en el espacio
de tablas. En su lugar, los objetos son retenidos en la papelera de reciclaje hasta que se realice
manualmente por el usuario o que se necesite espacio por objetos.
Usted puede ver los objetos caídos consultando la vista RECYCLEBIN diccionario de datos. Nota
que el formato para la columna OBJECT_NAME pueden diferir entre las versiones:
SQL>selectobject_name, original_Name operación, tipo de usuario, 2 can_undrop espacio,
desde RecycleBin;
RECYCLEBIN muestra las entradas de papelera de reciclaje para el usuario actual. DBA pueden ver
todos los objetos caídos a través de la DBA_ RECYCLEBIN diccionario de datos de punto de vista.
SQL>AUTOR table flashback;
Flashback complete
La tabla ha sido restaurada, con sus filas, índices y estadísticas. ¿Qué sucede si se le cae de la tabla
AUTOR, vuelva a crear, y luego caer de nuevo? El reciclaje bin contendrá tanto las tablas. Cada
entrada de la papelera de reciclaje serán identificados a través de su SCN y la fecha y hora de la
entrega.
2. NOTA
La tabla flashback de comando antes de soltar no se recupera restricciones de referencia.
Usted puede utilizar el cambio de nombre a cláusula de la tabla de comandos flashback a cambiar
el nombre de la tabla a medida que lo flash back.
De forma predeterminada, la papelera de reciclaje está habilitada en Oracle Database 10 g y 11 g.
Usted puede utilizar el RECYCLEBIN inicialización parámetro para activar la papelera de reciclaje
dentro y fuera, también puede activar y bajar en el nivel de sesión, como en este ejemplo:
alterar set session RecycleBin = apagado;
La desactivación temporal de la función de papelera de reciclaje no afecta a los objetos
actualmente en el la papelera de reciclaje, incluso cuando la papelera de reciclaje está
desactivada, todavía puede recuperar los objetos actualmente en la papelera de reciclaje. Sólo los
objetos cayeron mientras la papelera de reciclaje está desactivada no se pueden recuperar.
El Comando de Flashback Database
El comando devuelve la base de datos flashback de la base de datos a un tiempo pasado o SCN,
proporcionando una rápida alternativa para realizar la recuperación de base de datos incompletos.
A raíz de una operación de base de datos flashback, con el fin de tener acceso de escritura a la
base de datos flashed-back, debe reabrir con un alter base de datos resetlogscomando open. Debe
tener el privilegio del sistema SYSDBA para poder utilizar el comando de base de datos flashback.
NOTA
La base de datos debe de haber sido puesto en modo de flashback con un alter base de datos
retrospectiva en el comando..
La sintaxis para el comando de base de datos flashback es el siguiente:
Flashback [standby] base de datos [base de datos]
{A scn {| timestamp} expr
| {A antes scn | timestamp} expr
}
Puede flash antes de volver a un punto crítico (por ejemplo, una transacción que produce una
consecuencia no deseada de varias tablas). Utilice el ORA_ROWSCN pseudo-columna para ver los
SCN de las transacciones de fila más recientes.
3. El parámetro de inicialización DB_FLASHBACK_RETENTION_TARGET establece el límite superior
(en minutos) para que tan atrás en el tiempo la base de datos puede estar en flashback.
El DB_RECOVERY_FILE_DEST parámetro de inicialización establece el tamaño del área de
recuperación flash. Tenga en cuenta que el comando de tabla retroceso utiliza los datos ya
almacenados en el espacio de tabla mientras que el comando flashback de base de datos se basa
en los registros de flashback almacenados en el área de recuperación flash.
El Comando de Flashback Database
El comando devuelve la base de datos flashback de la base de datos a un tiempo
pasado o SCN, proporcionando una rápida alternativa para realizar la
recuperación de base de datos incompletos. A raíz de una operación de base de
datos flashback, con el fin de tener acceso de escritura a la base de datos flashed-
back, debe reabrir con una base de datos alternativa con los comandos open.
Debe tener el privilegio del sistema SYSDBA para poder utilizar el comando de
base de datos flashback.
La base de datos debe de haber sido puesto en modo de flashback con un
flashback de base de datos en el comando alter. La base de datos debe ser
montado de modo exclusivo pero no abrir cuando que se ejecuta el comando.
Usted puede utilizar el scn a la cláusula o marca de tiempo para ajustar el punto al
que se debe la base de datos completa brilló de nuevo. Usted puede parpadear
antes de volver a un punto crítico (tal como una transacción que produce una
consecuencia no deseada de varias tablas). Utilice el ORA_ROWSCN pseudo-
columna para ver los SCN de las transacciones filas más recientes.
Si aún no lo ha hecho, tendrá que cerrar su base de datos y permitir retroceso
durante el proceso de arranque utilizando esta secuencia de comandos:
startup mount exclusive;
alter database archivelog;
alter database flashback on;
alter database open;
Dos ajustes de los parámetros de inicialización de controlar la cantidad de datos
de flashback es retenido en la base de datos. El parámetro de inicialización
DB_FLASHBACK_RETENTION_TARGET establece el límite máximo (en minutos)
para que tan atrás en el tiempo la base de datos pueda ser flasheada. El
DB_RECOVERY_FILE_DEST parámetro de inicialización establece el tamaño del
área de recuperación flash. Hay que tener en cuenta que el comando de tabla
retrospectiva utiliza datos ya almacenados en el espacio de tabla undo (no crear
entradas adicionales), mientras que el comando de base de datos retrospectiva se
basa en los registros de flashback almacenados en el área de recuperación flash.
4. Usted puede verificar el estado de la base de datos que recuerda al consultar V $
DATABASE, la columna FLASHBACK_ON tendrá un valor 'YES' si el flashback se
ha habilitado para la base de datos.
Usando LogMiner
Oracle utiliza archivos de registro de rehacer en línea para realizar un seguimiento
de cada cambio que se realice a los datos del usuario y el diccionario de datos. La
información almacenada en los archivos de registro de rehacer se utiliza para
volver a crear la base de datos, en parteo en su totalidad, durante la recuperación.
Para habilitar la recuperación de la base de datos a un punto en el tiempo después
de la copia de seguridad de base de datos se hizo, usted puede mantener copias
archivadas de los archivos de registro de rehacer. La utilidad LogMinerofrece una
visión vital en las modificaciones que se han producido dentro de su base de
datos.
Cuando se utiliza LogMiner, se ve tanto los cambios que se han hecho (el
SQL_redo) y el SQL que puede utilizar para revertir estos cambios (la SQL_undo).
Por lo tanto, puede revisar la historiade la base de datos, sin tener que aplicar
ningún registro de rehacer, y obtener el código para revertir las transacciones
problemáticas. Usando LogMiner, se puede señalar la operación en la que la
corrupciónocurrió por primera vez para que pueda determinar el punto correcto en
el tiempo o SystemChangeNumber (SCN) para usar como punto final para una
recuperación de base de datos.
Cómo funciona LogMiner
Para ejecutar la utilidad LogMiner, usted debe tener el privilegio EXECUTE sobre
el paquete DMBS_LOGMNR o el papel EXECUTE_CATALOG_ROLE. LogMiner
requiere de un diccionario de datos de traducir completamente el contenido del
registro de rehacer en archivo y traducir los identificadores de objetos internos y
tipos de datos para los nombres de objetos y formatos de datos externos.
Si un diccionario de datos no está disponible, LogMiner devolverá los datos en
formato hexadecimal y la información del objeto como ID de objetos internos.
Se tiene tres opciones para la obtención de un diccionario de datos para su uso
LogMiner:
Extraer la información del diccionario de datos a un archivo plano.
5. Extracto del diccionario de datos para rehacer los archivos de registro.
Utilice el diccionario de datos en línea de la base de datos actual.
Extraer el Diccionario de Datos
Un problema potencial con la extracción del diccionario de datos en un archivo
plano, es que mientras que usted está extrayendo el diccionario de datos, alguien
más podría hacer declaraciones DDL. Por lo tanto, el diccionario de datos puede
ser extraído fuera de sincronización con la base de datos. Cuando se use una lima
plana para almacenar el diccionario de datos, menos recursos del sistema que son
necesarios cuando se utiliza rehacer los archivos de registro.
Al extraer el diccionario de datos para rehacer los archivos de registro, sin
instrucciones DDL se pueden procesar durante el tiempo en que se extrae el
diccionario de datos. Por lo tanto, el diccionario estará sincronizadocon la base de
datos, la extracción es más intensiva en recursos, pero el proceso de extracción
es más rápido.
Para extraer el diccionario de datos a un archivo plano o rehacer los archivos de
registro, se utiliza el procedimiento DBMS_LOGMNR_D.BUILD. El archivo de
diccionario de datos se coloca en un directorio. Por lo tanto, debetener permiso de
escritura para el directorio en el que se coloca el archivo. Para definir la ubicación
del directorio, utilice el UTL_FILE_DIR parámetro de inicialización.
Para ejecutar el procedimiento DBMS_LOGMNR_D.BUILD, debe especificar un
nombre para el diccionario, el nombre de ruta del directorio del archivo, y si desea
que el diccionario escrito en un archivo plano o archivos de registro de rehacer.
(lupe)
6. Reorganización de objetos en línea
Puede reorganizar muchos objetos de bases de datos en línea. Las opciones son las
siguientes:
-Creación de índices en línea
-La reconstrucción de índices en línea
-Índices coalescentes línea
-Reconstruir índice de tablas organizadas en línea
-Usando el paquete DBMS_REDEFINITION redefinir una mesa online
Crear índices en línea
Puede crear y reconstruir índices, mientras que las tablas de base sean accesibles a los
usuarios finales. Las operaciones DDL no se permiten mientras que el índice se está
construyendo. Para crear un índice se utiliza el comando CREATE INDEX, así
AUTH crear índice en $ NOMBRE AUTOR (AuthorName) en línea;
Volver a generar índices en línea
Cuando se utiliza la cláusula de reconstrucciónALTER INDEX, Oracle utiliza el índice
existente la fuente de datos para el nuevo índice, se debe de tener espacio suficiente para
guardar dos copias del índice. Para volver a generar el índice en línea, utilice la cláusula
de reconstrucción en línea ALTER TABLE, como en el ejemplo:
alterar AUTH índice $ NOMBRE reconstruir en línea;
Índices coalescentes línea
Se pueden unir varios índices para recuperar espacio. Cuando se unen índices, no se
pueden mover a otro espacio de tabla (como puede con una reconstrucción).
Para unirse un índice, utilice la cláusula de unirse el comando ALTER INDEX. Todos los
índicescaleses son operaciones en línea. El siguiente es un ejemplo coalescer.
alterar AUTH índice $ NOMBRE unen;
Reconstruir de tablas organizadas por índices
Usted puede utilizar el alter table. . . moverse en línea para reconstruir una línea de
tabla organizada por índices.El segmento de datos de desbordamiento, si está presente,
se vuelve a crear si se especifica la palabra clave de desbordamiento.
Al utilizar este comando, no se puede realizar DML paralelo.
7. La redefinición de las tablas en línea
Puede cambiar la definición de una tabla a la vez que sea accesible por los usuarios de la
aplicación.
A partir de Oracle Database 11g, hay muy pocas restricciones sobre los tipos de tablas no
pueden ser redefinido en línea. Aquí algunos ejemplos de restricciones clave:
-La tabla de desbordamiento de un IOT debe volver a definirse en el mismo tiempo que la
IOT base.
-Las tablas con el control de acceso de grano fino no se puede redefinir online.
Las tablas con columnas BFILE no se puede redefinir online.
-Tabla con columnas LONG y LONG RAW pueden ser redefinidos, pero el LONG y LONG
-Columnas RAW se debe convertir a CLOB y BLOB.
Para este ejemplo, la tabla CLIENTE se creará en la SCOTT esquema y entonces
redefinió:
crear tabla CLIENTE
(Nombre VARCHAR2 (25) de clave principal,
Calle VARCHAR2 (50),
City VARCHAR2 (25),
Estado CHAR (2),
NÚMERO Postal);
La tabla es un candidato para la redefinición en línea si el procedimiento devuelve el
mensaje:
PL / SQL terminado con éxito.
O puede mandar un mensaje de error.
Ahora puede ejecutar el procedimiento START_REDEF_TABLE del
DBMS_REDEFINITION para iniciar el proceso de redefinición.
Si no se suministra asignación de columna, todos los nombres de columna y definiciones
en eltabla original y la tabla provisional debe ser la misma.
ejecutar DBMS_REDEFINITION.START_REDEF_TABLE -
('SCOTT', 'Cliente', 'CUSTOMER_INTERIM');
8. NOTA
Para evitar ese paso manual, puede utilizar el COPY_TABLE_ DEPENDIENTES
procedimiento para crear todos los objetos dependientes de la tabla provisional. Los
objetos dependientes apoyados a través de este método incluyen triggers, índices,
subsidios y restricciones.
Usted puede verificar mediante la consulta de la redefinición del diccionario de datos:
selecttable_name, high_value
de DBA_TAB_PARTITIONS
donde owner = 'SCOTT';
TABLE_NAMEHIGH_VALUE
-----------------------------------------------
CLIENTE MAXVALUE
CLIENTE 'L'
Para abortar el proceso después de ejecutar el procedimiento START_REDEF_TABLE,
ejecute el Procedimiento ABORT_REDEF_TABLE (los parámetros de entrada son el
nombre de esquema, tabla original, y el nombre de la tabla provisional).
9. Conclusión:
Oracle tiene diferentes tipos de funciones las cuales sirven para mejorar las aplicaciones de las
bases de datos ya que mediante estas funciones se pueden restaurar datos al igual que volver
atrás en el tiempo en la base de datos
La base de datos se pueden retornar a un punto anterior para corregir ciertos
errores o resultados, también internamente la base de datos utiliza el LogMiner
para contemplar los cambios de uno en uno que se han realizado en las diversas
modificaciones con las cuales nos permiten tener una idea en que momento
exacto queremos regresar la base de datos.
Un problema en la extracción de la base de datos, es precisamente el diccionario
de datos ya que es posible que otro usuario este usando la base de datos y haga
cambios en ella, lo que daría como resultado que la base de datos no este en
sincronización.
(lupe)
Existen muchas maneras de reorganizar objetos de bases de datos en línea algunas son:
Crear índices, reconstrucción de índices, índices coalescentes, etc.
Para crear o reconstruir índices se necesita que los usuarios finales tengan acceso a las tablas de la
base. Para volver a generar un índice en línea se utiliza el comando ALTER INDEX, pero para crear
este se debe de tener un espacio para guardar dos copias del índice, a diferencia del índice
coalescente en línea que no necesita de espacio de almacenamiento, así que este es útil para
cuando el espacio es limitado.
Las tablas temporales no se pueden redefinir en línea, y una tabla se puede redefinir mientras a la
vez es la tabla es accesible a los usuarios de la aplicación.