Gestion des vues RDS_X$ pour les instances de base de données Oracle - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Gestion des vues RDS_X$ pour les instances de base de données Oracle

Vous devrez peut-être accéder à des tables SYS.X$ fixes, qui ne sont accessibles que par SYS. Pour créer des vues SYS.RDS_X$ sur les tables X$ éligibles, utilisez les procédures du package rdsadmin.rdsadmin_util. Votre utilisateur principal se voit automatiquement octroyer le privilège SELECT … WITH GRANT OPTION sur les vues RDS_X$.

Les procédures rdsadmin.rdsadmin_util sont disponibles dans les cas suivants :

  • Les instances de base de données existantes qui n’ont jamais été mises à niveau et qui utilisent les versions suivantes :

    • 21.0.0.0.ru-2023-10.rur-2023-10.r1 versions 21c et ultérieures

    • 19.0.0.0.ru-2023-10.rur-2023-10.r1 versions 19c et ultérieures

  • Toute nouvelle instance de base de données que vous créez

  • Toute instance de base de données existante que vous avez mise à niveau

Important

En interne, le package rdsadmin.rdsadmin_util crée des vues sur les tables X$. Les tables X$ sont des objets système internes qui ne sont pas décrits dans la documentation Oracle Database. Nous vous recommandons de tester des vues spécifiques dans votre base de données hors production, et de ne créer des vues dans votre base de données de production que sous la direction du support Oracle.

Liste des tables fixes X$ pouvant être utilisées dans les vues RDS_X$

Pour répertorier les tables X$ pouvant être utilisées dans les vues RDS_X$, utilisez la procédure RDS rdsadmin.rdsadmin_util.list_allowed_sys_x$_views. Cette procédure n’accepte aucun paramètre. Les déclarations suivantes répertorient toutes les tables X$ éligibles (échantillon de sortie inclus).

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 liste des tables X$ éligibles peut changer au fil du temps. Pour vous assurer que votre liste de tables fixes X$ éligibles est à jour, réexécutez list_allowed_sys_x$_views régulièrement.

Création de vues SYS.RDS_X$

Pour créer une vue RDS_X$ sur une table X$ éligible, utilisez la procédure RDS rdsadmin.rdsadmin_util.create_sys_x$_view. Vous ne pouvez créer des vues que pour les tables répertoriées dans la sortie de rdsadmin.rdsadmin_util.list_allowed_sys_x$_views. La procédure create_sys_x$_view accepte les paramètres suivants.

Nom du paramètre Type de données Par défaut Obligatoire Description

p_x$_tbl

varchar2

Null

Oui

Nom d’espace de table X$ valide. La valeur doit correspondre à l’une des tables X$ signalées par list_allowed_sys_x$_views.

p_force_creation

Booléen

FALSE

Non

Une valeur indiquant s’il faut forcer la création d’une vue RDS_X$ qui existe déjà pour une table X$. Par défaut, RDS ne crée pas de vue si elle existe déjà. Pour forcer la création, définissez ce paramètre surTRUE.

L’exemple suivant crée une vue SYS.RDS_X$KGLOB à partir de la table X$KGLOB. Le format du nom de vue est RDS_X$tablename.

SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.create_sys_x$_view('X$KGLOB'); PL/SQL procedure successfully completed.

La requête de dictionnaire de données suivante répertorie la vue SYS.RDS_X$KGLOB et indique son état. Votre utilisateur principal se voit automatiquement octroyer le privilège SELECT ... WITH GRANT OPTION sur cette vue.

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
Important

Il n’est pas garanti que les tables X$ resteront les mêmes avant et après une mise à niveau. RDS for Oracle supprime et recrée les vues RDS_X$ sur les tables X$ lors d’une mise à niveau du moteur. Il accorde ensuite le privilège SELECT ... WITH GRANT OPTION à l’utilisateur principal. Après une mise à niveau, accordez des privilèges aux utilisateurs de la base de données selon les besoins sur les vues RDS_X$ correspondantes.

Création d’une liste de vues SYS.RDS_X$

Pour répertorier les vues RDS_X$ existantes, utilisez la procédure RDS rdsadmin.rdsadmin_util.list_created_sys_x$_views. La procédure répertorie uniquement les vues créées par la procédure create_sys_x$_view. L’exemple suivant répertorie les tables X$ associées aux vues RDS_X$ correspondantes (exemple de sortie inclus).

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.

Suppression des vues RDS_X$

Pour supprimer une vue SYS.RDS_X$, utilisez la procédure RDS rdsadmin.rdsadmin_util.drop_sys_x$_view. Vous ne pouvez supprimer que les événements répertoriés dans la sortie de rdsadmin.rdsadmin_util.list_allowed_sys_x$_views. La procédure drop_sys_x$_view accepte les paramètres suivants.

Nom du paramètre Type de données Par défaut Obligatoire Description

p_x$_tbl

varchar2

Null

Oui

Nom de table fixe X$ valide. La valeur doit correspondre à l’une des tables fixes X$ signalées par list_created_sys_x$_views.

L’exemple suivant supprime la vue RDS_X$KGLOB créée à partir de la table X$KGLOB.

SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.drop_sys_x$_view('X$KGLOB'); PL/SQL procedure successfully completed.

L’exemple suivant montre que la vue SYS.RDS_X$KGLOB a été supprimée (exemple de sortie inclus).

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