Consultar Dados Externos com o Autonomous Database on Dedicated Exadata Infrastructure
Descreve pacotes e ferramentas para consultar e validar dados com o Autonomous Database on Dedicated Exadata Infrastructure.
Os dados externos não são gerenciados pelo banco de dados; no entanto, você pode usar procedimentos DBMS_CLOUD
para consultar seus dados externos. Embora as consultas em dados externos não sejam tão rápidas quanto as consultas em tabelas de banco de dados, você pode usar essa abordagem para começar rapidamente a executar consultas em seus arquivos de origem externa e dados externos.
Você pode usar procedimentos DBMS_CLOUD
para validar os dados nos arquivos de origem externa de uma tabela externa para identificar problemas e corrigir os dados na tabela externa ou excluir dados inválidos antes de usar os dados.
Observação:
Se você não estiver usando o usuárioADMIN
, certifique-se de que o usuário tenha os privilégios necessários para as operações que ele precisa executar. Consulte Gerenciar Privilégios de Usuário do Banco de Dados para obter mais informações.
Consultar dados externos
Para consultar dados em arquivos na Nuvem, você precisa primeiro armazenar suas credenciais de armazenamento de objetos no seu Autonomous Database e, em seguida, criar uma tabela externa usando o procedimento PL/SQL DBMS_CLOUD.CREATE_EXTERNAL_TABLE
.
O arquivo de origem neste exemplo, channels.txt
, tem os seguintes dados:
S,Direct Sales,Direct
T,Tele Sales,Direct
C,Catalog,Indirect
I,Internet,Indirect
P,Partners,Others
Validar Dados Externos
Para validar uma tabela externa, use o procedimento DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
.
Antes de validar uma tabela externa, você precisa criar a tabela externa usando o procedimento DBMS_CLOUD.CREATE_EXTERNAL_TABLE
. Em seguida, use o procedimento DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
para validá-la. Por exemplo:
BEGIN
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
(
table_name => 'CHANNELS_EXT' );
END;
/
Este procedimento verifica os arquivos de origem e os valida usando as opções de formato especificadas quando você criou a tabela externa.
A operação de validação, por padrão, verifica todas as linhas nos arquivos de origem e para quando uma linha é rejeitada. Se quiser validar somente um subconjunto de linhas, use o parâmetro rowcount
. Quando o parâmetro rowcount
é definido, a operação de validação verifica as linhas e é interrompida quando uma linha é rejeitada ou quando o número especificado de linhas é validado sem erros.
Por exemplo, a seguinte operação de validação verifica 100 linhas e para quando uma linha é rejeitada ou quando 100 linhas são validadas sem erros:
BEGIN
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE (
table_name => 'CHANNELS_EXT',
rowcount => 100 );
END;
/
Se você não quiser que a validação seja interrompida quando uma linha for rejeitada e quiser ver todas as linhas rejeitadas, defina o parâmetro stop_on_error
como FALSE
. Nesse caso, VALIDATE_EXTERNAL_TABLE
verifica todas as linhas e relata todas as linhas rejeitadas.
Se quiser validar somente um subconjunto de linhas, use o parâmetro rowcount
. Quando rowcount
é definido e stop_on_error
é definido como FALSE
, a operação de validação verifica as linhas e é interrompida quando o número especificado de linhas é rejeitado ou quando o número especificado de linhas é validado sem erros. Por exemplo, o exemplo a seguir verifica 100 linhas e para quando 100 linhas são rejeitadas ou quando 100 linhas são validadas sem erros:
BEGIN
DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE (
table_name => 'CHANNELS_EXT',
rowcount => 100,
stop_on_error => FALSE );
END;
/
Consulte Procedimento VALIDATE_EXTERNAL_TABLE para obter informações detalhadas sobre os parâmetros DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE
.
Consulte Exibir Logs para Validação de Dados para ver os resultados das operações de validação nas tabelas dba_load_operations
e user_load_operations
.
Exibir Logs para Validação de Dados
Depois de validar uma tabela externa, você poderá ver o resultado da operação de validação consultando uma tabela de operações de carga:
-
dba_load_operations
: mostra todas as operações de validação. -
user_load_operations
: mostra as operações de validação no seu esquema.
Você pode usar essas tabelas para exibir informações de validação de carga. Por exemplo, use esta instrução SELECT para consultar user_load_operations
:
SELECT table_name,owner_name,type,status,start_time,update_time,logfile_table,badfile_table
FROM user_load_operations
WHERE type = 'VALIDATE';
TABLE_NAME OWNER_NAME TYPE STATUS START_TIME UPDATE_TIME LOGFILE_TABLE BADFILE_TABLE
------------- ---------- ---------- ---------- -------------- ------------- --------------- ---------------
CHANNELS_EXT SH VALIDATE COMPLETED 13-NOV-17... 13-NOV-17... VALIDATE$21_LOG VALIDATE$21_BAD
O uso dessa instrução SQL com a cláusula WHERE
na coluna TYPE
exibe todas as operações de carregamento com o tipo VALIDATE
.
A coluna LOGFILE_TABLE
mostra o nome da tabela que você pode consultar para verificar o log de uma operação de validação. Por exemplo, a consulta a seguir mostra o log desta operação de validação:
SELECT * FROM VALIDATE$21_LOG;
A coluna BADFILE_TABLE
mostra o nome da tabela que você pode consultar para verificar as linhas nas quais houve erros durante a validação. Por exemplo, a consulta a seguir mostra os registros rejeitados para a operação de validação acima:
SELECT * FROM VALIDATE$21_BAD;
Dependendo dos erros mostrados no log e das linhas mostradas em BADFILE_TABLE
, você pode corrigir o erro eliminando a tabela externa usando o comando DROP TABLE
e recriando-a especificando as opções de formato corretas em DBMS_CLOUD.CREATE_EXTERNAL_TABLE
.
Observação:
As tabelasLOGFILE_TABLE
e BADFILE_TABLE
são armazenadas por dois dias para cada operação de validação e, em seguida, removidas automaticamente.