Generar, enumerar, invalidar y supervisar hipervínculos de tabla

Muestra los pasos para generar. Enumerar, invalidar o supervisar hipervínculos de tabla.

Generación de un hiperenlace de tabla para una tabla o una vista

Muestra los pasos para generar un hiperenlace de tabla que puede utilizar para compartir el acceso a un objeto de esquema (tabla o vista).

Cuando se ejecuta un hiperenlace de tabla, utiliza los privilegios otorgados al usuario de base de datos que genera el hiperenlace de tabla. El usuario que genera un hiperenlace de tabla debe tener los privilegios mínimos necesarios para proporcionar acceso a los datos. Para mantener la seguridad, Oracle recomienda que no ejecute DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL como usuario ADMIN.

Para utilizar un hiperenlace de tabla para proporcionar acceso a los datos como objeto de esquema (tabla o vista):

  1. Identifique la tabla o vista que desea compartir.

    Si hay restricciones en los datos que desea que estén disponibles, utilice el parámetro application_user_id al generar el hiperenlace de tabla y cree una política de VPD para restringir los datos que expone. Consulte Definición de una política de base de datos privada virtual para proteger los datos de hiperenlace de tabla para obtener más información.

  2. Ejecute DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL para generar el hiperenlace de tabla.
    DECLARE
       status CLOB;
       BEGIN
          DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
              schema_name => 'ADMIN',
              schema_object_name    => 'TREE_DATA',
              expiration_minutes    => 360,
              service_name          => 'HIGH',
              inherit_acl            => FALSE,
              result                => status);
           dbms_output.put_line(status);
        END;
    /

    Utilice el parámetro opcional service_name para especificar que el hiperenlace de tabla generado se sirve con una garantía de nivel de servicio y recursos específicos. Por ejemplo, utilice el parámetro service_name para especificar que el acceso al objeto se asigne al servicio HIGH.

    Utilice el parámetro opcional inherit_acl si desea limitar el acceso a los datos de hiperenlace de tabla. Establezca este parámetro en TRUE para heredar la ACL. Cuando la herencia de ACL es verdadera, la dirección IP de un consumidor de hiperenlace de tabla entrante se valida con las ACL en la base de datos del productor antes de permitir el acceso a los datos. Si la base de datos del productor no tiene ACL configuradas, se ignora el valor inherit_acl y se permite el acceso a los datos sin ninguna comprobación de ACL.

    Consulte Configuring Network Access with Access Control Rules (ACL) y GET_PREAUTHENTICATED_URL Procedure para obtener más información.

  3. Compruebe el resultado.

    En este ejemplo, status contiene el resultado que incluye información sobre el hiperenlace de tabla.

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

Notas para generar un hiperenlace de tabla con DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL:

  • Al generar un hiperenlace de tabla en una instancia de Autonomous Database con un punto final privado, el resultado incluye un nombre private_preauth_url con el valor del formato: "https://private-endpoint/adb/p/parurl-token/data".

    Al generar un hiperenlace de tabla en una instancia de Autonomous Database con un punto final privado y el punto final privado se configura con la opción Permitir acceso público activada, el resultado incluye tanto preauth_url para el punto final público como private_preauth_url.

    Consulte Configuración de puntos finales privados y Uso de un punto final privado con acceso público permitido para obtener más información.

  • Utilice DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para mostrar los hiperenlaces de tabla. Consulte Enlaces de tabla de lista para obtener más información.
  • Utilice DBMS_DATA_ACCESS.EXTEND_URL para ampliar la vida útil de un hiperenlace de tabla. Consulte Procedimiento EXTEND_URL para obtener más información.

Generación de un hiperenlace de tabla con una sentencia Select

Muestra los pasos para generar un hiperenlace de tabla que proporciona acceso a los datos mediante una sentencia de consulta SQL.

Cuando se ejecuta un hiperenlace de tabla, utiliza los privilegios otorgados al usuario de base de datos que genera el hiperenlace de tabla. El usuario que genera un hiperenlace de tabla debe tener los privilegios mínimos necesarios para proporcionar acceso a los datos. Para mantener la seguridad, Oracle recomienda que no ejecute DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL como usuario ADMIN.

