

# Realización de tareas diversas para instancias de base de datos de Oracle
<a name="Appendix.Oracle.CommonDBATasks.Misc"></a>

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. 

**Topics**
+ [Creación y eliminación de directorios en el espacio de almacenamiento de datos principal](#Appendix.Oracle.CommonDBATasks.NewDirectories)
+ [Descripción de los archivos de un directorio de instancia de base de datos](#Appendix.Oracle.CommonDBATasks.ListDirectories)
+ [Lectura de archivos de un directorio de instancia de base de datos](#Appendix.Oracle.CommonDBATasks.ReadingFiles)
+ [Acceso a los archivos de Opatch](#Appendix.Oracle.CommonDBATasks.accessing-opatch-files)
+ [Administrar tareas del asesor](#Appendix.Oracle.CommonDBATasks.managing-advisor-tasks)
+ [Transporte de espacios de tabla](rdsadmin_transport_util.md)

## Creación y eliminación de directorios en el espacio de almacenamiento de datos principal
<a name="Appendix.Oracle.CommonDBATasks.NewDirectories"></a>

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 | — | 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](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS70924) en la documentación de Oracle.

## Descripción de los archivos de un directorio de instancia de base de datos
<a name="Appendix.Oracle.CommonDBATasks.ListDirectories"></a>

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 | — | 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
<a name="Appendix.Oracle.CommonDBATasks.ReadingFiles"></a>

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 | — | Sí | El nombre del directorio que contiene el archivo. | 
| `p_filename` | 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
<a name="Appendix.Oracle.CommonDBATasks.accessing-opatch-files"></a>

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, lea `lsinventory-{{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](USER_LogAccess.Concepts.Oracle.md#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.ViewingBackgroundDumpDest).

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.

### Consola
<a name="Appendix.Oracle.CommonDBATasks.accessing-opatch-files.console"></a>

**Para descargar un archivo de inventario mediante la consola**

1. Abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

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

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

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

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

1. En la sección **Registros**, busque `lsinventory`.

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

### SQL
<a name="Appendix.Oracle.CommonDBATasks.accessing-opatch-files.sql"></a>

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'));
```

### PL/SQL
<a name="Appendix.Oracle.CommonDBATasks.accessing-opatch-files.plsql"></a>

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
<a name="Appendix.Oracle.CommonDBATasks.managing-advisor-tasks"></a>

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](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html#oracle-version-RU-RUR.19.0.0.0.ru-2021-01.rur-2021-01.r1) en las *notas de la versión de Amazon RDS for Oracle*.

**Topics**
+ [Configuración de parámetros para tareas del asesor](#Appendix.Oracle.CommonDBATasks.setting-task-parameters)
+ [Desactivación de AUTO\_STATS\_ADVISOR\_TASK](#Appendix.Oracle.CommonDBATasks.dropping-advisor-task)
+ [Volver a habilitar AUTO\_STATS\_ADVISOR\_TASK](#Appendix.Oracle.CommonDBATasks.recreating-advisor-task)

### Configuración de parámetros para tareas del asesor
<a name="Appendix.Oracle.CommonDBATasks.setting-task-parameters"></a>

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 | — | Sí | El nombre de la tarea del asesor cuyos parámetros desea cambiar. Los siguientes valores son válidos:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.Misc.html) | 
| `p_parameter` | 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 {{p\_task\_name}} con un valor válido para `p_task_name`:<pre>COL PARAMETER_NAME FORMAT a30<br />COL PARAMETER_VALUE FORMAT a30<br />SELECT PARAMETER_NAME, PARAMETER_VALUE<br />FROM DBA_ADVISOR_PARAMETERS<br />WHERE TASK_NAME='{{p_task_name}}'<br />AND PARAMETER_VALUE != 'UNUSED'<br />ORDER BY PARAMETER_NAME;</pre> | 
| `p_value` | 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 {{p\_task\_name}} con un valor válido para `p_task_name`:<pre>COL PARAMETER_NAME FORMAT a30<br />COL PARAMETER_VALUE FORMAT a30<br />SELECT PARAMETER_NAME, PARAMETER_VALUE<br />FROM DBA_ADVISOR_PARAMETERS<br />WHERE TASK_NAME='{{p_task_name}}'<br />AND PARAMETER_VALUE != 'UNUSED'<br />ORDER BY PARAMETER_NAME;</pre> | 

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
<a name="Appendix.Oracle.CommonDBATasks.dropping-advisor-task"></a>

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 | — | Sí | 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
<a name="Appendix.Oracle.CommonDBATasks.recreating-advisor-task"></a>

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()
```