Ensemble DBMS_DATA_ACCESS

L'ensemble DBMS_DATA_ACCESS fournit des sous-programmes pour générer et gérer les hyperliens de table pour les jeux de données.

Aperçu de DBMS_DATA_ACCESS

Décrit l'utilisation de l'ensemble DBMS_DATA_ACCESS.

DBMS_DATA_ACCESS prend en charge les opérations suivantes :

  • Génération d'un hyperlien de table
  • Invalidation manuelle d'un hyperlien de table
  • Liste des hyperliens de table actifs

Modèle de sécurité DBMS_DATA_ACCESS

La sécurité de cet ensemble peut être contrôlée en accordant EXECUTE sur cet ensemble aux utilisateurs ou rôles sélectionnés.

Lorsqu'un utilisateur dispose de l'autorisation EXECUTE sur DBMS_DATA_ACCESS, il peut créer, lister ou invalider les hyperliens de table créés par l'utilisateur. En outre, l'utilisateur ADMIN dispose par défaut des privilèges suivants :
  • L'utilisateur ADMIN doté du rôle PDB_DBA dispose du privilège EXECUTE sur DBMS_DATA_ACCESS.
  • L'utilisateur ADMIN doté du rôle PDB_DBA peut lister ou invalider tout hyperlien de table dans une instance de base de données du service d'intelligence artificielle autonome.

Sommaire des sous-programmes DBMS_DATA_ACCESS

Cette section décrit les sous-programmes DBMS_DATA_ACCESS fournis avec Autonomous AI Database.

Sous-programme Description

ADD_MEMBER Procédure

Cette procédure ajoute un hyperlien de table existant au groupe d'hyperliens de table en tant que membre.

CREATE_URL Procédure

Cette procédure génère un hyperlien de table ou un groupe d'hyperliens de table.

EXTEND_URL Procédure

Cette procédure prolonge la durée de vie d'un hyperlien de table.

CREATE_FEDERATED_TABLE Cette procédure crée une table fédérée.
DROP_FEDERATED_TABLE Cette procédure supprime une table fédérée.

GET_PREAUTHENTICATED_URL Procédure

Cette procédure génère un hyperlien de table.

Cette procédure est obsolète. Utilisez plutôt la procédure CREATE_URL.

INVALIDATE_URL Procédure

Cette procédure invalide un hyperlien de table.

Fonction LIST_ACTIVE_URLS

Cette fonction liste tous les hyperliens de table actuellement actifs.

LIST_MEMBERS Procédure

Cette procédure répertorie les membres d'un groupe d'hyperliens de table.

REMOVE_MEMBER Procédure

Cette procédure supprime un membre d'un groupe d'hyperliens de table.

UPDATE_URL Procédure

Cette procédure met à jour les propriétés d'un hyperlien de table ou d'un groupe d'hyperliens de table.

ADD_MEMBER Procédure

Cette procédure ajoute un hyperlien de table existant au groupe d'hyperliens de table en tant que membre.

Syntaxe

DBMS_DATA_ACCESS.ADD_MEMBER(
    id        IN VARCHAR2,
    member_id       IN BOOLEAN DEFAULT FALSE,
    result          OUT CLOB);

Paramètres

Paramètre Description

id

Indique l'identificateur du groupe d'hyperliens de table.

member_id

Indique l'identificateur de l'hyperlien de table à ajouter au groupe.

result

Fournit JSON pour indiquer si l'invalidation est un succès ou un échec (CLOB).

Exemple

DECLARE
    status CLOB;
    BEGIN
       DBMS_DATA_ACCESS.ADD_MEMBER(
        id => 'Vd1Px7QWASdqDbnndiuwTAyyEstv82PCHqS_example',
        member_id => 'Zdd1Px7QWASdqDbnndiuwTAyyEstv82PCHlS_example',
        result => status);           
       dbms_output.put_line(status);
    END;
/

CREATE_URL Procédure

Cette procédure génère un hyperlien de table ou un groupe d'hyperliens de table. Un groupe d'hyperliens de table permet d'accéder à plusieurs hyperliens de table avec une seule URL. Cette procédure est surchargée.

Syntaxe

DBMS_DATA_ACCESS.CREATE_URL( 
    schema_name                 IN VARCHAR2,
    schema_object_name          IN VARCHAR2,
    application_user_id         IN VARCHAR2,
    expiration_minutes          IN NUMBER,
    expiration_count            IN NUMBER,
    consistent                  IN BOOLEAN DEFAULT FALSE,
    service_name                IN VARCHAR2,
    column_lists                IN CLOB,
    default_bind_values         IN CLOB,
    inherit_acl                 IN BOOLEAN  DEFAULT FALSE,
    password                    IN VARCHAR2 DEFAULT NULL,
    acl                         IN CLOB  DEFAULT NULL,
    max_failed_access_attempts  IN NUMBER DEFAULT 10,
    result                      OUT CLOB);

DBMS_DATA_ACCESS.CREATE_URL( 
    sql_statement               IN CLOB,
    application_user_id         IN VARCHAR2,
    expiration_minutes          IN NUMBER,
    expiration_count            IN NUMBER,
    consistent                  IN BOOLEAN DEFAULT FALSE,
    service_name                IN VARCHAR2,
    column_lists                IN CLOB,
    inherit_acl                 IN BOOLEAN  DEFAULT FALSE,
    default_bind_values         IN CLOB,
    password                    IN VARCHAR2 DEFAULT NULL,
    acl                         IN CLOB  DEFAULT NULL,
    max_failed_access_attempts  IN NUMBER DEFAULT 10,
    result                      OUT CLOB);

DBMS_DATA_ACCESS.CREATE_URL( 
    sqls                  IN CLOB,
    application_user_id   IN VARCHAR2,
    expiration_minutes    IN NUMBER,
    expiration_count      IN NUMBER,
    consistent            IN BOOLEAN DEFAULT FALSE,
    service_name          IN VARCHAR2,
    inherit_acl           IN BOOLEAN   DEFAULT FALSE,    
    password              IN VARCHAR2 DEFAULT NULL
    acl                   IN CLOB  DEFAULT NULL,
    result                OUT CLOB);

Paramètres

Paramètre Description

schema_name

Indique le responsable de l'objet.

schema_object_name

Indique l'objet de schéma (table ou vue).

application_user_id

Ce paramètre facultatif spécifie une valeur d'ID utilisateur d'application. Lorsque vous accédez à l'hyperlien de table ou au groupe d'hyperliens de table, la valeur application_user_id spécifiée lors de la génération de l'hyperlien de table est disponible au moyen des éléments suivants :

sys_context('DATA_ACCESS_CONTEXT$', 'USER_IDENTITY')

Vous pouvez définir des stratégies de BDVP qui utilisent cette valeur dans le contexte d'application pour limiter la visibilité des enregistrements à l'utilisateur de l'application.

expiration_minutes

