Carregar dados do Oracle no BigQuery
Para programar transferências de dados recorrentes do banco de dados Oracle para o BigQuery, crie uma configuração de transferência para especificar quais objetos de dados transferir e com que frequência programar a transferência de dados. Depois de configurar a transferência, o serviço de transferência de dados do BigQuery transfere os dados mais recentes para uma tabela do BigQuery na programação especificada.
Para informações gerais sobre transferências do Oracle, incluindo opções de configuração, consulte Introdução às transferências de dados do Oracle.
Limitações
As transferências do Oracle estão sujeitas às seguintes limitações:
- O número máximo de conexões simultâneas com um banco de dados Oracle é limitado e, como resultado, o número de execuções de transferência simultâneas para um único banco de dados Oracle é limitado a esse valor máximo.
- Você deve configurar um anexo de rede nos casos em que um IP público não estiver disponível para uma conexão com o banco de dados Oracle, com os seguintes requisitos:
- A origem de dados precisa estar acessível na sub-rede em que o anexo de rede reside.
- O anexo de rede não pode estar na sub-rede dentro do intervalo
240.0.0.0/24. - Não é possível excluir anexos de rede quando há conexões ativas com eles. Para excluir um anexo de rede, entre em contato com o Cloud Customer Care.
- Para a multirregião
us, o anexo de rede precisa estar na regiãous-central1. Para a multirregiãoeu, o anexo de rede precisa estar naeurope-west4região.
- O intervalo mínimo entre as transferências recorrentes é de 15 minutos. O intervalo padrão para uma transferência recorrente é 24 horas.
- Uma única configuração de transferência só pode oferecer suporte a uma execução de transferência de dados por vez. No caso em que uma segunda transferência de dados é programada para ser executada antes da conclusão da primeira, apenas a primeira transferência de dados é concluída, enquanto todas as outras transferências de dados que se sobrepõem à primeira são ignoradas.
- Para evitar transferências ignoradas em uma única configuração de transferência, recomendamos que você aumente a duração do tempo entre grandes transferências de dados configurando a Frequência de repetição.
- Durante uma transferência de dados, o conector do Oracle identifica colunas de chave indexadas e particionadas para transferir os dados em lotes paralelos. Por esse motivo, recomendamos que você especifique colunas de chave primária ou use colunas indexadas na tabela para melhorar a performance e reduzir a taxa de erros nas transferências de dados.
- Se você tiver restrições de chave primária ou indexada, apenas os seguintes tipos de coluna serão aceitos para a criação de lotes paralelos:
INTEGERTINYINTSMALLINTFLOATREALDOUBLENUMERICBIGINTDECIMALDATE
- As transferências de dados do Oracle que não usam colunas de chave primária ou indexadas não podem oferecer suporte a mais de 2.000.000 de registros por tabela.
- Se você tiver restrições de chave primária ou indexada, apenas os seguintes tipos de coluna serão aceitos para a criação de lotes paralelos:
- Se o anexo de rede configurado e a instância de máquina virtual (VM) estiverem localizados em regiões diferentes, poderá haver movimentação de dados entre regiões ao transferir dados do Oracle.
Limitações de transferência incremental
As transferências incrementais do Oracle estão sujeitas às seguintes limitações:- Só é possível escolher colunas
TIMESTAMPcomo colunas de marca d'água. - A ingestão incremental só é aceita para recursos com colunas de marca d'água válidas.
- Os valores em uma coluna de marca d'água precisam aumentar monotonicamente.
- As transferências incrementais não podem sincronizar operações de exclusão na tabela de origem.
- Uma única configuração de transferência só pode oferecer suporte à ingestão incremental ou completa.
- Não é possível atualizar objetos na lista
assetapós a primeira execução de ingestão incremental. - Não é possível mudar o modo de gravação em uma configuração de transferência após a primeira execução de ingestão incremental.
- Não é possível mudar a coluna de marca d'água ou a chave primária após a primeira execução de ingestão incremental.
- A tabela de destino do BigQuery é agrupada usando a chave primária fornecida e está sujeita a limitações de tabelas agrupadas.
- Quando você atualiza uma configuração de transferência para o modo de ingestão incremental pela primeira vez, a primeira transferência de dados após essa atualização transfere todos os dados disponíveis da fonte de dados. Todas as transferências de dados incrementais subsequentes transferirão apenas as linhas novas e atualizadas da fonte de dados.
Para saber como as transferências incrementais funcionam, consulte Transferências completas ou incrementais.
Antes de começar
Nas seções a seguir, descrevemos as etapas que você precisa seguir antes de criar uma transferência do Oracle.
Pré-requisitos do Oracle
- Crie uma credencial de usuário no banco de dados Oracle.
- Conceda privilégios de sistema
Create Sessionao usuário para permitir a criação de sessões. - Atribua um tablespace à conta de usuário.
É preciso também ter as seguintes informações do banco de dados Oracle ao criar uma transferência da Oracle.
| Nome do parâmetro | Descrição |
|---|---|
database |
Nome do banco de dados. |
host |
Nome do host ou endereço IP do banco de dados. |
port |
Número da porta do banco de dados. |
username |
Nome de usuário para acessar o banco de dados. |
password |
Senha para acessar o banco de dados. |
Pré-requisitos do BigQuery
- Verifique se você realizou todas as ações necessárias para ativar o serviço de transferência de dados do BigQuery.
- Crie um conjunto de dados do BigQuery para armazenar os dados.
- Se você pretende configurar notificações de execução de transferência do Pub/Sub, verifique se tem a permissão
pubsub.topics.setIamPolicydo Identity and Access Management (IAM). As permissões do Pub/Sub não serão necessárias caso você configure notificações por e-mail. Para mais informações, consulte Notificações de execução do serviço de transferência de dados do BigQuery.
Papéis obrigatórios do BigQuery
Para receber as permissões necessárias para criar uma transferência de dados do serviço de transferência de dados do BigQuery, peça ao administrador para conceder a você o papel do IAM Administrador do BigQuery (roles/bigquery.admin) no projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para criar uma transferência de dados do serviço de transferência de dados do BigQuery. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para criar uma transferência de dados do serviço de transferência de dados do BigQuery:
-
Permissões do serviço de transferência de dados do BigQuery:
-
bigquery.transfers.update -
bigquery.transfers.get
-
-
Permissões do BigQuery:
-
bigquery.datasets.get -
bigquery.datasets.getIamPolicy -
bigquery.datasets.update -
bigquery.datasets.setIamPolicy -
bigquery.jobs.create
-
Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.
Para mais informações, consulte Conceder acesso bigquery.admin.
Carregar dados do Oracle no BigQuery
Adicione dados do Oracle ao BigQuery configurando uma transferência usando uma das seguintes opções:
Console
Acesse a página Transferências de dados no Google Cloud console.
Clique em Criar transferência.
Na seção Tipo de origem, em Origem, selecione Oracle.
Na seção Detalhes da fonte de dados, faça o seguinte:
- Em Anexo de rede, selecione um anexo de rede ou clique em Criar anexo de rede.
- Em Host, insira o nome do host ou o IP do banco de dados.
- Em Porta, insira o número da porta que
o banco de dados Oracle está usando para conexões de entrada, como
1521. - Em Nome do banco de dados, insira o nome do banco de dados Oracle.
- Em Tipo de conexão, insira o tipo de URL de conexão:
SERVICE,SIDouTNS. - Em Nome de usuário, digite o nome do usuário que iniciou a conexão com o banco de dados Oracle.
- Em Senha, insira a senha do usuário que iniciou a conexão do banco de dados Oracle.
- Em Modo TLS, selecione uma opção no menu suspenso. Para mais informações sobre os modos TLS, consulte Configuração do TLS.
- Em Certificado PEM confiável, insira o certificado público da autoridade de certificação (CA) que emitiu o certificado TLS do servidor de banco de dados. Para mais informações, consulte Certificado de servidor confiável (PEM).
- Em Tipo de ingestão, selecione Completa ou Incremental.
- Se você selecionar Incremental (Prévia), em Modo de gravação, selecione Anexar ou Upsert. Para mais informações sobre os diferentes modos de gravação, consulte Transferências completas ou incrementais.
- Em Objetos do Oracle para transferência, clique em Procurar:
- Selecione os objetos a serem transferidos para o conjunto de dados de destino do BigQuery. Nesse campo, também é possível inserir manualmente qualquer objeto para incluir na transferência de dados.
- Se você tiver selecionado Adicionar como modo de gravação incremental, escolha uma coluna como marca d'água.
- Se você tiver selecionado Upsert como modo de gravação incremental, selecione uma coluna como marca d'água e uma ou mais colunas como chave primária.
Na seção Configurações de destino, em Conjunto de dados, selecione o conjunto de dados que você criou para armazenar seus dados.
No campo Nome de exibição da seção Nome de configuração da transferência, insira um nome para a transferência de dados.
Na seção Opções de programação, faça o seguinte:
- Na lista Frequência de repetição, selecione uma opção para especificar com que frequência essa transferência de dados é executada. Para especificar uma frequência de repetição personalizada, selecione Personalizada. Se você selecionar Sob demanda, essa transferência será executada quando você acionar manualmente a transferência.
- Se aplicável, selecione Começar agora ou Começar no horário definido e escolha uma data de início e hora de execução.
Opcional: na seção Opções de notificação, faça o seguinte:
- Para ativar as notificações por e-mail, clique no botão que ativa a Notificação por e-mail. Quando você ativa essa opção, o administrador de transferência recebe uma notificação por e-mail quando uma execução de transferência falha.
- Para ativar as notificações de execução de transferência do Pub/Sub para essa transferência, clique no botão de alternância Notificações do Pub/Sub. Selecione o nome do tópico ou clique em Criar um tópico.
Clique em Salvar.
bq
Insira o comando bq mk e forneça a sinalização de execução da transferência
--transfer_config:
bq mk --transfer_config --project_id=PROJECT_ID --data_source=DATA_SOURCE --display_name=DISPLAY_NAME --target_dataset=DATASET --params='PARAMETERS'
Em que:
- PROJECT_ID (opcional): ID do seu Google Cloud projeto.
Se
--project_idnão for fornecido para especificar um projeto determinado, o projeto padrão será usado; - DATA_SOURCE: a fonte de dados —
oracle. - DISPLAY_NAME: o nome de exibição da configuração da transferência. O nome da transferência de dados pode ser qualquer valor que permita identificá-la, caso você precise modificá-la mais tarde.
- DATASET: o conjunto de dados de destino na configuração da transferência.
PARAMETERS é o parâmetro da configuração de transferência criada no formato JSON. Por exemplo,
--params='{"param":"param_value"}'. Veja a seguir os parâmetros de uma transferência de dados do Oracle:connector.networkAttachment(opcional): nome do anexo de rede para se conectar ao banco de dados Oracle.connector.authentication.Username: nome de usuário da conta do Oracle.connector.authentication.Password: senha da conta do Oracle.connector.database: nome do banco de dados do Oracle.connector.endpoint.host: o nome do host ou IP do banco de dados.connector.endpoint.port: o número da porta que o banco de dados Oracle está usando para conexões de entrada, como1520.connector.connectionType: o tipo de URL de conexão,SERVICE,SIDouTNS.connector.tls.mode: especifique uma configuração de TLS a ser usada com essa transferência:ENCRYPT_VERIFY_CA_AND_HOSTpara criptografar dados e verificar a CA e o nome do hostENCRYPT_VERIFY_CApara criptografar dados e verificar apenas a CAENCRYPT_VERIFY_NONEpara criptografia de dados apenasDISABLEpara nenhuma criptografia ou verificação
connector.tls.trustedServerCertificate: (opcional) forneça um ou mais certificados codificados em PEM. Necessário apenas seconnector.tls.modeforENCRYPT_VERIFY_CA_AND_HOSTouENCRYPT_VERIFY_CA.ingestionType: especifiquefullouincremental. As transferências incrementais são aceitas na prévia. Para mais informações, consulte Transferências completas ou incrementais.writeMode: especifiqueWRITE_MODE_APPENDouWRITE_MODE_UPSERT.watermarkColumns: especifique colunas na tabela como colunas de marca d'água. Esse campo é obrigatório para transferências incrementais.primaryKeys: especifique colunas na tabela como chaves primárias. Esse campo é obrigatório para transferências incrementais.assets: o caminho para os objetos do Oracle que serão transferidos para BigQuery, usando o formato:DATABASE_NAME/SCHEMA_NAME/TABLE_NAME
Ao especificar vários recursos durante uma transferência incremental, os valores dos campos watermarkColumns e primaryKeys correspondem à posição dos valores no campo assets. No exemplo a seguir, dep_id corresponde à tabela DB1/USER1/DEPARTMENT, enquanto report_by e report_title correspondem à tabela DB1/USER1/EMPLOYEES.
"primaryKeys":[['dep_id'], ['report_by','report_title']], "assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"],
Por exemplo, o comando a seguir cria uma transferência de dados do Oracle no projeto padrão com todos os parâmetros necessários:
bq mk --transfer_config --target_dataset=mydataset --data_source=oracle --display_name='My Transfer' --params='{"assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"], "connector.authentication.username": "User1", "connector.authentication.password":"ABC12345", "connector.database":"DB1", "connector.endpoint.host":"192.168.0.1", "connector.endpoint.port":1520, "connector.connectionType":"SERVICE", "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST", "connector.tls.trustedServerCertificate": "PEM-encoded certificate", "connector.networkAttachment": "projects/dev-project1/regions/us-central1/networkattachments/na1" "ingestionType":"incremental", "writeMode":"WRITE_MODE_APPEND", "watermarkColumns":["createdAt","createdAt"], "primaryKeys":[['dep_id'], ['report_by','report_title']]}'
API
Use o projects.locations.transferConfigs.create
método e forneça uma instância do TransferConfig
recurso.
Para executar manualmente uma transferência de dados fora da programação normal, inicie uma execução de preenchimento.
Resolver problemas na configuração da transferência
Se você tiver problemas para configurar a transferência de dados, consulte Problemas de transferência da Oracle.
A seguir
- Para saber mais sobre o serviço de transferência de dados do BigQuery, consulte O que é o serviço de transferência de dados do BigQuery.
- Para saber como usar transferências, incluindo informações sobre uma configuração de transferência, como listar configurações e como visualizar o histórico de execução de uma transferência, consulte Como trabalhar com transferências.
- Para saber como carregar dados com operações do BigQuery Omni, consulte Carregar dados com operações do BigQuery Omni.