Gerenciar visualizações RDS_X$ para instâncias de banco de dados Oracle
Talvez seja necessário acessar tabelas SYS.X$
fixas, que só podem ser acessadas por SYS
. Para criar visualizações SYS.RDS_X$
em tabelas X$
elegíveis, use os procedimentos no pacote rdsadmin.rdsadmin_util
. O usuário principal recebe automaticamente o privilégio SELECT … WITH GRANT OPTION
nas visualizações RDS_X$
.
Os procedimentos rdsadmin.rdsadmin_util
estão disponíveis nas seguintes versões do banco de dados:
-
21.0.0.0.ru-2023-10.rur-2023-10.r1
e versões posteriores do Oracle Database 21c -
19.0.0.0.ru-2023-10.rur-2023-10.r1
e versões posteriores do Oracle Database 19c
Importante
Internamente, o pacote rdsadmin.rdsadmin_util
cria visualizações em tabelas X$
. As tabelas X$
são objetos internos do sistema que não estão descritos na documentação do Oracle Database. Recomendamos testar visualizações específicas no banco de dados que não é de produção e somente criar visualizações no banco de dados de produção com a orientação do Oracle Support.
Listar tabelas fixas X$ elegíveis para uso em visualizações RDS_X$
Para listar tabelas X$ que são elegíveis para uso em visualizações RDS_X$
, use o procedimento rdsadmin.rdsadmin_util.list_allowed_sys_x$_views
do RDS. Este procedimento não aceita parâmetros. As declarações a seguir listam todas as tabelas X$
elegíveis (exemplo de saída incluído).
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'
A lista das tabelas X$
elegíveis pode mudar ao longo do tempo. Para garantir que a lista de tabelas fixas X$
elegíveis esteja atualizada, execute list_allowed_sys_x$_views
periodicamente.
Criar visualizações SYS.RDS_X$
Para criar uma visualização RDS_X$
em uma tabela X$
elegível, use o procedimento rdsadmin.rdsadmin_util.create_sys_x$_view
do RDS. É possível criar visualizações apenas para as tabelas listadas na saída de rdsadmin.rdsadmin_util.list_allowed_sys_x$_views
. O procedimento create_sys_x$_view
tem os parâmetros a seguir.
Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
|
varchar2 |
Null |
Sim |
O nome de uma tabela |
|
Booleano |
FALSE |
Não |
Um valor que indica se é necessário forçar a criação de uma visualização |
O exemplo a seguir cria a visualização SYS.RDS_X$KGLOB
na tabela X$KGLOB
. O formato do nome da visualização é RDS_
.X$tablename
SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.create_sys_x$_view('X$KGLOB'); PL/SQL procedure successfully completed.
A consulta do dicionário de dados a seguir lista a visualização SYS.RDS_X$KGLOB
e mostra o status. O usuário principal recebe automaticamente o privilégio SELECT ... WITH GRANT OPTION
nessa visualização.
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
Não é garantido que as tabelas X$
permaneçam as mesmas antes e depois de uma atualização. O RDS para Oracle descarta e recria as visualizações RDS_X$
nas tabelas X$
durante uma atualização do mecanismo. Depois, ele concede o privilégio SELECT
... WITH GRANT OPTION
ao usuário principal. Depois de uma atualização, conceda privilégios aos usuários do banco de dados conforme necessário nas visualizações RDS_X$
correspondentes.
Listar visualizações SYS.RDS_X$
Para listar as visualizações RDS_X$
existentes, use o procedimento rdsadmin.rdsadmin_util.list_created_sys_x$_views
do RDS. O procedimento lista somente as visualizações que foram criadas pelo procedimento create_sys_x$_view
. O exemplo a seguir lista as tabelas X$
que têm visualizações RDS_X$
correspondentes (exemplo de saída incluído).
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.
Descartar visualizações RDS_X$
Para descartar uma visualização SYS.RDS_X$
, use o procedimento rdsadmin.rdsadmin_util.drop_sys_x$_view
do RDS. É possível descartar apenas as visualizações na saída de rdsadmin.rdsadmin_util.list_allowed_sys_x$_views
. O procedimento drop_sys_x$_view
aceita o parâmetro a seguir.
Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição |
---|---|---|---|---|
|
varchar2 |
Null |
Sim |
O nome de uma tabela |
O exemplo a seguir cria a visualização RDS_X$KGLOB
criada na tabela X$KGLOB
.
SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.drop_sys_x$_view('X$KGLOB'); PL/SQL procedure successfully completed.
O exemplo a seguir mostra que a visualização SYS.RDS_X$KGLOB
foi descartada (exemplo de saída incluído).
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