Gerar, Gerenciar e Monitorar Hiperlinks de Tabela

Mostra as etapas para gerar, gerenciar e monitorar Hiperlinks de Tabela.

Gerar um Hiperlink de Tabela para uma Tabela ou uma View

Mostra as etapas para gerar um Hiperlink de Tabela que você pode usar para compartilhar o acesso de um objeto de esquema (tabela ou view).

Quando um Hiperlink de Tabela é executado, ele usa os privilégios concedidos ao usuário do banco de dados que gera o Hiperlink de Tabela. O usuário que gera um Hiperlink de Tabela deve ter os privilégios mínimos necessários para fornecer acesso aos dados. Para manter a segurança, a Oracle recomenda que você não execute DBMS_DATA_ACCESS.CREATE_URL como usuário ADMIN.

Para usar um Hiperlink de Tabela para fornecer acesso aos dados como um objeto de esquema (tabela ou view):

  1. Identifique a tabela ou view que deseja compartilhar.

    Se houver restrições nos dados que você deseja disponibilizar, use o parâmetro application_user_id ao gerar o Hiperlink de Tabela e criar uma política de VPD para restringir os dados que você expõe. Consulte Definir uma Política de Banco de Dados Privado Virtual para Proteger Dados de Hiperlink de Tabela para obter mais informações.

  2. Execute DBMS_DATA_ACCESS.CREATE_URL para gerar o Hiperlink da Tabela.
    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;
    /

    O parâmetro expiration_minutes especifica que o Hiperlink da Tabela expira e é invalidado após 360 minutos.

    Consulte CREATE_URL Procedures para obter mais informações.

  3. Verifique o resultado.

    Neste exemplo, status contém o resultado que inclui informações sobre o Hiperlink da Tabela.

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

Gerar um Hiperlink de Tabela com uma Instrução Select

Mostra as etapas para gerar um Hiperlink de Tabela que fornece acesso aos dados usando uma instrução de consulta SQL.

Quando um Hiperlink de Tabela é executado, ele usa os privilégios concedidos ao usuário do banco de dados que gera o Hiperlink de Tabela. O usuário que gera um Hiperlink de Tabela deve ter os privilégios mínimos necessários para fornecer acesso aos dados. Para manter a segurança, a Oracle recomenda que você não execute DBMS_DATA_ACCESS.CREATE_URL como usuário ADMIN.

Para usar um Hiperlink de Tabela para fornecer acesso aos dados como uma instrução de consulta SQL arbitrária:

  1. Identifique a tabela ou view que contém as informações que você deseja compartilhar, bem como a instrução SELECT na tabela ou view que você deseja usar.

    Se houver restrições nos dados que você deseja disponibilizar, use o parâmetro application_user_id ao gerar o Hiperlink de Tabela e criar uma política de VPD para restringir os dados que você expõe. Consulte Definir uma Política de Banco de Dados Privado Virtual para Proteger Dados de Hiperlink de Tabela para obter mais informações.

  2. Execute DBMS_DATA_ACCESS.CREATE_URL para gerar o Hiperlink da Tabela.

    Há duas opções, dependendo de se você deseja incluir valores de variáveis de vínculo padrão (se você incluir variáveis de vínculo na instrução SELECT).

    1. Forneça uma instrução select e não use o parâmetro default_bind_values opcional.

      Por exemplo:

      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;
      /
      O valor sql_statement deve ser uma instrução SELECT. A instrução SELECT suporta variáveis de bind. Se as variáveis de vínculo forem incluídas na instrução SELECT, os valores das variáveis de vínculo deverão ser anexados ao Hiperlink de Tabela gerado como um parâmetro de consulta ao acessar os dados.
    2. Forneça uma instrução de seleção e inclua o parâmetro default_bind_values.

      Por exemplo:

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

      O parâmetro sql_statement deve ser uma instrução SELECT. A instrução SELECT suporta variáveis de bind.

      O parâmetro default_bind_values especifica valores para uma ou mais variáveis de bind no sql_statement. Quando default_bind_values é incluído com DBMS_DATA_ACCESS.CREATE_URL:

      • Para variáveis de bind especificadas em default_bind_values, você pode omitir os valores das variáveis de bind ao acessar os dados. O valor padrão será usado para uma variável de vínculo especificada se uma substituição não for fornecida no URL do Hiperlink da Tabela como um parâmetro de consulta quando você acessar os dados.

      • Você poderá substituir um valor de variável de vinculação padrão especificado em default_bind_values se anexar o valor de variável de vinculação no URL do Hiperlink da Tabela como um parâmetro de consulta quando acessar os dados.

      • Se uma variável de bind for incluída na instrução select e um valor padrão para a variável de bind não for especificado no parâmetro default_bind_values, você deverá anexar um valor de variável de bind ao URL do Hiperlink da Tabela gerada como um parâmetro de consulta quando acessar os dados.

    O suporte a variáveis de bind está disponível para os tipos de coluna NUMBER e VARCHAR2.

    Nesses exemplos, o parâmetro expiration_minutes especifica que o Hiperlink da Tabela expira e é invalidado após 360 minutos.

  3. Verifique o resultado.

    Neste exemplo, status contém o resultado que inclui o Hiperlink da Tabela.

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