Ce paramètre facultatif spécifie la durée en minutes de validité de l'hyperlien de table ou du groupe d'hyperliens de table.

Le délai d'expiration maximal autorisé est de 90 jours (129600 minutes). Si la valeur est supérieure à 129600, la valeur utilisée est 129600 minutes (90 jours).

Si expiration_minutes est spécifié en tant que valeur non nulle, expiration_count ne doit pas être réglé à une valeur non nulle. Les deux ne peuvent pas être non nulles en même temps.

Valeur par défaut : lorsque expiration_minutes n'est pas indiqué ou lorsque expiration_minutes est indiqué comme NULL, la valeur est réglée à 90 jours (129600 minutes).

expiration_count

Ce paramètre facultatif spécifie le nombre d'accès autorisés sur l'hyperlien de table ou sur le groupe d'hyperliens de table.

Il n'existe aucune valeur par défaut.

Si expiration_count n'est pas spécifié et que expiration_minutes n'est pas spécifié, expiration_minutes est réglé à 90 jours (129600 minutes).

Si expiration_count est spécifié en tant que valeur non nulle, expiration_minutes ne doit pas être réglé à une valeur non nulle. Les deux ne peuvent pas être non nulles en même temps.

consistent

Ce paramètre est facultatif. Lorsque cette option est réglée à TRUE, le producteur d'hyperliens de table fournit des données de manière cohérente sur différentes pages. Cela permet à un consommateur d'accéder aux données pour le premier accès et l'accès ultérieur aux pages associées à un hyperlien de table à l'aide du même instantané de données (SCN) que la première page.

Lorsque consistent est réglé à TRUE et qu'un hyperlien de table référence des objets de schéma provenant du schéma d'un autre utilisateur, l'utilisateur de base de données qui crée l'hyperlien de table doit avoir le privilège FLASHBACK sur tous les objets de schéma utilisés dans l'hyperlien de table qui appartiennent au schéma de l'autre utilisateur.

Exemple :

GRANT FLASHBACK ON TREE_SCHEMA.TREE_DATA TO SCOTT;

Remarque : si l'activité de la base de données est importante et que suffisamment de temps passe entre l'extraction de la première page et l'extraction d'une page suivante, il peut ne pas être possible d'extraire des données ultérieures cohérentes avec le premier accès. Dans ce cas, l'extraction entraîne une erreur.

Remarque : si l'activité de la base de données est importante et que suffisamment de temps passe entre l'extraction de la première page et l'extraction d'une page suivante, il peut ne pas être possible d'extraire des données ultérieures cohérentes avec le premier accès. Dans ce cas, l'extraction entraîne une erreur.

La valeur par défaut est FALSE.

service_name

Service de base de données à utiliser pour l'extraction de données lors de l'utilisation de l'hyperlien de table. Spécifiez la garantie de niveau de service et les ressources utilisées pour traiter cet hyperlien de table. Par exemple, l'accès à un objet ou à une instruction SQL peut être mappé avec les services HIGH ou MEDIUM, tandis que l'accès à un autre objet ou à une autre instruction SQL peut être mappé avec le service LOW. Les valeurs prises en charge sont HIGH, MEDIUM, LOW.

La valeur par défaut est LOW.

column_lists

Valeur JSON qui spécifie les options par colonne. Les options prises en charge spécifiées dans le paramètre column_lists sont une ou plusieurs des options suivantes :

  • order_by_columns : Spécifie les colonnes qui prennent en charge le tri.

  • filter_columns : Spécifie les colonnes qui prennent en charge le filtrage

  • default_color_columns : Spécifie d'utiliser uniquement la coloration par défaut pour les colonnes spécifiées.

  • group_by_columns : Indique que le regroupement est autorisé pour les colonnes spécifiées (la consultation des données en regroupant la colonne spécifiée est autorisée).

Le paramètre column_lists est JSON et contient une liste de tableaux JSON de colonnes définissant la fonctionnalité d'hyperlien de table. Utilisez ce paramètre pour spécifier les colonnes pour une ou plusieurs des options : order_by_columns, filter_columns, default_color_columns ou group_by_columns.

Le formulaire est le suivant :

"column_lists" : {
        "order_by_columns": [order_by_columns_list],
        "filter_columns": [filter_columns_list],
        "default_color_columns": [default_color_columns_list],
        "group_by_columns": [group_by_columns_list]
},

Exemple :

"column_lists" : {
            "order_by_columns": ["NAME", "DEPARTMENT"],
            "filter_columns": ["ID", "NAME", "DEPARTMENT"],
            "default_color_columns": ["DEPARTMENT"],
            "group_by_columns": ["DEPARTMENT"]
},

Valeurs par défaut :

Si column_lists n'est pas spécifié pour les options order_by_columns et filter_columns, le tri et le filtrage sont activés pour toutes les colonnes.

Si column_lists n'est pas spécifié pour group_by_columns, l'option Regrouper par n'est activée pour aucune colonne. Par défaut, les colonnes définies pour activer en tant que group_by_columns sont également activées en tant que filter_columns.

default_bind_values

Spécifie les valeurs par défaut d'une ou de plusieurs variables de liaison (pour une valeur sql_statement spécifiée avec des variables de liaison).

Cela permet à un consommateur d'hyperliens de table d'accéder aux données d'hyperliens de table avec des valeurs de liaison par défaut, sans fournir les valeurs de liaison en tant que paramètres d'interrogation.

inherit_acl

Ce paramètre est facultatif. Réglez la valeur à TRUE pour hériter des listes de contrôle d'accès. Lorsque ce paramètre est TRUE, l'adresse IP du consommateur d'un hyperlien de table ou d'un groupe d'hyperliens de table entrant est validée avec les listes de contrôle d'accès de la base de données du fournisseur avant d'autoriser l'accès aux données.

Lorsque le paramètre n'est pas fourni ou que la valeur du paramètre est réglée à FALSE, les vérifications de liste de contrôle d'accès ne sont pas appliquées.

Si aucune liste de contrôle d'accès n'est configurée pour la base de données du fournisseur, la valeur inherit_acl est ignorée et l'accès aux données est autorisé sans vérification de liste de contrôle d'accès.

Lorsque inherit_acl est spécifié avec la valeur TRUE et que acl est réglé pour spécifier une liste de contrôle d'accès, l'accès aux données d'un hyperlien de table est limité aux hôtes spécifiés avec le paramètre acl ou à partir des hôtes hérités définis dans les listes de contrôle d'accès spécifiées pour l'instance de base de données de l'IA autonome.

La valeur par défaut est FALSE.

password

Ce paramètre est facultatif. Le paramètre password spécifie le mot de passe requis pour accéder à l'hyperlien de table.

Lorsque le paramètre password est inclus, le résultat inclut l'attribut url avec la valeur URL de l'hyperlien de table. Sans le paramètre password, l'attribut de résultat est preauth_url. Cette différence vous permet de distinguer un hyperlien de table protégé par mot de passe dans le résultat.