Para utilizar un hiperenlace de tabla para proporcionar acceso a los datos como una sentencia de consulta SQL arbitraria:

  1. Identifique la tabla o vista que contiene la información que desea compartir, así como la sentencia SELECT en la tabla o vista que desea utilizar.

    Si hay restricciones en los datos que desea que estén disponibles, utilice el parámetro application_user_id al generar el hiperenlace de tabla y cree una política de VPD para restringir los datos que expone. Consulte Definición de una política de base de datos privada virtual para proteger los datos de hiperenlace de tabla para obtener más información.

  2. Ejecute DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL para generar el hiperenlace de tabla.

    Tiene dos opciones, según si desea incluir valores de variables de enlace por defecto (si incluye variables de enlace en la sentencia select).

    1. Proporcione una sentencia select y no utilice el parámetro opcional default_bind_values.

      Por ejemplo:

      DECLARE
         status CLOB;
         BEGIN
            DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
                sql_statement        => 'SELECT species, height FROM TREE_DATA',
                expiration_count     => 10,
                service_name         => 'HIGH',
                inherit_acl            => FALSE,
                result               => status);
             dbms_output.put_line(status);
          END;
      /
      El valor sql_statement debe ser una sentencia SELECT. La sentencia SELECT soporta variables ligadas. Si las variables de enlace se incluyen en la sentencia select, los valores de las variables de enlace se deben agregar al hiperenlace de tabla generado como parámetro de consulta al acceder a los datos.
    2. Proporcione una sentencia select e incluya el parámetro default_bind_values.

      Por ejemplo:

      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_count     => 10,
                service_name         => 'HIGH',
                inherit_acl            => FALSE,
                result               => status);
             dbms_output.put_line(status);
          END;
      /

      El parámetro sql_statement debe ser una sentencia SELECT. La sentencia SELECT soporta variables ligadas.

      El parámetro default_bind_values especifica valores para una o más variables de enlace en sql_statement. Cuando default_bind_values se incluye con DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL:

      • Para las variables de enlace especificadas en default_bind_values, puede omitir los valores de las variables de enlace al acceder a los datos. El valor por defecto se utiliza para una variable de enlace especificada si no se proporciona una sustitución en la URL de hiperenlace de tabla como parámetro de consulta al acceder a los datos.

      • Puede sustituir un valor de variable de enlace por defecto especificado en default_bind_values si agrega el valor de variable de enlace en la URL de hiperenlace de tabla como parámetro de consulta al acceder a los datos.

      • Si se incluye una variable de enlace en la sentencia select y no se especifica un valor por defecto para la variable de enlace en el parámetro default_bind_values, debe agregar un valor de variable de enlace a la URL de hiperenlace de tabla generada como parámetro de consulta al acceder a los datos.

    El soporte de variables de enlace está disponible para los tipos de columna NUMBER y VARCHAR2.

    En estos ejemplos, el parámetro expiration_count especifica que el hiperenlace de tabla caduca y se invalida después de 10 usos. Cuando no se especifica expiration_time, el tiempo de caducidad se define en el valor por defecto, 90 días.

    Utilice el parámetro opcional service_name para especificar que el hiperenlace de tabla generado se sirve con una garantía de nivel de servicio y recursos específicos. Por ejemplo, utilice el parámetro service_name para especificar que el acceso a la sentencia SQL se asigne al servicio HIGH.

    Utilice el parámetro opcional inherit_acl si desea limitar el acceso a los datos de hiperenlace de tabla. Establezca este parámetro en TRUE para heredar las ACL. Cuando la herencia de ACL es verdadera, la dirección IP de un consumidor de hiperenlace de tabla entrante se valida con las ACL en la base de datos del productor antes de permitir el acceso a los datos. Si la base de datos del productor no tiene ACL configuradas, se ignora el valor inherit_acl y se permite el acceso a los datos sin ninguna comprobación de ACL.

    Consulte Configuring Network Access with Access Control Rules (ACL) y GET_PREAUTHENTICATED_URL Procedure para obtener más información.

  3. Compruebe el resultado.

    En este ejemplo, status contiene el resultado que incluye el hiperenlace de tabla.

    {
    "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",
    "expiration_count":10}
    }

