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 PackagesDBMS_DATA_ACCESS
. - DBMS_DATA_ACCESS Sicherheitsmodell
Die Sicherheit dieses Packages kann gesteuert werden, indem Sie ausgewählten Benutzern oder RollenEXECUTE
für dieses Package erteilen. - Zusammenfassung der DBMS_DATA_ACCESS-Unterprogramme
In diesem Abschnitt werden dieDBMS_DATA_ACCESS
-Unterprogramme beschrieben, die mit Autonomous Database bereitgestellt werden.
Übergeordnetes Thema: Von Autonomous Database bereitgestellte Paketreferenz
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
Übergeordnetes Thema: DBMS_DATA_ACCESS-Package
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.
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 BerechtigungEXECUTE
fürDBMS_DATA_ACCESS
. - Der ADMIN-Benutzer mit der Rolle
PDB_DBA
kann einen beliebigen Tabellenhyperlink in einer Autonomous Database-Instanz auflisten oder invalidieren.
Übergeordnetes Thema: DBMS_DATA_ACCESS-Package
Zusammenfassung der DBMS_DATA_ACCESS-Unterprogramme
In diesem Abschnitt werden die DBMS_DATA_ACCESS
-Unterprogramme beschrieben, die mit Autonomous Database bereitgestellt werden.
Unterprogramm | Beschreibung |
---|---|
Mit diesem Verfahren wird ein Tabellen-Hyperlink generiert. |
|
Dieses Verfahren verlängert die Lebensdauer eines Tabellen-Hyperlinks. |
|
Diese Prozedur invalidiert einen Tabellen-Hyperlink. |
|
Diese Funktion listet alle derzeit aktiven Tabellen-Hyperlinks auf. |
- Prozedur GET_PREAUTHENTICATED_URL
Diese Prozedur generiert einen Tabellen-Hyperlink. - Prozedur EXTEND_URL
Diese Prozedur verlängert die Lebensdauer eines Tabellen-Hyperlinks. - Prozedur INVALIDATE_URL
Diese Prozedur invalidiert einen Tabellen-Hyperlink. - LIST_ACTIVE_URLS-Funktion
Diese Funktion listet alle derzeit aktiven Tabellen-Hyperlinks und Tabellen-Hyperlinkgruppen auf.
Übergeordnetes Thema: DBMS_DATA_ACCESS-Package
Prozedur GET_PREAUTHENTICATED_URL
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.
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 |
---|---|
|
Gibt den Eigentümer des Objekts an. |
|
Gibt das Schemaobjekt (Tabelle oder View) an. |
|
Gibt den Abfragetext der |
|
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 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. |
|
Gibt die Standardwerte einer oder mehrerer Bind-Variablen an (für eine mit Bind-Variablen angegebene Dadurch kann ein Tabellen-Hyperlink-Consumer mit Default Bind-Werten auf die Tabellen-Hyperlink-Daten zugreifen, ohne die Bind-Werte als Abfrageparameter anzugeben. |
|
Gültigkeitsdauer des Tabellen-Hyperlinks in Minuten. 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 Standardwert: Wenn |
|
Anzahl der im Tabellen-Hyperlink zulässigen Zugriffe. Hierfür gibt es keinen Standardwert. Wenn Wenn |
|
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 Der Standardwert ist |
|
Ein JSON-Wert, der Optionen nach Spalte angibt. Die im Parameter
Der Parameter Folgende Form wird verwendet:
Beispiele:
Standardwerte: Wenn Wenn |
|
Setzen Sie den Wert dieses Parameters auf Wenn der Parameter nicht angegeben oder der Parameterwert auf Wenn für die Producer-Datenbank keine ACLs konfiguriert sind, wird der Wert Der Standardwert ist |
|
JSON, die das Ergebnis des Vorgangs angibt. |
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, wobeicolumn_name_1
biscolumn_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ürdata_type
sindVARCHAR
undNONE
. -
Der Parameterwert
sql_statement
muss eineSELECT
-Anweisung sein. DieSELECT
-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 Parameterdefault_bind_values
angegeben werden. Sie können einen mitdefault_bind_values
angegebenen Standard-Bind-Variablenwert außer Kraft setzen, indem Sie den Wert der Bind-Variablen explizit als Abfrageparameter angeben.
- Zeigen Sie die zurückgegebenen Daten im Tabellenformat ohne Farbgebung an (Standard), indem Sie den Abfrageparameter
-
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 auchprivate_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
Das folgende Beispiel generiert einen Tabellen-Hyperlink für 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;
/
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.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 - 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.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 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.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
Das folgende Beispiel generiert einen Tabellen-Hyperlink für eine bestimmte Tabelle mit angegebenen Gruppierungsspalten:
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;
/
Übergeordnetes Thema: Zusammenfassung der DBMS_DATA_ACCESS-Unterprogramme
Prozedur EXTEND_URL
Dieses Verfahren verlängert die Lebensdauer eines Tabellen-Hyperlinks.
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 |
---|---|
|
Gibt die ID des zu erweiternden Tabellen-Hyperlinks an. |
|
Anzahl der Minuten, um die die Ablaufzeit des Tabellen-Hyperlinks verlängert werden soll. Die Ablaufzeit wird auf die aktuelle Ablaufzeit plus dem Wert Der Wert für Wenn Standardwert ist NULL. |
|
Die Anzahl der Zugriffe auf den Tabellen-Hyperlink wird um diese Anzahl erweitert. Die Ablaufanzahl wird auf die aktuelle Ablaufanzahl plus dem Wert von Wenn Der Standardwert ist Null. |
|
JSON, die das Ergebnis des Vorgangs angibt. |
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;
/
Übergeordnetes Thema: Zusammenfassung der DBMS_DATA_ACCESS-Unterprogramme
Prozedur INVALIDATE_URL
Diese Prozedur invalidiert einen Tabellen-Hyperlink.
Syntax
DBMS_DATA_ACCESS.INVALIDATE_URL
(
id IN VARCHAR2,
kill_sessions IN BOOLEAN DEFAULT FALSE,
result OUT CLOB);
Parameter
Parameter | Beschreibung |
---|---|
|
Gibt den Eigentümer des Objekts an. |
|
Standardmäßig werden vorhandene Sessions, die sich mitten im Zugriff auf Daten mit einem Tabellen-Hyperlink befinden, nicht abgebrochen. Wenn TRUE, gibt dieser Parameter an, dass solche vorhandenen Sessions abgebrochen werden sollen, so dass die Invalidierung keinen fortlaufenden Zugriff auf das Dataset zulässt. Gültige Werte sind |
|
Stellt JSON bereit, um anzugeben, ob die Invalidierung erfolgreich oder nicht erfolgreich ist ( |
Übergeordnetes Thema: Zusammenfassung der DBMS_DATA_ACCESS-Unterprogramme
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,
"is_group_url":false,
"group_ids":[null],
"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 RollePDB_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 RollePDB_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 dieprivate_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.
Übergeordnetes Thema: Zusammenfassung der DBMS_DATA_ACCESS-Unterprogramme