Criar Tabelas Federadas usando Hiperlinks de Tabela Definindo Escopo
Você pode criar uma Tabela Federada por meio de um Hiperlink de Tabela do Autonomous AI Database. Uma Tabela Federada é uma tabela externa definida em Hiperlinks de Tabela. Permite a agregação de dados de várias instâncias do Autonomous AI Databases.
Embora uma tabela federada use o mesmo mecanismo de hiperlink que uma tabela externa, o workflow de criação difere. Para tabelas externas, o Provedor cria e compartilha Hiperlinks de Tabela, e cada Consumidor usa esses hiperlinks para definir tabelas externas. Para tabelas federadas, o Consumidor inicia a criação da tabela, e os Hiperlinks de Tabela são criados automaticamente no banco de dados do Provedor, desde que o Consumidor esteja dentro do escopo definido pelo Provedor.
Como um Provedor, você pode definir escopos no seu banco de dados para conceder aos Consumidores o privilégio de criar automaticamente Hiperlinks de Tabela. Os Consumidores autorizados dentro desses escopos podem criar tabelas federadas e consultar dados de vários bancos de dados de origem sem troca manual de links.
- Compartilhamento de Dados Simplificado – Os consumidores agora podem iniciar a criação de tabela externa separadamente e criar hiperlinks de tabela quando pertencem a um escopo autorizado.
- Segurança Aprimorada - Elimina métodos de distribuição inseguros de Hiperlink de Tabela (URL).
- Federação de Dados - Os consumidores podem agregar dados de vários bancos de dados do provedor por meio de tabelas federadas.
As seções a seguir descrevem o workflow detalhado sobre como os Autonomous Databases do Provedor e do Consumidor criam Tabelas Federadas juntas, definindo escopos em um exemplo de caso de uso prático. Esse fluxo de trabalho e os exemplos de código associados podem ser modificados e implementados de acordo com seus requisitos.
- Workflow para Criar Tabelas Federadas
O workflow a seguir tem responsabilidades distintas para o provedor Autonomous AI Database e o Autonomous AI Database do consumidor. - Diagnosticando e Solucionando Problemas de Cenários
Esta seção fornece instruções sobre os tipos de falha que podem ocorrer e como solucionar os problemas.
Workflow para Criar Tabelas Federadas
O workflow a seguir tem responsabilidades distintas para o Autonomous AI Database do provedor e o Autonomous AI Database do consumidor.
Do lado do provedor, a primeira etapa é definir um escopo de criação que especifique quais Autonomous AI Databases de consumo têm permissão para criar remotamente Hiperlinks de Tabela no provedor. O escopo pode ser definido no nível do esquema ou do objeto.
Em seguida, o DBA do provedor controla quem pode gerenciar escopos chamando DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER para usuários selecionados. Esses usuários privilegiados podem usar DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE, UPDATE_CREATION_SCOPE e UNREGISTER_CREATION_SCOPE para registrar, alterar ou remover escopos para tabelas ou esquemas específicos e LIST_CREATION_SCOPES para revisar a configuração atual. Quando um consumidor mais tarde solicita um hiperlink, o provedor verifica se o Autonomous AI Database do consumidor solicitante corresponde ao escopo registrado antes de permitir a geração de URL, garantindo que apenas os consumidores autorizados possam criar hiperlinks nos dados do provedor.
Do ponto de vista do consumidor, o workflow é iniciado assim que o provedor tiver definido escopos que incluem o banco de dados do consumidor. O DBA do consumidor concede a usuários específicos o privilégio para criar tabelas federadas por meio de dados do provedor chamando DBMS_DATA_ACCESS_ADMIN.GRANT_READ.
Um consumidor pode então chamar DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE para criar Hiperlinks de Tabela no banco de dados do provedor em nome do consumidor e a tabela federada resultante no consumidor poderá então consultar os dados do produtor como se fosse uma tabela externa local.
Quando o acesso federado não é mais necessário, o consumidor limpa chamando DBMS_DATA_ACCESS.DROP_FEDERATED_TABLE, que remove o objeto de tabela federada no consumidor enquanto deixa os escopos do provedor intactos.
- O
ADMIN(Provedor) concede privilégio de registro de escopo ao proprietário de dados usando o procedimentoDBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER.BEGIN DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER( username => 'DATA_OWNER', scope => 'MY$COMPARTMENT' ); END; / - Como
ADMIN, conceda privilégios de execução ao usuário proprietário de dados (DATA_OWNER).grant execute on DBMS_DATA_ACCESS_SCOPE to DATA_OWNER; - O proprietário dos Dados registra o escopo de criação no esquema ou objeto compartilhado no Autonomous AI Database do provedor usando o procedimento
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE. Isso autoriza os Autonomous AI Databases do consumidor no mesmo compartimento a criar hiperlinks de tabela remotamente.BEGIN DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE( schema_name => 'DATA_OWNER', schema_object_name => 'SALES_DATA', scope => 'MY$COMPARTMENT' ); END; / -
O consumidor
ADMINconcede privilégio de leitura ao analista de negócios usando o procedimentoDBMS_DATA_ACCESS_ADMIN.GRANT_READ.Isso garante que o analista possa iniciar a criação de tabela federada.
- O consumidor
ADMINconcede privilégios de execução ao usuário bi_analyst.grant execute on DBMS_DATA_ACCESS to bi_analyst; -
O analista de negócios cria uma tabela externa federada no Autonomous AI Database do consumidor usando o procedimento
DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE. Isso gera o hiperlink Tabela automaticamente se o escopo corresponder onde nenhuma intervenção do profissional de saúde é necessária.BEGIN DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE( table_name => 'DEPT_SALES_XT', remote_schema_name => 'SHARED_SCHEMA', remote_schema_object_name => 'SALES_DATA', db_ocids => '[{"region": "IAD", "db_ocid": "OCID1.AUTONOMOUSDATABASE.OC1.IAD.EXAMPLE123"}]' ); END; /Observação
O OCID do Banco de Dados (db_ocid) deve estar em Letras Maiúsculas. - O Analista consulta a tabela externa para análise de departamento:
SELECT * FROM DEPT_SALES_XT WHERE region = 'West';
Os exemplos de código acima podem ser modificados e implementados de acordo com seus requisitos.
Para obter mais informações sobre as funções e parâmetros acima, consulte Pacote DBMS_DATA_ACCESS_SCOPE, Pacote DBMS_DATA_ACCESS_ADMIN e Pacote DBMS_DATA_ACCESS.
| Operação | Descrição | Usuário que executa esta operação |
|---|---|---|
| Definir Escopo de Criação | Define quais Bancos de Dados têm permissão para criar remotamente Hiperlinks de Tabela em uma instância do Autonomous AI Database do Provedor. Consulte Escopo de Criação para obter mais informações. | Provedor |
| Conceder Registro |
Concede aos usuários de uma instância do Autonomous AI Database do Provedor permissão para registrar ou atualizar o escopo. Consulte Conceder Registro para obter mais informações. |
Provedor |
| Registrar Escopo de Criação |
Define quais objetos de banco de dados podem ter hiperlinks de tabela criados em um escopo de autorização especificado. Consulte Escopo de Criação do Registro para obter mais informações. |
Provedor |
| Atualizar Escopo de Criação | Modifica o escopo de criação existente. Consulte Atualizar Escopo de Criação para obter mais informações. | Provedor |
| Cancelar Registro do Escopo de Criação | Remove definições de escopo de criação registradas anteriormente para um esquema, um único objeto ou uma lista de objetos. Consulte Cancelar Registro do Escopo de Criação para obter mais informações. | Provedor |
| Recuperar Escopo de Criação | Consulta e recupera escopos de criação registrados para esquemas ou objetos especificados. Consulte Escopos de Criação de Lista para obter mais informações. | Provedor |
| Criar Tabela Federada | Cria uma tabela federada. Consulte Criar Tabela Federada para obter mais informações. | Consumidor |
| Permitir Leitura | Concede privilégios de leitura a um usuário consumidor para esquemas ou objetos remotos, permitindo a criação de tabelas federadas. Consulte Conceder Leitura para obter mais informações. | Consumidor |
| Revogar Leitura | Revoga um privilégio de leitura concedido anteriormente para criar uma tabela federada. Consulte Revogar Leitura para obter mais informações. | Consumidor |
| Eliminar Tabela Federada | Remove do banco de dados as tabelas federadas especificadas. Consulte Eliminar Tabela Federada para obter mais informações. | Consumidor |
- Escopo de Criação
Um escopo de criação em um banco de dados do provedor determina quais instâncias do Autonomous AI Database do consumidor têm permissão para criar remotamente Hiperlinks de Tabela no banco de dados do provedor. - Conceder Registro
OADMIN(ouPDB_DBA) no Autonomous AI Database do provedor usa oDBMS_DATA_ACCESS_ADMIN.GRANT_REGISTERpara decidir quais usuários locais têm permissão para gerenciar escopos de criação. - Escopo de Criação do Registro
Um provedor chamaDBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPEpara registrar o escopo permitido para tabelas específicas ou esquemas inteiros para criar Hiperlinks de Tabela nesses objetos. - Atualizar Escopo de Criação
Se um provedor precisar alterar o acesso, o mesmo usuário autorizado ou outro chamadoUPDATE_CREATION_SCOPEpara ampliar, restringir ou ajustar quais Autonomous AI Databases do consumidor podem criar hiperlinks para objetos de esquema específicos. - Cancelar o Registro do Escopo de Criação
Quando um provedor deseja revogar totalmente o recurso de criação remota (para uma tabela, lista de tabelas ou um esquema), o provedor chamaUNREGISTER_CREATION_SCOPE. Isso remove o escopo registrado e impede que novos Hiperlinks de Tabela sejam criados para esses objetos pelos bancos de dados do consumidor. - Recuperar Escopos de Criação
A qualquer momento, um usuário autorizado pode chamarLIST_CREATION_SCOPESpara recuperar as definições de escopo atuais. - Conceder Leitura
No Autonomous AI Database do consumidor, oADMIN(ouPDB_DBA) usa oDBMS_DATA_ACCESS_ADMIN.GRANT_READpara conceder a usuários específicos o direito de criar tabelas federadas em esquemas ou objetos do provedor remoto. - Revogar Leitura
O procedimentoREVOKE_READremove o privilégio de um usuário para criar tabelas federadas em um esquema remoto especificado ou objeto de esquema no banco de dados do provedor. - Criar Tabela Federada
Um usuário consumidor que recebeu privilégios de leitura chamaDBMS_DATA_ACCESS.CREATE_FEDERATED_TABLEpara criar uma tabela federada sobre a tabela ou view no escopo do provedor. - Eliminar Tabela Federada
Quando o acesso federado não é mais necessário, o usuário consumidor chama oDBMS_DATA_ACCESS.DROP_FEDERATED_TABLEpara remover a tabela federada.
Tópico principal: Criar Tabelas Federadas usando Hiperlinks de Tabela Definindo o Escopo
Escopo de Criação
Um escopo de criação em um banco de dados do provedor determina quais instâncias do Autonomous AI Database do consumidor têm permissão para criar remotamente Hiperlinks de Tabela no banco de dados do provedor.
- Baseado na tenancy (
MY$TENANCY) - Qualquer banco de dados na mesma tenancy que o banco de dados do provedor. - Baseado em compartimento (
MY$COMPARTMENT) - Qualquer banco de dados no mesmo compartimento do banco de dados do provedor. - Nível do objeto - Tabelas ou views específicas em um esquema.
- Nível do esquema - Todos os objetos dentro de um esquema específico.
Você pode gerenciar escopos de criação usando o pacote DBMS_DATA_ACCESS_SCOPE, que fornece procedimentos para registrar, cancelar o registro, atualizar e recuperar escopos. Consulte DBMS_DATA_ACCESS_SCOPE para obter mais informações.
Tópico principal: Workflow para Criar Tabelas Federadas
Conceder Registro
O ADMIN (ou PDB_DBA) no Autonomous AI Database do provedor usa o DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER para decidir quais usuários locais têm permissão para gerenciar escopos de criação.
Somente esses usuários privilegiados podem registrar, atualizar ou cancelar o registro de escopos, evitando a exposição não controlada das tabelas do provedor.
Exemplo
BEGIN
DBMS_DATA_ACCESS_ADMIN.GRANT_REGISTER(
username => 'ANALYTICS_ADMIN',
scope => 'MY$COMPARTMENT'
);
END;
/O exemplo acima concede ao usuário ANALYTICS_ADMIN permissão para registrar conjuntos de dados no escopo MY$COMPARTMENT.
Consulte GRANT_REGISTER para obter referência de sintaxe.
Tópico principal: Workflow para Criar Tabelas Federadas
Registrar Escopo de Criação
Um provedor chama o DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE para registrar o escopo permitido para tabelas específicas ou esquemas inteiros para criar Hiperlinks de Tabela nesses objetos.
BEGIN
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'NULL',
scope => 'MY$COMPARTMENT'
);
END;
/Este exemplo registra um escopo de acesso a dados no nível do esquema para o esquema ANALYTICS, associando-o ao compartimento MY$COMPARTMENT.
Exemplo: Registrar Escopo no Nível do Objeto
BEGIN
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'SALES_DATA',
scope => 'MY$TENANCY'
);
END;
/Este exemplo registra um escopo de acesso a dados mais direcionado para um objeto específico SALES_DATA no esquema ANALYTICS, vinculando-o à tenancy MY$TENANCY. Ao contrário da versão no nível do esquema, o schema_object_name limita a aplicação a apenas esta tabela, ativando o controle granular sobre as permissões de criação.
BEGIN
DBMS_DATA_ACCESS_SCOPE.REGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_list => '["SALES_DATA", "CUSTOMER_DATA", "PRODUCT_DATA"]',
scope => 'MY$COMPARTMENT'
);
END;
/Este procedimento associa os objetos de esquema listados—SALES_DATA, CUSTOMER_DATA e PRODUCT_DATA ao escopo MY$COMPARTMENT, restringindo sua criação ou acesso a entidades dentro desse compartimento.
Consulte Escopo de Criação do Registro para obter referência de sintaxe.
Tópico principal: Workflow para Criar Tabelas Federadas
Atualizar Escopo de Criação
Se um provedor precisar alterar o acesso, o mesmo usuário autorizado ou outro chamará UPDATE_CREATION_SCOPE para ampliar, restringir ou ajustar quais Autonomous AI Databases do consumidor podem criar hiperlinks para objetos de esquema específicos.
BEGIN
DBMS_DATA_ACCESS_SCOPE.UPDATE_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'SALES_DATA',
scope => 'MY$COMPARTMENT'
);
END;
/Este exemplo atualiza o escopo de criação da tabela SALES_DATA no esquema ANALYTICS para MY$COMPARTMENT.
Consulte Atualizar Escopo de Criação para obter referência de sintaxe.
Tópico principal: Workflow para Criar Tabelas Federadas
Cancelar Registro do Escopo de Criação
Quando um provedor deseja revogar totalmente o recurso de criação remota (para uma tabela, lista de tabelas ou um esquema), o provedor chama UNREGISTER_CREATION_SCOPE. Isso remove o escopo registrado e impede que novos Hiperlinks de Tabela sejam criados para esses objetos pelos bancos de dados do consumidor.
BEGIN
DBMS_DATA_ACCESS_SCOPE.UNREGISTER_CREATION_SCOPE(
schema_name => 'ANALYTICS',
schema_object_name => 'SALES_DATA'
);
END;
/Este bloco de exemplo remove um escopo de criação registrado anteriormente para SALES_DATA no esquema ANALYTICS, de modo que novos objetos criados sob esse escopo não sejam mais controlados pelo acesso a dados que controla o escopo imposto.
Consulte Cancelar Registro do Escopo de Criação para obter referência de sintaxe.
Tópico principal: Workflow para Criar Tabelas Federadas
Recuperar Escopos de Criação
A qualquer momento, um usuário autorizado pode chamar LIST_CREATION_SCOPES para recuperar as definições de escopo atuais.
DECLARE
l_result CLOB;
BEGIN
DBMS_DATA_ACCESS_SCOPE.LIST_CREATION_SCOPES(
schema_name => 'ANALYTICS',
result => l_result
);
DBMS_OUTPUT.PUT_LINE(l_result);
END;
/Consulte Recuperar Escopo de Criação para obter referência de sintaxe.
Tópico principal: Workflow para Criar Tabelas Federadas
Permitir Leitura
No Autonomous AI Database do consumidor, o ADMIN (ou PDB_DBA) usa o DBMS_DATA_ACCESS_ADMIN.GRANT_READ para conceder a usuários específicos o direito de criar tabelas federadas em esquemas ou objetos do provedor remoto.
Exemplo: Conceder Acesso a Objeto Remoto Específico
BEGIN
DBMS_DATA_ACCESS_ADMIN.GRANT_READ(
username => 'BI_ANALYST',
remote_schema_name => 'ANALYTICS',
remote_schema_object_name => 'SALES_DATA'
);
END;
/Este exemplo concede ao usuário BI_ANALYST acesso de leitura ao objeto SALES_DATA remoto específico no esquema ANALYTICS de um provedor de dados externo.
Consulte Conceder Leitura para obter referência de sintaxe.
Tópico principal: Workflow para Criar Tabelas Federadas
Revogar Leitura
O procedimento REVOKE_READ remove o privilégio de um usuário para criar tabelas federadas em um esquema remoto especificado ou objeto de esquema no banco de dados do provedor.
Se você omitir o nome do objeto remoto, ele revogará o acesso à tabela federada desse usuário para todos os objetos no esquema remoto fornecido.
Exemplo
BEGIN
DBMS_DATA_ACCESS_ADMIN.REVOKE_READ(
username => 'BI_ANALYST',
remote_schema_name => 'ANALYTICS',
remote_schema_object_name => 'SALES_DATA'
);
END;
/Consulte Revogar Leitura para obter referência de sintaxe.
Tópico principal: Workflow para Criar Tabelas Federadas
Criar Tabela Federada
Um usuário consumidor que recebeu privilégios de leitura chama DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE para criar uma tabela federada sobre a tabela ou view no escopo do provedor.
O procedimento usa OCIDs de banco de dados e informações de região para estabelecer Hiperlinks de Tabela para que o consumidor possa consultar dados remotos como se fossem uma tabela externa local.
Pré-requisitos
- O usuário deve receber privilégios de leitura através do procedimento
GRANT_READ. - O usuário deve existir nos bancos de dados do consumidor e do provedor com os privilégios necessários.
- O banco de dados do consumidor deve pertencer ao escopo de criação do provedor.
- O provedor deve ter o escopo de criação registrado para objetos de destino.
- Conectividade de rede estabelecida entre bancos de dados de consumidores e provedores.
Exemplo: Provedor Único
BEGIN
DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE(
table_name => 'SALES_FED',
remote_schema_name => 'ANALYTICS',
remote_schema_object_name => 'SALES_DATA',
db_ocids => '[{"region": "IAD", "db_ocid": "OCID1.AUTONOMOUSDATABASE.OC1.IAD.EXAMPLE123"}]'
);
END;
/No exemplo acima, um consumidor chama DBMS_DATA_ACCESS.CREATE_FEDERATED_TABLE para criar uma tabela federada local que se vincula à tabela ou view de um provedor remoto (por exemplo, SALES_DATA no esquema ANALYTICS), usando JSON db_ocids para especificar o banco de dados do provedor OCIDs e as regiões para consulta perfeita como se fossem locais.
SELECT
REGION,
PRODUCT_ID,
SUM(SALES_AMOUNT) as total_sales,
COUNT(*) as transaction_count
FROM SALES_FED
GROUP BY REGION, PRODUCT_ID
ORDER BY total_sales DESC;Consulte Criar Tabela Federada para obter referência de sintaxe.
Tópico principal: Workflow para Criar Tabelas Federadas
Eliminar Tabela Federada
Quando o acesso federado não é mais necessário, o usuário consumidor chama o DBMS_DATA_ACCESS.DROP_FEDERATED_TABLE para remover a tabela federada.
Este procedimento limpa o objeto do lado do consumidor e efetivamente encerra esse caminho de acesso federado específico, enquanto os escopos e privilégios do provedor subjacente permanecem sob controle do provedor.
BEGIN
DBMS_DATA_ACCESS.DROP_FEDERATED_TABLE(
table_name => 'SALES_FED'
);
END;
/O exemplo acima elimina a tabela SALES_FED.
Consulte Eliminar Tabela Federada para obter referência de sintaxe.
Tópico principal: Workflow para Criar Tabelas Federadas
Cenários de Solução de Problemas
Esta seção fornece instruções sobre os tipos de falha que podem ocorrer e como solucionar os problemas.
-
Banco de Dados do Consumidor Não Está no Escopo
Problema: O consumidor recebe um erro de autorização ao tentar criar tabelas federadas.
Resolução
- Verifique se o ID do banco de dados do consumidor corresponde aos critérios de escopo do provedor.
- Confirme se o usuário recebeu privilégios de leitura por meio do procedimento
GRANT_READ. - O provedor de verificação registrou o escopo de criação apropriado usando o procedimento
REGISTER_CREATION_SCOPE. - Verifique a conectividade de rede entre os agentes do consumidor e do provedor.
- Confirme o status de registro do banco de dados na Console do OCI.
-
Falha na Criação da Tabela Federada
Problema: O procedimento
CREATE_FEDERATED_TABLEfalha apesar dos pré-requisitos serem atendidos.Resolução- Verifique se o usuário existe nos bancos de dados do consumidor e do provedor.
- Confirme se o usuário tem a propriedade do objeto ou o privilégio
GRANT OPTIONem objetos remotos. - Verifique se o esquema remoto e os nomes de objetos estão corretos (diferencia maiúsculas de minúsculas).
- Verifique se o JSON
db_ocidscontém códigos de região e OCIDs de banco de dados válidos. - Certifique-se de que o escopo do provedor esteja ativado e contenha o banco de dados do consumidor.
- Verifique se há erros nos logs de comunicação do corretor.
-
Erros de Autorização
Problema: Os usuários não podem registrar escopos ou acessar tabelas federadas.
Resolução
- Verifique se o usuário recebeu o privilégio
REGISTERusando o procedimentoGRANT_REGISTER(provedor-side). - Verifique se o usuário recebeu o privilégio
READusando oGRANT_READ(lado do consumidor). - Para operações de nível de objeto, confirme se o usuário possui o objeto ou tem o privilégio de opção
GRANT. - Para operações no nível do esquema, confirme se o usuário é
ADMINou tem a atribuiçãoPDB_DBA. - Verifique o histórico de revogação de privilégios para garantir que os privilégios não tenham sido explicitamente revogados.
- Verifique se o usuário recebeu o privilégio
Tópico principal: Criar Tabelas Federadas usando Hiperlinks de Tabela Definindo o Escopo