Gerar um Hiperlink de Tabela com Recursos de IU Especificados em Colunas

Ao gerar um Hiperlink de Tabela, você pode usar o parâmetro column_lists para especificar recursos de IU para colunas especificadas.

O parâmetro column_lists é um valor JSON que especifica opções por coluna. Os valores suportados em column_lists são um ou mais dos seguintes:

Valor column_lists Descrição
order_by_columns

Especifica as colunas que suportam a classificação. As colunas são especificadas em um array JSON.

filter_columns

Especifica as colunas que suportam filtragem. As colunas são especificadas em um array JSON.

default_color_columns

Especifica para usar apenas a cor padrão para as colunas especificadas. As colunas são especificadas em um array JSON.

group_by_columns

Especifica que agrupar por é permitido para as colunas especificadas (a exibição dos dados agrupando a coluna especificada é permitida). As colunas são especificadas em um array JSON.

Para especificar recursos de IU no nível da coluna de exibição de tabela para um Hiperlink de Tabela:

  1. Identifique a tabela, a view ou a instrução de seleção que deseja compartilhar.

    Este exemplo gera um Hiperlink de Tabela usando o parâmetro column_lists com uma tabela. Você também pode usar esse parâmetro ao gerar um Hiperlink de Tabela com uma instrução SELECT.

    Consulte Gerar um Hiperlink de Tabela para uma Tabela ou uma View e Gerar um Hiperlink de Tabela com uma Instrução Select para obter mais informações.

  2. Execute DBMS_DATA_ACCESS.CREATE_URL para gerar o Hiperlink da Tabela e especifique a opção agrupar por colunas para exibição com um browser:

    Por exemplo, para especificar agrupar por colunas:

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

    O parâmetro column_lists é JSON que contém uma lista de arrays JSON de colunas que definem a funcionalidade Hiperlink da Tabela. Use esse parâmetro para especificar as colunas para uma ou mais das opções: order_by_columns, filter_columns, default_color_columns ou group_by_columns.

    Por exemplo:

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

    Consulte CREATE_URL Procedures para obter mais informações.

  3. Verifique o resultado.

    Neste exemplo, status contém o resultado que inclui informações sobre o Hiperlink da Tabela.

    {
    "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 Usar Hiperlinks de Tabela para Acessar Dados com a Opção Agrupar por no Formato de Tabela para obter um exemplo mostrando o uso de grupo por colunas.

  4. Execute DBMS_DATA_ACCESS.CREATE_URL para gerar o Hiperlink da Tabela e especificar uma opção de formato de IU.

    Por exemplo, para definir as colunas que podem ser classificadas, use a opção 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;
    /

    O parâmetro column_lists é JSON que contém uma lista de arrays JSON de colunas que definem a funcionalidade Hiperlink da Tabela. Use esse parâmetro para especificar as colunas para uma ou mais das opções: order_by_columns, filter_columns, default_color_columns ou group_by_columns.

    Consulte CREATE_URL Procedures para obter mais informações.

  5. Verifique o resultado.

    Neste exemplo, status contém o resultado que inclui informações sobre o Hiperlink da Tabela.

    {
    "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 Usar Hiperlinks de Tabela no Formato de Tabela com Classificação de Coluna para obter um exemplo mostrando a ordem por uso de colunas.

Você também pode:

  • Use DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para mostrar Hiperlinks de Tabela. Consulte Listar Hiperlinks de Tabela e Grupos de Hiperlinks de Tabela para obter detalhes.
  • Use DBMS_DATA_ACCESS.EXTEND_URL para estender a vida útil de um Hiperlink de Tabela. Consulte EXTEND_URL Procedures para obter mais informações.
  • Gerar Hiperlinks de Tabela que são atendidos com diferentes garantias e recursos de nível de serviço. Por exemplo, o acesso a um objeto ou instrução SQL pode ser mapeado para serviços HIGH ou MEDIUM, enquanto o acesso a outro objeto ou instrução SQL pode ser mapeado para o serviço LOW. Consulte CREATE_URL Procedures para obter mais informações.

Invalidar Hiperlinks da Tabela

A qualquer momento, um usuário com privilégios apropriados pode invalidar um Hiperlink de Tabela.

Para invalidar um Hiperlink de Tabela, você precisa do Hiperlink de Tabela id. Use DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para gerar uma lista de Hiperlinks de Tabela e seu id associado.

Use DBMS_DATA_ACCESS.INVALIDATE_URL para invalidar um Hiperlink de Tabela. Por exemplo:

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

Você também pode usar DBMS_DATA_ACCESS.INVALIDATE_URL para invalidar um Grupo de Hiperlinks de Tabela.

Consulte Invalidar um Grupo de Hiperlinks de Tabela e Procedimento INVALIDATE_URL para obter mais informações.

Definir uma Política de Banco de Dados Privado Virtual para Proteger Dados de Hiperlink de Tabela

Ao definir políticas do Oracle Virtual Private Database (VPD) para dados que você compartilha com um Hiperlink de Tabela, você pode fornecer um controle de acesso detalhado para que apenas um subconjunto de dados, linhas, fique visível para um Hiperlink de Tabela específico.

O Oracle Virtual Private Database (VPD) é um recurso de segurança que permite controlar o acesso aos dados dinamicamente no nível da linha para usuários e aplicativos aplicando filtros no mesmo conjunto de dados. Quando um Hiperlink de Tabela é acessado, o valor de application_user_id especificado durante a geração do Hiperlink de Tabela está disponível por meio de sys_context('DATA_ACCESS_CONTEXT$', 'USER_IDENTITY'). Você pode definir Políticas de VPD que usam o valor deste Contexto de Aplicativo para restringir os dados, as linhas, visíveis para o usuário do aplicativo.

Qualquer usuário que tenha acesso para ler dados com um Hiperlink de Tabela pode acessar e usar os dados (uma tabela, uma view ou os dados fornecidos com uma instrução SELECT). Definindo uma política de VPD no banco de dados que gerou um Hiperlink de Tabela, você pode usar o valor application_user_id em uma regra SYS_CONTEXT para fornecer um controle mais detalhado. Considere um exemplo em que os dados são disponibilizados com um Hiperlink de Tabela. Se você quiser restringir o acesso a alguns dos dados, poderá adicionar uma política de VPD.

Por exemplo:

  1. Obtenha o valor application_user_id especificado quando você gerou o Hiperlink da Tabela.
  2. Crie uma política de VPD no banco de dados em que você gerou o Hiperlink de Tabela.
    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 obter mais informações.

  3. Registre a 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 obter mais informações.

Monitorar e Exibir Uso do Hiperlink da Tabela

O Autonomous Database fornece exibições que permitem monitorar o uso do Hiperlink de Tabela.

Views Descrição
Visualizações V$DATA_ACCESS_URL_STATS e GV$DATA_ACCESS_URL_STATS

Essas visualizações rastreiam o uso do Hiperlink de tabela, incluindo tempo decorrido, tempo de CPU e informações adicionais.

Observações para Criar um Hiperlink de Tabela

Observações para gerar um Hiperlink de Tabela com DBMS_DATA_ACCESS.CREATE_URL:

  • Você pode usar o parâmetro service_name opcional para especificar que o Hiperlink de Tabela gerado é atendido com uma garantia e recursos específicos de nível de serviço. Por exemplo, use o parâmetro service_name para especificar que o acesso à instrução SQL seja mapeado para o serviço HIGH.

  • Você pode usar o parâmetro inherit_acl opcional se quiser limitar o acesso aos dados do Hiperlink da Tabela. Defina esse parâmetro como TRUE para herdar ACLs. Quando o valor desse parâmetro é TRUE, o endereço IP de um consumidor de Hiperlink de Tabela de entrada é validado com as ACLs no banco de dados do produtor antes de permitir o acesso aos dados. Se o banco de dados do produtor não tiver ACLs configuradas, o valor inherit_acl será ignorado e o acesso aos dados será permitido sem nenhuma verificação de ACL.

    Consulte Configuring Network Access with Access Control Rules (ACLs) para obter mais informações.

  • Quando você gera um Hiperlink de Tabela em uma instância do Autonomous Database com um ponto final privado, o resultado inclui um nome private_preauth_url com o valor do formato: "https://private-endpoint/adb/p/parurl-token/data".

    Quando você gera um Hiperlink de Tabela em uma instância do Autonomous Database com um ponto final privado e o ponto final privado é configurado com a opção Permitir acesso público ativada, o resultado inclui preauth_url para o ponto final público e private_preauth_url.

    Consulte Configurar Pontos Finais Privados e Usar um Ponto Final Privado com Acesso Público Permitido para obter mais informações.

  • Use DBMS_DATA_ACCESS.LIST_ACTIVE_URLS para mostrar Hiperlinks de Tabela. Consulte Listar Hiperlinks de Tabela e Grupos de Hiperlinks de Tabela para obter detalhes.

  • Use DBMS_DATA_ACCESS.EXTEND_URL para estender a vida útil de um Hiperlink de Tabela. Consulte EXTEND_URL Procedures para obter mais informações.