DBMS_DATA_ACCESS-Package

Das Package DBMS_DATA_ACCESS stellt Routinen zum Generieren und Verwalten von Tabellenhyperlinks für Datasets bereit.

DBMS_DATA_ACCESS - Überblick

Beschreibt die Verwendung des Packages DBMS_DATA_ACCESS.

Die DBMS_DATA_ACCESS unterstützt die folgenden Vorgänge:

  • Generierung eines Tabellen-Hyperlinks
  • Manuelle Invalidierung eines Tabellen-Hyperlinks
  • Liste aktiver Tabellen-Hyperlinks

DBMS_DATA_ACCESS Sicherheitsmodell

Die Sicherheit für dieses Package kann gesteuert werden, indem Sie ausgewählten Benutzern oder Rollen EXECUTE für dieses Package erteilen.

Wenn einem Benutzer EXECUTE auf DBMS_DATA_ACCESS erteilt wurde, können er die vom Benutzer erstellten Tabellenhyperlinks erstellen, auflisten oder invalidieren. Darüber hinaus verfügt der ADMIN-Benutzer standardmäßig über die folgenden Berechtigungen:
  • Der ADMIN-Benutzer mit der Rolle PDB_DBA hat die Berechtigung EXECUTE für DBMS_DATA_ACCESS.
  • Der ADMIN-Benutzer mit der Rolle PDB_DBA kann einen beliebigen Tabellenhyperlink in einer Autonomous Database-Instanz auflisten oder invalidieren.

Zusammenfassung der DBMS_DATA_ACCESS-Unterprogramme

In diesem Abschnitt werden die DBMS_DATA_ACCESS-Unterprogramme beschrieben, die mit Autonomous Database bereitgestellt werden.

Unterprogramm Beschreibung

Prozedur ADD_MEMBER

Prozedur CREATE_URL

Im Folgenden wird ein Tabellen-Hyperlink oder eine Tabellen-Hyperlink-Gruppe generiert.

Prozedur EXTEND_URL

Dieses Verfahren verlängert die Lebensdauer eines Tabellen-Hyperlinks.

Prozedur GET_PREAUTHENTICATED_URL

Mit diesem Verfahren wird ein Tabellen-Hyperlink generiert.

Dieses Verfahren ist veraltet. Verwenden Sie stattdessen die Prozedur CREATE_URL.

Prozedur EXTEND_URL

Dieses Verfahren verlängert die Lebensdauer eines Tabellen-Hyperlinks.

Prozedur INVALIDATE_URL

Diese Prozedur invalidiert einen Tabellen-Hyperlink.

Funktion LIST_ACTIVE_URLS

Diese Funktion listet alle derzeit aktiven Tabellen-Hyperlinks auf.

Prozedur LIST_MEMBERS

Prozedur REMOVE_MEMBER

Prozedur ADD_MEMBER

Im Folgenden wird ein vorhandener Tabellen-Hyperlink zur Tabellen-Hyperlink-Gruppe als Element hinzugefügt.

Syntax

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

Parameter

Parameter Beschreibung

id

Gibt die ID für die Tabellen-Hyperlinkgruppe an.

member_id

Gibt die ID für den Tabellen-Hyperlink an, der der Gruppe hinzugefügt werden soll.

result

Stellt JSON bereit, um anzugeben, ob die Invalidierung erfolgreich oder nicht erfolgreich ist (CLOB).

Beispiel

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

Prozedur CREATE_URL

Im Folgenden wird ein Tabellen-Hyperlink oder eine Tabellen-Hyperlink-Gruppe generiert. Eine Tabellen-Hyperlink-Gruppe ermöglicht den Zugriff auf mehrere Tabellen-Hyperlinks mit einer einzigen URL. Diese Prozedur ist überladen.

Syntax

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,
    service_name          IN VARCHAR2,
    column_lists          IN CLOB,
    inherit_acl           IN BOOLEAN  DEFAULT FALSE,
    result                OUT CLOB);

DBMS_DATA_ACCESS.CREATE_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);

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

Parameter

Parameter Beschreibung

sqls

Gibt ein JSON-Array der SELECT-Anweisungen oder Schemaobjekte an.

Details zum Format des JSON-Arrays finden Sie in der folgenden Beschreibung.

schema_name

Gibt den Eigentümer des Objekts an.