Notas para generar un hiperenlace de tabla con DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL:

  • Al generar un hiperenlace de tabla en una instancia de Autonomous Database con un punto final privado, el resultado incluye un nombre private_preauth_url con el valor del formato: "https://private-endpoint/adb/p/parurl-token/data".

    Al generar un hiperenlace de tabla en una instancia de Autonomous Database con un punto final privado y el punto final privado se configura con la opción Permitir acceso público activada, el resultado incluye tanto preauth_url para el punto final público como private_preauth_url.

    Consulte Configuración de puntos finales privados y Uso de un punto final privado con acceso público permitido para obtener más información.

  • Utilice DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para mostrar los hiperenlaces de tabla. Consulte Enlaces de tabla de lista para obtener más información.
  • Utilice DBMS_DATA_ACCESS.EXTEND_URL para ampliar la vida útil de un hiperenlace de tabla. Consulte Procedimiento EXTEND_URL para obtener más información.

Generación de un hiperenlace de tabla con funciones de interfaz de usuario especificadas en columnas

Al generar un hiperenlace de tabla, puede utilizar el parámetro column_lists para especificar las funciones de la interfaz de usuario para las columnas especificadas.

El parámetro column_lists es un valor JSON que especifica opciones por columna. Los valores soportados en column_lists son uno o más de los siguientes:

Valor column_lists Descripción
order_by_columns

Especifica las columnas que admiten la ordenación. Las columnas se especifican en una matriz de JSON.

filter_columns

Especifica las columnas que admiten el filtrado. Las columnas se especifican en una matriz de JSON.

default_color_columns

Especifica que sólo se utilice el color por defecto para las columnas especificadas. Las columnas se especifican en una matriz de JSON.

group_by_columns

Especifica que Agrupar por está permitido para las columnas especificadas (se permite ver los datos agrupando la columna especificada). Las columnas se especifican en una matriz de JSON.

Para especificar las funciones de IU de nivel de columna de vista de tabla para un hiperenlace de tabla:

  1. Identifique la tabla o vista o seleccione la sentencia que desea compartir.

    En este ejemplo se genera un hiperenlace de tabla mediante el parámetro column_lists con una tabla. También puede utilizar este parámetro al generar un hiperenlace de tabla con una sentencia SELECT.

    Consulte Generación de un hiperenlace de tabla para una tabla o una vista y Generación de un hiperenlace de tabla con un extracto de selección para obtener más información.

  2. Ejecute DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL para generar el hiperenlace de tabla y especifique la opción de agrupar por columnas para su visualización con un explorador:

    Por ejemplo, para especificar agrupar por columnas:

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

    El parámetro column_lists es JSON que contiene una lista de matrices JSON de columnas que definen la funcionalidad de hiperenlace de tabla. Utilice este parámetro para especificar las columnas de una o más de las opciones: order_by_columns, filter_columns, default_color_columns o group_by_columns.

    Por ejemplo:

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

    Consulte Procedimiento GET_PREAUTHENTICATED_URL para obtener más información.

  3. Compruebe el resultado.

    En este ejemplo, status contiene el resultado que incluye información sobre el hiperenlace de tabla.

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

    Consulte Uso de hiperenlaces de tabla para acceder a datos con la opción Agrupar por en formato de tabla para obtener un ejemplo que muestre el uso de grupo por columnas.

  4. Ejecute DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL para generar el hiperenlace de tabla y especificar una opción de formato de interfaz de usuario.

    Por ejemplo, para definir las columnas que se pueden ordenar, utilice la opción column_lists order_by_columns:

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

    El parámetro column_lists es JSON que contiene una lista de matrices JSON de columnas que definen la funcionalidad de hiperenlace de tabla. Utilice este parámetro para especificar las columnas de una o más de las opciones: order_by_columns, filter_columns, default_color_columns o group_by_columns.

    Consulte Procedimiento GET_PREAUTHENTICATED_URL para obtener más información.

  5. Compruebe el resultado.

    En este ejemplo, status contiene el resultado que incluye información sobre el hiperenlace de tabla.

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

    Consulte Uso de hiperenlaces de tabla en formato de tabla con ordenación de columnas para obtener un ejemplo que muestre el orden por uso de columnas.

También puede:

  • Utilice DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para mostrar los hiperenlaces de tabla. Consulte Enlaces de tabla de lista para obtener más información.
  • Utilice DBMS_DATA_ACCESS.EXTEND_URL para ampliar la vida útil de un hiperenlace de tabla. Consulte Procedimiento EXTEND_URL para obtener más información.
  • Generar hiperenlaces de tabla que se atienden con diferentes garantías y recursos de nivel de servicio. Por ejemplo, el acceso a un objeto o sentencia SQL se puede asignar a los servicios HIGH o MEDIUM, mientras que el acceso a otro objeto o sentencia SQL se puede asignar al servicio LOW. Consulte Procedimiento GET_PREAUTHENTICATED_URL para obtener más información.

