Dictionnaire de données et vues dynamiques des performances
L'ensemble central de tables et de vues de référence en lecture seule de chaque base de données Oracle est appelé collectivement dictionnaire de données. Les vues de performances dynamiques sont des vues spéciales qui sont continuellement mises à jour lorsqu'une base de données est ouverte et en cours d'utilisation.
-
Présentation du dictionnaire de données Une partie importante d'une base de données Oracle est son dictionnaire de données, qui est un ensemble de tables en lecture seule fournissant des métadonnées administratives sur la base de données.
-
Présentation des vues de performances dynamiques Tout au long de son opération, Oracle AI Database gère un ensemble de tables virtuelles qui enregistrent l'activité de la base de données en cours.
-
Métadonnées d'objet de base de données Le package
DBMS_METADATAet la fonctionDBMS_DEVELOPER.GET_METADATAfournissent des interfaces permettant d'extraire des définitions complètes des objets de base de données.
Présentation du dictionnaire de données
Une partie importante d'une base de données Oracle est son dictionnaire de données, qui est un ensemble de tables en lecture seule qui fournit des métadonnées administratives sur la base de données.
-
Objet du dictionnaire de données Le dictionnaire de données contient des métadonnées décrivant le contenu de la base de données.
-
Composants du dictionnaire de données Le dictionnaire de données se compose de tables et de vues de base.
-
Fonctionnement du dictionnaire de données Le compte utilisateur Oracle AI Database
SYSpossède toutes les tables de base et les vues accessibles par l'utilisateur du dictionnaire de données. -
Stockage du dictionnaire de données Le dictionnaire de données qui stocke les métadonnées de la base de données Conteneur dans son ensemble est stocké uniquement dans les tablespaces système.
Finalité du dictionnaire de données
Le dictionnaire de données contient des métadonnées décrivant le contenu de la base.
Par exemple, le dictionnaire de données contient les informations suivantes :
-
Définitions de chaque objet de schéma dans la base de données, y compris les valeurs par défaut des colonnes et les informations de contrainte d'intégrité
-
La quantité d'espace allouée et actuellement utilisée par les objets de schéma
-
Noms des utilisateurs, privilèges et rôles Oracle AI Database accordés aux utilisateurs, et informations d'audit relatives aux utilisateurs
-
Gestion des données Le dictionnaire de données est un élément central de la gestion des données pour chaque base de données Oracle.
-
Séparation du dictionnaire de données dans une base Conteneur Dans une base Conteneur, les métadonnées du dictionnaire de données sont réparties entre la racine de la base Conteneur et les bases pluggables. Du point de vue de l'utilisateur et de l'application, le dictionnaire de données de chaque conteneur d'une base de données Conteneur est distinct.
Gestion des données
Le dictionnaire de données est un élément central de la gestion des données pour chaque base de données Oracle.
Par exemple, la base de données effectue les actions suivantes :
-
Accéder au dictionnaire de données pour rechercher des informations sur les utilisateurs, les objets de schéma et les structures de stockage
-
Modifie le dictionnaire de données chaque fois qu'une instruction LDD est émise.
Oracle AI Database stockant les données du dictionnaire de données dans des tables, tout comme les autres données, les utilisateurs peuvent interroger les données avec SQL. Par exemple, les utilisateurs peuvent exécuter des instructions SELECT pour déterminer leurs privilèges, quelles tables existent dans leur schéma, quelles colonnes figurent dans ces tables, si des index sont créés sur ces colonnes, etc.
Voir aussi :
-
Guide de sécurité Oracle AI Database pour en savoir plus sur les comptes utilisateur
Séparation du dictionnaire de données dans une base Conteneur
Dans une base Conteneur, les métadonnées du dictionnaire de données sont réparties entre la racine de la base Conteneur et les bases pluggables. Du point de vue de l'utilisateur et de l'application, le dictionnaire de données de chaque conteneur d'une base de données Conteneur est distinct.
Dans une base de données Conteneur nouvellement créée qui ne contient pas encore de données utilisateur, le dictionnaire de données de la racine de la base de données Conteneur contient uniquement des métadonnées système. Par exemple, la table TAB$ contient des lignes qui décrivent uniquement les tables fournies par Oracle, par exemple, TRIGGER$ et SERVICE$. Le graphique suivant représente trois tables sous-jacentes du dictionnaire de données, les barres rouges indiquant les lignes décrivant le système.
Figure 1 : Métadonnées du dictionnaire de données dans la racine de base de données Conteneur

