

# Administración de vistas RDS\$1X\$1 para instancias de bases de datos de Oracle
<a name="Appendix.Oracle.CommonDBATasks.X-dollar"></a>

Puede que necesite acceder a las tablas fijas `SYS.X$`, a las que solo se puede acceder mediante `SYS`. Para crear vistas `SYS.RDS_X$` en las tablas `X$` aptas, utilice los procedimientos del paquete `rdsadmin.rdsadmin_util`. A su usuario maestro se le concede automáticamente el privilegio `SELECT … WITH GRANT OPTION` sobre las vistas `RDS_X$`. 

Los procedimientos `rdsadmin.rdsadmin_util` están disponibles en los siguientes casos:
+ Instancias de bases de datos existentes que nunca se han actualizado y utilizan las siguientes versiones:
  + `21.0.0.0.ru-2023-10.rur-2023-10.r1` y versiones de 21c posteriores
  + `19.0.0.0.ru-2023-10.rur-2023-10.r1` y versiones de 19c posteriores
+ Cualquier instancia de base de datos nueva que cree
+ Cualquier instancia de base de datos existente que haya actualizado

**importante**  
Internamente, el paquete `rdsadmin.rdsadmin_util` crea vistas en las tablas `X$`. Las tablas `X$` son objetos internos del sistema que no se describen en la documentación de Oracle Database. Se recomienda probar vistas específicas en la base de datos que utilice fuera de producción y que solo cree vistas en la base de datos de producción sirviéndose de la orientación de Oracle Support.

## Enumeración de tablas fijas X\$1 aptas para su uso en las vistas RDS\$1X\$1
<a name="Appendix.Oracle.CommonDBATasks.list-allowed-X-dollar"></a>

Para enumerar tablas X\$1 aptas para su uso en vistas `RDS_X$`, utilice el procedimiento de RDS `rdsadmin.rdsadmin_util.list_allowed_sys_x$_views`. Este procedimiento no acepta parámetros. En las siguientes instrucciones se enumeran todas las tablas `X$` aptas (se incluye un ejemplo de resultados).

```
SQL> SET SERVEROUTPUT ON
SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_allowed_sys_x$_views);

'X$BH'
'X$K2GTE'
'X$KCBWBPD'
'X$KCBWDS'
'X$KGLLK'
'X$KGLOB'
'X$KGLPN'
'X$KSLHOT'
'X$KSMSP'
'X$KSPPCV'
'X$KSPPI'
'X$KSPPSV'
'X$KSQEQ'
'X$KSQRS'
'X$KTUXE'
'X$KQRFP'
```

La lista de tablas `X$` aptas puede cambiar con el tiempo. Para asegurarse de que su lista de tablas fijas `X$` aptas esté actualizada, vuelva a ejecutar `list_allowed_sys_x$_views` periódicamente.

## Creación de vistas SYS.RDS\$1X\$1
<a name="Appendix.Oracle.CommonDBATasks.create-X-dollar"></a>

Para crear una vista `RDS_X$` en una tabla `X$` apta, utilice el procedimiento de RDS `rdsadmin.rdsadmin_util.create_sys_x$_view`. Solo puede crear vistas para las tablas que figuren en la salida de `rdsadmin.rdsadmin_util.list_allowed_sys_x$_views`. El procedimiento `create_sys_x$_view` acepta los siguientes parámetros.


****  

| Nombre del parámetro | Tipo de datos | Valor predeterminado | Obligatorio | Descripción | 
| --- | --- | --- | --- | --- | 
|  `p_x$_tbl`  |  varchar2  |  Nulo  |  Sí  |  Un nombre de tabla `X$` válido. El valor debe ser una de las tablas `X$` notificadas por `list_allowed_sys_x$_views`.  | 
|  `p_force_creation`  |  Booleano  | FALSE |  No  |  Un valor que indica si se debe forzar la creación de una vista `RDS_X$` que ya exista para una tabla `X$`. De forma predeterminada, RDS no creará una vista si ya existe. Para forzar la creación, defina este parámetro como `TRUE`.  | 

En el siguiente ejemplo se crea una vista `SYS.RDS_X$KGLOB` de la tabla `X$KGLOB`. El formato del nombre de la vista es `RDS_X$tablename`.