La longueur minimale du mot de passe est de 12 caractères et le mot de passe doit comprendre au moins une lettre majuscule, une lettre minuscule et un caractère numérique. Ces règles sont les mêmes que celles appliquées aux règles de complexité de mot de passe pour un utilisateur de base de données associé à une fonction PVF NULL (Password Verification Function). Si CREATE_URL est appelé avec le paramètre de mot de passe et que le mot de passe fourni n'est pas conforme à ces règles, par exemple, le mot de passe contient moins de 12 caractères, la création de l'URL échoue avec une erreur.

La valeur par défaut est NULL.

sqls

Spécifie un tableau JSON des énoncés ou des objets de schéma SELECT.

Voir la description suivante pour plus de détails sur le format du tableau JSON.

sql_statement

Spécifie le texte de l'interrogation de l'énoncé SELECT. La prise en charge des variables de liaison est disponible pour les types de colonne NUMBER et VARCHAR2.

acl

Ce paramètre est facultatif. Le paramètre acl spécifie la liste des adresses IP autorisées, des blocs CIDR ou des OCID de VCN OCI pour l'hyperlien de table. L'accès des consommateurs aux données de l'hyperlien de table est limité aux hôtes spécifiés dans la liste de contrôle d'accès.

Si le paramètre inherit_acl est réglé à TRUE et que le paramètre acl est spécifié, l'adresse IP du consommateur pour un hyperlien de table ou un groupe d'hyperliens de table entrant est validée par rapport aux listes de listes de contrôle d'accès définies dans la base de données du fournisseur ou à la liste de contrôle d'accès spécifiée dans le paramètre acl avant que l'accès aux données ne soit autorisé.

Le paramètre acl définit la liste de contrôle d'accès pour un hyperlien de table individuel, tandis que le paramètre inherit_acl permet au consommateur d'hériter de la liste de contrôle d'accès définie dans la base de données du fournisseur.

La valeur par défaut de ce paramètre est NULL.

max_failed_access_attempts

Ce paramètre est facultatif. Ce paramètre s'applique uniquement lorsque le paramètre password est utilisé.

Le paramètre max_failed_access_attempts spécifie le nombre maximal d'échecs de tentatives de mot de passe séquentielles; si cette valeur est dépassée, l'hyperlien de la table est invalidé. Le nombre de tentatives d'accès en échec séquentielles est réinitialisé à 0 lorsque l'utilisateur fournit le mot de passe correct.

La valeur par défaut pour ce paramètre est 10.

result

JSON qui indique le résultat de l'opération.

Le format du tableau JSON que vous fournissez en tant que paramètre sqls est :

Nom d'attribut Obligatoire Description
name Nombre Indique le nom du membre du groupe. Lorsqu'aucun nom n'est indiqué, la procédure crée un nom par défaut.
description Nombre Description du membre du groupe
sql_statement

Fournir sql_statement ou schema_object_name est obligatoire

Énoncé SQL pour le membre

Voir Créer un hyperlien de table avec un énoncé Select pour plus de détails.

schema_name Nombre

Nom du schéma pour le membre. Indiquez une valeur schema_name uniquement lorsque la table/vue fournie dans schema_object_name n'est pas disponible dans le schéma courant

Voir Créer un hyperlien de table pour une table ou une vue pour plus de détails.

schema_object_name

Fournir sql_statement ou schema_object_name est obligatoire

Nom de la table/vue pour le membre

Voir Créer un hyperlien de table pour une table ou une vue pour plus de détails.

default_bind_variable Nombre Applicable uniquement pour sql_statements avec des variables de liaison

Voir Créer un hyperlien de table avec un énoncé Select pour plus de détails.

column_lists Nombre Identique à la définition pour la création d'un hyperlien de table hors groupe

Voir Créer un hyperlien de table avec les fonctions d'interface utilisateur spécifiées sur les colonnes pour plus de détails.

Notes d'utilisation

  • Il y a une limite de 128 hyperliens de table actifs sur une instance de base de données d'IA autonome.

  • Lorsque vous utilisez un hyperlien de table à partir d'un navigateur, les options suivantes sont prises en charge :
    • Affichez les données retournées dans le format de table sans coloriage (par défaut), en ajoutant le paramètre d'interrogation ?view=table à l'hyperlien de table.
    • Affichez les données retournées au format de table et sélectionnez la ou les colonnes à colorier avec des couleurs prédéfinies en fonction des valeurs de colonne. Pour ce faire, ajoutez le paramètre d'interrogation ?view=table&colored_column_names=column_name_1,column_name_2,...column_name_n à l'hyperlien de table, où column_name_1 à column_name_n sont les noms des colonnes que vous voulez colorier.
    • Consultez les données retournées dans le format de table et sélectionnez un type de données de colonne spécifique que vous voulez colorier avec des couleurs prédéfinies, en ajoutant le paramètre d'interrogation ?view=table&colored_column_types=data_type. Les valeurs de paramètre data_type prises en charge sont VARCHAR et NONE.
    • La valeur du paramètre sql_statement doit être un énoncé SELECT. L'énoncé SELECT prend en charge les variables de liaison.

      Si des variables de liaison sont incluses dans l'énoncé de sélection et que les valeurs ne sont pas définies dans le paramètre default_bind_values, les valeurs de variable de liaison doivent être ajoutées à l'hyperlien de table généré en tant que paramètre d'interrogation lors de l'accès aux données.

      Lorsque vous incluez le paramètre default_bind_values, lorsque vous accédez aux données, vous pouvez omettre les valeurs de variable de liaison lorsque des valeurs par défaut sont spécifiées dans le paramètre default_bind_values. Vous pouvez remplacer une valeur de variable de liaison par défaut spécifiée avec default_bind_values en fournissant explicitement la valeur de variable de liaison en tant que paramètre d'interrogation.

  • Lorsque vous générez un hyperlien de table sur une instance de base de données de l'IA autonome avec un point d'extrémité privé, le résultat inclut un nom private_preauth_url avec la valeur du formulaire : "https://private-endpoint/adb/p/parurl-token/data".

    Lorsque vous générez un hyperlien de table sur une instance de base de données de l'IA autonome avec un point d'extrémité privé et que le point d'extrémité privé est configuré avec l'option Autoriser l'accès public activée, le résultat inclut preauth_url pour le point d'extrémité public et private_preauth_url.

    Pour plus d'informations, voir Configurer des points d'extrémité privés et Utiliser un point d'extrémité privé avec accès public autorisé.

Exemples

Exemple - Hyperlien de table généré pour un objet spécifique

L'exemple suivant génère un hyperlien de table pour STUDENTS_VIEW :

DECLARE
   status CLOB;
   BEGIN
   DBMS_DATA_ACCESS.CREATE_URL(
      schema_name => 'USER1',
      schema_object_name => 'STUDENTS_VIEW',
      expiration_minutes => 120,
      service_name => 'HIGH',
      result => status);
   dbms_output.put_line(status);
