Gérer les catalogues avec DBMS_CATALOG
L'ensemble DBMS_CATALOG fournit un jeu complet de procédures, de fonctions et de types pour la gestion des catalogues de base de données pour Oracle Autonomous AI Database.
Qu'est-ce qu'un catalogue?
- Ensemble d'objets disponibles via un lien de base de données
- Ensemble d'objets partagés disponibles au moyen de DBMS_SHARE (par exemple, Delta Sharing);
- Un ensemble de tables Iceberg gérées par un catalogue REST Iceberg;
- Ensemble d'objets définis par un produit tiers, tel qu'Amazon Glue, Databricks Unity Catalog ou Snowflakes Polaris;
- Jeu d'objets défini par le service de catalogue de données OCI Oracle.
- Un catalogue peut également être considéré comme un "domaine" ou un "produit de données", qui est un jeu d'objets regroupés à des fins d'affaires spécifiques.
Pour plus d'informations sur l'outil de catalogue de la suite d'outils Data Studio, voir L'outil de catalogue.
Dans un système d'exploitation, vous pouvez accéder aux fichiers de données externes en montant un système de fichiers. Par analogie, vous pouvez accéder aux données externes dans une base de données d'IA autonome en montant un catalogue à l'aide de l'ensemble DBMS_CATALOG.
L'exemple suivant montre comment monter un catalogue REST Iceberg externe. Pour l'utiliser, vous aurez besoin de trois informations.
- Point d'extrémité du catalogue REST Iceberg;
- Données d'identification (par exemple, un jeton porteur) utilisées pour appeler ce point d'extrémité;
- Données d'identification (par exemple, nom d'utilisateur/mot de passe) utilisées pour accéder au seau dans lequel sont stockés les fichiers de données Iceberg.
BEGIN
-- Create a credential capable of accessing an external Iceberg REST catalog
dbms_cloud.create_credential('ICEBERG_CATALOG_CRED', ...);
-- Create a credential capable of accessing the bucket where the
-- Iceberg data files are stored.
dbms_cloud.create_credential('ICEBERG_STORAGE_CRED', ...);
-- Mount the iceberg catalog
dbms_catalog.mount_iceberg(
catalog_name => 'ICEBERG_CAT',
endpoint => 'https://...',
catalog_credential => 'ICEBERG_CATALOG_CRED',
data_storage_credential => 'ICEBERG_STORAGE_CRED',
catalog_type => 'ICEBERG_UNITY');
END;
/
-- List tables in the iceberg catalog
SELECT owner, table_name
FROM all_tables@iceberg_cat;
-- Read data from an iceberg table
SELECT *
FROM a_schema.a_table@iceberg_cat;DBMS_CATALOG est utilisé pour définir et gérer les opérations liées au catalogue.
Il fournit un ensemble complet de procédures, de fonctions et de types pour la gestion des catalogues dans la base de données autonome d'Oracle. Il prend en charge des opérations telles que le montage et le démontage de catalogues, la gestion des propriétés de catalogue, le traitement des données d'identification et l'utilisation d'entités de catalogue telles que des tables, des schémas et des objets. Ce package est essentiel pour intégrer des sources de données externes et gérer les métadonnées de manière sécurisée et efficace.
Modèle de sécurité
DBMS_CATALOG fonctionne sous le modèle AUTHID CURRENT_USER, ce qui signifie qu'il s'exécute avec les privilèges de l'utilisateur courant. Vous devez disposer des autorisations appropriées pour effectuer des opérations telles que le montage de catalogues, la mise à jour des propriétés ou la gestion des données d'identification.
Peu de catalogues nécessitent une base de données autonome d'intelligence artificielle pour se connecter à des ressources Internet externes. Par conséquent, vous devez ajouter les adresses externes pertinentes aux listes de contrôle d'accès de l'utilisateur de base de données associé. Par exemple, lors de l'activation de l'accès à un catalogue Iceberg de Databricks Unity sur Azure, vous devrez peut-être ajouter deux adresses dans la liste blanche : une pour accéder aux API REST d'Iceberg et une autre si l'utilisateur a besoin d'accéder aux données sous-jacentes.
BEGIN
dbms_network_acl_admin.append_host_ace(
host => '*.azuredatabricks.net',
lower_port => 443,
upper_port => 443,
ace => xs$ace_type(
privilege_list => xs$name_list('http', 'http_proxy'),
principal_name => 'DBUSER',
principal_type => xs_acl.ptype_db));
dbms_network_acl_admin.append_host_ace(
host => '*.blob.core.windows.net',
ace => xs$ace_type(
privilege_list => xs$name_list('http', 'http_proxy'),
principal_name => 'DBUSER',
principal_type => xs_acl.ptype_db));
END;
/Vous devez disposer de DWROLE pour exécuter les méthodes DBMS_CATALOG.
DWROLE à l'utilisateur :GRANT DWROLE TO MY_USER;Types et constantes de catalogue
La présente section donne un aperçu des types de catalogues et des constantes clés définis dans l'ensemble. Il explique les différentes catégories de catalogue utilisées pour organiser diverses sources de catalogue et décrit les constantes essentielles pour configurer et gérer les propriétés et les comportements de catalogue.
Types de catalogue
CATALOG_TYPE_SHARE:Représente un catalogue basé sur le partage, conçu principalement pour le partage de données entre les systèmes ou les utilisateurs. Par exemple, un service de partage de données tel que Data Sharing de Data Studio utilise des catalogues basés sur le partage pour distribuer les données en toute sécurité.
CATALOG_TYPE_DATA_CATALOG: Représente des catalogues de données externes tels que AWS Glue ou OCI Data Catalog. Ces catalogues servent de référentiels centralisés pour les métadonnées sur les jeux de données. Par exemple, le catalogue de données AWS Glue détecte et gère automatiquement les métadonnées des sources de données sur les services AWS tels que S3 et Redshift, ce qui permet une intégration et une interrogation transparentes des données.CATALOG_TYPE_DB_LINK: Représente une catégorie de catalogue créée à partir d'un lien de base de données. Ce type de catalogue vous permet d'accéder et d'organiser les métadonnées et les objets qui résident dans une base de données distante ou externe, en les connectant au moyen d'une base de données établie.Pour plus d'informations, voir Charger des données à partir de bases de données Oracle et non Oracle à l'aide de liens de base de données.
CATALOG_TYPE_VIRTUAL: Représente les catalogues virtuels qui fournissent une abstraction par rapport aux sources de données physiques. Les catalogues virtuels ne stockent pas les données eux-mêmes, mais présentent une interface unifiée pour interroger des sources de données disparates (par exemple, des vues virtuelles créées dans une plate-forme de virtualisation des données).CATALOG_TYPE_ICEBERG: Représente un catalogue Iceberg, qui gère les métadonnées des tables stockées au format Apache Iceberg. Iceberg est un format de table conçu pour d'énormes jeux de données analytiques, prenant en charge des fonctionnalités telles que l'évolution du schéma et le voyage dans le temps.Pour plus d'informations, voir Gérer les catalogues.
Constantes
TYPE_CATALOGetNS_CATALOG: Définit le type de catalogue et l'espace de nomsCATALOG.DEFAULT_CATALOG: Nom de catalogue par défaut réglé àLOCAL.- Constantes de propriété telles que
PROP_IS_ENABLED,PROP_IS_SYNCHRONIZED,PROP_CACHE_ENABLED,PROP_CACHE_DURATIONet autres pour gérer le comportement du catalogue et la mise en mémoire cache des métadonnées.Nom de constante Valeur Description PROP_IS_ENABLEDIS_ENABLEDCette propriété détermine si un catalogue est actuellement activé pour l'interrogation et la recherche.
Valeurs valides :-
OUI : Le catalogue apparaît dans la boîte de dialogue de recherche de l'interface utilisateur de Data Studio et peut être utilisé dans les interrogations SQL à l'aide de la syntaxe du lien de base de données (par exemple, sélectionnez un nom d'utilisateur dans all_users@catalog).
-
NON : Le catalogue sera répertorié dans la vue
ALL_MOUNTED_CATALOGS, mais il ne sera pas inclus dans les recherches de l'interface utilisateur de Data Studio et ne pourra pas être utilisé dans la syntaxe du lien de base de données.
PROP_CACHE_ENABLEDCACHE_ENABLEDCette propriété détermine si les métadonnées d'un schéma distant doivent être mises en mémoire cache dans la base de données locale pour améliorer les performances.
Valeurs valides
- OUI Les métadonnées seront mises en mémoire cache au premier accès et resteront dans la mémoire cache pendant une période spécifiée par
PROP_CACHE_DURATION. - NON :
Les métadonnées ne seront pas mises en mémoire cache. Toutes les tentatives d'accès aux objets du catalogue atteindront, au moment de l'interrogation, la source de métadonnées distante.
PROP_CACHE_DURATIONCACHE_DURATIONNombre de secondes pendant lesquelles les métadonnées doivent être conservées dans le cache avant qu'elles ne deviennent obsolètes. La valeur par défaut est 3600 secondes (une heure).
Notez que l'utilisateur peut vider le cache manuellement à tout moment en appelant
DBMS_CATALOG.FLUSH_CATALOG_CACHE.L'utilisateur peut actualiser la mémoire cache à tout moment en appelant
DBMS_CATALOG.PREFILL_CATALOG_CACHE.PROP_CACHE_ASYNC'CACHE_ASYNC'Ce champ s'affiche si la mémoire cache est alimentée à l'aide de tâches asynchrones.
Valeurs valides
- OUI :
Les métadonnées seront mises en mémoire cache à l'aide d'une tâche DBMS_SCHEDULER créée la première fois qu'un utilisateur demande les métadonnées.
- NON :
Les métadonnées mettront en cache l'utilisateur de la session de base de données de l'utilisateur qui demande les métadonnées.
PROP_DEFAULT_SCHEMADEFAULT_SCHEMANom d'un schéma distant qui sera choisi par défaut si l'utilisateur exécute une interrogation du formulaire :
Le schéma par défaut joue le même rôle que le schéma de l'utilisateur dans la base de données locale.select * from table@catalogPROP_DCAT_TYPEDATA_CATALOG_TYPEType d'un catalogue monté par
DBMS_CATALOG.MOUNT_DATA_CATALOGValeurs valides
- AWS_GLUE : Le catalogue est défini au-dessus d'un référentiel AWS Glue distant.
- OCI_DCAT : Le catalogue est défini au-dessus d'une instance de catalogue de données OCI.
Note
Il s'agit d'une propriété en lecture seule.PROP_CUSTOMCUSTOMUne propriété personnalisée est une paire nom/valeur associée, par l'utilisateur, à un catalogue, un schéma, une table ou un autre objet dans le catalogue.
Il existe deux façons de spécifier une propriété personnalisée :- Vous pouvez définir une seule propriété personnalisée, "
MY_PROP", par exemple, en spécifiant le nom de la propriété composite 'CUSTOM:MY_PROP' avec une valeur de chaîne arbitraire.DBMS_CATALOG.UPDATE_CATALOG_PROPERTY( catalog_name => 'some_catalog', catalog_property => 'CUSTOM:MY_PROP', new_value => 'Property Value'); - Vous pouvez spécifier un groupe de propriétés de client en spécifiant le nom de propriété simple 'CUSTOM' avec un objet JSON qui contient des paires de valeurs de nom.
DBMS_CATALOG.UPDATE_CATALOG_PROPERTY( catalog_name => 'some_catalog', catalog_property => 'CUSTOM', new_value => '{"Property1" : "Value 1", "Property2" : "Value 2", ...}');Note
Les noms de propriété personnalisés sont sensibles à la casse, de sorte queCUSTOM:MY_PROPest distinct deCUSTOM:My_Prop.Pour supprimer une propriété personnalisée, réglez la valeur à NULL.
Les propriétés personnalisées peuvent être utilisées en tant que termes de recherche dans l'interface utilisateur Data Studio. Par exemple, vous pouvez trouver toutes les tables avec la propriété MY_PROP en spécifiant le paramètre de conditions dansDBMS_CATALOG.GET_TABLES.SELECT table_name FROM DBMS_CATALOG.GET_TABLES( catalog_name => 'some_catalog', conditions => '#MY_PROP');Vous pouvez également rechercher des valeurs spécifiques.
SELECT table_name FROM DBMS_CATALOG.GET_TABLES( catalog_name => 'some_catalog', conditions => '#MY_PROP="Property Value"');
PROP_METADATAMETADATALes métadonnées personnalisées sont similaires aux propriétés personnalisées, mais elles peuvent contenir du JSON à structure libre. Les métadonnées sont stockées avec l'objet et peuvent être extraites, mais elles ne sont pas utilisées comme terme de recherche.
Il existe deux façons de spécifier des métadonnées personnalisées :- Vous pouvez définir l'ensemble des métadonnées en tant que JSON à l'aide du nom de propriété 'METADATA'.
DBMS_CATALOG.UPDATE_CATALOG_PROPERTY( catalog_name => 'some_catalog', catalog_property => 'METADATA', new_value => '{"subObject":{"propName":"abc"}}'); - Vous pouvez mettre à jour un sous-composant des métadonnées à l'aide du nom de propriété composite 'METADATA:path', où le chemin est un chemin JSON relatif.
DBMS_CATALOG.UPDATE_CATALOG_PROPERTY( catalog_name => 'some_catalog', catalog_property => 'METADATA:subObject.propName', new_value => 'xyz');
PROP_CONFIGURATIONCONFIGURATIONLa propriété de configuration est utilisée pour mettre à jour des propriétés de configuration spécifiques pour les catalogues Iceberg. Il fonctionne de la même manière que la propriété CUSTOM.
BEGIN dbms_catalog.update_catalog_property( 'iceberg_cat', 'CONFIGURATION:IS_CASE_SENSITIVE', 'YES'); END; / -
Types de données
DBMS_CATALOG introduit divers types de données personnalisées pour gérer les informations relatives au catalogue. Il s'agit de :
credential_infoetcredential_info_map: Il s'agit de structures pour stocker et mapper les informations de données d'identification.catalog_tableetcatalog_tables: Il s'agit d'enregistrements et de tables pour le stockage des métadonnées de table détaillées (par exemple, responsable, nom, description, statut).catalog_schemaetcatalog_schemas: Il s'agit d'enregistrements et de tables pour les métadonnées de schéma.catalog_objectetcatalog_objects: Il s'agit d'enregistrements et de tables pour les métadonnées d'objet dans un catalogue.
- Ensemble DBMS_CATALOG
L'ensembleDBMS_CATALOGcomprend un large éventail de sous-programmes pour la gestion de catalogue, regroupés par fonctionnalité. - Sommaire de DBMS_CATALOG
Cette section traite des sous-programmesDBMS_CATALOGfournis avec Autonomous AI Database.