Créer des tables fédérées à l'aide de liens hypertexte de table en définissant la portée
Vous pouvez créer une table fédérée via un lien hypertexte de table de base de données Autonomous AI. Une table fédérée est une table externe définie dans les liens hypertexte de table. Il permet l'agrégation de données à partir de plusieurs instances de bases de données d'IA autonomes.
Bien qu'une table fédérée utilise le même mécanisme de lien hypertexte qu'une table externe, le workflow de création diffère. Pour les tables externes, le fournisseur crée et partage des liens hypertexte de table, et chaque consommateur utilise ces liens hypertexte pour définir des tables externes. Pour les tables fédérées, le consommateur lance la création de la table, et les liens hypertexte de table sont automatiquement créés dans la base de données fournisseur, à condition que le consommateur soit dans la portée définie par le fournisseur.
En tant que fournisseur, vous pouvez définir des portées dans votre base de données pour accorder aux destinataires le privilège de créer automatiquement des liens hypertexte de table. Les destinataires autorisés dans ces portées peuvent créer des tables fédérées et interroger des données à partir de plusieurs bases de données source sans échange de liens manuel.
- Partage de données simplifié : les destinataires peuvent désormais lancer la création d'une table externe séparément et créer des liens hypertexte de table lorsqu'ils appartiennent à une portée autorisée.
- Sécurité améliorée : élimine les méthodes de distribution URL (hyperlien de table) non sécurisées.
- Fédération de données : les destinataires peuvent agréger les données de plusieurs bases de données de fournisseur via des tables fédérées.
Les sections suivantes décrivent le workflow détaillé sur la façon dont les bases de données autonomes fournisseur et consommateur créent des tables fédérées en définissant des portées dans un exemple de cas d'utilisation pratique. Ce flux de travail et les exemples de code associés peuvent être modifiés et implémentés en fonction de vos besoins.
- Workflow de création de tables fédérées
Le workflow suivant a des responsabilités distinctes pour le fournisseur Autonomous AI Database et la base de données Autonomous AI du consommateur. - Dépannage des scénarios
Cette section fournit des instructions sur les types de défaillance qui peuvent survenir et sur la manière de résoudre les problèmes.
Workflow de création de tables fédérées
Le workflow suivant a des responsabilités distinctes pour la base de données Autonomous AI du fournisseur et la base de données Autonomous AI du consommateur.
Du côté du fournisseur, la première étape consiste à définir une portée de création qui spécifie les bases de données Autonomous AI consommateur autorisées à créer des liens hypertexte de table à distance dans le fournisseur. La portée peut être définie au niveau du schéma ou de l'objet.
Ensuite, le DBA du fournisseur contrôle qui peut gérer les portées en appelant DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER pour les utilisateurs sélectionnés. Ces utilisateurs privilégiés peuvent utiliser DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE, UPDATE_CREATION_SCOPE et UNREGISTER_CREATION_SCOPE pour enregistrer, modifier ou enlever des portées pour des tables ou des schémas spécifiques, et LIST_CREATION_SCOPES pour vérifier la configuration en cours. Lorsqu'un destinataire demande ultérieurement un lien hypertexte, le fournisseur vérifie que la base de données Autonomous AI du destinataire demandeur correspond à la portée inscrite avant d'autoriser la génération d'URL, en veillant à ce que seuls les destinataires autorisés puissent créer des liens hypertexte dans les données du fournisseur.
Du point de vue du consommateur, le workflow démarre une fois que le fournisseur a défini des portées incluant la base de données du consommateur. Le DBA du consommateur accorde à des utilisateurs spécifiques le privilège de créer des tables fédérées sur les données du fournisseur en appelant DBMS_DATA_ACCESS_ADMIN.GRANT_READ.
Un destinataire peut ensuite appeler DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE pour créer des liens hypertexte de table dans la base de données du fournisseur pour le compte du destinataire. La table fédérée résultante du destinataire peut ensuite interroger les données du fournisseur comme s'il s'agissait d'une table externe locale.
Lorsque l'accès fédéré n'est plus requis, le destinataire nettoie en appelant DBMS_DATA_ACCESS.DROP_FEDERATED_TABLE, ce qui enlève l'objet de table fédérée dans le destinataire tout en laissant intactes les portées du fournisseur.
- Le fournisseur (
ADMIN) accorde le privilège d'enregistrement de portée au propriétaire des données à l'aide de la procédureDBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER.BEGIN DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER( username => 'DATA_OWNER', scope => 'MY$COMPARTMENT' ); END; / - En tant qu'utilisateur
ADMIN, accordez des privilèges d'exécution à l'utilisateur propriétaire des données (DATA_OWNER).grant execute on DBMS_DATA_ACCESS_SCOPE to DATA_OWNER; - Le propriétaire des données inscrit la portée de création sur un schéma ou un objet partagé dans la base de données Autonomous AI du fournisseur à l'aide de la procédure
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE. Les bases de données Autonomous AI grand public du même compartiment peuvent ainsi créer des liens hypertexte de table à distance.BEGIN DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE( schema_name => 'DATA_OWNER', schema_object_name => 'SALES_DATA', scope => 'MY$COMPARTMENT' ); END; / -
Le destinataire
ADMINaccorde le privilège de lecture à l'analyste métier à l'aide de la procédureDBMS_DATA_ACCESS_ADMIN.GRANT_READ.Ainsi, l'analyste peut lancer la création de tables fédérées.
- Le destinataire
ADMINaccorde des privilèges d'exécution à l'utilisateur bi_analyst.grant execute on DBMS_DATA_ACCESS to bi_analyst; -
L'analyste d'entreprise crée une table externe fédérée dans la base de données d'IA autonome consommateur à l'aide de la procédure
DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE. Le lien hypertexte Table est généré automatiquement si la portée correspond à l'absence d'intervention du soignant.BEGIN DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE( table_name => 'DEPT_SALES_XT', remote_schema_name => 'SHARED_SCHEMA', remote_schema_object_name => 'SALES_DATA', db_ocids => '[{"region": "IAD", "db_ocid": "OCID1.AUTONOMOUSDATABASE.OC1.IAD.EXAMPLE123"}]' ); END; /Remarque
L'OCID de base de données (db_ocid) doit être en majuscules. - L'analyste interroge la table externe pour les analyses de service :
SELECT * FROM DEPT_SALES_XT WHERE region = 'West';
Les exemples de code ci-dessus peuvent être modifiés et implémentés en fonction de vos besoins.
Pour plus d'informations sur les fonctions et paramètres ci-dessus, reportez-vous aux sections DBMS_DATA_ACCESS_SCOPE Package, DBMS_DATA_ACCESS_ADMIN Package et DBMS_DATA_ACCESS Package.
| Opération | Description | Utilisateur qui exécute cette opération |
|---|---|---|
| Définir la portée de la création | Définit les bases de données autorisées à créer des liens hypertexte de table à distance dans une instance de base de données Autonomous AI de fournisseur. Pour plus d'informations, reportez-vous à Portée de création. | Fournisseur |
| Octroyer l'inscription |
Permet aux utilisateurs d'une instance de base de données Autonomous AI de fournisseur d'inscrire ou de mettre à jour la portée. Pour plus d'informations, reportez-vous à Registre des subventions. |
Fournisseur |
| Portée de création de registre |
Définit les objets de base de données pouvant comporter des liens hypertexte de table créés sous une portée d'autorisation spécifiée. Pour plus d'informations, reportez-vous à Portée de création d'inscription. |
Fournisseur |
| Mettre à jour la portée de création | Modifie la portée de création existante. Pour plus d'informations, voir Mettre à jour la portée de création. | Fournisseur |
| Désinscrire la portée de la création | Supprime les paramètres de portée de création enregistrés précédemment pour un schéma, un seul objet ou une liste d'objets. Pour plus d'informations, reportez-vous à Désinscription de la portée de création. | Fournisseur |
| Extraire la portée de création | Interroge et extrait les portées de création enregistrées pour les schémas ou objets spécifiés. Pour plus d'informations, reportez-vous à Portées de création de liste. | Fournisseur |
| Créer une table fédérée | Crée une table fédérée. Pour plus d'informations, reportez-vous à Créer une table fédérée. | Destinataire |
| Octroyer l'accès en lecture | Accorde des privilèges de lecture à un utilisateur destinataire pour les schémas ou objets distants, ce qui permet la création de tables fédérées. Pour plus d'informations, reportez-vous à Octroi de la lecture. | Destinataire |
| Révoquer la lecture | Révoque un privilège de lecture accordé précédemment pour créer une table fédérée. Pour plus d'informations, reportez-vous à Révoquer la lecture. | Destinataire |
| Supprimer la table fédérée | Supprime de la base de données les tables fédérées indiquées. Pour plus d'informations, reportez-vous à Suppression de la table fédérée. | Destinataire |
- Portée de la création
Une portée de la création dans une base de données de fournisseur détermine les instances de base de données Autonomous AI de consommateur autorisées à créer des liens hypertexte de table à distance dans la base de données de fournisseur. - Registre d'octroi
Le fichierADMIN(ouPDB_DBA) dans la base de données Autonomous AI du fournisseur utilise le fichierDBMS_DATA_ACCESS_ADMIN.GRANT_REGISTERpour décider quels utilisateurs locaux sont autorisés à gérer les portées de création. - Portée de création d'enregistrement
Un fournisseur appelleDBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPEpour enregistrer la portée autorisée pour des tables spécifiques ou des schémas entiers afin de créer des liens hypertexte de table dans ces objets. - Portée de création de la mise à jour
Si un fournisseur doit modifier l'accès, le même utilisateur ou un autre utilisateur autorisé appelleUPDATE_CREATION_SCOPEpour élargir, restreindre ou ajuster les bases de données Autonomous AI consommateur qui peuvent créer des liens hypertexte pour des objets de schéma particuliers. - Annulation de l'inscription de la portée de création
Lorsqu'un fournisseur veut révoquer entièrement la fonctionnalité de création à distance (pour une table, une liste de tables ou un schéma), il appelleUNREGISTER_CREATION_SCOPE. Cela supprime la portée enregistrée et empêche la création de nouveaux liens hypertexte de table pour ces objets par les bases de données consommateur. - Extraire les portées de création
A tout moment, un utilisateur autorisé peut appelerLIST_CREATION_SCOPESpour extraire les définitions de portée en cours. - Octroi de la lecture
Dans la base de données Autonomous AI du consommateur,ADMIN(ouPDB_DBA) utiliseDBMS_DATA_ACCESS_ADMIN.GRANT_READpour accorder à des utilisateurs spécifiques le droit de créer des tables fédérées sur des schémas ou des objets de fournisseur distant. - Révoquer la lecture
La procédureREVOKE_READenlève le privilège d'un utilisateur de créer des tables fédérées sur un schéma ou un objet de schéma distant spécifié dans la base de données du fournisseur. - Création d'une table fédérée
Un utilisateur destinataire disposant de privilèges de lecture appelleDBMS_DATA_ACCESS.CREATE_FEDERATED_TABLEpour créer une table fédérée sur la vue ou la table du périmètre du fournisseur. - Suppression de la table fédérée
Lorsque l'accès fédéré n'est plus requis, l'utilisateur destinataire appelleDBMS_DATA_ACCESS.DROP_FEDERATED_TABLEpour enlever la table fédérée.
Portée de création
Une portée de création dans une base de données de fournisseur détermine les instances de base de données Autonomous AI de consommateur autorisées à créer des liens hypertexte de table à distance dans la base de données de fournisseur.
- Basé sur la location : (
MY$TENANCY) base de données de la même location que la base de données du fournisseur. - Basé sur le compartiment : (
MY$COMPARTMENT) base de données du même compartiment que la base de données du fournisseur. - Niveau objet : tables ou vues spécifiques au sein d'un schéma.
- Niveau du schéma : tous les objets d'un schéma spécifique.
Vous pouvez gérer les portées de création à l'aide du package DBMS_DATA_ACCESS_SCOPE, qui fournit des procédures d'enregistrement, d'annulation d'enregistrement, de mise à jour et d'extraction des portées. Pour plus d'informations, reportez-vous à DBMS_DATA_ACCESS_SCOPE.
Rubrique parent : Workflow de création de tables fédérées
Octroyer l'inscription
L'élément ADMIN (ou PDB_DBA) dans la base de données Autonomous AI du fournisseur utilise l'élément DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER pour décider quels utilisateurs locaux sont autorisés à gérer les portées de création.
Seuls ces utilisateurs privilégiés peuvent enregistrer, mettre à jour ou annuler l'enregistrement des portées, ce qui empêche l'exposition incontrôlée des tables de fournisseurs.
Exemple
BEGIN
DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER(
username => 'ANALYTICS_ADMIN',
scope => 'MY$COMPARTMENT'
);
END;
/L'exemple ci-dessus accorde à l'utilisateur ANALYTICS_ADMIN le droit d'enregistrer des ensembles de données dans la portée MY$COMPARTMENT.
Reportez-vous à GRANT_REGISTER pour obtenir une référence de syntaxe.
Rubrique parent : Workflow de création de tables fédérées
Portée de création de registre
Un fournisseur appelle DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE pour inscrire la portée autorisée pour des tables spécifiques ou des schémas entiers afin de créer des liens hypertexte de table dans ces objets.
BEGIN
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'NULL',
scope => 'MY$COMPARTMENT'
);
END;
/Cet exemple inscrit une portée d'accès aux données au niveau du schéma pour le schéma ANALYTICS, en l'associant au compartiment MY$COMPARTMENT.
Exemple : enregistrement d'une portée de niveau objet
BEGIN
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'SALES_DATA',
scope => 'MY$TENANCY'
);
END;
/Cet exemple enregistre une portée d'accès aux données plus ciblée pour un objet spécifique SALES_DATA dans le schéma ANALYTICS, en le liant à la location MY$TENANCY. Contrairement à la version de niveau schéma, schema_object_name limite l'application à cette table, ce qui permet un contrôle granulaire des droits de création.
BEGIN
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_list => '["SALES_DATA", "CUSTOMER_DATA", "PRODUCT_DATA"]',
scope => 'MY$COMPARTMENT'
);
END;
/Cette procédure associe les objets de schéma répertoriés (SALES_DATA, CUSTOMER_DATA et PRODUCT_DATA) à la portée MY$COMPARTMENT, ce qui limite leur création ou leur accès aux entités de ce compartiment.
Pour plus d'informations sur la syntaxe, reportez-vous à Portée de création d'enregistrement.
Rubrique parent : Workflow de création de tables fédérées
Mettre à jour la portée de création
Si un fournisseur doit modifier l'accès, le même utilisateur ou un autre utilisateur autorisé appelle UPDATE_CREATION_SCOPE pour élargir, restreindre ou ajuster les bases de données Autonomous AI consommateur qui peuvent créer des liens hypertexte pour des objets de schéma particuliers.
BEGIN
DBMS_DATA_ACCESS_SCOPE.UPDATE_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'SALES_DATA',
scope => 'MY$COMPARTMENT'
);
END;
/Cet exemple met à jour la portée de création de la table SALES_DATA dans le schéma ANALYTICS vers MY$COMPARTMENT.
Pour plus d'informations sur la syntaxe, reportez-vous à Portée de création de mises à jour.
Rubrique parent : Workflow de création de tables fédérées
Désinscrire la portée de la création
Lorsqu'un fournisseur veut révoquer entièrement la fonctionnalité de création à distance (pour une table, une liste de tables ou un schéma), il appelle UNREGISTER_CREATION_SCOPE. Cela supprime la portée enregistrée et empêche la création de nouveaux liens hypertexte de table pour ces objets par les bases de données consommateur.
BEGIN
DBMS_DATA_ACCESS_SCOPE.UNREGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'SALES_DATA'
);
END;
/Cet exemple de bloc supprime une étendue de création enregistrée précédemment pour SALES_DATA dans le schéma ANALYTICS, de sorte que les objets créés sous cette étendue ne soient plus régis par l'accès aux données qui contrôle la portée appliquée.
Pour plus d'informations sur la syntaxe, reportez-vous à Annulation de l'enregistrement de la portée de création.
Rubrique parent : Workflow de création de tables fédérées
Extraire les portées de création
A tout moment, un utilisateur autorisé peut appeler LIST_CREATION_SCOPES pour extraire les définitions de portée en cours.
DECLARE
l_result CLOB;
BEGIN
DBMS_DATA_ACCESS_SCOPE.LIST_CREATION_SCOPES(
schema_name => 'ANALYTICS',
result => l_result
);
DBMS_OUTPUT.PUT_LINE(l_result);
END;
/Reportez-vous à la section Extraire la portée de création pour obtenir une référence de syntaxe.
Rubrique parent : Workflow de création de tables fédérées
Octroyer l'accès en lecture
Dans la base de données Autonomous AI du consommateur, ADMIN (ou PDB_DBA) utilise DBMS_DATA_ACCESS_ADMIN.GRANT_READ pour accorder à des utilisateurs spécifiques le droit de créer des tables fédérées sur des schémas ou des objets de fournisseur distant.
Exemple : Accorder l'accès à un objet distant spécifique
BEGIN
DBMS_DATA_ACCESS_ADMIN.GRANT_READ(
username => 'BI_ANALYST',
remote_schema_name => 'ANALYTICS',
remote_schema_object_name => 'SALES_DATA'
);
END;
/Cet exemple accorde à l'utilisateur BI_ANALYST un accès en lecture à l'objet SALES_DATA distant spécifique dans le schéma ANALYTICS d'un fournisseur de données externe.
Reportez-vous à Octroi d'une lecture pour obtenir une référence de syntaxe.
Rubrique parent : Workflow de création de tables fédérées
Révoquer la lecture
La procédure REVOKE_READ enlève le privilège d'un utilisateur de créer des tables fédérées sur un schéma distant ou un objet de schéma spécifié dans la base de données du fournisseur.
Si vous omettez le nom de l'objet distant, il révoque l'accès à la table fédérée de cet utilisateur pour tous les objets du schéma distant donné.
Exemple
BEGIN
DBMS_DATA_ACCESS_ADMIN.REVOKE_READ(
username => 'BI_ANALYST',
remote_schema_name => 'ANALYTICS',
remote_schema_object_name => 'SALES_DATA'
);
END;
/Pour plus d'informations sur la syntaxe, reportez-vous à Révoquer la lecture.
Rubrique parent : Workflow de création de tables fédérées
Créer une table fédérée
Un utilisateur consommateur disposant de privilèges de lecture appelle DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE pour créer une table fédérée sur la vue ou la table de portée du fournisseur.
La procédure utilise les OCID de base de données et les informations de région pour établir des liens hypertexte de table afin que le consommateur puisse interroger des données distantes comme s'il s'agissait d'une table externe locale.
Conditions préalables
- L'utilisateur doit disposer de privilèges de lecture via la procédure
GRANT_READ. - L'utilisateur doit exister dans les bases de données consommateur et fournisseur avec les privilèges requis.
- La base de données du consommateur doit appartenir à la portée de création du fournisseur.
- Le fournisseur doit avoir une portée de création enregistrée pour les objets cible.
- Connectivité réseau établie entre les bases de données consommateur et fournisseur.
Exemple : fournisseur unique
BEGIN
DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE(
table_name => 'SALES_FED',
remote_schema_name => 'ANALYTICS',
remote_schema_object_name => 'SALES_DATA',
db_ocids => '[{"region": "IAD", "db_ocid": "OCID1.AUTONOMOUSDATABASE.OC1.IAD.EXAMPLE123"}]'
);
END;
/Dans l'exemple ci-dessus, un destinataire appelle DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE pour créer une table fédérée locale qui connecte à la table ou à la vue d'un fournisseur distant (par exemple, SALES_DATA dans le schéma ANALYTICS), en utilisant JSON db_ocids pour indiquer la base de données de fournisseur OCIDs et les régions pour une interrogation transparente comme si elle était locale.
SELECT
REGION,
PRODUCT_ID,
SUM(SALES_AMOUNT) as total_sales,
COUNT(*) as transaction_count
FROM SALES_FED
GROUP BY REGION, PRODUCT_ID
ORDER BY total_sales DESC;Reportez-vous à Création d'une table fédérée pour obtenir une référence de syntaxe.
Rubrique parent : Workflow de création de tables fédérées
Supprimer la table fédérée
Lorsque l'accès fédéré n'est plus requis, l'utilisateur destinataire appelle DBMS_DATA_ACCESS.DROP_FEDERATED_TABLE pour enlever la table fédérée.
Cette procédure nettoie l'objet côté consommateur et met fin à ce chemin d'accès fédéré particulier, tandis que les portées et privilèges du fournisseur sous-jacent restent sous le contrôle du fournisseur.
BEGIN
DBMS_DATA_ACCESS.DROP_FEDERATED_TABLE(
table_name => 'SALES_FED'
);
END;
/L'exemple ci-dessus supprime la table SALES_FED.
Reportez-vous à Suppression de la table fédérée pour obtenir une référence de syntaxe.
Rubrique parent : Workflow de création de tables fédérées
Scénarios de dépannage
Cette section fournit des instructions sur les types de défaillance qui peuvent survenir et sur la façon de résoudre les problèmes.
-
La base de données du consommateur n'est pas incluse
Problème : le destinataire reçoit une erreur d'autorisation lors de la tentative de création de tables fédérées.
Résolution
- Vérifiez que l'ID de base de données du consommateur correspond aux critères de portée du fournisseur.
- Vérifiez que des privilèges de lecture ont été accordés à l'utilisateur via la procédure
GRANT_READ. - Le fournisseur de vérification a inscrit la portée de création appropriée à l'aide de la procédure
REGISTER_CREATION_SCOPE. - Vérifiez la connectivité réseau entre les brokers consommateur et fournisseur.
- Vérifiez le statut d'inscription de la base de données dans la console OCI.
-
Echec de la création de la table fédérée
Problème : la procédure
CREATE_FEDERATED_TABLEéchoue bien que les prérequis soient respectés.Résolution- Vérifiez que l'utilisateur existe dans les bases de données consommateur et fournisseur.
- Vérifiez que l'utilisateur dispose du privilège
GRANT OPTIONou de la propriété des objets sur les objets distants. - Vérifiez que les noms de schéma et d'objet distants sont corrects (sensible à la casse).
- Vérifiez que le fichier JSON
db_ocidscontient des codes de région et des OCID de base de données valides. - Assurez-vous que la portée du fournisseur est activée et contient la base de données du consommateur.
- Recherchez les erreurs dans les journaux de communication du broker.
-
Erreurs d'autorisation
Problème : les utilisateurs ne peuvent pas enregistrer les portées ni accéder aux tables fédérées.
Résolution
- Vérifiez que le privilège
REGISTERa été accordé à l'utilisateur à l'aide de la procédureGRANT_REGISTER(côté fournisseur). - Vérifiez que le privilège
READa été accordé à l'utilisateur à l'aide deGRANT_READ(côté consommateur). - Pour les opérations de niveau objet, vérifiez que l'utilisateur est propriétaire de l'objet ou dispose du privilège d'option
GRANT. - Pour les opérations de niveau schéma, vérifiez que l'utilisateur a le rôle
ADMINouPDB_DBA. - Vérifiez l'historique des révocations de privilège pour vous assurer que les privilèges n'ont pas été révoqués explicitement.
- Vérifiez que le privilège