schema_object_name

Gibt das Schemaobjekt (Tabelle oder View) an.

sql_statement

Gibt den Abfragetext der SELECT-Anweisung an. Die Unterstützung von Bind-Variablen ist für die Spaltentypen NUMBER und VARCHAR2 verfügbar.

application_user_id

Dieser optionale Parameter gibt einen Wert für die Anwendungsbenutzer-ID an. Wenn auf den Tabellen-Hyperlink oder die Tabellen-Hyperlink-Gruppe zugegriffen wird, ist der bei der Generierung des Tabellen-Hyperlinks angegebene Wert von application_user_id über Folgendes verfügbar:

sys_context('DATA_ACCESS_CONTEXT$', 'USER_IDENTITY')

Sie können VPD-Policys definieren, die diesen Wert im Anwendungskontext verwenden, um die für den Anwendungsbenutzer sichtbaren Zeilen einzuschränken.

default_bind_values

Gibt die Standardwerte einer oder mehrerer Bind-Variablen an (für eine mit Bind-Variablen angegebene sql_statement).

Dadurch kann ein Tabellen-Hyperlink-Consumer mit Default Bind-Werten auf die Tabellen-Hyperlink-Daten zugreifen, ohne die Bind-Werte als Abfrageparameter anzugeben.

expiration_minutes

Dieser optionale Parameter gibt die Gültigkeitsdauer des Tabellen-Hyperlinks oder der Tabellen-Hyperlink-Gruppe in Minuten an.

Die maximal zulässige Ablaufzeit beträgt 90 Tage (129600 Minuten). Wenn der Wert auf mehr als 129600 gesetzt ist, wird der Wert 129600 Minuten (90 Tage) verwendet.

Wenn expiration_minutes als Wert ungleich Null angegeben ist, darf expiration_count nicht auf einen Wert ungleich Null gesetzt werden. Beide dürfen nicht gleichzeitig ungleich Null sein.

Standardwert: Wenn expiration_minutes nicht angegeben wird oder wenn expiration_minutes als NULL angegeben wird, wird der Wert auf 90 Tage (129600 Minuten) gesetzt.

expiration_count

Dieser optionale Parameter gibt die Anzahl der zulässigen Zugriffe auf den Tabellen-Hyperlink oder die Tabellen-Hyperlink-Gruppe an.

Hierfür gibt es keinen Standardwert.

Wenn expiration_count nicht angegeben ist und expiration_minutes nicht angegeben ist, wird expiration_minutes auf 90 Tage (129600 Minuten) gesetzt.

Wenn expiration_count als Wert ungleich Null angegeben ist, darf expiration_minutes nicht auf einen Wert ungleich Null gesetzt werden. Beide dürfen nicht gleichzeitig ungleich Null sein.

service_name

Der Datenbankservice, der für den Datenabruf verwendet wird, wenn der Tabellen-Hyperlink verwendet wird. Geben Sie die Service-Level-Garantie und Ressourcen an, die für diesen Tabellen-Hyperlink verwendet werden. Beispiel: Der Zugriff auf ein Objekt oder eine SQL-Anweisung kann den Services HIGH oder MEDIUM zugeordnet werden, während der Zugriff auf ein anderes Objekt oder eine andere SQL-Anweisung dem LOW-Service zugeordnet werden kann. Unterstützte Werte sind HIGH, MEDIUM, LOW.

Der Standardwert ist LOW.

column_lists

Ein JSON-Wert, der Optionen nach Spalte angibt. Die im Parameter column_lists angegebenen unterstützten Optionen sind eine oder mehrere der folgenden:

  • order_by_columns: Gibt die Spalten an, die das Sortieren unterstützen.

  • filter_columns: Gibt die Spalten an, die Filterung unterstützen

  • default_color_columns: Gibt an, dass nur die Standardfarbe für die angegebenen Spalten verwendet werden soll.

  • group_by_columns: Gibt an, dass "Gruppieren nach" für die angegebenen Spalten zulässig ist (das Anzeigen der Daten durch Gruppieren der angegebenen Spalte ist zulässig).

Der Parameter column_lists ist JSON, der eine Liste der JSON-Arrays mit Spalten enthält, die eine Tabellen-Hyperlink-Funktionalität definieren. Mit diesem Parameter können Sie die Spalten für eine oder mehrere der Optionen angeben: order_by_columns, filter_columns, default_color_columns oder group_by_columns.

