Tabellen-Hyperlinks generieren, verwalten und überwachen

Zeigt die Schritte zum Generieren, Verwalten und Überwachen von Tabellen-Hyperlinks an.

Tabellen-Hyperlink für eine Tabelle oder Ansicht generieren

Zeigt die Schritte zum Generieren eines Tabellen-Hyperlinks an, mit denen Sie den Zugriff für ein Schemaobjekt (Tabelle oder View) freigeben können.

Wenn ein Tabellen-Hyperlink ausgeführt wird, verwendet er die Berechtigungen, die dem Datenbankbenutzer erteilt wurden, der den Tabellen-Hyperlink generiert. Der Benutzer, der einen Tabellen-Hyperlink generiert, muss über die Mindestberechtigungen verfügen, die für den Zugriff auf die Daten erforderlich sind. Um die Sicherheit aufrechtzuerhalten, empfiehlt Oracle, DBMS_DATA_ACCESS.CREATE_URL nicht als ADMIN-Benutzer auszuführen.

So verwenden Sie einen Tabellen-Hyperlink, um den Zugriff auf Daten als Schemaobjekt (Tabelle oder View) bereitzustellen:

  1. Geben Sie die Tabelle oder View an, die Sie gemeinsam verwenden möchten.

    Wenn es Einschränkungen für die Daten gibt, die Sie zur Verfügung stellen möchten, verwenden Sie den Parameter application_user_id, wenn Sie den Tabellen-Hyperlink generieren, und erstellen Sie eine VPD-Policy, um die angezeigten Daten einzuschränken. Weitere Informationen finden Sie unter Policy für virtuelle private Datenbanken zum Sichern von Tabellen-Hyperlinkdaten definieren.

  2. Führen Sie DBMS_DATA_ACCESS.CREATE_URL aus, um den Tabellen-Hyperlink zu generieren.
    DECLARE
       status CLOB;
       BEGIN
          DBMS_DATA_ACCESS.CREATE_URL(
              schema_name => 'ADMIN',
              schema_object_name    => 'TREE_DATA',
              expiration_minutes    => 360,
              result                => status);
           dbms_output.put_line(status);
        END;
    /

    Der Parameter expiration_minutes gibt an, dass der Tabellen-Hyperlink abläuft und nach 360 Minuten invalidiert wird.

    Weitere Informationen finden Sie unter Prozedur CREATE_URL.

  3. Prüfen Sie das Ergebnis.

    In diesem Beispiel enthält status das Ergebnis, das Informationen zum Tabellen-Hyperlink enthält.

    {
    "status":"SUCCESS","id":"wPY0uxyx-gioxOndiKVlqVF585xqJs14CIp9M1qH",
    "preauth_url":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/-pPLdrbUTcLUrZLExyzxyzabc_1w/data",
    "expiration_ts":"2024-10-22T22:37:18.805Z",
    "expiration_count":null
    }

Tabellen-Hyperlink mit SELECT-Anweisung generieren

Zeigt die Schritte zum Generieren eines Tabellen-Hyperlinks an, der den Zugriff auf Daten mit einer SQL-Abfrageanweisung ermöglicht.

Wenn ein Tabellen-Hyperlink ausgeführt wird, verwendet er die Berechtigungen, die dem Datenbankbenutzer erteilt wurden, der den Tabellen-Hyperlink generiert. Der Benutzer, der einen Tabellen-Hyperlink generiert, muss über die Mindestberechtigungen verfügen, die für den Zugriff auf die Daten erforderlich sind. Um die Sicherheit aufrechtzuerhalten, empfiehlt Oracle, DBMS_DATA_ACCESS.CREATE_URL nicht als ADMIN-Benutzer auszuführen.