END;
/

Exemple - Hyperlien de table généré pour un énoncé SQL

L'exemple suivant génère un hyperlien de table pour un énoncé SQL SELECT :

DECLARE
   status CLOB;
   par_url_app_string CLOB;
   BEGIN
       par_url_app_string := 1919292929;
       DBMS_DATA_ACCESS.CREATE_URL(
            sql_statement => 'SELECT student_id, student_name FROM STUDENTS_VIEW ORDER BY student_id',
            application_user_id => par_url_app_string,
            expiration_count => 25,
            result => status);
END;
/

Exemple - Hyperlien de table généré pour une instruction SQL avec une variable de liaison

L'exemple suivant utilise une variable attachée dans l'énoncé SELECT pour générer l'hyperlien de table :

set serveroutput on 
DECLARE
  status clob; 
BEGIN
  DBMS_DATA_ACCESS.CREATE_URL(
    sql_statement => 'select * from TREE_DATA WHERE COUNTY = :countyNAME',
    expiration_minutes => 3000,
    result => status);
    dbms_output.put_line('status : '||status);
END;
/

Pour utiliser l'hyperlien de table généré, la valeur de la variable de liaison doit être transmise. L'exemple suivant utilise l'hyperlien de table généré pour accéder aux données de l'arbre du premier comté :

https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/gTlbq...example/data?countyNAME=First

Utiliser l'hyperlien de table pour accéder aux données avec des variables de liaison

L'exemple suivant utilise une variable de liaison dans l'énoncé SELECT et inclut le paramètre default_bind_values pour générer l'hyperlien de table :

set serveroutput on 
DECLARE
  status clob; 
BEGIN
  DBMS_DATA_ACCESS.CREATE_URL(
    sql_statement = 'SELECT * FROM TREE_DATA WHERE COUNTY = :countyNAME',
    default_bind_values => '{"countyNAME" : "First"}',
    expiration_minutes => 3000,
    result => status);
    dbms_output.put_line('status : '||status);
END;
/

Dans ce cas, la valeur de variable de liaison par défaut est utilisée et vous n'avez pas besoin de la fournir en tant que paramètre d'interrogation. Exemple :

curl https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6X...example/data
curl https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6X...example/data

{"items":[
{"COUNTY":"First","SPECIES":"Pine","HEIGHT":16},
{"COUNTY":"First","SPECIES":"Spruce","HEIGHT":6},
{"COUNTY":"First","SPECIES":"Hawthorn","HEIGHT":19},
{"COUNTY":"First","SPECIES":"Cherry","HEIGHT":20},
{"COUNTY":"First","SPECIES":"Chestnut","HEIGHT":51}],
"hasMore":false,
"limit":100,
"offset":0,
"count":6,
"links":
[
{"rel":"self",
"href":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/gTlbq...example/data"}
]}

Vous pouvez remplacer la valeur de variable de liaison par défaut en spécifiant explicitement la valeur en tant que paramètre d'interrogation. Exemple :

curl https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6X...example/data?countyNAME=MAIN

Exemple - Hyperlien de table généré pour un objet spécifique avec des colonnes Regrouper par

L'exemple suivant génère un hyperlien de table pour une table spécifique avec les colonnes Group By spécifiées :

DECLARE
   status CLOB;
   BEGIN
      DBMS_DATA_ACCESS.CREATE_URL(
          schema_name => 'ADMIN',
          schema_object_name    => 'TREE_DATA',
          expiration_minutes    => 360,
          service_name          => 'HIGH',
          column_lists          => {"group_by_columns": ["COUNTY", "SPECIES"]}',
          result                => status);

       dbms_output.put_line(status);
    END;
/

Exemple - Créer un groupe d'hyperliens de table

DECLARE
   status CLOB;
   BEGIN
      DBMS_DATA_ACCESS.CREATE_URL(
          sqls => '[{"name": "employee", "description": "employee description", "schema_name":"admin", "schema_object_name":"employee"},
              {"name":"tree", "description": "tree description", "sql_statement": "select * from admin.tree_data"}]',
          expiration_count     => 10,
          service_name         => 'HIGH',
          result               => status);
       dbms_output.put_line(status);
    END;
/

Exemple - Créer un hyperlien de table avec une liste de contrôle d'accès (LCA) pour spécifier des consommateurs valides, un mot de passe et des options de vue de données cohérentes

DECLARE
   status CLOB;
   BEGIN
   DBMS_DATA_ACCESS.CREATE_URL(
      schema_name => 'USER1',
      schema_object_name => 'STUDENTS_VIEW',
      expiration_minutes => 120,
      consistent         => TRUE,
      service_name       => 'HIGH',
      PASSWORD           => '<user_provided_password>'
      acl                => ''["1.1.1.1", "1.1.1.0/24"]',
      result             => status);
   dbms_output.put_line(status);
END;
/

CREATE_FEDERATED_TABLE Procédure

Une base de données Consumer AI utilise cette procédure pour créer une table fédérée. Cette procédure est surchargée.

Syntaxe

procedure create_federated_table (
  table_name                  IN VARCHAR2,
  remote_schema_name          IN VARCHAR2,
  remote_schema_object_name   IN VARCHAR2,
  db_ocids                    IN CLOB
);

procedure create_federated_table (
  table_name                  IN VARCHAR2,
  remote_schema_name          IN VARCHAR2,
  remote_schema_object_name   IN VARCHAR2,
  db_names                    IN CLOB
);

Paramètres

Paramètre Description

table_name

Spécifie le nom de la table fédérée à créer dans l'instance de base de données de l'IA autonome du consommateur.

remote_schema_name

Spécifie le nom du schéma dans l'instance de base de données de l'IA autonome du fournisseur distant.

remote_schema_object_name

Spécifie le nom de l'objet dans l'instance de base de données d'IA autonome distante.

db_ocids