Folgende Form wird verwendet:

"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]
},

Beispiele:

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

Standardwerte:

Wenn column_lists nicht für die Optionen order_by_columns und filter_columns angegeben ist, ist das Sortieren und Filtern für alle Spalten aktiviert.

Wenn column_lists nicht für group_by_columns angegeben ist, ist die Option "Gruppieren nach" für keine Spalte aktiviert. Standardmäßig sind Spalten, die als group_by_columns aktiviert werden sollen, auch als filter_columns aktiviert.

inherit_acl

Dieser Parameter ist optional. Setzen Sie den Wert auf TRUE, um ACLs zu übernehmen. Wenn dieser Parameter TRUE ist, wird die IP-Adresse eines eingehenden Tabellen-Hyperlinks oder einer Tabellen-Hyperlink-Gruppe mit den ACL-Listen in der Producer-Datenbank validiert, bevor der Zugriff auf Daten zugelassen wird.

Wenn der Parameter nicht angegeben oder der Parameterwert auf FALSE gesetzt ist, werden keine ACL-Prüfungen angewendet.

Wenn für die Producer-Datenbank keine ACLs konfiguriert sind, wird der Wert inherit_acl ignoriert, und der Datenzugriff ist ohne ACL-Prüfungen zulässig.

Der Standardwert ist FALSE.

result

JSON, die das Ergebnis des Vorgangs angibt.

Das Format des JSON-Arrays, das Sie als Parameter sqls angeben, lautet:

Attributname Erforderlich Beschreibung
name Nein Gibt den Namen des Gruppenmitglieds an. Wenn kein Name angegeben wird, erstellt die Prozedur einen Standardnamen.
description Nein Gruppenmitgliedsbeschreibung
sql_statement

Die Angabe von sql_statement oder schema_object_name ist erforderlich

SQL-Anweisung für das Mitglied

Weitere Informationen finden Sie unter Tabellen-Hyperlink mit einer Select-Anweisung generieren.

schema_name Nein

Schemaname für das Element. Geben Sie nur dann einen schema_name-Wert an, wenn die in schema_object_name angegebene Tabelle/View im aktuellen Schema nicht verfügbar ist

Weitere Informationen finden Sie unter Tabellen-Hyperlink für eine Tabelle oder Ansicht generieren.

schema_object_name

Die Angabe von sql_statement oder schema_object_name ist erforderlich

Tabellen-/View-Name für das Element

Weitere Informationen finden Sie unter Tabellen-Hyperlink für eine Tabelle oder Ansicht generieren.

default_bind_variable Nein Gilt nur für sql_statements mit Bind-Variablen

Weitere Informationen finden Sie unter Tabellen-Hyperlink mit einer Select-Anweisung generieren.

column_lists Nein Entspricht der Definition für die Erstellung eines Nicht-Gruppen-Tabellen-Hyperlinks

Weitere Informationen finden Sie unter Tabellen-Hyperlink mit in Spalten angegebenen UI-Features generieren.

