Genera, gestisci e monitora collegamenti ipertestuali tabella

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

Generare un collegamento ipertestuale 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 i dati che si desidera rendere disponibili sono soggetti a limitazioni, utilizzare il parametro application_user_id quando si genera il collegamento ipertestuale tabella e creare 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 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 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 tabella per fornire l'accesso ai dati come istruzione di query SQL arbitraria:

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

    Se i dati che si desidera rendere disponibili sono soggetti a limitazioni, utilizzare il parametro application_user_id quando si genera il collegamento ipertestuale tabella e creare 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 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 il filtro. 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 vista tabella per un collegamento ipertestuale tabella, procedere come segue.

  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 tabella con un'istruzione SELECT.

    Per ulteriori informazioni, vedere Generare un collegamento ipertestuale tabella per una tabella o una vista e Generare un collegamento ipertestuale tabella con un'istruzione di selezione.

  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 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
    }
  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 è possibile ordinare, 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 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.

È inoltre possibile effettuare le operazioni riportate di seguito:

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

Invalida collegamenti ipertestuali tabella

In qualsiasi momento un utente con privilegi appropriati può invalidare un collegamento ipertestuale tabella.

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

Definendo i criteri VPD (Oracle Virtual Private Database) per i dati condivisi con un collegamento ipertestuale tabella, è possibile 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 set di dati. Quando si accede a un collegamento ipertestuale tabella, il valore application_user_id specificato durante la generazione del collegamento ipertestuale 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 è concesso l'accesso per leggere i dati con un collegamento ipertestuale 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ù capillare. 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 utilizzo collegamenti ipertestuali tabella

Autonomous Database fornisce viste che consentono di monitorare l'uso del collegamento ipertestuale delle tabelle.

Viste Descrizione
V$DATA_ACCESS_URL_STATS e viste GV$DATA_ACCESS_URL_STATS

Queste viste tengono traccia dell'utilizzo dei collegamenti ipertestuali delle tabelle, inclusi il tempo trascorso, il tempo CPU e ulteriori informazioni.

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 tabella in un'istanza di Autonomous Database con un endpoint privato, il risultato include un nome private_preauth_url con il valore del formato: "https://private-endpoint/adb/p/parurl-token/data".

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

    Per ulteriori informazioni, vedere Configura endpoint privati e Usa 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.