Gérer les catalogues avec DBMS_CATALOG
Le package DBMS_CATALOG fournit un ensemble 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 via 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, comme Amazon Glue, Databricks Unity Catalog ou Snowflakes Polaris ;
- Ensemble d'objets défini par le service Oracle OCI Data Catalog.
- Un catalogue peut également être considéré comme un "domaine" ou un "produit de données", qui est un ensemble d'objets regroupés dans un but commercial spécifique.
Pour plus d'informations sur l'outil Catalogue de la suite d'outils Data Studio, reportez-vous à Outil 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 du package DBMS_CATALOG.
L'exemple suivant montre comment monter un catalogue REST Iceberg externe. Pour l'utiliser, vous avez besoin de trois informations.
- Adresse du catalogue REST Iceberg ;
- Informations d'identification (par exemple, un jeton de support) utilisées pour appeler cette adresse ;
- Informations d'identification (par exemple, nom utilisateur/mot de passe) utilisées pour accéder au bucket dans lequel les fichiers de données Iceberg sont stockés.
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 permet de définir et de 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 une base de données autonome 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, la gestion des informations d'identification et de connexion 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 en cours. Vous devez disposer des droits d'accès appropriés pour effectuer des opérations telles que le montage de catalogues, la mise à jour des propriétés ou la gestion des informations d'identification.
Peu de catalogues nécessitent une base de données d'IA autonome pour se connecter à des ressources Internet externes. Par conséquent, vous devez ajouter les adresses externes appropriées aux listes de contrôle d'accès de l'utilisateur de base de données associé. Par exemple, lorsque vous activez l'accès à un catalogue Iceberg Databricks Unity sur Azure, vous pouvez avoir besoin de mettre sur liste blanche deux adresses : une pour accéder aux API REST 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 la valeur DWROLE pour exécuter les méthodes DBMS_CATALOG.
DWROLE à l'utilisateur :GRANT DWROLE TO MY_USER;Types de catalogue et constantes
Cette section présente les types de catalogue et les constantes clés définis dans le package. Il explique les différentes catégories de catalogue utilisées pour organiser les différentes sources de catalogue et décrit les constantes essentielles pour configurer et gérer les propriétés et les comportements du 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 des systèmes ou des 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 les catalogues de données externes tels qu'AWS Glue ou OCI Data Catalog. Ces catalogues servent de référentiels centralisés pour les métadonnées relatives aux ensembles de données. Par exemple, AWS Glue Data Catalog détecte et gère automatiquement les métadonnées des sources de données dans 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 via une base de données établie.Pour plus d'informations, reportez-vous à Chargement de 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 ensembles de données analytiques, prenant en charge des fonctionnalités telles que l'évolution des schémas et le voyage dans le temps.Pour plus d'informations, reportez-vous à Gestion des catalogues.
Constantes
TYPE_CATALOGetNS_CATALOG: définit le type de catalogue et l'espace de noms commeCATALOG.DEFAULT_CATALOG: nom de catalogue par défaut défini surLOCAL.- Constantes de propriété telles que
PROP_IS_ENABLED,PROP_IS_SYNCHRONIZED,PROP_CACHE_ENABLED,PROP_CACHE_DURATIONet autres pour la gestion du comportement du catalogue et de la mise en 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 la requête et la recherche.
Valeurs valides:-
OUI : le catalogue apparaît dans la boîte de dialogue de recherche de l'interface utilisateur Data Studio et peut être utilisé dans des requêtes SQL à l'aide de la syntaxe de lien de base de données (par exemple, sélectionnez un nom utilisateur dans all_users@catalog).
-
NON : le catalogue sera répertorié dans la vue
ALL_MOUNTED_CATALOGS, mais ne sera pas inclus dans les recherches d'interface utilisateur Data Studio et ne pourra pas être utilisé dans la syntaxe de 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 cache dans la base de données locale pour améliorer les performances.
Valeurs valides
- OUI Les métadonnées sont mises en cache au premier accès et restent dans le cache pendant une période spécifiée par
PROP_CACHE_DURATION. - NON :
Les métadonnées ne seront pas mises en cache. Toutes les tentatives d'accès aux objets du catalogue vont atteindre, 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 le cache à tout moment en appelant
DBMS_CATALOG.PREFILL_CATALOG_CACHE.PROP_CACHE_ASYNC'CACHE_ASYNC'Ce champ s'affiche si le cache est renseigné à l'aide de travaux asynchrones.
Valeurs valides
- OUI :
Les métadonnées sont mises en cache à l'aide d'un travail DBMS_SCHEDULER qui est créé la première fois qu'un utilisateur demande les métadonnées.
- NON :
Les métadonnées mettront en cache 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 requête 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 sur un référentiel AWS Glue distant.
- OCI_DCAT : le catalogue est défini sur une instance OCI Data Catalog.
Remarque
Il s'agit d'une propriété de 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 du catalogue.
Il existe deux manières d'indiquer une propriété personnalisée :- Vous pouvez définir une seule propriété personnalisée, disons "
MY_PROP", en indiquant 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 indiquer un groupe de propriétés client en indiquant le nom de propriété simple "CUSTOM" avec un objet JSON contenant des paires nom/valeur.
DBMS_CATALOG.UPDATE_CATALOG_PROPERTY( catalog_name => 'some_catalog', catalog_property => 'CUSTOM', new_value => '{"Property1" : "Value 1", "Property2" : "Value 2", ...}');Remarque
Les noms de propriété personnalisée respectent la casse. Par conséquent,CUSTOM:MY_PROPest distinct deCUSTOM:My_Prop.Pour supprimer une propriété personnalisée, définissez la valeur sur NULL.
Les propriétés personnalisées peuvent être utilisées comme termes de recherche dans l'interface utilisateur Data Studio. Par exemple, vous pouvez rechercher toutes les tables avec la propriété MY_PROP en indiquant 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 un format JSON 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, au format JSON, en utilisant le 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 permet de 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 différents types de données personnalisés pour gérer les informations relatives au catalogue. Elles sont les suivantes :
credential_infoetcredential_info_map: structures permettant de stocker et de mettre en correspondance les informations d'identification.catalog_tableetcatalog_tables: enregistrements et tables de stockage des métadonnées de table détaillées (par exemple, propriétaire, nom, description, statut).catalog_schemaetcatalog_schemas: enregistrements et tables pour les métadonnées de schéma.catalog_objectetcatalog_objects: enregistrements et tables pour les métadonnées d'objet dans un catalogue.
- Package DBMS_CATALOG
Le packageDBMS_CATALOGinclut un large éventail de sous-programmes de gestion de catalogue, regroupés par fonctionnalité. - Récapitulatif de DBMS_CATALOG
Cette section couvre les sous-programmesDBMS_CATALOGfournis avec la base de données Autonomous AI.
Rubrique parent : Référence de package fourni par la base de données Autonomous AI