Hinweise zur Verwendung

  • Auf einer Autonomous Database-Instanz sind maximal 128 aktive Tabellenhyperlinks zulässig.

  • Wenn Sie einen Tabellen-Hyperlink in einem Browser verwenden, werden die folgenden Optionen unterstützt:
    • Zeigen Sie die zurückgegebenen Daten im Tabellenformat ohne Farbgebung an (Standard), indem Sie den Abfrageparameter ?view=table an den Tabellen-Hyperlink anhängen.
    • Zeigen Sie die zurückgegebenen Daten im Tabellenformat an, und wählen Sie die Spalten aus, die basierend auf Spaltenwerten mit voreingestellten Farben gefärbt werden sollen. Hängen Sie dazu den Abfrageparameter ?view=table&colored_column_names=column_name_1,column_name_2,...column_name_n an den Tabellen-Hyperlink an, wobei column_name_1 bis column_name_n die Namen der Spalten sind, die farbig sein sollen.
    • Zeigen Sie die zurückgegebenen Daten im Tabellenformat an, und wählen Sie einen bestimmten Spaltendatentyp aus, der mit voreingestellten Farben eingefärbt werden soll, indem Sie den Abfrageparameter ?view=table&colored_column_types=data_type anhängen. Die unterstützten Parameterwerte für data_type sind VARCHAR und NONE.
    • Der Parameterwert sql_statement muss eine SELECT-Anweisung sein. Die SELECT-Anweisung unterstützt Bind-Variablen.

      Wenn Bind-Variablen in der SELECT-Anweisung enthalten sind und keine Werte im Parameter default_bind_values festgelegt sind, müssen Bind-Variablenwerte beim Zugriff auf die Daten als Abfrageparameter an den generierten Tabellen-Hyperlink angehängt werden.

      Wenn Sie den Parameter default_bind_values einschließen, können Sie beim Zugriff auf die Daten die Werte der Bind-Variablen weglassen, wenn Standardwerte im Parameter default_bind_values angegeben werden. Sie können einen mit default_bind_values angegebenen Standard-Bind-Variablenwert außer Kraft setzen, indem Sie den Wert der Bind-Variablen explizit als Abfrageparameter angeben.

  • Wenn Sie einen Tabellen-Hyperlink in einer Autonomous Database-Instanz mit einem privaten Endpunkt generieren, enthält das Ergebnis den Namen private_preauth_url mit dem Wert des folgenden Formulars: "https://private-endpoint/adb/p/parurl-token/data".

    Wenn Sie einen Tabellen-Hyperlink in einer Autonomous Database-Instanz mit einem privaten Endpunkt generieren und der private Endpunkt mit aktiviertem Öffentlichen Zugriff zulassen konfiguriert ist, enthält das Ergebnis sowohl die preauth_url für den öffentlichen Endpunkt als auch private_preauth_url.

    Weitere Informationen finden Sie unter Private Endpunkte konfigurieren und Privaten Endpunkt mit zulässigem öffentlichem Zugriff verwenden.

Beispiele

Beispiel - Für ein bestimmtes Objekt generierter Tabellen-Hyperlink

Das folgende Beispiel generiert einen Tabellen-Hyperlink für 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;
/

Beispiel - Für eine SQL-Anweisung generierter Tabellen-Hyperlink

Das folgende Beispiel generiert einen Tabellen-Hyperlink für eine SELECT SQL-Anweisung:

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;
/

Beispiel - Für eine SQL-Anweisung mit einer Bind-Variablen generierter Tabellen-Hyperlink

Im folgenden Beispiel wird eine Bind-Variable in der Anweisung SELECT verwendet, um den Tabellen-Hyperlink zu generieren:

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;
/

Um den generierten Tabellen-Hyperlink verwenden zu können, muss der Bind-Variablenwert übergeben werden. Im folgenden Beispiel wird der generierte Tabellen-Hyperlink verwendet, um auf Baumdaten für den ersten Kreis zuzugreifen:

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

Tabellen-Hyperlink für den Zugriff auf Daten mit Bind-Variablen verwenden

Das folgende Beispiel verwendet eine Bind-Variable in der Anweisung SELECT und enthält den Parameter default_bind_values, um den Tabellen-Hyperlink zu generieren:

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;
/

In diesem Fall wird der Standard-Bind-Variablenwert verwendet, und Sie müssen den Wert nicht als Abfrageparameter angeben. Beispiel:

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"}
]}

Sie können den Wert der Standard-Bind-Variablen überschreiben, indem Sie den Wert explizit als Abfrageparameter angeben. Beispiel:

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

Beispiel - Für ein bestimmtes Objekt mit Gruppierungsspalten generierter Tabellen-Hyperlink

Das folgende Beispiel generiert einen Tabellen-Hyperlink für eine bestimmte Tabelle mit angegebenen Gruppierungsspalten:

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;
/

Beispiele

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;
/

Prozedur GET_PREAUTHENTICATED_URL

Mit diesem Verfahren wird ein Tabellen-Hyperlink generiert.

Es gibt zwei Formulare: eine zum Generieren des Tabellen-Hyperlinks für ein bestimmtes Objekt (Tabelle oder View). Das überladene Formular generiert mit dem Parameter sql_statement einen Tabellen-Hyperlink für eine SQL-Anweisung.

Hinweis

Dieses Verfahren ist veraltet. Verwenden Sie stattdessen die Prozedur CREATE_URL.

Syntax

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);

Parameter

Parameter Beschreibung

