Genera, gestisci e monitora collegamenti ipertestuali tabella

Mostra i passi per generare, gestire e monitorare i collegamenti ipertestuali delle tabelle.

Generare un collegamento ipertestuale di tabella per una tabella o una vista

Mostra i passi per generare un collegamento ipertestuale tabella che è possibile utilizzare per condividere l'accesso per un oggetto schema (tabella o vista).

Quando viene eseguito un collegamento ipertestuale tabella, utilizza i privilegi concessi all'utente del database che genera il collegamento ipertestuale tabella. L'utente che genera un collegamento ipertestuale tabella deve disporre dei privilegi minimi necessari per fornire l'accesso ai dati. Per garantire la sicurezza, Oracle consiglia di non eseguire DBMS_DATA_ACCESS.CREATE_URL come utente ADMIN.

Per utilizzare un collegamento ipertestuale tabella per fornire l'accesso ai dati come oggetto schema (tabella o vista):

  1. Identificare la tabella o la vista che si desidera condividere.

    Se esistono limitazioni per i dati che si desidera rendere disponibili, utilizzare il parametro application_user_id quando si genera il collegamento ipertestuale tabella e si crea un criterio VPD per limitare i dati esposti. Per ulteriori informazioni, vedere Definire un criterio di database privato virtuale per proteggere i dati dei collegamenti ipertestuali delle tabelle.

  2. Eseguire DBMS_DATA_ACCESS.CREATE_URL per generare il collegamento ipertestuale tabella.
    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;
    /

    Il parametro expiration_minutes specifica che il collegamento ipertestuale tabella scade e viene invalidato dopo 360 minuti.

    Per ulteriori informazioni, vedere CREATE_URL Procedure.

  3. Controllare il risultato.

    In questo esempio status contiene il risultato che include informazioni sul collegamento ipertestuale alla tabella.

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

Genera un collegamento ipertestuale di tabella con un'istruzione Select

Mostra i passi per generare un collegamento ipertestuale tabella che fornisce l'accesso ai dati mediante un'istruzione di query SQL.

Quando viene eseguito un collegamento ipertestuale tabella, utilizza i privilegi concessi all'utente del database che genera il collegamento ipertestuale tabella. L'utente che genera un collegamento ipertestuale tabella deve disporre dei privilegi minimi necessari per fornire l'accesso ai dati. Per garantire la sicurezza, Oracle consiglia di non eseguire DBMS_DATA_ACCESS.CREATE_URL come utente ADMIN.