So verwenden Sie einen Tabellen-Hyperlink, um den Zugriff auf Daten als beliebige SQL-Abfrageanweisung zu ermöglichen:

  1. Identifizieren Sie die Tabelle oder View mit den Informationen, die Sie gemeinsam verwenden möchten, sowie die SELECT-Anweisung in der Tabelle oder View, die Sie verwenden möchten.

    Wenn es Einschränkungen für die Daten gibt, die Sie zur Verfügung stellen möchten, verwenden Sie den Parameter application_user_id, wenn Sie den Tabellen-Hyperlink generieren, und erstellen Sie eine VPD-Policy, um die angezeigten Daten einzuschränken. Weitere Informationen finden Sie unter Policy für virtuelle private Datenbanken zum Sichern von Tabellen-Hyperlinkdaten definieren.

  2. Führen Sie DBMS_DATA_ACCESS.CREATE_URL aus, um den Tabellen-Hyperlink zu generieren.

    Sie haben zwei Optionen, je nachdem, ob Sie Default Bind-Variablenwerte aufnehmen möchten (wenn Sie Bind-Variablen in die SELECT-Anweisung aufnehmen).

    1. Geben Sie eine SELECT-Anweisung an, und verwenden Sie nicht den optionalen Parameter default_bind_values.

      Beispiel:

      DECLARE
         status CLOB;
         BEGIN
            DBMS_DATA_ACCESS.CREATE_URL(
                sql_statement        => 'SELECT species, height FROM TREE_DATA',
                expiration_minutes   => 360,
                result               => status);
             dbms_output.put_line(status);
          END;
      /
      Der Wert sql_statement muss eine SELECT-Anweisung sein. Die SELECT-Anweisung unterstützt Bind-Variablen. Wenn Bind-Variablen in der SELECT-Anweisung enthalten sind, müssen die Bind-Variablenwerte beim Zugriff auf die Daten als Abfrageparameter an den generierten Tabellen-Hyperlink angehängt werden.
    2. Geben Sie eine SELECT-Anweisung an, und nehmen Sie den Parameter default_bind_values auf.

      Beispiel:

      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   => 360,
                result               => status);
             dbms_output.put_line(status);
          END;
      /

      Der Parameter sql_statement muss eine SELECT-Anweisung sein. Die SELECT-Anweisung unterstützt Bind-Variablen.

      Der Parameter default_bind_values gibt Werte für eine oder mehrere Bind-Variablen in sql_statement an. Wenn default_bind_values in DBMS_DATA_ACCESS.CREATE_URL enthalten ist:

      • Bei Bind-Variablen, die in default_bind_values angegeben sind, können Sie die Bind-Variablenwerte auslassen, wenn Sie auf die Daten zugreifen. Der Standardwert wird für eine angegebene Bind-Variable verwendet, wenn beim Zugriff auf die Daten kein Override in der Tabellen-Hyperlink-URL als Abfrageparameter angegeben ist.

      • Sie können einen in default_bind_values angegebenen Standard-Bind-Variablenwert außer Kraft setzen, wenn Sie den Wert der Bind-Variablen in der Tabellen-Hyperlink-URL als Abfrageparameter beim Zugriff auf die Daten anhängen.

      • Wenn in der SELECT-Anweisung eine Bind-Variable enthalten ist und im Parameter default_bind_values kein Standardwert für die Bind-Variable angegeben ist, müssen Sie beim Zugriff auf die Daten einen Bind-Variablenwert an die generierte Tabellen-Hyperlink-URL als Abfrageparameter anhängen.

    Die Unterstützung von Bind-Variablen ist für die Spaltentypen NUMBER und VARCHAR2 verfügbar.

    In diesen Beispielen gibt der Parameter expiration_minutes an, dass der Tabellen-Hyperlink abläuft und nach 360 Minuten invalidiert wird.

  3. Prüfen Sie das Ergebnis.

    In diesem Beispiel enthält status das Ergebnis, das den Tabellen-Hyperlink enthält.

    {
    "status":"SUCCESS","id":"LCvtpALqZgcHGL4Lxyzabcxyza-QVEFngwh1UGhg8jjuFAHOQJLGFi",
    "preauth_url":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/RIabc_xyz7Kw8ZLyZ2JzCXZQXpc/data",
    "expiration_ts":"2025-01-20T16:42:49.527Z"}
    }

