Administración de vistas RDS_X$ para instancias de bases de datos de Oracle
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 las siguientes versiones del motor de base de datos:
-
21.0.0.0.ru-2023-10.rur-2023-10.r1
y versiones de Oracle Database 21c posteriores -
19.0.0.0.ru-2023-10.rur-2023-10.r1
y versiones de Oracle Database 19c posteriores
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$ aptas para su uso en las vistas RDS_X$
Para enumerar tablas X$ 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_X$
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 |
---|---|---|---|---|
|
varchar2 |
Nulo |
Sí |
Un nombre de tabla |
|
Booleano |
FALSE |
No |
Un valor que indica si se debe forzar la creación de una vista |
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_X$
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_X$
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 |
---|---|---|---|---|
|
varchar2 |
Nulo |
Sí |
Un nombre de tabla fija |
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