Spécifie le tableau JSON (dans l'objet CLOB) répertoriant tous les OCID de région/base de données. Chaque entrée doit contenir à la fois la région et l'OCID de la base de données.

db_names

Spécifie le tableau JSON (dans CLOB) répertoriant tous les noms de région/base de données pour la table fédérée. Chaque entrée doit contenir à la fois le code de région et le nom de la base de données.

DROP_FEDERATED_TABLE Procédure

Cette procédure supprime une table fédérée dans une base de données Consumer Autonomous AI Database.

Syntaxe

procedure drop_federated_table (
  table_name                  IN VARCHAR2
);

Paramètres

table_name : Spécifie le nom de table existant à supprimer.

GET_PREAUTHENTICATED_URL Procédure

Cette procédure génère un hyperlien de table.
Note

La procédure GET_PREAUTHENTICATED_URL est obsolète, utilisez plutôt la procédure CREATE_URL pour générer un hyperlien de table.

Il existe deux formulaires, l'un pour générer l'hyperlien de table pour un objet spécifique (table ou vue). Le formulaire surchargé, à l'aide du paramètre sql_statement, génère un hyperlien de table pour un énoncé SQL.

Syntaxe

DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL( 
    schema_name           IN VARCHAR2,
    schema_object_name    IN VARCHAR2,
    application_user_id   IN VARCHAR2,
    expiration_minutes    IN NUMBER,
    expiration_count      IN NUMBER,
    service_name          IN VARCHAR2,
    column_lists          IN CLOB,
    inherit_acl           IN BOOLEAN  DEFAULT FALSE,
    result                OUT CLOB);

DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL( 
    sql_statement         IN CLOB,
    application_user_id   IN VARCHAR2,
    default_bind_values   IN CLOB,
    expiration_minutes    IN NUMBER,
    expiration_count      IN NUMBER,
    service_name          IN VARCHAR2,
    column_lists          IN CLOB,
    inherit_acl           IN BOOLEAN  DEFAULT FALSE,
    result                OUT CLOB);

Paramètres

Paramètre Description

schema_name

Indique le responsable de l'objet.

schema_object_name

Indique l'objet de schéma (table ou vue).

sql_statement

Spécifie le texte de l'interrogation de l'énoncé SELECT. La prise en charge des variables de liaison est disponible pour les types de colonne NUMBER et VARCHAR2.

application_user_id

Indique une valeur d'ID utilisateur d'application. Lorsque vous accédez à l'hyperlien de table, la valeur application_user_id spécifiée lors de la génération de l'hyperlien de table est disponible au moyen des éléments suivants :

sys_context('DATA_ACCESS_CONTEXT$', 'USER_IDENTITY')

Vous pouvez définir des stratégies de BDVP qui utilisent cette valeur dans le contexte d'application pour limiter la visibilité des enregistrements à l'utilisateur de l'application.

default_bind_values

Spécifie les valeurs par défaut d'une ou de plusieurs variables de liaison (pour une valeur sql_statement spécifiée avec des variables de liaison).

Cela permet à un consommateur d'hyperliens de table d'accéder aux données d'hyperliens de table avec des valeurs de liaison par défaut, sans fournir les valeurs de liaison en tant que paramètres d'interrogation.

expiration_minutes

Durée de validité en minutes de l'hyperlien de table.

Le délai d'expiration maximal autorisé est de 90 jours (129600 minutes). Si la valeur est supérieure à 129600, la valeur utilisée est 129600 minutes (90 jours).

Si expiration_minutes est spécifié en tant que valeur non nulle, expiration_count ne doit pas être réglé à une valeur non nulle. Les deux ne peuvent pas être non nulles en même temps.

Valeur par défaut : lorsque expiration_minutes n'est pas indiqué ou lorsque expiration_minutes est indiqué comme NULL, la valeur est réglée à 90 jours (129600 minutes).

expiration_count

Nombre d'accès autorisés dans l'hyperlien de la table.

Il n'existe aucune valeur par défaut.

Si expiration_count n'est pas spécifié et que expiration_minutes n'est pas spécifié, expiration_minutes est réglé à 90 jours (129600 minutes).

Si expiration_count est spécifié en tant que valeur non nulle, expiration_minutes ne doit pas être réglé à une valeur non nulle. Les deux ne peuvent pas être non nulles en même temps.

service_name

Service de base de données à utiliser pour l'extraction de données lors de l'utilisation de l'hyperlien de table. Spécifiez la garantie de niveau de service et les ressources utilisées pour traiter cet hyperlien de table. Par exemple, l'accès à un objet ou à une instruction SQL peut être mappé avec les services HIGH ou MEDIUM, tandis que l'accès à un autre objet ou à une autre instruction SQL peut être mappé avec le service LOW. Les valeurs prises en charge sont HIGH, MEDIUM, LOW.

La valeur par défaut est LOW.

column_lists

Valeur JSON qui spécifie les options par colonne. Les options prises en charge spécifiées dans le paramètre column_lists sont une ou plusieurs des options suivantes :

  • order_by_columns : Spécifie les colonnes qui prennent en charge le tri.

  • filter_columns : Spécifie les colonnes qui prennent en charge le filtrage

  • default_color_columns : Spécifie d'utiliser uniquement la coloration par défaut pour les colonnes spécifiées.

  • group_by_columns : Indique que le regroupement est autorisé pour les colonnes spécifiées (la consultation des données en regroupant la colonne spécifiée est autorisée).

Le paramètre column_lists est JSON et contient une liste de tableaux JSON de colonnes définissant la fonctionnalité d'hyperlien de table. Utilisez ce paramètre pour spécifier les colonnes pour une ou plusieurs des options : order_by_columns, filter_columns, default_color_columns ou group_by_columns.

Le formulaire est le suivant :

"column_lists" : {
        "order_by_columns": [order_by_columns_list],
        "filter_columns": [filter_columns_list],
        "default_color_columns": [default_color_columns_list],
        "group_by_columns": [group_by_columns_list]
},

Exemple :

"column_lists" : {
            "order_by_columns": ["NAME", "DEPARTMENT"],
            "filter_columns": ["ID", "NAME", "DEPARTMENT"],
            "default_color_columns": ["DEPARTMENT"],
            "group_by_columns": ["DEPARTMENT"]
},

Valeurs par défaut :

Si column_lists n'est pas spécifié pour les options order_by_columns et filter_columns, le tri et le filtrage sont activés pour toutes les colonnes.

Si column_lists n'est pas spécifié pour group_by_columns, l'option Regrouper par n'est activée pour aucune colonne. Par défaut, les colonnes définies pour activer en tant que group_by_columns sont également activées en tant que filter_columns.

inherit_acl

Réglez la valeur de ce paramètre à TRUE pour hériter des listes de contrôle d'accès. Lorsque l'héritage est vrai, l'adresse IP d'un consommateur d'hyperlien de table entrant est validée avec les listes ACL de la base de données du fournisseur avant d'autoriser l'accès aux données.

Lorsque le paramètre n'est pas fourni ou que la valeur du paramètre est réglée à FALSE, les vérifications de liste de contrôle d'accès ne sont pas appliquées.

Si aucune liste de contrôle d'accès n'est configurée pour la base de données du fournisseur, la valeur inherit_acl est ignorée et l'accès aux données est autorisé sans vérification de liste de contrôle d'accès.

La valeur par défaut est FALSE.

result

JSON qui indique le résultat de l'opération.

Notes d'utilisation

  • Cette procédure est obsolète. Utilisez plutôt la procédure CREATE_URL.

  • Il y a une limite de 128 hyperliens de table actifs sur une instance de base de données d'IA autonome.

  • Lorsque vous générez un hyperlien de table sur une instance de base de données de l'IA autonome avec un point d'extrémité privé, le résultat inclut un nom private_preauth_url avec la valeur du formulaire : "https://private-endpoint/adb/p/parurl-token/data".

    Lorsque vous générez un hyperlien de table sur une instance de base de données de l'IA autonome avec un point d'extrémité privé et que le point d'extrémité privé est configuré avec l'option Autoriser l'accès public activée, le résultat inclut preauth_url pour le point d'extrémité public et private_preauth_url.

    Pour plus d'informations, voir Configurer des points d'extrémité privés et Utiliser un point d'extrémité privé avec accès public autorisé.

Exemple - Hyperlien de table généré pour un objet spécifique

L'exemple suivant génère un hyperlien de table pour STUDENTS_VIEW :

DECLARE
   status CLOB;
   BEGIN
   DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
      schema_name => 'USER1',
      schema_object_name => 'STUDENTS_VIEW',
      expiration_minutes => 120,
      service_name => 'HIGH',
      result => status);
   dbms_output.put_line(status);