schema_name

Gibt den Eigentümer des Objekts an.

schema_object_name

Gibt das Schemaobjekt (Tabelle oder View) an.

sql_statement

Gibt den Abfragetext der SELECT-Anweisung an. Die Unterstützung von Bind-Variablen ist für die Spaltentypen NUMBER und VARCHAR2 verfügbar.

application_user_id

Gibt einen Wert für die Anwendungsbenutzer-ID an. Wenn auf den Tabellen-Hyperlink zugegriffen wird, ist der bei der Generierung des Tabellen-Hyperlinks angegebene Wert von application_user_id über Folgendes verfügbar:

sys_context('DATA_ACCESS_CONTEXT$', 'USER_IDENTITY')

Sie können VPD-Policys definieren, die diesen Wert im Anwendungskontext verwenden, um die Zeilen einzuschränken, die für den Anwendungsbenutzer sichtbar sind.

default_bind_values

Gibt die Standardwerte einer oder mehrerer Bind-Variablen an (für eine mit Bind-Variablen angegebene sql_statement).

Dadurch kann ein Tabellen-Hyperlink-Consumer mit Default Bind-Werten auf die Tabellen-Hyperlink-Daten zugreifen, ohne die Bind-Werte als Abfrageparameter anzugeben.

expiration_minutes

Gültigkeitsdauer des Tabellen-Hyperlinks in Minuten.

Die maximal zulässige Ablaufzeit beträgt 90 Tage (129600 Minuten). Wenn der Wert größer als 129600 ist, wird der Wert 129600 Minuten (90 Tage) verwendet.

Wenn expiration_minutes als Wert angegeben ist, der nicht Null ist, darf expiration_count nicht auf einen Wert ungleich Null gesetzt werden. Beide Werte dürfen nicht gleichzeitig Null sein.

Standardwert: Wenn expiration_minutes nicht angegeben wird oder expiration_minutes als NULL angegeben wird, wird der Wert auf 90 Tage (129600 Minuten) gesetzt.

expiration_count

Anzahl der im Tabellen-Hyperlink zulässigen Zugriffe.

Hierfür gibt es keinen Standardwert.

Wenn expiration_count nicht angegeben ist und expiration_minutes nicht angegeben ist, wird expiration_minutes auf 90 Tage (129600 Minuten) gesetzt.

Wenn expiration_count als Wert angegeben ist, der nicht Null ist, darf expiration_minutes nicht auf einen Wert ungleich Null gesetzt werden. Beide Werte dürfen nicht gleichzeitig Null sein.

service_name

Der Datenbankservice, der für den Datenabruf bei Verwendung des Tabellen-Hyperlinks verwendet wird. Geben Sie die Service-Level-Garantie und die Ressourcen an, die für den Service dieses Tabellen-Hyperlinks verwendet werden. Beispiel: Der Zugriff auf ein Objekt oder eine SQL-Anweisung kann den Services HIGH oder MEDIUM zugeordnet werden, während der Zugriff auf ein anderes Objekt oder eine andere SQL-Anweisung dem LOW-Service zugeordnet werden kann. Unterstützte Werte sind HIGH, MEDIUM, LOW.

Der Standardwert ist LOW.

column_lists

Ein JSON-Wert, der Optionen nach Spalte angibt. Die im Parameter column_lists angegebenen unterstützten Optionen sind mindestens eine der folgenden Optionen:

  • order_by_columns: Gibt die Spalten an, die Sortierung unterstützen.

  • filter_columns: Gibt die Spalten an, die Filterung unterstützen

  • default_color_columns: Gibt an, dass nur die Standardfarbgebung für die angegebenen Spalten verwendet werden soll.

  • group_by_columns: Gibt an, dass das Gruppieren nach für die angegebenen Spalten zulässig ist (das Anzeigen der Daten durch Gruppieren der angegebenen Spalte ist zulässig).

Der Parameter column_lists ist JSON, der eine Liste von JSON-Arrays von Spalten enthält, die Tabellen-Hyperlink-Funktionalität definieren. Mit diesem Parameter können Sie die Spalten für eine oder mehrere der Optionen angeben: order_by_columns, filter_columns, default_color_columns oder group_by_columns.

Das Formular ist:

"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]
},

Beispiel:

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

Standardwerte:

Wenn column_lists für die Optionen order_by_columns und filter_columns nicht angegeben ist, ist Sortierung und Filterung für alle Spalten aktiviert.

Wenn column_lists nicht für group_by_columns angegeben ist, ist die Option "Gruppieren nach" für keine Spalte aktiviert. Standardmäßig werden Spalten, die als group_by_columns aktiviert werden sollen, auch als filter_columns aktiviert.

inherit_acl

Setzen Sie den Wert dieses Parameters auf TRUE, um ACLs zu übernehmen. Wenn die Vererbung wahr ist, wird die IP-Adresse eines eingehenden Tabellen-Hyperlink-Consumers mit den ACL-Listen in der Producer-Datenbank validiert, bevor der Zugriff auf Daten zugelassen wird.

Wenn der Parameter nicht angegeben oder der Parameterwert auf FALSE gesetzt ist, werden keine ACL-Prüfungen angewendet.

Wenn für die Producer-Datenbank keine ACLs konfiguriert sind, wird der Wert inherit_acl ignoriert, und der Datenzugriff ist ohne ACL-Prüfungen zulässig.

Der Standardwert ist FALSE.

result

JSON, die das Ergebnis des Vorgangs angibt.

Hinweise zur Verwendung

  • Dieses Verfahren ist veraltet. Verwenden Sie stattdessen die Prozedur CREATE_URL.

  • In einer Autonomous Database-Instanz sind maximal 128 aktive Tabellenhyperlinks zulässig.

  • Wenn Sie einen Tabellen-Hyperlink in einer Autonomous Database-Instanz mit einem privaten Endpunkt generieren, enthält das Ergebnis den Namen private_preauth_url mit dem Wert des folgenden Formulars: "https://private-endpoint/adb/p/parurl-token/data".

    Wenn Sie einen Tabellen-Hyperlink in einer Autonomous Database-Instanz mit einem privaten Endpunkt generieren und der private Endpunkt mit aktiviertem Öffentlichen Zugriff zulassen konfiguriert ist, enthält das Ergebnis sowohl die preauth_url für den öffentlichen Endpunkt als auch private_preauth_url.

    Weitere Informationen finden Sie unter Private Endpunkte konfigurieren und Privaten Endpunkt mit zulässigem öffentlichem Zugriff verwenden.

Beispiel - Für ein bestimmtes Objekt generierter Tabellen-Hyperlink

Im folgenden Beispiel wird ein Tabellen-Hyperlink für STUDENTS_VIEW generiert:

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;
/

Beispiel - Für eine SQL-Anweisung generierter Tabellen-Hyperlink

Im folgenden Beispiel wird ein Tabellen-Hyperlink für eine SQL-Anweisung SELECT generiert:

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;
/

Beispiel - Tabellen-Hyperlink, der für eine SQL-Anweisung mit einer Bind-Variablen generiert wurde

Im folgenden Beispiel wird eine Bind-Variable in der Anweisung SELECT verwendet, um den Tabellen-Hyperlink zu generieren:

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;
/

Um den generierten Tabellen-Hyperlink zu verwenden, muss der Wert der Bind-Variablen übergeben werden. Im folgenden Beispiel wird der generierte Tabellen-Hyperlink verwendet, um auf Baumdaten für den ersten Kreis zuzugreifen:

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

Tabellen-Hyperlink für den Zugriff auf Daten mit Bind-Variablen verwenden

Das folgende Beispiel verwendet eine Bind-Variable in der Anweisung SELECT und enthält den Parameter default_bind_values, um den Tabellen-Hyperlink zu generieren:

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;
/

In diesem Fall wird der Standard-Bind-Variablenwert verwendet, und Sie müssen den Wert nicht als Abfrageparameter angeben. Beispiel:

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"}
]}

Sie können den Wert der Standard-Bind-Variablen überschreiben, indem Sie den Wert explizit als Abfrageparameter angeben. Beispiel:

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

Weitere Informationen finden Sie unter Prozedur GET_PREAUTHENTICATED_URL.

Beispiel - Für ein bestimmtes Objekt mit Gruppierungsspalten generierter Tabellen-Hyperlink

Im folgenden Beispiel wird ein Tabellen-Hyperlink für eine bestimmte Tabelle mit angegebenen Gruppierungsspalten generiert:

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;
/