Description de l'illustration cncpt_vm_363.png
Supposons que vous créez une base de données pluggable, puis que vous créez un schéma hr contenant les tables employees et departments dans cette base de données pluggable. Le dictionnaire de données de la base pluggable contient certaines lignes qui décrivent les entités fournies par Oracle et d'autres qui décrivent les entités créées par l'utilisateur. Par exemple, la table TAB$ du dictionnaire de base de données pluggable contient une ligne de métadonnées pour la table employees et une ligne pour la table departments.
Figure 2 : Architecture du dictionnaire de données dans une base Conteneur

Description de l'illustration cncpt_vm_361.png
Le graphique précédent montre que le dictionnaire de données de la base de données pluggable contient des points de repère vers le dictionnaire de données dans la racine de la base de données Conteneur. En interne, les objets fournis par Oracle, tels que les définitions de table de dictionnaire de données et les packages PL/SQL, sont représentés une seule fois dans la racine de base de données Conteneur. Cette architecture atteint deux objectifs principaux au sein de la base de données Conteneur :
-
Réduction des doubles emplois
Par exemple, au lieu de stocker le code source du package PL/SQL
DBMS_ADVISORdans chaque base de données pluggable, la base de données Conteneur stocke le code une seule fois dansCDB$ROOT, ce qui permet d'économiser de l'espace disque. -
Facilité de mise à niveau de base de données
Si la définition d'une table de dictionnaire de données existait dans chaque base de données pluggable, et si la définition devait changer dans une nouvelle version, chaque base de données pluggable devra être mise à niveau séparément pour capturer la modification. Le stockage de la définition de table une seule fois dans la racine de la base de données Conteneur élimine ce problème.
Composants du dictionnaire de données
Le dictionnaire de données se compose de tables et de vues de base.
Ces objets sont définis comme suit :
-
Tables de base
Ils stockent des informations sur la base de données. Seule Oracle AI Database doit écrire et lire ces tables. Les utilisateurs accèdent rarement directement aux tables de base car elles sont normalisées et la plupart des données sont stockées dans un format crypté.
-
Vues
Ils décodent les données de la table de base en informations utiles, telles que les noms d'utilisateur ou de table, à l'aide de jointures et de clauses
WHEREpour simplifier les informations. Les vues contiennent le nom et la description de tous les objets du dictionnaire de données. Certaines vues sont accessibles à tous les utilisateurs de base de données, tandis que d'autres sont destinées aux administrateurs uniquement.
En général, les vues du dictionnaire de données sont regroupées en ensembles. Dans de nombreux cas, un ensemble se compose de trois vues contenant des informations similaires et distinguées les unes des autres par leurs préfixes, comme indiqué dans le tableau suivant. En interrogeant les vues appropriées, vous ne pouvez accéder qu'aux informations qui vous concernent.
Tableau 1 - Jeux de vues du dictionnaire de données
| préfixe | Accès utilisateur | Sommaire | Remarques |
|---|---|---|---|
DBA_ |
administrateurs de base de données, | Tous les articles | Certaines vues DBA_ contiennent des colonnes supplémentaires contenant des informations utiles à l'administrateur. |
ALL_ |
Tous les utilisateurs | Objets pour lesquels l'utilisateur dispose de privilèges | Inclut les objets appartenant à l'utilisateur. Ces vues obéissent à l'ensemble actuel de rôles activés. |
USER_ |
Tous les utilisateurs | Objets appartenant à l'utilisateur | Les vues avec le préfixe USER_ excluent généralement la colonne OWNER. Cette colonne est impliquée dans les vues USER_ pour être l'utilisateur qui émet la requête. |
Tous les ensembles de vues n'ont pas trois membres. Par exemple, le dictionnaire de données contient une vue DBA_LOCK mais pas de vue ALL_LOCK.
La vue DICTIONARY fournie par le système contient les noms et les descriptions abrégées de toutes les vues du dictionnaire de données. La requête suivante de cette vue inclut un exemple de sortie partiel :
SQL> SELECT * FROM DICTIONARY
2 ORDER BY TABLE_NAME;
TABLE_NAME COMMENTS
------------------------------ ----------------------------------------
ALL_ALL_TABLES Description of all object and relational
tables accessible to the user
ALL_APPLY Details about each apply process that
dequeues from the queue visible to the
current user
.
.
.
-
Objets de données de conteneur dans une base de données Conteneur Un objet de données de conteneur est une table ou une vue contenant des données appartenant à plusieurs conteneurs ou à l'ensemble de la base de données Conteneur.
-
Les vues avec le préfixe DBA_ et le préfixe
DBA_affichent toutes les informations pertinentes dans l'ensemble de la base de données. Les vuesDBA_sont uniquement destinées aux administrateurs. -
Les vues avec le préfixe ALL_ vues avec le préfixe
ALL_font référence à la perspective globale de la base de données par l'utilisateur. -
Vues avec le préfixe USER_ Les vues les plus susceptibles d'intéresser les utilisateurs de base de données standard sont celles avec le préfixe
USER_. -
La table DUAL
DUALest une petite table du dictionnaire de données que Oracle AI Database et les programmes écrits par l'utilisateur peuvent référencer pour garantir un résultat connu.
Voir aussi :
-
Référence Oracle AI Database pour obtenir la liste complète des vues du dictionnaire de données et de leurs colonnes
Objets de données de conteneur dans une base Conteneur
Un objet de données de conteneur est une table ou une vue contenant des données appartenant à plusieurs conteneurs ou à l'ensemble de la base de données Conteneur.
Les privilèges sur les données de conteneur prennent en charge une exigence générale selon laquelle plusieurs bases de données pluggables résident dans une seule base de données Conteneur, mais avec des exigences d'administration locale différentes. Par exemple, si les administrateurs de base de données d'application ne veulent pas administrer localement, ils peuvent accorder des privilèges de données de conteneur sur les vues appropriées aux utilisateurs communs. Dans ce cas, l'administrateur de base de données Conteneur peut accéder aux données de ces bases de données pluggables. En revanche, les administrateurs de base de données pluggable qui ne veulent pas que l'administrateur de base de données Conteneur accède à leurs données n'accordent pas de privilèges sur les données de conteneur.
Les vues fournies par Oracle dont le nom commence par V$ et CDB_ sont des exemples d'objets de données de conteneur. Tous les objets de données de conteneur ont une colonne CON_ID. Le tableau suivant indique la signification des valeurs de cette colonne.
Table 2 - Valeurs d'ID conteneur
| ID de conteneur | Lignes relatives à |
|---|---|
0 |
Base de données Conteneur entière |
1 |
CDB$ROOT |
2 |
PDB$SEED |
| Tous les autres ID | Bases pluggables, racines d'application ou sources d'application créées par l'utilisateur |
Dans une base de données Conteneur, une vue CDB_ correspondante existe pour chaque vue DBA_. Le propriétaire d'une vue CDB_ est le propriétaire de la vue DBA_ correspondante. Le graphique suivant illustre la relation entre les différentes catégories de vues du dictionnaire :
Figure 3 : Vues du dictionnaire dans une base de données Conteneur