END;
/

Exemple - Hyperlien de table généré pour un énoncé SQL

L'exemple suivant génère un hyperlien de table pour un énoncé SQL SELECT :

DECLARE
   status CLOB;
   par_url_app_string CLOB;
   BEGIN
       par_url_app_string := 1919292929;
       DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
            sql_statement => 'SELECT student_id, student_name FROM STUDENTS_VIEW ORDER BY student_id',
            application_user_id => par_url_app_string,
            expiration_count => 25,
            result => status);
END;
/

Exemple - Hyperlien de table généré pour une instruction SQL avec une variable de liaison

L'exemple suivant utilise une variable attachée dans l'énoncé SELECT pour générer l'hyperlien de table :

set serveroutput on 
DECLARE
  status clob; 
BEGIN
  DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
    sql_statement => 'select * from TREE_DATA WHERE COUNTY = :countyNAME',
    expiration_minutes => 3000,
    result => status);
    dbms_output.put_line('status : '||status);
END;
/

Pour utiliser l'hyperlien de table généré, la valeur de la variable de liaison doit être transmise. L'exemple suivant utilise l'hyperlien de table généré pour accéder aux données de l'arbre du premier comté :

https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/gTlbq...example/data?countyNAME=First

Utiliser l'hyperlien de table pour accéder aux données avec des variables de liaison

L'exemple suivant utilise une variable de liaison dans l'énoncé SELECT et inclut le paramètre default_bind_values pour générer l'hyperlien de table :

set serveroutput on 
DECLARE
  status clob; 
BEGIN
  DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
    sql_statement = 'SELECT * FROM TREE_DATA WHERE COUNTY = :countyNAME',
    default_bind_values => '{"countyNAME" : "First"}',
    expiration_minutes => 3000,
    result => status);
    dbms_output.put_line('status : '||status);
END;
/

Dans ce cas, la valeur de variable de liaison par défaut est utilisée et vous n'avez pas besoin de la fournir en tant que paramètre d'interrogation. Exemple :

curl https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6X...example/data
curl https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6X...example/data

{"items":[
{"COUNTY":"First","SPECIES":"Pine","HEIGHT":16},
{"COUNTY":"First","SPECIES":"Spruce","HEIGHT":6},
{"COUNTY":"First","SPECIES":"Hawthorn","HEIGHT":19},
{"COUNTY":"First","SPECIES":"Cherry","HEIGHT":20},
{"COUNTY":"First","SPECIES":"Chestnut","HEIGHT":51}],
"hasMore":false,
"limit":100,
"offset":0,
"count":6,
"links":
[
{"rel":"self",
"href":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/gTlbq...example/data"}
]}

Vous pouvez remplacer la valeur de variable de liaison par défaut en spécifiant explicitement la valeur en tant que paramètre d'interrogation. Exemple :

curl https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6X...example/data?countyNAME=MAIN

Pour plus d'informations, voir ProcédureGET_PREAUTHENTICATED_URL.

Exemple - Hyperlien de table généré pour un objet spécifique avec des colonnes Regrouper par

L'exemple suivant génère un hyperlien de table pour une table spécifique avec les colonnes Group By spécifiées :

DECLARE
   status CLOB;
   BEGIN
      DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
          schema_name => 'ADMIN',
          schema_object_name    => 'TREE_DATA',
          expiration_minutes    => 360,
          service_name          => 'HIGH',
          column_lists          => {"group_by_columns": ["COUNTY", "SPECIES"]}',
          result                => status);

       dbms_output.put_line(status);
    END;
/

EXTEND_URL Procédure

Cette procédure prolonge la durée de vie d'un hyperlien de table ou d'un groupe d'hyperliens de table.

Syntaxe :

DBMS_DATA_ACCESS.EXTEND_URL( 
    id                              IN VARCHAR2,
    extend_expiration_minutes_by    IN NUMBER,
    extend_expiration_count_by      IN NUMBER,
    result                          OUT CLOB);

Paramètres

Paramètre Description

id

Indique l'ID de l'hyperlien de table ou du groupe d'hyperliens de table à étendre.

extend_expiration_minutes_by

Nombre de minutes de prolongation du délai d'expiration de l'hyperlien de table. Le délai d'expiration est réglé au délai d'expiration courant plus la valeur de extend_expiration_minutes_by.

La valeur de extend_expiration_minutes_by plus le délai d'expiration courant ne doit pas dépasser 129600 (ce qui correspond à 90 jours).

Si extend_expiration_minutes_by est nul, extend_expiration_count_by ne doit pas être nul. Les deux ne peuvent pas être nuls en même temps.

La valeur par défaut est NULL.

extend_expiration_count_by

Le nombre d'accès sur l'hyperlien de table est étendu par ce nombre. Le nombre d'expiration est réglé au nombre d'expiration courant plus la valeur de extend_expiration_count_by.

Si extend_expiration_count_by est nul, extend_expiration_minutes_by ne doit pas être nul. Les deux ne peuvent pas être nuls en même temps.

La valeur par défaut est nulle.

result

JSON qui indique le résultat de l'opération.

Note d'utilisation

Avec un groupe d'hyperliens de table id, la procédure étend tous les hyperliens de table membres à l'exception des membres ajoutés avec DBMS_DATA_ACCESS.ADD_MEMBER. Les membres qui ont été ajoutés au groupe d'hyperliens de table avec DBMS_DATA_ACCESS.ADD_MEMBER conservent leurs valeurs d'invalidation d'hyperlien de table indépendantes et vous pouvez les étendre individuellement à l'aide de DBMS_DATA_ACCESS.EXTEND_URL.

Exemple - Prolonger les minutes d'expiration de l'hyperlien de table

set serveroutput on
declare
  status clob;
  js_status json_object_t;
  js_arr    json_array_t;
  url_id varchar2(4000);