Prozedur EXTEND_URL

Mit diesem Verfahren wird die Lebensdauer eines Tabellen-Hyperlinks oder einer Tabellen-Hyperlink-Gruppe verlängert.

Syntax:

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

Parameter

Parameter Beschreibung

id

Gibt die ID des Tabellen-Hyperlinks oder der Tabellen-Hyperlink-Gruppe an, die erweitert werden soll.

extend_expiration_minutes_by

Anzahl der Minuten, um die die Ablaufzeit des Tabellen-Hyperlinks verlängert werden soll. Die Ablaufzeit wird auf die aktuelle Ablaufzeit plus dem Wert extend_expiration_minutes_by gesetzt.

Der Wert für extend_expiration_minutes_by plus die aktuelle Ablaufzeit darf 129600 nicht überschreiten (das entspricht 90 Tagen).

Wenn extend_expiration_minutes_by Null ist, darf extend_expiration_count_by nicht Null sein. Beide dürfen nicht gleichzeitig Null sein.

Standardwert ist NULL.

extend_expiration_count_by

Die Anzahl der Zugriffe auf den Tabellen-Hyperlink wird um diese Anzahl erweitert. Die Ablaufanzahl wird auf die aktuelle Ablaufanzahl plus dem Wert von extend_expiration_count_by gesetzt.

Wenn extend_expiration_count_by Null ist, darf extend_expiration_minutes_by nicht Null sein. Beide dürfen nicht gleichzeitig Null sein.

Der Standardwert ist Null.

result

JSON, die das Ergebnis des Vorgangs angibt.

Hinweis zur Verwendung

Bei einer Tabellen-Hyperlink-Gruppe id erweitert die Prozedur alle Element-Tabellen-Hyperlinks mit Ausnahme der Elemente, die mit DBMS_DATA_ACCESS.ADD_MEMBER hinzugefügt wurden. Die Elemente, die der Tabellen-Hyperlinkgruppe mit DBMS_DATA_ACCESS.ADD_MEMBER hinzugefügt wurden, verwalten ihre unabhängigen Tabellen-Hyperlink-Invalidierungswerte, und Sie können sie einzeln mit DBMS_DATA_ACCESS.EXTEND_URL erweitern.

Beispiel - Ablauf in Minuten für Tabellen-Hyperlink verlängern

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;
/

Beispiel - Ablaufanzahl für Tabellen-Hyperlink verlängern

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;
/

Prozedur INVALIDATE_URL

Diese Prozedur invalidiert einen Tabellen-Hyperlink oder eine Tabellen-Hyperlink-Gruppe.

Syntax

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

Parameter

Parameter Beschreibung

id

Gibt die ID für den Tabellen-Hyperlink oder die zu invalidierende Tabellen-Hyperlink-Gruppe an.

kill_sessions

Dieser Parameter ist optional.

Wenn Sie DBMS_DATA_ACCESS.INVALIDATE_URL ausführen, werden vorhandene Sessions, die sich möglicherweise mitten im Zugriff auf Daten mit einem Tabellen-Hyperlink oder einer Tabellen-Hyperlink-Gruppe befinden, standardmäßig nicht beendet. Wenn dieser Parameter auf TRUE gesetzt ist, gibt dieser Wert an, dass solche vorhandenen Sessions beendet werden sollen, sodass die Invalidierung keinen fortlaufenden Zugriff auf ein Dataset überlässt.

Gültige Werte sind TRUE | FALSE.

result

Stellt JSON bereit, um anzugeben, ob die Invalidierung erfolgreich oder nicht erfolgreich ist (CLOB).

Hinweis zur Verwendung

Wenn der Parameter DBMS_DATA_ACCESS.INVALIDATE_URL id eine Tabellen-Hyperlink-Gruppe ist, invalidiert die Prozedur die Gruppe und alle Gruppenmitglieder, mit Ausnahme aller Gruppenmitglieder, die mit DBMS_DATA_ACCESS.ADD_MEMBER hinzugefügt wurden. Nachdem Sie DBMS_DATA_ACCESS.INVALIDATE_URL ausgeführt haben, verwalten die Elemente, die mit DBMS_DATA_ACCESS.ADD_MEMBER hinzugefügt wurden, ihre unabhängigen Tabellen-Hyperlink-Invalidierungswerte, und Sie können diese Tabellen-Hyperlinks einzeln mit DBMS_DATA_ACCESS.INVALIDATE_URL invalidieren.