Tabellen-Hyperlink mit in Spalten angegebenen UI-Features generieren

Wenn Sie einen Tabellen-Hyperlink generieren, können Sie den Parameter column_lists verwenden, um UI-Features für angegebene Spalten anzugeben.

Der Parameter column_lists ist ein JSON-Wert, der Optionen nach Spalte angibt. Die unterstützten Werte in column_lists sind mindestens einer der folgenden Werte:

column_lists Wert Beschreibung
order_by_columns

Gibt die Spalten an, die Sortierung unterstützen. Die Spalten werden in einem JSON-Array angegeben.

filter_columns

Gibt die Spalten an, die Filter unterstützen. Die Spalten werden in einem JSON-Array angegeben.

default_color_columns

Gibt an, dass nur die Standardfarbgebung für die angegebenen Spalten verwendet wird. Die Spalten werden in einem JSON-Array angegeben.

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). Die Spalten werden in einem JSON-Array angegeben.

So geben Sie UI-Funktionen auf Tabellenansichts-Spaltenebene für einen Tabellen-Hyperlink an:

  1. Geben Sie die Tabelle, View oder Select-Anweisung an, die Sie gemeinsam verwenden möchten.

    In diesem Beispiel wird ein Tabellen-Hyperlink mit dem Parameter column_lists und einer Tabelle generiert. Sie können diesen Parameter auch verwenden, wenn Sie einen Tabellen-Hyperlink mit einer SELECT-Anweisung generieren.

    Weitere Informationen finden Sie unter Tabellen-Hyperlink für eine Tabelle oder eine Ansicht generieren und Tabellen-Hyperlink mit einer SELECT-Anweisung generieren.

  2. Führen Sie DBMS_DATA_ACCESS.CREATE_URL aus, um den Tabellen-Hyperlink zu generieren und die Option "Gruppieren nach Spalten" für die Anzeige mit einem Browser anzugeben:

    Beispiel: So geben Sie "Gruppieren nach Spalten" an:

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

    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.

    Beispiel:

    column_lists => '{ 
            "group_by_columns":["COUNTY", "SPECIES"], 
            "order_by_columns":["COUNTY"] }'

    Weitere Informationen finden Sie unter Prozedur CREATE_URL.

  3. Prüfen Sie das Ergebnis.

    In diesem Beispiel enthält status das Ergebnis, das Informationen zum Tabellen-Hyperlink enthält.

    {
    "status":"SUCCESS",
    "id":"LLUZjJ5Yy8d0txydMiuxCVL_j4abc_xyzV1989GmgRInaBYTw",
    "preauth_url":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/Rt_yRfTxbcabc_xyzWlANP5RmM9Y/data",
    "expiration_ts":"2024-10-25T02:30:39.810Z",
    "expiration_count":null
    }

    Ein Beispiel für die Verwendung von Gruppen nach Spalten finden Sie unter Tabellenhyperlinks für den Zugriff auf Daten mit der Option "Gruppieren nach" im Tabellenformat verwenden.

  4. Führen Sie DBMS_DATA_ACCESS.CREATE_URL aus, um den Tabellen-Hyperlink zu generieren, und geben Sie eine UI-Formatoption an.

    Beispiel: Um die sortierbaren Spalten festzulegen, verwenden Sie die Option column_lists order_by_columns:

    DECLARE
       status CLOB;
       column_lists CLOB;
       BEGIN
          DBMS_DATA_ACCESS.CREATE_URL(
              schema_name => 'ADMIN',
              schema_object_name    => 'TREE_DATA',
              expiration_minutes    => 360,
              column_lists          => '{ "order_by_columns": ["COUNTY", "SPECIES"] }',
              result                => status);
           dbms_output.put_line(status);
        END;
    /

    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.

    Weitere Informationen finden Sie unter Prozedur CREATE_URL.

  5. Prüfen Sie das Ergebnis.

    In diesem Beispiel enthält status das Ergebnis, das Informationen zum Tabellen-Hyperlink enthält.

    {
    "status":"SUCCESS",
    "id":"LLUZjJ5Yy8d0txydMiuxCVL_j4abc_xyzV1989GmgRInaBYTw",
    "preauth_url":"https://dataaccess.adb.us-ashburn-1.oraclecloudapps.com/adb/p/Rt_yRfTxbcabc_xyzk3EmM9Y/data",
    "expiration_ts":"2024-10-25T02:30:39.810Z",
    "expiration_count":null
    }

    Ein Beispiel, das die Reihenfolge nach Spaltenverwendung anzeigt, finden Sie unter Tabellenhyperlinks im Tabellenformat mit Spaltensortierung verwenden.