Description de l'illustration cncpt_vm_366.png
Lorsque le conteneur en cours est une base de données pluggable, un utilisateur peut visualiser les informations du dictionnaire de données pour la base de données pluggable en cours uniquement. Toutefois, lorsque le conteneur en cours est la racine de base de données Conteneur, un utilisateur commun peut interroger les vues CDB_ pour voir les métadonnées de la racine de base de données Conteneur et des bases de données pluggables pour lesquelles cet utilisateur est privilégié. Remarque : lorsque vous interrogez la racine de base de données Conteneur, les vues CDB_ et V$ convertissent implicitement les données en jeu de caractères AL32UTF8. Si un jeu de caractères a besoin de plus d'octets pour représenter un caractère lors de sa conversion en AL32UTF8, et si la largeur de la colonne de vue ne peut pas prendre en charge les données d'une base de données pluggable spécifique, la troncature des données est possible.
Le tableau suivant décrit les requêtes des vues CDB_. Chaque ligne décrit une action qui se produit après l'action de la ligne précédente.
Tableau 3 Interrogation des vues CDB_
| Opération | Description |
|---|---|
|
L'utilisateur |
|
SYSTEM interroge CDB_USERS pour obtenir le nombre d'utilisateurs communs dans la racine de base de données Conteneur. La sortie indique que 38 utilisateurs communs existent dans la racine de base de données Conteneur. |
|
SYSTEM interroge CDB_USERS pour déterminer le nombre de conteneurs distincts dans la base de données Conteneur. |
|
L'utilisateur SYSTEM se connecte désormais à la base de données pluggable nommée hrpdb. |
|
SYSTEM interroge CDB_USERS. La sortie indique que 48 utilisateurs communs et locaux existent dans le conteneur en cours, qui est hrpdb. |
|
SYSTEM interroge DBA_USERS. La sortie est la même que celle de l'interrogation précédente. Comme SYSTEM n'est pas connecté à la racine de base de données Conteneur, la vue DBA_USERS affiche la même sortie que CDB_USERS. Comme DBA_USERS affiche uniquement les utilisateurs dans le conteneur en cours, il en affiche 48. |
Vues avec le préfixe DBA_
Les vues avec le préfixe DBA_ affichent toutes les informations pertinentes dans la base de données entière. Les vues DBA_ sont uniquement destinées aux administrateurs.
L'exemple de requête suivant affiche des informations sur tous les objets de la base de données :
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE
FROM DBA_OBJECTS
ORDER BY OWNER, OBJECT_NAME;
Voir aussi : Guide de l'administrateur Oracle AI Database pour plus d'informations sur les privilèges d'administration
Vues avec le préfixe ALL_
Les vues avec le préfixe ALL_ font référence à la perspective globale de la base de données de l'utilisateur.
Ces vues renvoient des informations sur les objets de schéma auxquels l'utilisateur a accès par le biais d'autorisations publiques ou explicites de privilèges et de rôles, en plus des objets de schéma appartenant à l'utilisateur.
Par exemple, la requête suivante renvoie des informations sur tous les objets auxquels vous avez accès :
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE
FROM ALL_OBJECTS
ORDER BY OWNER, OBJECT_NAME;
Etant donné que les vues ALL_ obéissent à l'ensemble actuel de rôles activés, les résultats des requêtes dépendent des rôles activés, comme indiqué dans l'exemple suivant :
SQL> SET ROLE ALL;
Role set.
SQL> SELECT COUNT(*) FROM ALL_OBJECTS;
COUNT(*)
----------
68295
SQL> SET ROLE NONE;
Role set.
SQL> SELECT COUNT(*) FROM ALL_OBJECTS;
COUNT(*)
----------
53771
Les développeurs d'application doivent être conscients de l'effet des rôles lors de l'utilisation des vues ALL_ dans une procédure stockée, où les rôles ne sont pas activés par défaut.
Vues avec le préfixe USER_
Les vues les plus susceptibles d'intéresser les utilisateurs de base de données standard sont celles avec le préfixe USER_.
Ces vues :
-
Reportez-vous à l'environnement privé de l'utilisateur dans la base de données, y compris les métadonnées sur les objets de schéma créés par l'utilisateur, les autorisations accordées par l'utilisateur, etc.
-
Afficher uniquement les lignes pertinentes pour l'utilisateur, renvoyant un sous-ensemble d'informations dans les vues
ALL_ -
comporte des colonnes identiques aux autres vues, sauf que la colonne
OWNERest implicite -
Peut avoir des synonymes
PUBLICabrégés pour plus de commodité
Par exemple, l'interrogation suivante renvoie tous les objets contenus dans votre schéma :
SELECT OBJECT_NAME, OBJECT_TYPE
FROM USER_OBJECTS
ORDER BY OBJECT_NAME;
La table DUAL
DUAL est une petite table du dictionnaire de données qu'Oracle AI Database et les programmes écrits par l'utilisateur peuvent référencer pour garantir un résultat connu.
La table double est utile lorsqu'une valeur ne doit être renvoyée qu'une seule fois, par exemple, la date et l'heure actuelles. Tous les utilisateurs de base de données ont accès à DUAL.
La table DUAL comporte une colonne nommée DUMMY et une ligne contenant la valeur X. L'exemple suivant interroge DUAL pour effectuer une opération arithmétique :
SQL> SELECT ((3*4)+5)/3 FROM DUAL;
((3*4)+5)/3
-----------
5.66666667
Voir aussi : Référence du langage SQL d'Oracle AI Database pour plus d'informations sur la table DUAL
Fonctionnement du dictionnaire de données
Le compte utilisateur Oracle AI Database SYS possède toutes les tables de base et les vues accessibles par l'utilisateur du dictionnaire de données.
Pendant le fonctionnement de la base de données, Oracle AI Database lit le dictionnaire de données pour s'assurer que les objets de schéma existent et que les utilisateurs y ont un accès approprié. Oracle AI Database met à jour le dictionnaire de données en permanence pour refléter les modifications apportées aux structures de base de données, aux audits, aux autorisations et aux données.
Par exemple, si l'utilisateur hr crée une table nommée interns, la base de données ajoute de nouvelles lignes au dictionnaire de données qui reflètent la nouvelle table, les nouvelles colonnes, le nouveau segment, les nouveaux extents et les privilèges dont dispose hr sur la table. Ces nouvelles informations sont visibles la prochaine fois que les vues du dictionnaire sont interrogées.
Les données des tables de base du dictionnaire de données sont nécessaires au fonctionnement d'Oracle AI Database. Seul Oracle AI Database doit écrire ou modifier les informations du dictionnaire de données. Aucun utilisateur Oracle AI Database ne doit jamais modifier les lignes ou objets du schéma figurant dans le schéma SYS, car cette activité peut compromettre l'intégrité des données. L'administrateur responsable de la sécurité doit contrôler strictement ce compte central.
Avertissement : la modification ou la manipulation des données dans les tables du dictionnaire de données peut avoir un impact permanent et préjudiciable sur le fonctionnement de la base de données.
-
Métadonnées et liens de données La base de données Conteneur utilise un mécanisme de liaison interne pour séparer les informations du dictionnaire de données.
-
Synonymes publics pour les vues de dictionnaire de données Oracle AI Database crée des synonymes publics pour de nombreuses vues de dictionnaire de données afin que les utilisateurs puissent y accéder facilement.
-
Cache du dictionnaire de données La plupart des informations du dictionnaire de données se trouvent dans le cache du dictionnaire de données car la base de données a constamment besoin de ces informations pour valider l'accès utilisateur et vérifier l'état des objets de schéma.
-
Autres programmes et dictionnaire de données D'autres produits Oracle AI Database peuvent référencer des vues existantes et créer des tables ou des vues de dictionnaire de données supplémentaires. Voir aussi : "Comptes SYSTEM et SYS"
Métadonnées et liens de données
La base de données Conteneur utilise un mécanisme de liaison interne pour séparer les informations du dictionnaire de données.
Plus précisément, Oracle AI Database utilise les pointeurs gérés automatiquement suivants :
-
Liens de métadonnées
Oracle AI Database stocke les métadonnées relatives aux objets de dictionnaire uniquement dans la racine de base de données Conteneur. Par exemple, les définitions de colonne de la table de dictionnaire
OBJ$, qui sous-tend la vue de dictionnaire de donnéesDBA_OBJECTS, existent uniquement dans la racine de base de données Conteneur. Comme le montre la figure 9-2, la tableOBJ$de chaque base de données pluggable utilise un mécanisme interne appelé lien de métadonnées pour pointer vers la définition deOBJ$stockée dans la racine de la base de données Conteneur.Les données correspondant à une liaison de métadonnées résident dans sa base de données pluggable, et non dans la racine de la base de données Conteneur. Par exemple, si vous créez la table
mytabledanshrpdbet que vous y ajoutez des lignes, celles-ci sont stockées dans les fichiers de données de la base de données pluggable, et non dans les fichiers de données racine de la base de données Conteneur.Les vues du dictionnaire de données de la base pluggable et de la racine de la base Conteneur contiennent des lignes différentes. Par exemple, une nouvelle ligne décrivant
mytableexiste dans la tableOBJ$danshrpdb, mais pas dans la tableOBJ$de la racine de base de données Conteneur. Par conséquent, une interrogation deDBA_OBJECTSdans la racine de base de données Conteneur et deDBA_OBJECTSdanshrdpbaffiche des résultats différents. -
Liaisons de données
Remarque : les liens de données ont été appelés liens d'objet dans Oracle Database 12c version 1 (12.1.0.2).
Dans certains cas, Oracle AI Database stocke les données (pas seulement les métadonnées) d'un objet une seule fois dans la racine d'application d'un conteneur d'application. Prenons l'exemple d'une entreprise de commerce électronique qui a des bases de données pluggables différentes pour différentes régions. La racine de l'application peut stocker une table nommée
postal_codes, qui répertorie tous les codes postaux américains. Chaque base de données pluggable d'application dans ce conteneur nécessite l'accès à la tablepostal_codescommune.Une base de données pluggable d'application utilise un mécanisme interne appelé lien de données pour faire référence à l'objet dans la racine de l'application. La base de données pluggable d'application dans laquelle la liaison de données a été créée stocke également la description de la liaison de données. Un lien de données hérite du type de données de l'objet auquel il fait référence.
-
Lien de données étendu
Une liaison de données étendue est un hybride d'une liaison de données et d'une liaison de métadonnées. Comme un lien de données, un lien de données étendu fait référence à un objet dans une racine d'application. Toutefois, la liaison de données étendue fait également référence à un objet correspondant dans la base de données pluggable de l'application. Par exemple, une base de données pluggable d'application peut avoir une table de liens de données étendues qui stocke à la fois les codes postaux américains et canadiens. Comme un lien de métadonnées, l'objet de la base de données pluggable d'application hérite des métadonnées de l'objet correspondant dans la racine de l'application.
Lorsqu'elle est interrogée dans la racine de l'application, une table étendue liée aux données extrait uniquement les lignes de la racine de l'application, par exemple, uniquement les codes postaux américains. Toutefois, lorsqu'elle est interrogée dans une base de données pluggable d'application, une table étendue liée aux données extrait des lignes à la fois de la racine d'application et de la base de données pluggable d'application, par exemple, les codes postaux américains et canadiens.
Oracle AI Database crée et gère automatiquement les métadonnées et les liens de données vers CDB$ROOT. Les utilisateurs ne peuvent pas ajouter, modifier ou supprimer ces liens.
Voir aussi :
-
Oracle AI Database Concepts, pour une présentation du dictionnaire de données
Synonymes publics pour les vues du dictionnaire de données
Oracle AI Database crée des synonymes publics pour de nombreuses vues de dictionnaire de données afin que les utilisateurs puissent y accéder facilement.
L'administrateur de la sécurité peut également créer des synonymes publics supplémentaires pour les objets de schéma utilisés à l'échelle du système. Oracle recommande de ne pas utiliser le même nom pour un objet de schéma privé et un synonyme public.
Voir aussi : "Présentation des synonymes"
Cache du dictionnaire de données
La plupart des informations du dictionnaire de données se trouvent dans le cache du dictionnaire de données car la base de données a constamment besoin de ces informations pour valider l'accès utilisateur et vérifier l'état des objets de schéma.
Les caches contiennent généralement les informations d'analyse. Les colonnes COMMENTS décrivant les tables et leurs colonnes ne sont pas mises en mémoire cache dans le cache du dictionnaire, mais peuvent être mises en mémoire cache dans le cache de tampons de base de données.
Voir aussi : "Cache du dictionnaire de données"
Autres programmes et dictionnaire de données
D'autres produits Oracle AI Database peuvent référencer des vues existantes et créer des tables ou des vues supplémentaires du dictionnaire de données.
Oracle recommande aux développeurs d'applications qui écrivent des programmes faisant référence au dictionnaire de données d'utiliser les synonymes publics plutôt que les tables sous-jacentes. Les synonymes sont moins susceptibles de changer entre les versions.
Stockage du dictionnaire de données
Le dictionnaire de données qui stocke les métadonnées de la base Conteneur dans son ensemble est stocké uniquement dans les tablespaces système.
Le dictionnaire de données qui stocke les métadonnées d'une base de données pluggable spécifique est stocké dans les tablespaces autonomes dédiés à cette base. Les tablespaces de base de données pluggable contiennent à la fois les données et les métadonnées d'un back-end d'application. Par conséquent, chaque ensemble de tables du dictionnaire de données est stocké dans son propre ensemble dédié de tablespaces.
Voir aussi : "Tablespace SYSTEM" pour plus d'informations sur le tablespace SYSTEM
Présentation des vues dynamiques des performances
Tout au long de son fonctionnement, Oracle AI Database gère un ensemble de tables virtuelles qui enregistrent l'activité en cours de la base de données.
Ces vues sont dynamiques car elles sont continuellement mises à jour pendant qu'une base de données est ouverte et en cours d'utilisation. Les vues sont parfois appelées vues V$ car leur nom commence par V$.
Les vues dynamiques des performances contiennent des informations telles que les suivantes :
-
Paramètres système et session
-
Utilisation et allocation de la mémoire
-
Etats des fichiers (y compris les fichiers de sauvegarde RMAN)
-
Progression des travaux et des tâches
-
Exécution SQL
-
Statistiques et mesures
Les vues dynamiques des performances ont les principales utilisations suivantes :
-
Oracle Enterprise Manager utilise les vues pour obtenir des informations sur la base de données.
-
Les administrateurs peuvent utiliser les vues pour la surveillance et le débogage des performances.
-
Contenu des vues dynamiques des performances Les vues dynamiques des performances sont appelées vues fixes car elles ne peuvent pas être modifiées ou enlevées par un administrateur de base de données. Toutefois, les administrateurs de base de données peuvent interroger et créer des vues sur les tables et accorder l'accès à ces vues à d'autres utilisateurs.
-
Stockage des vues dynamiques des performances Les vues dynamiques des performances sont basées sur des tables virtuelles créées à partir de structures de mémoire de base de données. Voir aussi : Référence Oracle AI Database pour obtenir la liste complète des vues dynamiques des performances
Contenu des vues dynamiques des performances
Les vues dynamiques des performances sont appelées vues fixes car elles ne peuvent pas être modifiées ou enlevées par un administrateur de base de données. Toutefois, les administrateurs de base de données peuvent interroger et créer des vues sur les tables et accorder l'accès à ces vues à d'autres utilisateurs.
SYS est propriétaire des tables de performances dynamiques dont le nom commence par V_$. Des vues sont créées sur ces tables, puis des synonymes publics avec le préfixe V$. Par exemple, la vue V$DATAFILE contient des informations sur les fichiers de données. La vue V$FIXED_TABLE contient des informations sur toutes les vues et tables de performances dynamiques.
Pour presque toutes les vues V$, une vue GV$ correspondante existe. Dans Oracle Real Application Clusters (Oracle RAC), l'interrogation d'une vue GV$ extrait les informations de la vue V$ de toutes les instances de base de données qualifiées.
Lorsque vous utilisez DBCA (Database Configuration Assistant) pour créer une base de données, Oracle crée automatiquement le dictionnaire de données. Oracle AI Database exécute automatiquement le script catalog.sql, qui contient les définitions des vues et des synonymes publics pour les vues dynamiques des performances. Vous devez exécuter catalog.sql pour créer ces vues et synonymes.
Voir aussi :
-
Guide de l'administrateur Oracle AI Database pour savoir comment exécuter
catalog.sqlmanuellement -
Guide d'administration et de déploiement Oracle Real Application Clusters, pour en savoir plus sur l'utilisation des vues de performances dans Oracle RAC
Stockage des vues dynamiques des performances
Les vues dynamiques des performances sont basées sur des tables virtuelles créées à partir de structures mémoire de base de données.
Les vues ne sont pas des tables conventionnelles stockées dans la base de données. La cohérence en lecture n'est pas garantie pour les vues car les données sont mises à jour dynamiquement.
Les vues dynamiques des performances n'étant pas des tables vraies, les données dépendent de l'état de la base de données et de l'instance de base de données. Par exemple, vous pouvez interroger V$INSTANCE et V$BGPROCESS lorsque la base de données est démarrée mais pas montée. Toutefois, vous ne pouvez pas interroger V$DATAFILE tant que la base de données n'a pas été montée.
Voir aussi : "Cohérence et simultanéité des données"
Métadonnées d'objet de base de données
Le package DBMS_METADATA et la fonction DBMS_DEVELOPER.GET_METADATA fournissent des interfaces permettant d'extraire des définitions complètes des objets de base de données.
A l'aide du package DBMS_METADATA, les définitions peuvent être exprimées au format XML ou en langage DDL SQL. Oracle AI Database fournit deux styles d'interface : une interface flexible et sophistiquée pour le contrôle par programmation et une interface simplifiée pour les requêtes ad hoc.
A l'aide de la fonction DBMS_DEVELOPER.GET_METADATA, les métadonnées d'objet sont renvoyées en tant que document JSON.
Voir aussi : Référence des types et packages PL/SQL d'Oracle AI Database pour plus d'informations sur DBMS_METADATA. Référence des types et packages PL/SQL Oracle AI Database pour plus d'informations sur DBMS_DEVELOPER.GET_METADATA.