begin
  -- Initially sets the expiration time to 60 minutes
  dbms_data_access.get_preauthenticated_url(
    schema_name        => 'SCOTT',     -- Schema name
    schema_object_name => 'EMPLOYEE',  -- Schema object name
    expiration_minutes => 60,          -- Expiration minutes
    service_name       => 'HIGH',
    result             => status);
   js_status := json_object_t.parse(status);
  url_id := js_status.get_string('id');
  dbms_output.put_line('The url id of url: ' || url_id);
  dbms_output.put_line('Initial Expiration Time: ' ||
                       js_status.get_string('expiration_ts'));
  -- Extend the expiration minutes by 1 day, the url would now expire
  -- 24 hours later than the previous expiration time
  dbms_data_access.extend_url(
    id                           => url_id,
    extend_expiration_minutes_by => 1440,
    result                       => status);
   -- List urls created
  status := dbms_data_access.list_active_urls;
  js_arr := json_array_t.parse(status);
  for indx in 0.. js_arr.get_size - 1
  loop
    js_status := TREAT (js_arr.get (indx) AS json_object_t);
    if js_status.get_string('id') = url_id then
      dbms_output.put_line('New Expiration Time : ' ||
                            js_status.get_string('expiration_time'));
      exit;
    end if;
  end loop;
end;
/

Exemple - Nombre d'expiration de prolongation de l'hyperlien de table

set serveroutput on
declare  status clob;
  js_status json_object_t;
  js_arr    json_array_t;
  url_id varchar2(4000);
begin
  -- Initially sets the expiration count to 100
  dbms_data_access.get_preauthenticated_url(
    schema_name        => 'SCOTT',     -- Schema name
    schema_object_name => 'EMPLOYEE',  -- Schema object name
    expiration_count   => 100,         -- Expiration count
    service_name       => 'HIGH',
    result             => status);
  js_status := json_object_t.parse(status);
  url_id := js_status.get_string('id');
  dbms_output.put_line('The url id of url: ' || url_id);
  dbms_output.put_line('Initial Expiration Count: ' ||
                       js_status.get_string('expiration_count'));
  -- Extends access count by 100 so url would expire after 200 accesses
  dbms_data_access.extend_url(
    id                         => url_id,
    extend_expiration_count_by => 100,
    result                     => status);
  -- List urls created
  status := dbms_data_access.list_active_urls;
  js_arr := json_array_t.parse(status);
  for indx in 0.. js_arr.get_size - 1
  loop
    js_status := TREAT (js_arr.get (indx) AS json_object_t);
     if js_status.get_string('id') = url_id then
      dbms_output.put_line('New Expiration Count : ' ||
                            js_status.get_string('expiration_count'));
      exit;
    end if;
  end loop;
end;
/

INVALIDATE_URL Procédure

Cette procédure invalide un hyperlien de table ou un groupe d'hyperliens de table.

Syntaxe

DBMS_DATA_ACCESS.INVALIDATE_URL(
    id                  IN VARCHAR2,
    kill_sessions       IN BOOLEAN DEFAULT FALSE,
    result              OUT CLOB);

Paramètres

Paramètre Description

id

Indique l'identificateur de l'hyperlien de table ou du groupe d'hyperliens de table à invalider.

kill_sessions

Ce paramètre est facultatif.

Par défaut, lorsque vous exécutez DBMS_DATA_ACCESS.INVALIDATE_URL, les sessions existantes qui peuvent être au milieu de l'accès aux données à l'aide d'un hyperlien de table ou d'un groupe d'hyperliens de table ne sont pas arrêtées. Lorsque ce paramètre est réglé à TRUE, cette valeur spécifie que ces sessions existantes doivent être arrêtées, de sorte que l'invalidation ne laisse aucun accès continu à un jeu de données.

Valeurs valides : TRUE | FALSE.

result

Fournit JSON pour indiquer si l'invalidation est un succès ou un échec (CLOB).

Note d'utilisation

Lorsque le paramètre DBMS_DATA_ACCESS.INVALIDATE_URL id est un groupe d'hyperliens de table, la procédure invalide le groupe et tous les membres du groupe, à l'exception de tous les membres du groupe qui ont été ajoutés avec DBMS_DATA_ACCESS.ADD_MEMBER. Après avoir exécuté DBMS_DATA_ACCESS.INVALIDATE_URL, les membres ajoutés avec DBMS_DATA_ACCESS.ADD_MEMBER conservent leurs valeurs d'invalidation d'hyperlien de table indépendantes et vous pouvez invalider ces hyperliens de table individuellement à l'aide de DBMS_DATA_ACCESS.INVALIDATE_URL.

Exemple

DECLARE
    status CLOB;
    BEGIN
       DBMS_DATA_ACCESS.INVALIDATE_URL(
        id => 'Vd1Px7QWASdqDbnndiuwTAyyEstv82PCHqS_example',
        result => status);           
       dbms_output.put_line(status);
    END;
/

Fonction LIST_ACTIVE_URLS

Cette fonction liste tous les hyperliens de table et groupes d'hyperliens de table actuellement actifs.

Syntaxe

DBMS_DATA_ACCESS.LIST_ACTIVE_URLS RETURN CLOB;

Paramètres

Paramètre Description
RETURN

La valeur retournée est un tableau JSON.

Exemple

DECLARE
   result CLOB;
   BEGIN
       result := DBMS_DATA_ACCESS.LIST_ACTIVE_URLS;
       DBMS_OUTPUT.PUT_LINE(result);
   END;
[{"id":"pT36lYHFGA4s3UXSNBCRO13v3D4_example1",
"created_by":"SCOTT",
"service_name":"HIGH",
"expiration_time":"2025-07-28T16:38:02.723Z",
"expiration_count":10,
"access_count":0,
"created":"2025-04-29T16:38:02.977Z",
"inherit_acl":true,
"sql_statement":"select * FROM TREE_DATA WHERE COUNTY = :county"}]

Notes d'utilisation

  • Le comportement de DBMS_DATA_ACCESS.LIST_ACTIVE_URLS dépend de l'appelant. Si l'appelant est ADMIN ou tout utilisateur doté du rôle PDB_DBA, la fonction liste tous les hyperliens de table actifs, quel que soit l'utilisateur qui a généré l'hyperlien de table. Si l'appelant n'est pas l'utilisateur ADMIN et n'est pas un utilisateur doté du rôle PDB_DBA, la liste inclut uniquement les hyperliens de table actifs générés par l'appelant.

  • Lorsque vous générez et lister un hyperlien de table sur une instance de base de données de l'IA autonome avec un point d'extrémité privé, le résultat inclut un nom private_preauth_url avec la valeur du formulaire : "https://private-endpoint/adb/p/parurl-token/data".

    Lorsque vous générez et lister un hyperlien de table sur une instance de base de données de l'IA autonome avec un point d'extrémité privé et que le point d'extrémité privé est configuré avec l'option Autoriser l'accès public activée, le résultat inclut à la fois preauth_url pour le point d'extrémité public et private_preauth_url.

    Pour plus d'informations, voir Configurer des points d'extrémité privés et Utiliser un point d'extrémité privé avec accès public autorisé.

  • Lorsqu'un hyperlien de table est un membre du groupe, l'entrée de réponse DBMS_DATA_ACCESS.LIST_ACTIVE_URLS affiche "group_ids" avec une valeur non nulle qui inclut un ou plusieurs ID. Les ID affichent les ID de groupe d'hyperliens de table dont l'hyperlien de table (membre de groupe) est membre.