Enlazar hipervínculos de tabla

Puede mostrar los hiperenlaces de tabla activos que ha generado en una instancia de Autonomous Database y el usuario ADMIN puede mostrar todos los hiperenlaces de tabla activos.

Ejecute DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para mostrar los hiperenlaces de tablas activos. Por ejemplo:

DECLARE    
    result CLOB;
    BEGIN
       result := DBMS_DATA_ACCESS.LIST_ACTIVE_URLS;           
       dbms_output.put_line(result);
    END;
/

En este ejemplo se muestra la siguiente salida:

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

Consulte LIST_ACTIVE_URLS Function para obtener más información.

Nota

El comportamiento de DBMS_DATA_ACCESS.LIST_ACTIVE_URLS depende del invocador. Si el invocador es ADMIN o cualquier usuario con el rol PDB_DBA, la función muestra todos los hipervínculos de tabla activos, independientemente del usuario que haya generado el hipervínculo de tabla. Si el invocador no es el usuario ADMIN y no un usuario con el rol PDB_DBA, la lista incluye solo los hiperenlaces de tabla activos generados por el invocador.

Invalidar hipervínculos de tabla

En cualquier momento, un usuario con los privilegios adecuados puede invalidar un hiperenlace de tabla.

Para invalidar un hiperenlace de tabla, necesita el hiperenlace de tabla id. Utilice DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para mostrar cada hiperenlace de tabla y su id asociado.

Utilice DBMS_DATA_ACCESS.INVALIDATE_URL para invalidar un hiperenlace de tabla. Por ejemplo:

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

Consulte Procedimiento INVALIDATE_URL para obtener más información.

Definición de una política de base de datos privada virtual para proteger los datos de hiperenlace de tabla

Al definir las políticas de Oracle Virtual Private Database (VPD) para los datos que comparte con un hiperenlace de tabla, puede proporcionar un control de acceso detallado para que solo un subjuego de datos, filas, sea visible para un hiperenlace de tabla específico.

Oracle Virtual Private Database (VPD) es una función de seguridad que permite controlar el acceso a los datos de forma dinámica a nivel de fila para los usuarios y las aplicaciones mediante la aplicación de filtros en el mismo juego de datos. Cuando se accede a un hiperenlace de tabla, el valor de application_user_id especificado durante la generación del hiperenlace de tabla está disponible a través de sys_context('DATA_ACCESS_CONTEXT$', 'USER_IDENTITY'). Puede definir políticas de VPD que utilicen el valor de este contexto de aplicación para restringir los datos y las filas visibles para el usuario de la aplicación.

Cualquier usuario al que se le conceda acceso para leer datos con un hiperenlace de tabla puede acceder a los datos y utilizarlos (ya sea una tabla, una vista o los datos proporcionados con una sentencia select). Al definir una política de VPD en la base de datos que ha generado un hiperenlace de tabla, puede utilizar el valor application_user_id en una regla SYS_CONTEXT para proporcionar un control más detallado. Considere un ejemplo en el que los datos están disponibles con un hiperenlace de tabla. Si desea restringir el acceso a algunos de los datos, puede agregar una política de VPD.

Por ejemplo:

  1. Obtenga el valor application_user_id que especificó al generar el hiperenlace de tabla.
  2. Cree la política de VPD en la base de datos en la que ha generado el hiperenlace de tabla.
    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;
    

    Consulte DBMS_RLS para obtener más información.

  3. Registre la política de VPD.
    BEGIN
       DBMS_RLS.ADD_POLICY( 
            object_schema        => 'HR',
            object_name          => 'EMPLOYEE',
            policy_name          => 'POL',
            policy_function      => 'LIMIT_SAL');
    END;
    /

    Consulte DBMS_RLS para obtener más información.

Supervisión y visualización del uso de hipervínculos de tablas

Autonomous Database proporciona vistas que permiten supervisar el uso del hiperenlace de tabla.

vistas Descripción
Vistas V$DATA_ACCESS_URL_STATS y GV$DATA_ACCESS_URL_STATS

Estas vistas realizan un seguimiento del uso del hiperenlace de tabla, incluido el tiempo transcurrido, el tiempo de CPU y la información adicional.