Realización de tareas diversas para instancias de base de datos de Oracle - Amazon Relational Database Service

Realización de tareas diversas para instancias de base de datos de Oracle

A continuación, puede encontrar cómo realizar varias tareas de DBA 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.

Creación y eliminación de directorios en el espacio de almacenamiento de datos principal

Utilice el procedimiento de Amazon RDS para crear directorio rdsadmin.rdsadmin_util.create_directory. Puede crear hasta 10 000 directorios, todos ellos en el espacio principal de almacenamiento de datos. Para eliminar directorios, utilice el procedimiento de Amazon RDS rdsadmin.rdsadmin_util.drop_directory.

Los procedimientos create_directory y drop_directory tienen el siguiente parámetro requerido.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_directory_name

VARCHAR2

El nombre del directorio.

En el siguiente ejemplo se crea un directorio denominado PRODUCT_DESCRIPTIONS.

EXEC rdsadmin.rdsadmin_util.create_directory(p_directory_name => 'product_descriptions');

El diccionario de datos almacena el nombre del directorio en mayúsculas. Es posible obtener un listado de los directorios consultando DBA_DIRECTORIES. El sistema elige automáticamente la ruta de acceso real del host. En el ejemplo siguiente se obtiene la ruta del directorio denominado PRODUCT_DESCRIPTIONS:

SELECT DIRECTORY_PATH FROM DBA_DIRECTORIES WHERE DIRECTORY_NAME='PRODUCT_DESCRIPTIONS'; DIRECTORY_PATH ---------------------------------------- /rdsdbdata/userdirs/01

El nombre de usuario maestro de la instancia de base de datos tiene privilegios de lectura y escritura en el nuevo directorio y puede conceder acceso a otros usuarios. Los privilegios de EXECUTE no están disponibles para directorios en una instancia de base de datos. Los directorios se crean en el espacio principal de almacenamiento de datos, y consumen espacio y ancho de banda de E/S.

En el ejemplo siguiente se elimina el directorio denominado PRODUCT_DESCRIPTIONS.

EXEC rdsadmin.rdsadmin_util.drop_directory(p_directory_name => 'product_descriptions');
nota

También puede eliminar un directorio mediante el comando de Oracle SQL DROP DIRECTORY.

Al eliminar un directorio, no se elimina su contenido. Debido a que el procedimiento rdsadmin.rdsadmin_util.create_directory puede reutilizar los nombres de ruta, los archivos de los directorios eliminados pueden aparecer en un directorio que se acaba de crear. Antes de eliminar un directorio, recomendamos que utilice UTL_FILE.FREMOVE para eliminar los archivos del directorio. Para más información, consulte FREMOVE Procedure en la documentación de Oracle.

Descripción de los archivos de un directorio de instancia de base de datos

Utilice el procedimiento de Amazon RDS para obtener un listado de los archivos de un directori rdsadmin.rds_file_util.listdir. No se admite este procedimiento en una réplica de Oracle. El procedimiento listdir tiene los siguientes parámetros.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_directory

varchar2

El nombre del directorio cuyo listado se desea obtener.

El siguiente ejemplo concede privilegios de lectura o escritura en el directorio PRODUCT_DESCRIPTIONS al usuario rdsadmin y, luego, enumera los archivos de este directorio.

GRANT READ,WRITE ON DIRECTORY PRODUCT_DESCRIPTIONS TO rdsadmin; SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'PRODUCT_DESCRIPTIONS'));

Lectura de archivos de un directorio de instancia de base de datos

Utilice el procedimiento de Amazon RDS para leer un archivo de text rdsadmin.rds_file_util.read_text_file. El procedimiento read_text_file tiene los siguientes parámetros.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_directory

varchar2

El nombre del directorio que contiene el archivo.

p_filename

varchar2

El nombre del archivo que se va a leer.

En el ejemplo siguiente se crea el archivo rice.txt en el directorio PRODUCT_DESCRIPTIONS.

declare fh sys.utl_file.file_type; begin fh := utl_file.fopen(location=>'PRODUCT_DESCRIPTIONS', filename=>'rice.txt', open_mode=>'w'); utl_file.put(file=>fh, buffer=>'AnyCompany brown rice, 15 lbs'); utl_file.fclose(file=>fh); end; /

En el siguiente ejemplo se lee el archivo rice.txt del directorio PRODUCT_DESCRIPTIONS.

SELECT * FROM TABLE (rdsadmin.rds_file_util.read_text_file( p_directory => 'PRODUCT_DESCRIPTIONS', p_filename => 'rice.txt'));

Acceso a los archivos de Opatch

Opatch es una utilidad de Oracle que permite la aplicación y la restauración de parches en el software de Oracle. El mecanismo de Oracle para determinar qué parches se han aplicado a una base de datos es el comando opatch lsinventory. Para abrir solicitudes de servicio para clientes de Bring Your Own License (BYOL), Oracle Support solicita el archivo lsinventory y a veces el archivo lsinventory_detail generado por Opatch.