Beispiel

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

Funktion LIST_ACTIVE_URLS

Diese Funktion listet alle derzeit aktiven Tabellen-Hyperlinks und Tabellen-Hyperlink-Gruppen auf.

Syntax

DBMS_DATA_ACCESS.LIST_ACTIVE_URLS RETURN CLOB;

Parameter

Parameter Beschreibung
RETURN

Der Rückgabewert ist ein JSON-Array.

Beispiel

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"}]

Hinweise zur Verwendung

  • Das Verhalten von DBMS_DATA_ACCESS.LIST_ACTIVE_URLS hängt vom ausführenden Benutzer ab. Wenn der aufrufende Benutzer ADMIN oder ein Benutzer mit der Rolle PDB_DBA ist, listet die Funktion alle aktiven Tabellen-Hyperlinks auf, unabhängig vom Benutzer, der den Tabellen-Hyperlink generiert hat. Wenn der aufrufende Benutzer nicht der ADMIN-Benutzer und kein Benutzer mit der Rolle PDB_DBA ist, enthält die Liste nur die aktiven Tabellenhyperlinks, die vom ausführenden Benutzer generiert wurden.

  • Wenn Sie einen Tabellen-Hyperlink in einer Autonomous Database-Instanz mit einem privaten Endpunkt generieren und auflisten, enthält das Ergebnis den Namen private_preauth_url mit dem Wert des folgenden Formulars: "https://private-endpoint/adb/p/parurl-token/data".

    Wenn Sie einen Tabellen-Hyperlink in einer Autonomous Database-Instanz mit einem privaten Endpunkt generieren und auflisten und der private Endpunkt mit aktiviertem Öffentlichen Zugriff zulassen konfiguriert ist, enthält das Ergebnis sowohl die preauth_url für den öffentlichen Endpunkt als auch die private_preauth_url.

    Weitere Informationen finden Sie unter Private Endpunkte konfigurieren und Privaten Endpunkt mit zulässigem öffentlichem Zugriff verwenden.

  • Wenn ein Tabellen-Hyperlink ein Gruppenmitglied ist, zeigt der DBMS_DATA_ACCESS.LIST_ACTIVE_URLS-Antworteintrag "group_ids" mit einem Wert ungleich null an, der mindestens eine ID enthält. Die IDs zeigen die Tabellen-Hyperlink-Gruppen-IDs an, zu denen der Tabellen-Hyperlink (Gruppenmitglied) gehört.

Prozedur LIST_MEMBERS

Im Folgenden werden die Elemente einer Tabellen-Hyperlink-Gruppe aufgeführt.

Syntax

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

Parameter

Parameter Beschreibung

id

Gibt die ID für die Tabellen-Hyperlinkgruppe an.

result

Stellt JSON bereit, um anzugeben, ob die Invalidierung erfolgreich oder nicht erfolgreich ist (CLOB).

Beispiel

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

Prozedur REMOVE_MEMBER

Bei dieser Prozedur wird ein Element aus einer Tabellen-Hyperlink-Gruppe entfernt.

Syntax

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

Parameter

Parameter Beschreibung

id

Gibt die ID für die Tabellen-Hyperlinkgruppe an.

member_id

Gibt die ID für das Gruppenmitglied an, das aus der Tabellen-Hyperlink-Gruppe entfernt werden soll.

result

Stellt JSON bereit, um anzugeben, ob die Invalidierung erfolgreich oder nicht erfolgreich ist (CLOB).

Hinweise zur Verwendung

  • Der Wert member_id darf keine Tabellen-Hyperlinkgruppen-ID sein (is_group_url muss false sein).
  • Wenn das entfernte Element ein vorhandener Tabellen-Hyperlink ist, der der Gruppe mit DBMS_DATA_ACCESS.ADD_MEMBER hinzugefügt wurde, wird das Element aus der Gruppe entfernt, aber der Tabellen-Hyperlink kann direkt aufgerufen werden, bis er explizit invalidiert wird oder abläuft.

  • Wenn eine Tabellen-Hyperlink-Gruppe nur ein Element enthält und dieses Element entfernt wird, wird die Gruppe invalidiert.

Beispiel

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