Per utilizzare un collegamento ipertestuale di tabella per fornire l'accesso ai dati come istruzione di query SQL arbitraria, procedere come segue.

  1. Identificare la tabella o la vista che contiene le informazioni che si desidera condividere, nonché l'istruzione SELECT nella tabella o vista che si desidera utilizzare.

    Se esistono limitazioni per i dati che si desidera rendere disponibili, utilizzare il parametro application_user_id quando si genera il collegamento ipertestuale tabella e si crea un criterio VPD per limitare i dati esposti. Per ulteriori informazioni, vedere Definire un criterio di database privato virtuale per proteggere i dati dei collegamenti ipertestuali delle tabelle.

  2. Eseguire DBMS_DATA_ACCESS.CREATE_URL per generare il collegamento ipertestuale tabella.

    Sono disponibili due opzioni, a seconda che si desideri includere valori di bind variable predefiniti (se si includono bind variable nell'istruzione select).

    1. Fornire un'istruzione SELECT e non utilizzare il parametro facoltativo default_bind_values.

      Ad esempio:

      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;
      /
      Il valore sql_statement deve essere un'istruzione SELECT. L'istruzione SELECT supporta le bind variable. Se le bind variable sono incluse nell'istruzione select, i valori delle bind variable devono essere aggiunti al collegamento ipertestuale tabella generato come parametro di query quando si accede ai dati.
    2. Fornire un'istruzione select e includere il parametro default_bind_values.

      Ad esempio:

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

      Il parametro sql_statement deve essere un'istruzione SELECT. L'istruzione SELECT supporta le bind variable.

      Il parametro default_bind_values specifica i valori per una o più bind variable in sql_statement. Se default_bind_values è incluso in DBMS_DATA_ACCESS.CREATE_URL:

      • Per le bind variable specificate in default_bind_values, è possibile omettere i valori delle bind variable quando si accede ai dati. Il valore predefinito viene utilizzato per una bind variable specificata se non viene fornito un override nell'URL collegamento ipertestuale tabella come parametro di query quando si accede ai dati.

      • È possibile sostituire un valore di bind variable predefinito specificato in default_bind_values se si aggiunge il valore della bind variable nell'URL del collegamento ipertestuale tabella come parametro di query quando si accede ai dati.

      • Se una bind variable è inclusa nell'istruzione select e un valore predefinito per la bind variable non è specificato nel parametro default_bind_values, è necessario aggiungere un valore di bind variable all'URL del collegamento ipertestuale tabella generato come parametro di query quando si accede ai dati.

    Il supporto delle variabili di binding è disponibile per i tipi di colonna NUMBER e VARCHAR2.

    In questi esempi il parametro expiration_minutes specifica che il collegamento ipertestuale tabella scade e viene invalidato dopo 360 minuti.

  3. Controllare il risultato.

    In questo esempio status contiene il risultato che include il collegamento ipertestuale Tabella.

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

Genera un collegamento ipertestuale tabella con le funzioni dell'interfaccia utente specificate nelle colonne

Quando si genera un collegamento ipertestuale di tabella, è possibile utilizzare il parametro column_lists per specificare le funzioni dell'interfaccia utente per le colonne specificate.

Il parametro column_lists è un valore JSON che specifica le opzioni per colonna. I valori supportati in column_lists sono uno o più dei seguenti:

Valore column_lists descrizione;
order_by_columns

Specifica le colonne che supportano l'ordinamento. Le colonne sono specificate in un array JSON.

filter_columns

Specifica le colonne che supportano l'applicazione di filtri. Le colonne sono specificate in un array JSON.

default_color_columns

Specifica di utilizzare solo la colorazione predefinita per le colonne specificate. Le colonne sono specificate in un array JSON.

group_by_columns

Specifica che group by è consentito per le colonne specificate (la visualizzazione dei dati mediante il raggruppamento della colonna specificata è consentita). Le colonne sono specificate in un array JSON.

Per specificare le funzioni dell'interfaccia utente a livello di colonna della vista tabella per un collegamento ipertestuale tabella:

  1. Identificare la tabella o la vista o selezionare l'istruzione che si desidera condividere.

    In questo esempio viene generato un collegamento ipertestuale tabella utilizzando il parametro column_lists con una tabella. È inoltre possibile utilizzare questo parametro quando si genera un collegamento ipertestuale di tabella con un'istruzione SELECT.

    Per ulteriori informazioni, vedere Generate a Table Hyperlink for a Table or a View e Generate a Table Hyperlink with a Select Statement.

  2. Eseguire DBMS_DATA_ACCESS.CREATE_URL per generare il collegamento ipertestuale tabella e specificare l'opzione Raggruppa per colonne da visualizzare con un browser:

    Ad esempio, per specificare le colonne Raggruppa per:

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

    Il parametro column_lists è JSON che contiene una lista di array JSON di colonne che definiscono la funzionalità Collegamento ipertestuale tabella. Utilizzare questo parametro per specificare le colonne per una o più opzioni: order_by_columns, filter_columns, default_color_columns o group_by_columns.

    Ad esempio:

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

    Per ulteriori informazioni, vedere CREATE_URL Procedure.

  3. Controllare il risultato.

    In questo esempio status contiene il risultato che include informazioni sul collegamento ipertestuale alla tabella.

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

    Vedere Usa collegamenti ipertestuali tabella per accedere ai dati con l'opzione Raggruppa per in formato tabella per un esempio che mostra l'uso delle colonne Raggruppa per.

  4. Eseguire DBMS_DATA_ACCESS.CREATE_URL per generare il collegamento ipertestuale tabella e specificare un'opzione di formato interfaccia utente.

    Ad esempio, per impostare le colonne che possono essere ordinate, utilizzare l'opzione 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;
    /

    Il parametro column_lists è JSON che contiene una lista di array JSON di colonne che definiscono la funzionalità Collegamento ipertestuale tabella. Utilizzare questo parametro per specificare le colonne per una o più opzioni: order_by_columns, filter_columns, default_color_columns o group_by_columns.

    Per ulteriori informazioni, vedere CREATE_URL Procedure.

  5. Controllare il risultato.

    In questo esempio status contiene il risultato che include informazioni sul collegamento ipertestuale alla tabella.

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

    Per un esempio che mostra l'utilizzo delle colonne, vedere Usa collegamenti ipertestuali tabella in formato tabella con ordinamento colonne.

È anche possibile:

  • Utilizzare DBMS_DATA_ACCESS.LIST_ACTIVE_URLS per visualizzare i collegamenti ipertestuali alle tabelle. Per informazioni dettagliate, vedere Collegamenti ipertestuali tabella elenco e gruppi di collegamenti ipertestuali tabella.
  • Utilizzare DBMS_DATA_ACCESS.EXTEND_URL per estendere la durata di un collegamento ipertestuale tabella. Per ulteriori informazioni, vedere EXTEND_URL Procedure.
  • Genera collegamenti ipertestuali tabella con garanzie e risorse a livello di servizio diverse. Ad esempio, l'accesso a un oggetto o a un'istruzione SQL può essere mappato ai servizi HIGH o MEDIUM, mentre l'accesso a un altro oggetto o a un'istruzione SQL può essere mappato al servizio LOW. Per ulteriori informazioni, vedere CREATE_URL Procedure.

Annulla convalida collegamenti ipertestuali tabella

Un utente con i privilegi appropriati può invalidare un collegamento ipertestuale tabella in qualsiasi momento.

Per invalidare un collegamento ipertestuale tabella, è necessario disporre del collegamento ipertestuale tabella id. Utilizzare DBMS_DATA_ACCESS.LIST_ACTIVE_URLS per generare una lista di collegamenti ipertestuali tabella e il relativo id associato.

Utilizzare DBMS_DATA_ACCESS.INVALIDATE_URL per invalidare un collegamento ipertestuale di tabella. Ad esempio:

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

È inoltre possibile utilizzare DBMS_DATA_ACCESS.INVALIDATE_URL per invalidare un gruppo di collegamenti ipertestuali tabella.

Per ulteriori informazioni, vedere Invalidare un gruppo di collegamenti ipertestuali tabella e INVALIDATE_URL Procedure.

Definire un criterio di database privato virtuale per proteggere i dati dei collegamenti ipertestuali delle tabelle

La definizione dei criteri di Oracle Virtual Private Database (VPD) per i dati condivisi con un collegamento ipertestuale tabella consente di fornire un controllo dell'accesso con filtro in modo che solo un subset di dati, righe, sia visibile per un collegamento ipertestuale tabella specifico.

Oracle Virtual Private Database (VPD) è una funzione di sicurezza che consente di controllare l'accesso ai dati in modo dinamico a livello di riga per utenti e applicazioni applicando filtri sullo stesso data set. Quando si accede a un collegamento ipertestuale di tabella, il valore application_user_id specificato durante la generazione del collegamento ipertestuale di tabella è disponibile tramite sys_context('DATA_ACCESS_CONTEXT$', 'USER_IDENTITY'). È possibile definire criteri VPD che utilizzano il valore di questo contesto applicazione per limitare i dati, le righe, visibili all'utente dell'applicazione.

Qualsiasi utente a cui sia concesso l'accesso per leggere i dati con un collegamento ipertestuale di tabella può accedere ai dati e utilizzarli (una tabella, una vista o i dati forniti con un'istruzione SELECT). Definendo un criterio VPD nel database che ha generato un collegamento ipertestuale tabella, è possibile utilizzare il valore application_user_id in una regola SYS_CONTEXT per fornire un controllo più dettagliato. Si consideri un esempio in cui i dati vengono resi disponibili con un collegamento ipertestuale tabella. Se si desidera limitare l'accesso ad alcuni dati, è possibile aggiungere un criterio VPD.