Sie können auch:

  • Verwenden Sie DBMS_DATA_ACCESS.LIST_ACTIVE_URLS, um Tabellen-Hyperlinks anzuzeigen. Weitere Informationen finden Sie unter Listen-Tabellen-Hyperlinks und Tabellen-Hyperlinkgruppen.
  • Verwenden Sie DBMS_DATA_ACCESS.EXTEND_URL, um die Lebensdauer eines Tabellen-Hyperlinks zu verlängern. Weitere Informationen finden Sie unter Prozedur EXTEND_URL.
  • Erstellen Sie Tabellen-Hyperlinks, die mit verschiedenen Garantien und Ressourcen auf Service-Ebene bedient 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. Weitere Informationen finden Sie unter Prozedur CREATE_URL.

Tabellen-Hyperlinks invalidieren

Ein Benutzer mit entsprechenden Berechtigungen kann einen Tabellen-Hyperlink jederzeit invalidieren.

Um einen Tabellen-Hyperlink zu invalidieren, benötigen Sie den Tabellen-Hyperlink id. Verwenden Sie DBMS_DATA_ACCESS.LIST_ACTIVE_URLS, um eine Liste der Tabellen-Hyperlinks und der zugehörigen id zu generieren.

Verwenden Sie DBMS_DATA_ACCESS.INVALIDATE_URL, um einen Tabellen-Hyperlink zu invalidieren. Beispiel:

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

Sie können auch DBMS_DATA_ACCESS.INVALIDATE_URL verwenden, um eine Tabellen-Hyperlink-Gruppe zu invalidieren.

Weitere Informationen finden Sie unter Tabellen-Hyperlinkgruppe validieren und Prozedur INVALIDATE_URL.

Policy für eine virtuelle private Datenbank zum Sichern von Tabellen-Hyperlinkdaten definieren

Durch die Definition von Oracle Virtual Private Database-(VPD-)Policys für Daten, die Sie mit einem Tabellen-Hyperlink gemeinsam verwenden, können Sie eine fein granulierte Zugriffskontrolle bereitstellen, sodass nur eine Teilmenge von Daten, Zeilen für einen bestimmten Tabellen-Hyperlink sichtbar ist.

Oracle Virtual Private Database (VPD) ist ein Sicherheitsfeature, mit dem Sie den Datenzugriff für Benutzer und Anwendungen dynamisch auf Zeilenebene steuern können, indem Sie Filter für dasselbe Dataset anwenden. Wenn auf einen Tabellen-Hyperlink zugegriffen wird, ist der bei der Generierung des Tabellen-Hyperlinks angegebene Wert von application_user_id über sys_context('DATA_ACCESS_CONTEXT$', 'USER_IDENTITY') verfügbar. Sie können VPD-Policys definieren, die den Wert dieses Anwendungskontexts verwenden, um die Daten und Zeilen einzuschränken, die für den Anwendungsbenutzer sichtbar sind.

