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.
Temas
- Creación y eliminación de directorios en el espacio de almacenamiento de datos principal
- Descripción de los archivos de un directorio de instancia de base de datos
- Lectura de archivos de un directorio de instancia de base de datos
- Acceso a los archivos de Opatch
- Administrar tareas del asesor
- Transporte de espacios de tabla
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 |
---|---|---|---|---|
|
VARCHAR2 |
— |
Sí |
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
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 |
---|---|---|---|---|
|
varchar2 |
— |
Sí |
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 |
---|---|---|---|---|
|
varchar2 |
— |
Sí |
El nombre del directorio que contiene el archivo. |
|
varchar2 |
— |
Sí |
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-
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 dbv
.txtlsinventory-
dentro de una hora después de aplicar el parche. Para verificar los parches aplicados, leadbv
.txtlsinventory-
. Esta acción es similar a ejecutar el comando dbv
.txtopatch 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-
y dbv
.txtlsinventory_detail-
, donde dbv
.txtdbv
es el nombre completo de su versión de base de datos. El archivo lsinventory-
está disponible en todas las versiones de base de datos. El correspondiente dbv
.txtlsinventory_detail-
está disponible en 19.0.0.0, ru-2020-01.rur-2020-01.r1 o versiones posteriores.dbv
.txt
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
Abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/
. -
En el panel de navegación, seleccione Databases (Bases de datos).
-
Seleccione el nombre de la instancia de base de datos que tiene el archivo de registro que desea visualizar.
-
Seleccione la pestaña Logs & events (Registros y eventos).
-
Desplácese hacia abajo hasta la sección Logs.
-
En la sección Registros, busque
lsinventory
. -
Seleccione el archivo al que desea acceder y, a continuación, elija Descargar.
Para leer lsinventory-
en un cliente SQL, puede utilizar una instrucción dbv
.txtSELECT
. 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-
en un cliente SQL, puede escribir un programa PL/SQL. Este programa utiliza dbv
.txtutl_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.
Temas
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 |
---|---|---|---|---|
|
varchar2 |
— |
Sí |
El nombre de la tarea del asesor cuyos parámetros desea cambiar. Los siguientes valores son válidos:
|
|
varchar2 |
— |
Sí |
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
|
|
varchar2 |
— |
Sí |
El valor de un parámetro de tarea. Para buscar valores válidos para los parámetros de tarea, ejecute la siguiente consulta. Sustituya
|
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 |
---|---|---|---|---|
|
varchar2 |
— |
Sí |
El nombre de la tarea del asesor que se va a deshabilitar. El único valor válido es |
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()