Ad esempio:

  1. Ottenere il valore application_user_id specificato quando è stato generato il collegamento ipertestuale tabella.
  2. Creare un criterio VPD nel database in cui è stato generato il collegamento ipertestuale tabella.
    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;
    

    Per ulteriori informazioni, vedere DBMS_RLS.

  3. Registrare il criterio VPD.
    BEGIN
       DBMS_RLS.ADD_POLICY( 
            object_schema        => 'HR',
            object_name          => 'EMPLOYEE',
            policy_name          => 'POL',
            policy_function      => 'LIMIT_SAL');
    END;
    /

    Per ulteriori informazioni, vedere DBMS_RLS.

Monitoraggio e visualizzazione dell'utilizzo dei collegamenti ipertestuali delle tabelle

Autonomous Database fornisce viste che consentono di monitorare l'uso dei collegamenti ipertestuali alle tabelle.

Viste descrizione;
V$DATA_ACCESS_URL_STATS e viste GV$DATA_ACCESS_URL_STATS

Queste viste consentono di tenere traccia dell'utilizzo dei collegamenti ipertestuali delle tabelle, inclusi il tempo trascorso, il tempo CPU e informazioni aggiuntive.

Note per la creazione di un collegamento ipertestuale tabella

Note per la generazione di un collegamento ipertestuale tabella con DBMS_DATA_ACCESS.CREATE_URL:

  • È possibile utilizzare il parametro facoltativo service_name per specificare che il collegamento ipertestuale tabella generato viene servito con una garanzia e risorse specifiche a livello di servizio. Ad esempio, utilizzare il parametro service_name per specificare che l'accesso all'istruzione SQL è mappato al servizio HIGH.

  • È possibile utilizzare il parametro facoltativo inherit_acl se si desidera limitare l'accesso ai dati dei collegamenti ipertestuali delle tabelle. Impostare questo parametro su TRUE per ereditare le ACL. Quando il valore di questo parametro è TRUE, l'indirizzo IP di un consumer di collegamento ipertestuale tabella in entrata viene convalidato con le ACL nel database del producer prima di consentire l'accesso ai dati. Se nel database del producer non sono configurate ACL, il valore inherit_acl viene ignorato e l'accesso ai dati è consentito senza alcun controllo ACL.

    Per ulteriori informazioni, vedere Configuring Network Access with Access Control Rules (ACLs).

  • Quando si genera un collegamento ipertestuale di tabella in un'istanza di Autonomous Database con un endpoint privato, il risultato include un nome private_preauth_url con il valore del form: "https://private-endpoint/adb/p/parurl-token/data".

    Quando si genera un collegamento ipertestuale di tabella in un'istanza di Autonomous Database con un endpoint privato e l'endpoint privato è configurato con l'opzione Consenti accesso pubblico abilitata, il risultato include sia preauth_url per l'endpoint pubblico che private_preauth_url.

    Per ulteriori informazioni, vedere Configura endpoint privati e Utilizza un endpoint privato con accesso pubblico consentito.

  • Utilizzare DBMS_DATA_ACCESS.LIST_ACTIVE_URLS per visualizzare i collegamenti ipertestuali alle tabelle. Per informazioni dettagliate, vedere Collegamenti ipertestuali tabella elenco e gruppi di collegamenti ipertestuali tabella.

  • Utilizzare DBMS_DATA_ACCESS.EXTEND_URL per estendere la durata di un collegamento ipertestuale tabella. Per ulteriori informazioni, vedere EXTEND_URL Procedure.