Jeder Benutzer, dem der Zugriff auf das Lesen von Daten mit einem Tabellen-Hyperlink gewährt wird, kann auf die Daten zugreifen und diese verwenden (entweder eine Tabelle, eine View oder die Daten, die mit einer SELECT-Anweisung bereitgestellt werden). Wenn Sie eine VPD-Policy in der Datenbank definieren, die einen Tabellen-Hyperlink generiert hat, können Sie den Wert application_user_id in einer SYS_CONTEXT-Regel verwenden, um eine fein granulierte Kontrolle bereitzustellen. Beispiel für die Bereitstellung von Daten mit einem Tabellen-Hyperlink. Wenn Sie den Zugriff auf einige der Daten einschränken möchten, können Sie eine VPD-Policy hinzufügen.

Beispiel:

  1. Rufen Sie den application_user_id-Wert ab, den Sie beim Generieren des Tabellen-Hyperlinks angegeben haben.
  2. Erstellen Sie eine VPD-Policy für die Datenbank, in der Sie den Tabellen-Hyperlink generiert haben.
    CREATE OR REPLACE FUNCTION limit_sal (v_schema IN VARCHAR2, v_objname IN VARCHAR2)
      RETURN VARCHAR2 authid current_user AS
    BEGIN
         RETURN 'employee_id = SYS_CONTEXT(''DATA_ACCESS_CONTEXT$'', ''USER_IDENTITY'')';
    END;
    

    Weitere Informationen finden Sie unter DBMS_RLS.

  3. VPD-Policy registrieren
    BEGIN
       DBMS_RLS.ADD_POLICY( 
            object_schema        => 'HR',
            object_name          => 'EMPLOYEE',
            policy_name          => 'POL',
            policy_function      => 'LIMIT_SAL');
    END;
    /

    Weitere Informationen finden Sie unter DBMS_RLS.

Weitere Informationen finden Sie unter Datenzugriff mit der Oracle Virtual Private Database steuern.

Verwendung von Tabellen-Hyperlinks überwachen und anzeigen

Autonomous Database bietet Ansichten, mit denen Sie die Verwendung von Tabellen-Hyperlinks überwachen können.

Ansichten Beschreibung
V$DATA_ACCESS_URL_STATS und GV$DATA_ACCESS_URL_STATS Views

Diese Views verfolgen die Verwendung von Tabellen-Hyperlinks, einschließlich der verstrichenen Zeit, der CPU-Zeit und zusätzlicher Informationen.

Hinweise zum Erstellen eines Tabellen-Hyperlinks

Hinweise zum Generieren eines Tabellen-Hyperlinks mit DBMS_DATA_ACCESS.CREATE_URL:

  • Mit dem optionalen Parameter service_name können Sie angeben, dass der generierte Tabellen-Hyperlink mit einer bestimmten Service-Level-Garantie und Ressourcen verarbeitet wird. Beispiel: Verwenden Sie den Parameter service_name, um anzugeben, dass der Zugriff auf die SQL-Anweisung dem HIGH-Service zugeordnet ist.

  • Sie können den optionalen Parameter inherit_acl verwenden, wenn Sie den Zugriff auf Tabellen-Hyperlink-Daten einschränken möchten. Setzen Sie diesen Parameter auf TRUE, um ACLs zu übernehmen. Wenn der Wert dieses Parameters TRUE lautet, wird die IP-Adresse eines eingehenden Tabellen-Hyperlink-Consumers mit den ACLs in der Producer-Datenbank validiert, bevor der Zugriff auf Daten zugelassen wird. 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.

    Weitere Informationen finden Sie unter Netzwerkzugriff mit Zugriffskontrollregeln (ACLs) konfigurieren.

  • 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.

  • Verwenden Sie DBMS_DATA_ACCESS.LIST_ACTIVE_URLS, um Tabellen-Hyperlinks anzuzeigen. Weitere Informationen finden Sie unter Listen-Tabellen-Hyperlinks und Tabellen-Hyperlinkgruppen.

  • Verwenden Sie DBMS_DATA_ACCESS.EXTEND_URL, um die Lebensdauer eines Tabellen-Hyperlinks zu verlängern. Weitere Informationen finden Sie unter Prozedur EXTEND_URL.