Realización de tareas comunes relacionadas con el registro para instancias de base de datos Oracle
A continuación, puede encontrar cómo realizar ciertas tareas comunes de DBA relacionadas con el registro en las instancias de base de datos de Amazon RDS que ejecutan Oracle. Para ofrecer una experiencia de servicio administrado, Amazon RDS no proporciona acceso mediante shell a las instancias de bases de datos y restringe el acceso a ciertos procedimientos y tablas del sistema que requieren privilegios avanzados.
Para obtener más información, consulte Archivos de registro de base de datos de Oracle.
Temas
- Activación del modo force logging
- Activación del modo supplemental logging
- Cambio de archivos de registro en línea
- Adición de registros REDO en línea
- Eliminación de registros REDO en línea
- Cambio de tamaño de los registros REDO en línea
- Retención de los registros REDO archivados
- Acceso a los registros de rehacer en línea y archivados
- Descargue registros de rehacer archivados de Amazon S3
Activación del modo force logging
En el modo force logging, Oracle registra todos los cambios realizados en la base de datos, excepto los cambios efectuados en los espacios de tabla temporales y los segmentos temporales (las cláusulas NOLOGGING
se omiten). Para obtener más información, consulte Specifying FORCE LOGGING Mode
Utilice el procedimiento de Amazon RDS para configurar el modo force loggin rdsadmin.rdsadmin_util.force_logging
. El procedimiento force_logging
tiene los siguientes parámetros.
Nombre del parámetro | Tipo de datos | Valor predeterminado | Sí | Descripción |
---|---|---|---|---|
|
booleano |
true |
No |
Establezca este parámetro en |
En el siguiente ejemplo se pone la base de datos en el modo force logging.
EXEC rdsadmin.rdsadmin_util.force_logging(p_enable =>
true
);
Activación del modo supplemental logging
Si habilita el registro complementario, LogMiner tiene la información necesaria para admitir filas encadenadas y tablas agrupadas. Para obtener más información, consulte Supplemental Logging
Oracle Database no tiene activado el modo supplemental logging de forma predeterminada. Utilice el procedimiento de Amazon RDS para activar y desactivar el modo supplemental loggin rdsadmin.rdsadmin_util.alter_supplemental_logging
. Para obtener más información acerca de cómo gestiona Amazon RDS la conservación de los registros REDO archivados para las instancias de bases de datos Oracle, consulte Retención de los registros REDO archivados.
El procedimiento alter_supplemental_logging
tiene los siguientes parámetros.
Nombre del parámetro | Tipo de datos | Valor predeterminado | Obligatorio | Descripción |
---|---|---|---|---|
|
varchar2 |
— |
Sí |
|
|
varchar2 |
null |
No |
El tipo de supplemental logging. Los valores válidos son: |
En el siguiente ejemplo se activa el modo supplemental logging.
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => '
ADD
'); end; /
En el siguiente ejemplo se activa el modo supplemental logging para todas las columnas de tamaño máximo y de longitud fija.
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => '
ADD
', p_type => 'ALL
'); end; /
En el siguiente ejemplo se activa el modo supplemental logging para las columnas de clave principal.
begin rdsadmin.rdsadmin_util.alter_supplemental_logging( p_action => '
ADD
', p_type => 'PRIMARY KEY
'); end; /
Cambio de archivos de registro en línea
Utilice el procedimiento de Amazon RDS para cambiar los archivos de registr rdsadmin.rdsadmin_util.switch_logfile
. El procedimiento switch_logfile
no tiene ningún parámetro.
En el siguiente ejemplo se cambian los archivos de registro.
EXEC rdsadmin.rdsadmin_util.switch_logfile;
Adición de registros REDO en línea
Una instancia de base de datos de Amazon RDS que ejecuta Oracle comienza con cuatro registros REDO online de 128 MB cada uno. Utilice el procedimiento de Amazon RDS para añadir registros REDO adicionale rdsadmin.rdsadmin_util.add_logfile
.
El procedimiento add_logfile
tiene los siguientes parámetros.
nota
Los parámetros son mutuamente excluyentes.
Nombre del parámetro | Tipo de datos | Valor predeterminado | Obligatorio | Descripción |
---|---|---|---|---|
|
positivo |
null |
No |
El tamaño del archivo de registro en bytes. |
|
varchar2 |
— |
Sí |
El tamaño del archivo de registro. Puede especificar el tamaño en kilobytes (K), megabytes (M) o gigabytes (G). |
El comando siguiente añade un archivo de registro de 100 MB.
EXEC rdsadmin.rdsadmin_util.add_logfile(p_size => '
100M
');
Eliminación de registros REDO en línea
Utilice el procedimiento de Amazon RDS para eliminar registros RED rdsadmin.rdsadmin_util.drop_logfile
. El procedimiento drop_logfile
tiene los siguientes parámetros.
Nombre del parámetro | Tipo de datos | Valor predeterminado | Obligatorio | Descripción |
---|---|---|---|---|
|
positivo |
— |
Sí |
El número de grupo del registro. |
En el siguiente ejemplo se elimina el registro cuyo grupo es el número 3.
EXEC rdsadmin.rdsadmin_util.drop_logfile(grp =>
3
);
Solo puede eliminar los registros cuyo estado sea no utilizado o inactivo. En el siguiente ejemplo se obtienen los estados de los registros.
SELECT GROUP#, STATUS FROM V$LOG; GROUP# STATUS ---------- ---------------- 1 CURRENT 2 INACTIVE 3 INACTIVE 4 UNUSED
Cambio de tamaño de los registros REDO en línea
Una instancia de base de datos de Amazon RDS que ejecuta Oracle comienza con cuatro registros REDO online de 128 MB cada uno. En el siguiente ejemplo se muestra cómo puede utilizar los procedimientos de Amazon RDS para cambiar el tamaño de cada uno de los registros de 128 MB a 512 MB.
/* Query V$LOG to see the logs. */ /* You start with 4 logs of 128 MB each. */ SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 1 134217728 INACTIVE 2 134217728 CURRENT 3 134217728 INACTIVE 4 134217728 INACTIVE /* Add four new logs that are each 512 MB */ EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912); /* Query V$LOG to see the logs. */ /* Now there are 8 logs. */ SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 1 134217728 INACTIVE 2 134217728 CURRENT 3 134217728 INACTIVE 4 134217728 INACTIVE 5 536870912 UNUSED 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* Drop each inactive log using the group number. */ EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 1); EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 3); EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 4); /* Query V$LOG to see the logs. */ /* Now there are 5 logs. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 CURRENT 5 536870912 UNUSED 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* Switch logs so that group 2 is no longer current. */ EXEC rdsadmin.rdsadmin_util.switch_logfile; /* Query V$LOG to see the logs. */ /* Now one of the new logs is current. */ SQL>SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 ACTIVE 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED /* If the status of log 2 is still "ACTIVE", issue a checkpoint to clear it to "INACTIVE". */ EXEC rdsadmin.rdsadmin_util.checkpoint; /* Query V$LOG to see the logs. */ /* Now the final original log is inactive. */ select GROUP#, BYTES, STATUS from V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 2 134217728 INACTIVE 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED # Drop the final inactive log. EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 2); /* Query V$LOG to see the logs. */ /* Now there are four 512 MB logs. */ SELECT GROUP#, BYTES, STATUS FROM V$LOG; GROUP# BYTES STATUS ---------- ---------- ---------------- 5 536870912 CURRENT 6 536870912 UNUSED 7 536870912 UNUSED 8 536870912 UNUSED
Retención de los registros REDO archivados
Puede retener los registros de rehacer archivados localmente en una instancia de base de datos para su uso con productos como Oracle LogMiner (DBMS_LOGMNR
). Después de conservar los registros REDO, puede utilizar LogMiner para analizarlos. Para obtener más información, consulte Using LogMiner to Analyze Redo Log Files
Utilice el procedimiento de Amazon RDS para conservar los registros REDO archivado rdsadmin.rdsadmin_util.set_configuration
. El procedimiento set_configuration
tiene los siguientes parámetros.
Nombre del parámetro | Tipo de datos | Valor predeterminado | Obligatorio | Descripción |
---|---|---|---|---|
|
varchar |
— |
Sí |
El nombre de la configuración que se debe actualizar. |
|
varchar |
— |
Sí |
El valor de la configuración. |
En el siguiente ejemplo se conservan 24 horas de registros REDO.
begin rdsadmin.rdsadmin_util.set_configuration( name => 'archivelog retention hours', value => '24'); end; / commit;
nota
La confirmación es necesaria para que los cambios surtan efecto.
Utilice el procedimiento de Amazon RDS para ver durante cuánto tiempo se conservan los registros REDO archivados para la instancia de base de dato rdsadmin.rdsadmin_util.show_configuration
.
El siguiente ejemplo muestra el tiempo de retención del registro.
set serveroutput on EXEC rdsadmin.rdsadmin_util.show_configuration;
La salida muestra el valor actual de archivelog retention hours
. La siguiente salida muestra que los registros REDO archivados se conservan durante 48 horas.
NAME:archivelog retention hours
VALUE:48
DESCRIPTION:ArchiveLog expiration specifies the duration in hours before archive/redo log files are automatically deleted.
Dado que los registros REDO archivados se conservan en la instancia de base de datos, asegúrese de que esta tenga suficiente almacenamiento asignado para los registros que se van a conservar. Para determinar cuánto espacio ha utilizado la instancia de base de datos en las últimas X horas, puede ejecutar la consulta siguiente, sustituyendo X por el número de horas.
SELECT SUM(BLOCKS * BLOCK_SIZE) bytes FROM V$ARCHIVED_LOG WHERE FIRST_TIME >= SYSDATE-(
X
/24) AND DEST_ID=1;
RDS for Oracle solo se genera registros de rehacer si el periodo de retención de copia de seguridad de la instancia de base de datos es mayor que cero. De forma predeterminada, el periodo de retención de copia de seguridad es mayor que cero.
Cuando expira el periodo de retención de registros archivados, RDS for Oracle elimina los registros de rehacer archivados de la instancia de base de datos. Para admitir la restauración de la instancia de base de datos en un momento determinado, Amazon RDS retiene los registros de rehacer archivados fuera de la instancia de base de datos en función del periodo de retención de copia de seguridad. Para modificar el periodo de retención de copia de seguridad, consulte Modificación de una instancia de base de datos de Amazon RDS.
nota
En algunos casos, podría utilizar JDBC en Linux para descargar registros REDO archivados y experimentar tiempos de latencia largos y restablecimientos de conexión. En tales casos, los problemas pueden estar causados por el ajuste predeterminado del generador de números aleatorios en su cliente Java. Recomendamos configurar los controladores JDBC para usar un generador de números aleatorio sin bloqueos.
Acceso a los registros de rehacer en línea y archivados
Es posible que desee obtener acceso a los archivos de registros REDO online y archivados para realizar tareas de minería de datos con herramientas externas como GoldenGate, Attunity, Informatica y otras. Para acceder a estos archivos, haga lo siguiente:
-
Cree objetos de directorio que proporcionen acceso de solo lectura a las rutas de acceso de los archivos físicos.
Utilice
rdsadmin.rdsadmin_master_util.create_archivelog_dir
yrdsadmin.rdsadmin_master_util.create_onlinelog_dir
. -
Lea los archivos mediante PL/SQL.
Puede leer los archivos mediante PL/SQL. Para obtener más información acerca de cómo leer archivos de los objetos de directorio, consulte Descripción de los archivos de un directorio de instancia de base de datos y Lectura de archivos de un directorio de instancia de base de datos.
El acceso a los registros de transacciones es compatible con las siguientes versiones:
-
Oracle Database 21c
-
Oracle Database 19c
-
Oracle Database 12c versión 2 (12.2.0.1)
-
Base de datos Oracle 12c versión 1 (12.1)
El siguiente código crea directorios que proporcionan acceso de solo lectura a los archivos de registros REDO online y archivados:
importante
Este código también revoca el privilegio DROP ANY DIRECTORY
.
EXEC rdsadmin.rdsadmin_master_util.create_archivelog_dir; EXEC rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
El siguiente código elimina los directorios de los archivos de registros REDO online y archivados.
EXEC rdsadmin.rdsadmin_master_util.drop_archivelog_dir; EXEC rdsadmin.rdsadmin_master_util.drop_onlinelog_dir;
El código siguiente concede y revoca el privilegio DROP ANY DIRECTORY
.
EXEC rdsadmin.rdsadmin_master_util.revoke_drop_any_directory; EXEC rdsadmin.rdsadmin_master_util.grant_drop_any_directory;
Descargue registros de rehacer archivados de Amazon S3
Puede descargar registros de rehacer archivados en su instancia de base de datos con el paquete rdsadmin.rdsadmin_archive_log_download
. Si los registros de rehacer archivados ya no están en su instancia de base de datos, es posible que desee descargarlos de nuevo desde Amazon S3. Después, puede extraer los registros o usarlos para recuperar o reproducir su base de datos.
nota
No se pueden descargar registros de recuperación de cambios archivados en instancias de réplica de lectura.
Descargue registros de rehacer archivados: pasos básicos
La disponibilidad de los registros de rehacer archivados depende de las siguientes políticas de retención:
-
Política de retención de copias de seguridad: los registros dentro de esta política están disponibles en Amazon S3. Los registros fuera de esta política se eliminan.
-
Política de retención de registros archivados: los registros dentro de esta política están disponibles en su instancia de base de datos. Los registros fuera de esta política se eliminan.
Si los registros no se encuentran en su instancia, pero están protegidos por el periodo de retención de copia de seguridad, puede usar rdsadmin.rdsadmin_archive_log_download
para descargarlos nuevamente. RDS for Oracle guarda los registros en el directorio de /rdsdbdata/log/arch
en la instancia de base de datos.
Para descargar registros de rehacer archivados de Amazon S3
-
Configure el período de retención para garantizar que los registros REDO archivados descargados se retengan durante el tiempo que los necesite. Asegúrese de
COMMIT
su cambio.RDS retiene los registros descargados de acuerdo con la política de retención de registros archivados, a partir del momento en que se descargaron los registros. Si quiere obtener información para configurar la política de retención, consulte Retención de los registros REDO archivados.
-
Espere hasta 5 minutos para que el cambio de la política de retención de registros archivados surta efecto.
-
Puede descargar registros de rehacer archivados de Amazon S3 mediante
rdsadmin.rdsadmin_archive_log_download
.Para obtener más información, consulte Descarga de un único registro de rehacer archivado y Descargue una serie de registros de rehacer archivados.
nota
RDS comprueba automáticamente el almacenamiento disponible antes de descargar. Si los registros solicitados consumen un alto porcentaje de espacio, recibirá una alerta.
-
Confirme que los registros se descargaron correctamente de Amazon S3.
Puede ver el estado de una tarea de descarga en un archivo bdump. Los archivos bdump tienen el nombre de ruta
/rdsdbdata/log/trace/dbtask-
. En el paso de descarga anterior, ejecute una sentenciatask-id
.logSELECT
que devuelva el ID de tarea en un tipo de datosVARCHAR2
. Para obtener más información, vea ejemplos similares en Monitoreo del estado de una transferencia de archivos.
Descarga de un único registro de rehacer archivado
Para descargar un único registro de rehacer archivado en el directorio de /rdsdbdata/log/arch
, utilice rdsadmin.rdsadmin_archive_log_download.download_log_with_seqnum
. Este procedimiento tiene los siguientes parámetros.
Nombre del parámetro | Tipo de datos | Valor predeterminado | Obligatorio | Descripción |
---|---|---|---|---|
|
número |
— |
Sí |
El número secuencial del registro de rehacer archivado. |
En el siguiente ejemplo, se descarga el registro con el número de secuencia 20.
SELECT rdsadmin.rdsadmin_archive_log_download.download_log_with_seqnum(seqnum => 20) AS TASK_ID FROM DUAL;
Descargue una serie de registros de rehacer archivados
Para descargar una serie de registros de rehacer archivados en el directorio de /rdsdbdata/log/arch
, utilice download_logs_in_seqnum_range
. La descarga está limitada a 300 registros por solicitud. El procedimiento download_logs_in_seqnum_range
tiene los siguientes parámetros.
Nombre del parámetro | Tipo de datos | Valor predeterminado | Obligatorio | Descripción |
---|---|---|---|---|
|
número |
— |
Sí |
El número secuencial inicial para la serie. |
|
número |
— |
Sí |
El número secuencial final para la serie. |
En el siguiente ejemplo, se descargan los registros de la secuencia 50 a 100.
SELECT rdsadmin.rdsadmin_archive_log_download.download_logs_in_seqnum_range(start_seq => 50, end_seq => 100) AS TASK_ID FROM DUAL;