Para ofrecer una experiencia de servicio administrado, Amazon RDS no proporciona acceso mediante shell a Opatch. En su lugar, el lsinventory-dbv.txt en el directorio BDUMP contiene la información del parche relacionada con la versión actual del motor. Cuando realiza una actualización menor o importante, Amazon RDS actualiza lsinventory-dbv.txt dentro de una hora después de aplicar el parche. Para verificar los parches aplicados, lealsinventory-dbv.txt. Esta acción es similar a ejecutar el comando opatch lsinventory.

nota

Los ejemplos de esta sección suponen que el directorio BDUMP se llama BDUMP. En una réplica de lectura, el nombre del directorio BDUMP es diferente. Para obtener información sobre cómo obtener el nombre BDUMP mediante una consulta V$DATABASE.DB_UNIQUE_NAME en una réplica de lectura, consulte Descripción de archivos.

Los archivos de inventario utilizan la convención de nomenclatura de Amazon RDS lsinventory-dbv.txt y lsinventory_detail-dbv.txt, donde dbv es el nombre completo de su versión de base de datos. El archivo lsinventory-dbv.txt está disponible en todas las versiones de base de datos. El correspondiente lsinventory_detail-dbv.txt está disponible en 19.0.0.0, ru-2020-01.rur-2020-01.r1 o versiones posteriores.

Por ejemplo, si su versión de base de datos es 19.0.0.0.ru-2021-07.rur-2021-07.r1, los archivos de inventario tienen los siguientes nombres.

lsinventory-19.0.0.0.ru-2021-07.rur-2021-07.r1.txt lsinventory_detail-19.0.0.0.ru-2021-07.rur-2021-07.r1.txt

Asegúrese de descargar los archivos que coinciden con la versión actual de su motor de base de datos.

Para descargar un archivo de inventario mediante la consola
  1. Abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. En el panel de navegación, seleccione Databases (Bases de datos).

  3. Seleccione el nombre de la instancia de base de datos que tiene el archivo de registro que desea visualizar.

  4. Seleccione la pestaña Logs & events (Registros y eventos).

  5. Desplácese hacia abajo hasta la sección Logs.

  6. En la sección Registros, busque lsinventory.

  7. Seleccione el archivo al que desea acceder y, a continuación, elija Descargar.

Para leer lsinventory-dbv.txt en un cliente SQL, puede utilizar una instrucción SELECT. Para esta técnica, utilice cualquiera de las siguientes funciones de rdsadmin: rdsadmin.rds_file_util.read_text_file o rdsadmin.tracefile_listing.

En la siguiente consulta de ejemplo, reemplace dbv por la versión de la base de datos de Oracle. Por ejemplo, es posible que su versión de base de datos sea 19.0.0.0.ru-2020-04.rur-2020-04.r1.

SELECT text FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'lsinventory-dbv.txt'));

Para leer lsinventory-dbv.txt en un cliente SQL, puede escribir un programa PL/SQL. Este programa utiliza utl_file para leer el archivo y dbms_output para imprimirlo. Estos son paquetes suministrados por Oracle.

En el siguiente programa de ejemplo, reemplace dbv por la versión de base de datos de Oracle. Por ejemplo, es posible que su versión de base de datos sea 19.0.0.0.ru-2020-04.rur-2020-04.r1.

SET SERVEROUTPUT ON DECLARE v_file SYS.UTL_FILE.FILE_TYPE; v_line VARCHAR2(1000); v_oracle_home_type VARCHAR2(1000); c_directory VARCHAR2(30) := 'BDUMP'; c_output_file VARCHAR2(30) := 'lsinventory-dbv.txt'; BEGIN v_file := SYS.UTL_FILE.FOPEN(c_directory, c_output_file, 'r'); LOOP BEGIN SYS.UTL_FILE.GET_LINE(v_file, v_line,1000); DBMS_OUTPUT.PUT_LINE(v_line); EXCEPTION WHEN no_data_found THEN EXIT; END; END LOOP; END; /

O consulta rdsadmin.tracefile_listing e incorpora la salida a un archivo. En el ejemplo siguiente se incorpora la salida a /tmp/tracefile.txt.

SPOOL /tmp/tracefile.txt SELECT * FROM rdsadmin.tracefile_listing WHERE FILENAME LIKE 'lsinventory%'; SPOOL OFF;

Administrar tareas del asesor

Oracle Database incluye varios asesores. Cada asesor soporta tareas automatizadas y manuales. Puede utilizar procedimientos en el paquete rdsadmin.rdsadmin_util para administrar algunas tareas del asesor.

