Realización de tareas comunes relacionadas con el registro para instancias de base de datos Oracle - Amazon Relational Database Service

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.

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 en la documentación de Oracle.

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 Descripción

p_enable

booleano

true

No

Establezca este parámetro en true para poner la base de datos en modo force logging, y en false para quitar la base de datos del modo force logging.

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 en la documentación de Oracle.

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

p_action

varchar2

'ADD' para activar el modo supplemental logging, 'DROP' para desactivarlo.

p_type

varchar2

null

No

El tipo de supplemental logging. Los valores válidos son: 'ALL', 'FOREIGN KEY', 'PRIMARY KEY', 'UNIQUE' o PROCEDURAL.

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

bytes

positivo

null

No

El tamaño del archivo de registro en bytes.

p_size

varchar2

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

grp

positivo

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 en la documentación de Oracle.

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

name

varchar

El nombre de la configuración que se debe actualizar.

value

varchar

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:

  1. 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 y rdsadmin.rdsadmin_master_util.create_onlinelog_dir.

  2. 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
  1. 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.

  2. Espere hasta 5 minutos para que el cambio de la política de retención de registros archivados surta efecto.

  3. 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.

  4. 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-task-id.log. En el paso de descarga anterior, ejecute una sentencia SELECT que devuelva el ID de tarea en un tipo de datos VARCHAR2. 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

seqnum

número

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

start_seq

número

El número secuencial inicial para la serie.

end_seq

número

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;