```
SQL> SET SERVEROUTPUT ON
SQL> EXEC rdsadmin.rdsadmin_util.create_sys_x$_view('X$KGLOB');

PL/SQL procedure successfully completed.
```

La siguiente consulta del diccionario de datos muestra la vista `SYS.RDS_X$KGLOB` y su estado. A su usuario maestro se le concede automáticamente el privilegio `SELECT ... WITH GRANT OPTION` sobre esta vista.

```
SQL> SET SERVEROUTPUT ON
SQL> COL OWNER FORMAT A30 
SQL> COL OBJECT_NAME FORMAT A30
SQL> COL STATUS FORMAT A30
SQL> SET LINESIZE 200
SQL> SELECT OWNER, OBJECT_NAME, STATUS 
FROM DBA_OBJECTS 
WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB';

OWNER                          OBJECT_NAME                    STATUS
------------------------------ ------------------------------ ------------------------------
SYS                            RDS_X$KGLOB                    VALID
```

**importante**  
No se garantiza que las tablas `X$` permanezcan iguales antes y después de una actualización. RDS para Oracle elimina y vuelve a crear las vistas `RDS_X$` de las tablas `X$` durante una actualización del motor. A continuación, concede el privilegio `SELECT ... WITH GRANT OPTION` al usuario maestro. Tras una actualización, conceda los privilegios necesarios a los usuarios de la base de datos en las vistas `RDS_X$` correspondientes.

## Enumeración de vistas SYS.RDS\$1X\$1
<a name="Appendix.Oracle.CommonDBATasks.list-created-X-dollar"></a>

Para enumerar las vistas `RDS_X$` existentes, utilice el procedimiento de RDS `rdsadmin.rdsadmin_util.list_created_sys_x$_views`. El procedimiento muestra solo las vistas que se crearon mediante el procedimiento `create_sys_x$_view`. En el siguiente ejemplo, se enumeran las tablas `X$` que tienen las vistas `RDS_X$` correspondientes (se incluye un ejemplo de salida).

```
SQL> SET SERVEROUTPUT ON
SQL> COL XD_TBL_NAME FORMAT A30
SQL> COL STATUS FORMAT A30
SQL> SET LINESIZE 200
SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_created_sys_x$_views);

XD_TBL_NAME                    STATUS
------------------------------ ------------------------------
X$BH                           VALID
X$K2GTE                        VALID
X$KCBWBPD                      VALID

3 rows selected.
```

## Eliminación de vistas RDS\$1X\$1
<a name="Appendix.Oracle.CommonDBATasks.drop-X-dollar"></a>

Para eliminar una vista `SYS.RDS_X$`, utilice el procedimiento de RDS `rdsadmin.rdsadmin_util.drop_sys_x$_view`. Solo puede eliminar vistas que figuren en la salida de `rdsadmin.rdsadmin_util.list_allowed_sys_x$_views`. El procedimiento `drop_sys_x$_view` acepta el siguiente parámetro.


****  

| Nombre del parámetro | Tipo de datos | Valor predeterminado | Obligatorio | Descripción | 
| --- | --- | --- | --- | --- | 
|  `p_x$_tbl`  |  varchar2  |  Nulo  |  Sí  |  Un nombre de tabla fija `X$` válido. El valor debe ser una de las tablas fijas `X$` notificadas por `list_created_sys_x$_views`.  | 

En el siguiente ejemplo se elimina una vista `RDS_X$KGLOB`, que se creó en la tabla `X$KGLOB`.

```
SQL> SET SERVEROUTPUT ON
SQL> EXEC rdsadmin.rdsadmin_util.drop_sys_x$_view('X$KGLOB');

PL/SQL procedure successfully completed.
```

El siguiente ejemplo muestra que la vista `SYS.RDS_X$KGLOB` se ha eliminado (se incluye un ejemplo de salida).

```
SQL> SET SERVEROUTPUT ON
SQL> COL OWNER FORMAT A30 
SQL> COL OBJECT_NAME FORMAT A30
SQL> COL STATUS FORMAT A30
SQL> SET LINESIZE 200
SQL> SELECT OWNER, OBJECT_NAME, STATUS 
FROM DBA_OBJECTS 
WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB';

no rows selected
```