Los procedimientos de tareas del asesor están disponibles en las siguientes versiones del motor:

  • Oracle Database 21c (21.0.0)

  • Versión 19.0.0.0.ru-2021-01.rur-2021-01.r1 Oracle Database 19c y versiones posteriores

    Para obtener más información, consulte la sección sobre la versión 19.0.0.0.ru-2021-01.rur-2021-01.r1 en las notas de la versión de Amazon RDS for Oracle.

Configuración de parámetros para tareas del asesor

A fin de establecer parámetros para algunas tareas del asesor, utilice el Amazon RDS procedimiento rdsadmin.rdsadmin_util.advisor_task_set_parameter. El procedimiento advisor_task_set_parameter tiene los siguientes parámetros.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_task_name

varchar2

El nombre de la tarea del asesor cuyos parámetros desea cambiar. Los siguientes valores son válidos:

  • AUTO_STATS_ADVISOR_TASK

  • INDIVIDUAL_STATS_ADVISOR_TASK

  • SYS_AUTO_SPM_EVOLVE_TASK

  • SYS_AUTO_SQL_TUNING_TASK

p_parameter

varchar2

El nombre del parámetro de la tarea. A fin de buscar parámetros válidos para una tarea del asesor, ejecute la siguiente consulta. Sustituya p_task_name con un valor válido para p_task_name:

COL PARAMETER_NAME FORMAT a30 COL PARAMETER_VALUE FORMAT a30 SELECT PARAMETER_NAME, PARAMETER_VALUE FROM DBA_ADVISOR_PARAMETERS WHERE TASK_NAME='p_task_name' AND PARAMETER_VALUE != 'UNUSED' ORDER BY PARAMETER_NAME;

p_value

varchar2

El valor de un parámetro de tarea. Para buscar valores válidos para los parámetros de tarea, ejecute la siguiente consulta. Sustituya p_task_name con un valor válido para p_task_name:

COL PARAMETER_NAME FORMAT a30 COL PARAMETER_VALUE FORMAT a30 SELECT PARAMETER_NAME, PARAMETER_VALUE FROM DBA_ADVISOR_PARAMETERS WHERE TASK_NAME='p_task_name' AND PARAMETER_VALUE != 'UNUSED' ORDER BY PARAMETER_NAME;

El siguiente programa PL/SQL establece ACCEPT_PLANS a FALSE para SYS_AUTO_SPM_EVOLVE_TASK. La tarea automatizada de administración de planes SQL verifica los planes y genera un informe de sus conclusiones, pero no evoluciona los planes automáticamente. Puede utilizar un informe para identificar nuevas líneas base de plan SQL y aceptarlas manualmente.

BEGIN rdsadmin.rdsadmin_util.advisor_task_set_parameter( p_task_name => 'SYS_AUTO_SPM_EVOLVE_TASK', p_parameter => 'ACCEPT_PLANS', p_value => 'FALSE'); END;

El siguiente programa PL/SQL establece EXECUTION_DAYS_TO_EXPIRE a 10 para AUTO_STATS_ADVISOR_TASK. La tarea predefinida AUTO_STATS_ADVISOR_TASK se ejecuta automáticamente en el periodo de mantenimiento una vez al día. En el ejemplo se establece el periodo de retención para la ejecución de la tarea en 10 días.

BEGIN rdsadmin.rdsadmin_util.advisor_task_set_parameter( p_task_name => 'AUTO_STATS_ADVISOR_TASK', p_parameter => 'EXECUTION_DAYS_TO_EXPIRE', p_value => '10'); END;

Desactivación de AUTO_STATS_ADVISOR_TASK

Para deshabilitar AUTO_STATS_ADVISOR_TASK, utilice el Amazon RDS procedimiento rdsadmin.rdsadmin_util.advisor_task_drop. El procedimiento advisor_task_drop acepta el siguiente parámetro.

Nombre del parámetro Tipo de datos Valor predeterminado Obligatorio Descripción

p_task_name

varchar2

El nombre de la tarea del asesor que se va a deshabilitar. El único valor válido es AUTO_STATS_ADVISOR_TASK.

El siguiente comando se coloca AUTO_STATS_ADVISOR_TASK.

EXEC rdsadmin.rdsadmin_util.advisor_task_drop('AUTO_STATS_ADVISOR_TASK')

Puede volver a habilitar AUTO_STATS_ADVISOR_TASK con rdsadmin.rdsadmin_util.dbms_stats_init.

Volver a habilitar AUTO_STATS_ADVISOR_TASK

Para volver a habilitar AUTO_STATS_ADVISOR_TASK, utilice el Amazon RDS procedimiento rdsadmin.rdsadmin_util.dbms_stats_init. El procedimiento dbms_stats_init no acepta parámetros.

El siguiente comando vuelve a habilitar AUTO_STATS_ADVISOR_TASK.

EXEC rdsadmin.rdsadmin_util.dbms_stats_init()