LIST_MEMBERS Procédure

Cette procédure répertorie les membres d'un groupe d'hyperliens de table.

Syntaxe

DBMS_DATA_ACCESS.LIST_MEMBERS(
    id              IN VARCHAR2,
    result          OUT CLOB);

Paramètres

Paramètre Description

id

Indique l'identificateur du groupe d'hyperliens de table.

result

Fournit JSON pour indiquer si l'invalidation est un succès ou un échec (CLOB).

Exemple

DECLARE
    status CLOB;
    BEGIN
       DBMS_DATA_ACCESS.LIST_MEMBERS(
         id => 'aGnHVyZ4vBo4_Fq2R0A2G2-y6TdUKRHeveqyGJ3_example',
         result => status);           
      dbms_output.put_line(status);
    END;
/

REMOVE_MEMBER Procédure

Cette procédure supprime un membre d'un groupe d'hyperliens de table.

Syntaxe

DBMS_DATA_ACCESS.REMOVE_MEMBER(
    id              IN VARCHAR2,
    member_id       IN BOOLEAN DEFAULT FALSE,
    result          OUT CLOB);

Paramètres

Paramètre Description

id

Indique l'identificateur du groupe d'hyperliens de table.

member_id

Indique l'identificateur du membre de groupe à supprimer du groupe d'hyperliens de table.

result

Fournit JSON pour indiquer si l'invalidation est un succès ou un échec (CLOB).

Notes d'utilisation

  • La valeur member_id ne peut pas être un ID groupe d'hyperliens de table (is_group_url doit être false).
  • Si le membre supprimé est un hyperlien de table existant qui a été ajouté au groupe à l'aide de DBMS_DATA_ACCESS.ADD_MEMBER, le membre est supprimé du groupe, mais il est possible d'accéder directement à l'hyperlien de table jusqu'à ce qu'il soit explicitement invalidé ou expire.

  • Si un groupe d'hyperliens de table contient un seul membre et que ce membre est supprimé, le groupe est invalidé.

Exemple

DECLARE
    status CLOB;
    BEGIN
       DBMS_DATA_ACCESS.REMOVE_MEMBER(
        id => 'Vd1Px7QWASdqDbnndiuwTAyyEstv82PCHqS_example',
        member_id => 'Zdd1Px7QWASdqDbnndiuwTAyyEstv82PCHlS_example',
        result => status);           
       dbms_output.put_line(status);
    END;
/

UPDATE_URL Procédure

Cette procédure met à jour les propriétés d'un hyperlien de table ou d'un groupe d'hyperliens de table.

Syntaxe :

DBMS_DATA_ACCESS.UPDATE_URL( 
    id                              IN VARCHAR2,
    extend_expiration_minutes_by    IN NUMBER,
    extend_expiration_count_by      IN NUMBER,
    inherit_acl                     IN BOOLEAN DEFAULT NULL,
    acl                             IN CLOB DEFAULT NULL,
    result                          OUT CLOB);

Paramètres

Paramètre Description

id

Indique l'ID de l'hyperlien de table ou du groupe d'hyperliens de table à étendre.

extend_expiration_minutes_by

Nombre de minutes de prolongation du délai d'expiration de l'hyperlien de table. Le délai d'expiration est réglé au délai d'expiration courant plus la valeur de extend_expiration_minutes_by.

Si vous ne spécifiez pas de valeur pour extend_expiration_minutes_by, le délai d'expiration courant reste inchangé.

La valeur par défaut est NULL.

extend_expiration_count_by

Le nombre d'accès sur l'hyperlien de table est étendu par ce nombre. Le nombre d'expiration est réglé au nombre d'expiration courant plus la valeur de extend_expiration_count_by.

La valeur par défaut est NULL.

inherit_acl

Met à jour la valeur des listes de contrôle d'accès héritées. Lorsque ce paramètre est TRUE, l'adresse IP du consommateur d'un hyperlien de table ou d'un groupe d'hyperliens de table entrant est validée avec les listes de contrôle d'accès de la base de données du fournisseur avant d'autoriser l'accès aux données.

Lorsque la valeur du paramètre est FALSE, la liste de contrôle d'accès héritée est désactivée dans l'hyperlien de table et l'adresse IP du consommateur n'est pas validée par rapport à la liste de contrôle d'accès de la base de données du fournisseur.

Lorsque le paramètre n'est pas fourni, la valeur existante de inherit_acl est conservée.

acl

Met à jour la valeur du paramètre acl pour l'hyperlien de table.

Pour désactiver la liste de contrôle d'accès propre à un hyperlien de table, spécifiez la valeur NO_ACL pour le paramètre acl.

result

JSON qui indique le résultat de l'opération.

Note d'utilisation

Avec un groupe d'hyperliens de table id, la procédure applique la propriété mise à jour à tous les hyperliens de table membres, à l'exception des membres ajoutés avec DBMS_DATA_ACCESS.ADD_MEMBER. Les membres qui ont été ajoutés au groupe d'hyperliens de table avec DBMS_DATA_ACCESS.ADD_MEMBER conservent leurs valeurs de paramètre d'hyperlien de table indépendantes et vous pouvez les mettre à jour individuellement à l'aide de UPDATE_URL.

Exemple - Mettre à jour le nombre d'expiration pour un hyperlien de table

set serveroutput on
declare  status clob;
  js_status json_object_t;
  js_arr    json_array_t;
  url_id varchar2(4000);
begin
  -- Initially sets the expiration count to 100
  DBMS_DATA_ACCESS.CREATE_URL(
    schema_name        => 'SCOTT',     -- Schema name
    schema_object_name => 'EMPLOYEE',  -- Schema object name
    expiration_count   => 100,         -- Expiration count
    service_name       => 'HIGH',
    result             => status);
  js_status := json_object_t.parse(status);
  url_id := js_status.get_string('id');
  dbms_output.put_line('The url id of url: ' || url_id);
  dbms_output.put_line('Initial Expiration Count: ' ||
                       js_status.get_string('expiration_count'));
  -- Extends access count by 100 so url would expire after 200 accesses
  DBMS_DATA_ACCESS.UPDATE_URL(
    id                         => url_id,
    extend_expiration_count_by => 100,
    result                     => status);
  -- List urls created
  status := DBMS_DATA_ACCESS.LIST_ACTIVE_URLS;
  js_arr := json_array_t.parse(status);
  for indx in 0.. js_arr.get_size - 1
  loop
    js_status := TREAT (js_arr.get (indx) AS json_object_t);
     if js_status.get_string('id') = url_id then
      dbms_output.put_line('New Expiration Count : ' ||
                            js_status.get_string('expiration_count'));
      exit;
    end if;
  end loop;
end;
/