

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\$1X\$1 pour les instances de base de données Oracle
<a name="Appendix.Oracle.CommonDBATasks.X-dollar"></a>

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\$1 pouvant être utilisées dans les vues RDS\$1X\$1
<a name="Appendix.Oracle.CommonDBATasks.list-allowed-X-dollar"></a>

Pour répertorier les tables X\$1 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\$1X\$1
<a name="Appendix.Oracle.CommonDBATasks.create-X-dollar"></a>

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 sur`TRUE`.  | 

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\$1X\$1
<a name="Appendix.Oracle.CommonDBATasks.list-created-X-dollar"></a>

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\$1X\$1
<a name="Appendix.Oracle.CommonDBATasks.drop-X-dollar"></a>

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