Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
APLICA-SE A:
Azure Data Factory
Azure Synapse Analytics
Dica
Experimente o Data Factory no Microsoft Fabric, uma solução de análise completa para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!
Este artigo descreve como usar a atividade de cópia no Azure Data Factory para copiar dados de/para um banco de dados Oracle. Ele se baseia na Visão geral da atividade Copy.
Importante
O conector Oracle versão 2.0 fornece suporte nativo aprimorado para Oracle. Se você estiver usando o conector Oracle versão 1.0 em sua solução, atualize o conector Oracle , pois a versão 1.0 está no estágio de Fim do Suporte. Seu pipeline falhará após 31 de março de 2026. Consulte esta seção para obter detalhes sobre a diferença entre a versão 2.0 e a versão 1.0.
Funcionalidades com suporte
Há suporte para este conector do Oracle para as seguintes funcionalidades:
| Funcionalidades com suporte | IR |
|---|---|
| Atividade de cópia (origem/coletor) | (1) (2) |
| Atividade de pesquisa | (1) (2) |
| Atividade de Script | (1) (2) |
① Tempo de execução de integração do Azure ② Tempo de execução de integração auto-hospedado
Para obter uma lista de armazenamentos de dados que têm suporte como fontes ou coletores da atividade de cópia, confira a tabela Armazenamentos de dados com suporte.
Especificamente, este conector Oracle suporta:
- As seguintes versões de um banco de dados Oracle para a versão 2.0:
- Oracle Database 19c e versões superiores
- Oracle Database 18c e superior
- Oracle Database 12c e versões superiores
- Oracle Database 11g e superior
- As seguintes versões de um banco de dados Oracle para a versão 1.0:
- Oracle 19c R1 (19.1) e superior
- Oracle 18c R1 (18.1) e superior
- Oracle 12c R1 (12.1) e superior
- Oracle 11g R1 (11.1) e superior
- Oracle 10g R1 (10.1) e superior
- Oracle 9i R2 (9.2) e superior
- Oracle 8i R3 (8.1.7) e superior
- Serviço Oracle Database Cloud Exadata
- Cópia paralela de uma origem do Oracle. Veja a seção Cópia paralela da Oracle para obter detalhes.
Observação
Não há suporte para servidor proxy do Oracle.
Pré-requisitos
Se o armazenamento de dados estiver localizado dentro de uma rede local, em uma rede virtual do Azure ou na Amazon Virtual Private Cloud, você precisará configurar um runtime de integração auto-hospedada para se conectar a ele.
Se o armazenamento de dados for um serviço de dados de nuvem gerenciado, você poderá usar o Azure Integration Runtime. Se o acesso for restrito aos IPs que estão aprovados nas regras de firewall, você poderá adicionar IPs do Azure Integration Runtime à lista de permissões.
Você também pode usar o recurso de runtime de integração da rede virtual gerenciada no Azure Data Factory para acessar a rede local sem instalar e configurar um runtime de integração auto-hospedada.
Para obter mais informações sobre os mecanismos de segurança de rede e as opções compatíveis com o Data Factory, consulte Estratégias de acesso a dados.
O integration runtime fornece um driver interno do Oracle. Portanto, você não precisa instalar manualmente um driver quando você copia dados de e para Oracle.
Introdução
Para executar a atividade Copy com um pipeline, você pode usar uma das seguintes ferramentas ou SDKs:
- Ferramenta de Cópia de Dados
- Portal do Azure
- SDK do .NET
- SDK do Python
- PowerShell do Azure
- REST API
- Modelo do Azure Resource Manager
Criar um serviço vinculado ao Oracle usando a interface do usuário
Use as etapas a seguir para criar um serviço vinculado ao Oracle na interface do usuário do portal do Microsoft Azure.
Navegue até a guia Gerenciar no workspace do Azure Data Factory ou do Synapse e selecione Serviços Vinculados. Depois, clique em Novo:
Pesquise por Oracle e selecione o conector Oracle.
Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.
Detalhes da configuração do conector
As seções a seguir fornecem detalhes sobre as propriedades usadas para definir entidades específicas do conector Oracle.
Propriedades do serviço vinculado
O conector Oracle versão 2.0 dá suporte ao TLS 1.3. Consulte esta seção para atualizar sua versão do conector Oracle da versão 1.0 para uma versão mais recente. Para obter detalhes sobre as propriedades, consulte as seções correspondentes.
Versão 2.0
O serviço vinculado Oracle dá suporte às seguintes propriedades ao aplicar a versão 2.0:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type deve ser definida como: Oracle. | Sim |
| versão | A versão que você especifica. O valor é 2.0. |
Sim |
| servidor | A localização do banco de dados Oracle ao qual você deseja se conectar. Você pode consultar a configuração de propriedade do servidor para especificá-la. | Sim |
| tipoDeAutenticação | Tipo de autenticação para se conectar ao banco de dados Oracle. Somente a autenticação básica tem suporte agora. | Sim |
| nome de usuário | O nome de usuário do banco de dados Oracle. | Sim |
| senha | A senha do banco de dados Oracle. Marque esse campo como SecureString para armazená-lo com segurança. Você também pode referenciar um segredo armazenado no Azure Key Vault. | Sim |
| connectVia | O runtime de integração a ser usado para se conectar ao armazenamento de dados. Saiba mais na seção Pré-requisitos. Se não especificado, o Azure Integration Runtime padrão será usado. | Não |
Você pode definir as seguintes propriedades de conexão adicionais no serviço vinculado, dependendo do seu caso.
| Propriedade | Descrição | Obrigatório | Valor padrão |
|---|---|---|---|
| cliente de criptografia | Especifica o comportamento do cliente de criptografia. Os valores com suporte são accepted, rejected, requestedou required. Tipo: cadeia de caracteres |
Não | required |
| encryptionTypesClient | Especifica os algoritmos de criptografia que o cliente pode usar. Os valores com suporte são AES128, , AES192, AES256, 3DES112, 3DES168. Tipo: cadeia de caracteres |
Não | (AES256) |
| cryptoChecksumClient | Especifica o comportamento desejado de integridade dos dados quando esse cliente se conecta a um servidor. Os valores com suporte são accepted, rejected, requestedou required. Tipo: cadeia de caracteres |
Não | required |
| cryptoChecksumTypesClient | Especifica os algoritmos de soma de verificação de criptografia que o cliente pode usar. Os valores com suporte sãoSHA1, , SHA256, SHA384. SHA512 Tipo: cadeia de caracteres |
Não | (SHA512) |
| initialLobFetchSize | Especifica o valor que a origem busca inicialmente para colunas LOB. Tipo: int | Não | 0 |
| fetchSize | Especifica o número de bytes que o driver aloca para buscar os dados em uma viagem de ida e volta do banco de dados. Tipo: int | Não | 10 MB |
| statementCacheSize | Especifica o número de cursores ou instruções a serem armazenadas em cache para cada conexão de banco de dados. Tipo: int | Não | 0 |
| initializationString | Especifica um comando que é emitido imediatamente após a conexão com o banco de dados para gerenciar as configurações da sessão. Tipo: cadeia de caracteres | Não | nulo |
| enableBulkLoad | Especifica se é necessário usar a cópia em massa ou a inserção em lote ao carregar dados no banco de dados. Tipo: booliano | Não | verdadeiro |
| supportV1DataTypes | Especifica se os mapeamentos de tipo de dados da versão 1.0 devem ser usados. Não defina isso como verdadeiro, a menos que você queira manter a compatibilidade com os mapeamentos de tipo de dados da versão 1.0. Tipo: booliano | Não, essa propriedade é apenas para uso de compatibilidade com versões anteriores | falso |
| fetchTswtzAsTimestamp | Especifica se o driver retorna o valor da coluna com o tipo de dados TIMESTAMP WITH TIME ZONE como DateTime ou cadeia de caracteres. Essa configuração será ignorada se supportV1DataTypes não for true. Tipo: booliano | Não, essa propriedade é apenas para uso de compatibilidade com versões anteriores | verdadeiro |
Exemplo:
{
"name": "OracleLinkedService",
"properties": {
"type": "Oracle",
"version": "2.0",
"typeProperties": {
"server": "<server name>",
"username": "<user name>",
"password": "<password>",
"authenticationType": "<authentication type>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Exemplo: armazenar a senha no Azure Key Vault
{
"name": "OracleLinkedService",
"properties": {
"type": "Oracle",
"version": "2.0",
"typeProperties": {
"server": "<server name>",
"username": "<user name>",
"authenticationType": "<authentication type>",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Configuração da propriedade server
Para a propriedade server, você pode especificar em um dos três formatos a seguir:
| Formato | Exemplo |
|---|---|
| Descritor da Conexão | (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sales.us.acme.com))) |
| Nomeação Easy Connect (Plus) | salesserver1:1521/sales.us.example.com |
| Nome do Oracle Net Services (TNS Alias) (somente para o runtime de integração auto-gerenciada) | vendas |
A lista a seguir mostra os parâmetros com suporte usados em server. Se você usar parâmetros que não estão na lista a seguir, sua conexão falhará.
Ao usar o runtime de integração do Azure:
HOST
PORTO
PROTOCOLO
SERVICE_NAME
SID
INSTANCE_NAME
SERVER
CONNECT_TIMEOUT
RETRY_COUNT
RETRY_DELAY
SSL_VERSION
SSL_SERVER_DN_MATCH
Nome de Domínio do Certificado do Servidor SSL (SSL_SERVER_CERT_DN)Ao usar o runtime de integração auto-hospedada:
HOST
PORTO
PROTOCOLO
ENABLE
TEMPO_DE_EXPIRAÇÃO
FAILOVER
BALANCEAMENTO_DE_CARGA
RECV_BUF_SIZE
SDU
SEND_BUF_SIZE
SOURCE_ROUTE
TIPO_DE_SERVIÇO
COLOCATION_TAG
CONNECTION_ID_PREFIX
FAILOVER_MODE
GLOBAL_NAME
HS
INSTANCE_NAME
LIMITES DA PISCINA
POOL_CONNECTION_CLASS
NOME_DA_PISCINA
Pureza_da_Piscina
RDB_DATABASE
SHARDING_KEY
SHARDING_KEY_ID
SUPER_SHARDING_KEY
SERVER
SERVICE_NAME
SID
TUNNEL_SERVICE_NAME
AUTENTICAÇÃO_DO_CLIENTE_SSL
SSL_CERTIFICATE_ALIAS
SSL_CERTIFICATE_THUMBPRINT
SSL_VERSION
SSL_SERVER_DN_MATCH
Nome de Domínio do Certificado do Servidor SSL (SSL_SERVER_CERT_DN)
LOCALIZAÇÃO_DA_CARTEIRA
CONNECT_TIMEOUT
RETRY_COUNT
RETRY_DELAY
TRANSPORT_CONNECT_TIMEOUT
RECV_TIMEOUT
COMPRESSÃO
NÍVEIS_DE_COMPRESSÃO
Versão 1.0
O serviço vinculado oracle dá suporte às seguintes propriedades ao aplicar a versão 1.0:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type deve ser definida como: Oracle. | Sim |
| connectionString | Especifica as informações necessárias para se conectar à instância do Banco de Dados Oracle. Você também pode colocar uma senha no Azure Key Vault e extrair a configuração password da cadeia de conexão. Veja os exemplos a seguir e Armazenar credenciais no Azure Key Vault para obter mais detalhes. Tipo de conexão com suporte: você pode optar por usar a Oracle SID ou o Oracle Service Name para identificar o banco de dados: -Se você usar a SID: Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;-Se você usar Service Name: Host=<host>;Port=<port>;ServiceName=<servicename>;User Id=<username>;Password=<password>;Para opções avançadas de conexão nativa do Oracle, adicione uma entrada no arquivoTNSNAMES.ORA no servidor Oracle e, no serviço vinculado do Oracle, use o tipo de conexão do Nome do Serviço Oracle e configure o nome do serviço correspondente. |
Sim |
| connectVia | O runtime de integração a ser usado para se conectar ao armazenamento de dados. Saiba mais na seção Pré-requisitos. Se não especificado, o Azure Integration Runtime padrão será usado. | Não |
Dica
Se você receber um erro, “ORA-01025: parâmetro UPI fora do intervalo” e se a versão do Oracle for 8i, adicione WireProtocolMode=1 à cadeia de conexão. Em seguida, tente novamente.
Se tiver várias instâncias do Oracle para o cenário de failover, você poderá criar o serviço vinculado do Oracle e preencher o host primário, a porta, o nome de usuário, a senha, etc., e adicionar novas “Propriedades de conexão adicionais” com o nome de propriedade sendo AlternateServers e o valor sendo (HostName=<secondary host>:PortNumber=<secondary port>:ServiceName=<secondary service name>). Preste atenção aos colchetes e aos dois pontos (:) como separador. Por exemplo, o seguinte valor de servidores alternativos define dois servidores de banco de dados alternativos para failover de conexão: (HostName=AccountingOracleServer:PortNumber=1521:SID=Accounting,HostName=255.201.11.24:PortNumber=1522:ServiceName=ABackup.NA.MyCompany).
Mais propriedades de conexão que você pode definir na cadeia de conexão de acordo com o caso:
| Propriedade | Descrição | Valores permitidos |
|---|---|---|
| ArraySize | O número de bytes que o conector pode buscar em uma única viagem de ida e volta na rede. Por exemplo, ArraySize=10485760.Valores mais altos aumentam a taxa de transferência, reduzindo o número de vezes para buscar dados na rede. Valores mais baixos aumentam o tempo de resposta, pois a espera para o servidor transmitir dados é mais curta. |
Um inteiro de 1 a 4294967296 (4 GB). O valor padrão é 60000. O valor 1 não define o número de bytes, mas indica alocar espaço para exatamente uma linha de dados. |
Para habilitar a criptografia na conexão do Oracle, há duas opções:
Para usar criptografia DES triplo (3DES) e criptografia AES (Advanced Encryption Standard), no lado do servidor Oracle, vá para Oracle Advanced Security (OAS) e defina as configurações de criptografia. Para obter detalhes, veja esta documentação da Oracle. O conector Oracle ADF (Application Development Framework) negocia automaticamente o método de criptografia para usar aquele que você configura no OAS ao estabelecer a conexão com o Oracle.
Para usar o TLS, configure
truststorepara obter autenticação do servidor SSL aplicando um dos três métodos a seguir:Método 1 (recomendado):
Instale o certificado TLS/SSL importando-o para o repositório de certificados local. O driver Oracle interno é capaz de carregar o certificado necessário do repositório de certificados.
No serviço, configure a cadeia de conexão Oracle com
EncryptionMethod=1.
Método 2:
Obtenha as informações do certificado TLS/SSL. Obtenha as informações de certificado codificadas em DER (Distinguished Encoding Rules) ou PEM (Privacy Enhanced Mail) do certificado TLS/SSL.
openssl x509 -inform (DER|PEM) -in [Full Path to the DER/PEM Certificate including the name of the DER/PEM Certificate] -textNo serviço, configure a cadeia de conexão Oracle com
EncryptionMethod=1e o valor correspondente deTrustStore. Por exemplo,Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;EncryptionMethod=1;TrustStore= data:// -----BEGIN CERTIFICATE-----<certificate content>-----END CERTIFICATE-----Observação
- O valor do campo
TrustStoredeve ser prefixado comdata://. - Ao especificar conteúdo para vários certificados, especifique o conteúdo de cada certificado entre
-----BEGIN CERTIFICATE-----e-----END CERTIFICATE-----. O número de traços (-----) deve ser o mesmo antes e depois deBEGIN CERTIFICATEe deEND CERTIFICATE. Por exemplo:
-----BEGIN CERTIFICATE-----<certificate content 1>-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----<certificate content 2>-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----<certificate content 3>-----END CERTIFICATE----- - O campo
TrustStoredá suporte a conteúdo de até 8.192 caracteres de comprimento.
- O valor do campo
Método 3:
Crie o arquivo
truststorecom criptografias fortes, como AES256.openssl pkcs12 -in [Full Path to the DER/PEM Certificate including the name of the DER/PEM Certificate] -out [Path and name of TrustStore] -passout pass:[Keystore PWD] -keypbe AES-256-CBC -certpbe AES-256-CBC -nokeys -exportColoque o arquivo
truststoreno computador de runtime de integração auto-hospedada. Por exemplo, coloque o arquivo emC:\MyTrustStoreFile.No serviço, configure a cadeia de conexão Oracle com
EncryptionMethod=1e o valor correspondente deTrustStore/TrustStorePassword. Por exemplo,Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;EncryptionMethod=1;TrustStore=C:\\MyTrustStoreFile;TrustStorePassword=<trust_store_password>.
Exemplo:
{
"name": "OracleLinkedService",
"properties": {
"type": "Oracle",
"typeProperties": {
"connectionString": "Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;Password=<password>;"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Exemplo: armazenar a senha no Azure Key Vault
{
"name": "OracleLinkedService",
"properties": {
"type": "Oracle",
"typeProperties": {
"connectionString": "Host=<host>;Port=<port>;Sid=<sid>;User Id=<username>;",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Propriedades do conjunto de dados
Esta seção fornece uma lista das propriedades com suporte pelo conjunto de dados do Oracle. Para obter uma lista completa das seções e propriedades disponíveis para definir os conjuntos de dados, confira Conjuntos de dados.
Para copiar dados do/para o Oracle, defina a propriedade type do conjunto de dados como OracleTable. Há suporte para as seguintes propriedades.
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type do conjunto de dados deve ser definida como OracleTable. |
Sim |
| esquema | Nome do esquema. | Não para fonte, Sim para o coletor |
| tabela | Nome da tabela/exibição. | Não para fonte, Sim para o coletor |
| nome da tabela | Nome da tabela/exibição com esquema. Essa propriedade é compatível com versões anteriores. Para uma nova carga de trabalho, use schema e table. |
Não para fonte, Sim para o coletor |
Exemplo:
{
"name": "OracleDataset",
"properties":
{
"type": "OracleTable",
"schema": [],
"typeProperties": {
"schema": "<schema_name>",
"table": "<table_name>"
},
"linkedServiceName": {
"referenceName": "<Oracle linked service name>",
"type": "LinkedServiceReference"
}
}
}
Propriedades da atividade de cópia
Esta seção fornece uma lista das propriedades com suporte pela fonte e pelo coletor Oracle. Para obter uma lista completa das seções e propriedades disponíveis para definir as atividades, veja Pipelines.
Oracle como fonte
Dica
Para carregar dados do Oracle com eficiência usando o particionamento de dados, saiba mais na seção Cópia paralela do Oracle.
Para copiar dados do Oracle, defina o tipo de fonte na atividade de cópia como OracleSource. As propriedades a seguir têm suporte na seção source da atividade de cópia.
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type da fonte da atividade Copy deve ser definida como OracleSource. |
Sim |
| oracleReaderQuery | Utiliza a consulta SQL personalizada para ler os dados. Um exemplo é "SELECT * FROM MyTable". Observe que a consulta não deve terminar com um ponto-e-vírgula (;). Ao habilitar a carga particionada, você precisa vincular todos os parâmetros de partição internos correspondentes na consulta. Confira a seção Cópia paralela do Oracle para ver exemplos. |
Não |
| convertDecimalToInteger | O tipo Oracle NUMBER com escala zero ou não especificada será convertido em inteiro correspondente. Os valores permitidos são true e false (padrão). Se você estiver usando a versão 2.0 do Oracle, essa propriedade só poderá ser definida quando supportV1DataTypes estiver configurado como verdadeiro. |
Não |
| opçõesDePartição | Especifica as opções de particionamento de dados usadas para carregar dados do Oracle. Os valores permitidos são: None (padrão), PhysicalPartitionsOfTable e DynamicRange. Quando uma opção de partição está habilitada (ou seja, não None), o grau de paralelismo para carregar dados simultaneamente do Banco de Dados Oracle é controlado pela configuração parallelCopies na atividade de cópia. |
Não |
| ConfiguraçõesDePartição | Especifique o grupo de configurações para o particionamento de dados. Aplique quando a opção de partição não for None. |
Não |
| nomesDePartições | A lista de partições físicas que precisam ser copiadas. Aplicar quando a opção de partição for PhysicalPartitionsOfTable. Se você usar uma consulta para recuperar os dados de origem, conecte ?AdfTabularPartitionName na cláusula WHERE. Para obter um exemplo, veja a seção Cópia paralela do Oracle. |
Não |
| nomeDaColunaDePartição | Especifique o nome da coluna de origem no tipo de inteiro que será usado pelo particionamento de intervalo para cópia paralela. Se não especificado, a chave primária da tabela será detectada automaticamente e usada como a coluna de partição. Aplicar quando a opção de partição for DynamicRange. Se você usar uma consulta para recuperar os dados de origem, conecte ?AdfRangePartitionColumnName na cláusula WHERE. Para obter um exemplo, veja a seção Cópia paralela do Oracle. |
Não |
| limite superior da partição | O valor máximo da coluna de partição para copiar dados. Aplicar quando a opção de partição for DynamicRange. Se você usar uma consulta para recuperar os dados de origem, conecte ?AdfRangePartitionUpbound na cláusula WHERE. Para obter um exemplo, veja a seção Cópia paralela do Oracle. |
Não |
| partitionLowerBound | O valor mínimo da coluna de partição para copiar dados. Aplicar quando a opção de partição for DynamicRange. Se você usar uma consulta para recuperar os dados de origem, conecte ?AdfRangePartitionLowbound na cláusula WHERE. Para obter um exemplo, veja a seção Cópia paralela do Oracle. |
Não |
| numberPrecision | Especifique o número máximo de dígitos decimais significativos. Os valores permitidos variam de 1 a 256. O padrão é 256 se não for especificado. Essa propriedade tem suporte no Oracle versão 2.0. Aplica-se apenas aos tipos NUMBER que não têm precisão e escala definidas explicitamente no banco de dados Oracle. Isso pode ser definido quando supportV1DataTypes não for true. Se você usar o runtime de integração auto-hospedada, sua versão deverá ser 5.56 ou superior. |
Não |
| numberScale | Especifique o número de dígitos após o ponto decimal. Os valores permitidos variam de 0 a 130 e devem ser menores ou iguais à precisão. O padrão é 130 se não for especificado. Essa propriedade tem suporte no Oracle versão 2.0. Aplica-se apenas aos tipos NUMBER que não têm precisão e escala definidas explicitamente no banco de dados Oracle. Isso pode ser definido quando supportV1DataTypes não for true. Se você usar o runtime de integração auto-hospedada, sua versão deverá ser 5.56 ou superior. |
Não |
Exemplo: copiar dados usando uma consulta básica sem partição
"activities":[
{
"name": "CopyFromOracle",
"type": "Copy",
"inputs": [
{
"referenceName": "<Oracle input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "OracleSource",
"convertDecimalToInteger": false,
"oracleReaderQuery": "SELECT * FROM MyTable"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Oracle como coletor
Para copiar dados para o Oracle, defina o tipo de coletor na atividade de cópia como OracleSink. As propriedades a seguir têm suporte na seção sink da atividade de cópia.
| Propriedade | Descrição | Obrigatório |
|---|---|---|
| tipo | A propriedade type do coletor da atividade de cópia deve ser definida como OracleSink. |
Sim |
| writeBatchSize | Insere dados na tabela SQL quando o tamanho do buffer atinge writeBatchSize.Os valores permitidos são inteiro (número de linhas). |
Não (o padrão é 10.000) |
| writeBatchTimeout | O tempo de espera para a operação de inserção em lotes a ser concluída antes de atingir o tempo limite. Os valores permitidos são período. Um exemplo é 00:30:00 (30 minutos). |
Não |
| preCopyScript | Especificar uma consulta SQL para a atividade de cópia ser executada antes de gravar dados no Oracle em cada execução. Você pode usar essa propriedade para limpar os dados previamente carregados. | Não |
| máximo de conexões simultâneas | O limite superior de conexões simultâneas estabelecidas para o armazenamento de dados durante a execução da atividade. Especifique um valor somente quando desejar limitar as conexões simultâneas. | Não |
Exemplo:
"activities":[
{
"name": "CopyToOracle",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Oracle output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "OracleSink"
}
}
}
]
Cópia paralela do Oracle
O conector do Oracle fornece particionamento de dados interno para copiar dados do Oracle em paralelo. Você pode encontrar opções de particionamento de dados na guia Origem da atividade de cópia.
Quando você habilita a cópia particionada, o serviço executa consultas paralelas com relação à sua fonte do Oracle para carregar dados por partições. O grau paralelo é controlado pela configuração do parallelCopies na atividade de cópia. Por exemplo, ao definir parallelCopies como quatro, o serviço gera e executa simultaneamente quatro consultas com base na opção de partição especificada e nas configurações, e cada consulta recupera uma parte dos dados do banco de dados do Oracle.
É recomendável habilitar a cópia paralela com o particionamento de dados, especialmente quando você carrega grandes quantidades de dados do banco de dados Oracle. Veja a seguir as configurações sugeridas para cenários diferentes. Ao copiar dados para o armazenamento de dados baseado em arquivo, recomendamos gravá-los em uma pasta como vários arquivos (apenas especifique o nome da pasta) para ter um desempenho melhor do que gravar em um arquivo.
| Cenário | Configurações sugeridas |
|---|---|
| Carregamento completo de uma tabela grande com partições físicas. |
Opção de partição: partições físicas da tabela. Durante a execução, o serviço detecta automaticamente as partições físicas e copia os dados por partição. |
| Carregamento completo de uma tabela grande, sem partições físicas e com uma coluna de inteiro ou para o particionamento de dados. |
Opções de partição: partição de intervalo dinâmico. Coluna de partição: especifique a coluna usada para particionar dados. Se não for especificada, a coluna de chave primária será usada. |
| Carregue uma grande quantidade de dados usando uma consulta personalizada, com partições físicas. |
Opção de partição: partições físicas da tabela. Consulta: SELECT * FROM <TABLENAME> PARTITION("?AdfTabularPartitionName") WHERE <your_additional_where_clause>.Nome da partição: especifique os nomes de partição dos quais copiar dados. Se não for especificado, o serviço detectará automaticamente as partições físicas na tabela que você especificou no conjunto de dados do Oracle. Durante a execução, o serviço substitui ?AdfTabularPartitionName pelo nome real da partição e envia ao Oracle. |
| Carregue uma grande quantidade de dados usando uma consulta personalizada, sem partições físicas, com uma coluna de inteiro para o particionamento de dados. |
Opções de partição: partição de intervalo dinâmico. Consulta: SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.Coluna de partição: especifique a coluna usada para particionar dados. Você pode particionar em relação à coluna com tipo de dados Integer. Limite superior da partição e Limite inferior da partição: especifique se quiser filtrar a coluna de partição para recuperar dados somente entre os intervalos inferior e superior. Durante a execução, o serviço substitui ?AdfRangePartitionColumnName, ?AdfRangePartitionUpbound e ?AdfRangePartitionLowbound pelo nome real da coluna e os intervalos de valores de cada partição e envia ao Oracle. Por exemplo, se a coluna de partição "ID" for definida com o limite inferior de 1 e o limite superior de 80, com a cópia paralela definida como 4, o serviço recuperará dados por 4 partições. Suas IDs estão entre [1, 20], [21, 40], [41, 60] e [61, 80], respectivamente. |
Dica
Ao copiar dados de uma tabela não particionada, você pode usar a opção de partição “Intervalo dinâmico” para particionar em uma coluna de inteiros. Se os dados de origem não tiverem esse tipo de coluna, você poderá aproveitar a função ORA_HASH na consulta de origem para gerar uma coluna e usá-la como coluna de partição.
Exemplo: consulta com partições físicas
"source": {
"type": "OracleSource",
"query": "SELECT * FROM <TABLENAME> PARTITION(\"?AdfTabularPartitionName\") WHERE <your_additional_where_clause>",
"partitionOption": "PhysicalPartitionsOfTable",
"partitionSettings": {
"partitionNames": [
"<partitionA_name>",
"<partitionB_name>"
]
}
}
Exemplo: consulta com a partição do intervalo dinâmico
"source": {
"type": "OracleSource",
"query": "SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>",
"partitionOption": "DynamicRange",
"partitionSettings": {
"partitionColumnName": "<partition_column_name>",
"partitionUpperBound": "<upper_value_of_partition_column>",
"partitionLowerBound": "<lower_value_of_partition_column>"
}
}
Mapeamento de tipo de dados para o Oracle
Quando você copia dados de e para o Oracle, os mapeamentos de tipo de dados provisórios a seguir são usados no serviço. Para saber mais sobre como a atividade de cópia mapeia o tipo de dados e esquema de origem para o coletor, consulte Mapeamentos de tipo de dados e esquema.
| Tipo de dados de Oracle | Tipo de dados de serviço provisório (para a versão 2.0) | Tipo de dados de serviço provisório (para a versão 1.0) |
|---|---|---|
| BFILE | Byte[] | Byte[] |
| BINARY_FLOAT | Solteiro | Solteiro |
| BINARY_DOUBLE | Double | Double |
| BLOB | Byte[] | Byte[] |
| CHAR | fio | fio |
| CLOB | fio | fio |
| DATE | Data e Hora | Data e Hora |
| FLOAT (P < 16) | Double | Double |
| FLOAT (P >= 16) | Decimal | Double |
| INTERVALO ANO A MÊS | Int64 | fio |
| INTERVAL DAY TO SECOND | TimeSpan | fio |
| LONG | fio | fio |
| LONG RAW | Byte[] | Byte[] |
| NCHAR | fio | fio |
| NCLOB | fio | fio |
| NUMBER (p,s) | Int16, Int32, Int64, Single, Double, Decimal | Decimal, String (se p > 28) |
| NÚMERO sem precisão e escala | Decimal (256.130) | Double |
| NVARCHAR2 | fio | fio |
| RAW | Byte[] | Byte[] |
| TIMESTAMP | Data e Hora | Data e Hora |
| TIMESTAMP WITH LOCAL TIME ZONE | Data e Hora | Data e Hora |
| CARIMBO DE DATA/HORA COM FUSO HORÁRIO | DateTimeOffset | Data e Hora |
| VARCHAR2 | fio | fio |
| XMLTYPE | fio | fio |
NUMBER(p,s) é mapeado para o tipo de dados de serviço provisório apropriado da versão 2.0, dependendo da precisão (p) e da escala (s):
| Tipo de dados provisório do serviço | Condição |
|---|---|
| Int16 | escala <= 0 E (precisão - escala) < 5 |
| Int32 | escala <= 0 E 5 <= (precisão - escala) < 10 |
| Int64 | escala <= 0 E 10 <= (precisão - escala) < 19 |
| Solteiro | precisão < 8 E ((escala <= 0 E (precisão - escala) <= 38) OU (escala > 0 E escala <= 44)) |
| Decimal | precisão >= 16 |
| Double | Se nenhuma das condições acima for atendida. |
Pesquisar propriedades de atividade
Para saber detalhes sobre as propriedades, verifique Pesquisar atividade.
Atualizar o conector Oracle
Aqui estão as etapas que ajudam você a atualizar o conector Oracle:
Na página Editar serviço vinculado, selecione 2.0 em Versão e configure o serviço vinculado referindo-se às propriedades do serviço vinculado versão 2.0.
Para as propriedades relacionadas à autenticação, incluindo nome de usuário e senha, especifique os valores originais nos campos correspondentes na versão 2.0. Outras propriedades de conexão, como host, porta e Oracle Service Name/Oracle SID na versão 1.0, agora são parâmetros da
serverpropriedade na versão 2.0.Por exemplo, se você configurar o serviço vinculado da versão 1.0, conforme mostrado abaixo:
{ "name": "OracleLinkedService", "properties": { "type": "Oracle", "typeProperties": { "connectionString": "host=oraclesample.com;port=1521;servicename=db1" }, "connectVia": { "referenceName": "<name of Integration Runtime>", "type": "IntegrationRuntimeReference" } } }A configuração de serviço vinculado da versão 2.0 idêntica usando a Nomenclatura do Easy Connect (Plus) é:
{ "name": "OracleLinkedService", "properties": { "type": "Oracle", "version": "2.0", "typeProperties": { "server": "oraclesample.com:1521/db1", "username": "<user name>", "password": "<password>", "authenticationType": "<authentication type>" }, "connectVia": { "referenceName": "<name of Integration Runtime>", "type": "IntegrationRuntimeReference" } } }A configuração de serviço vinculada da versão 2.0 (versão prévia) idêntica usando oDescritor do Conector é:
{ "name": "OracleLinkedService", "properties": { "type": "Oracle", "version": "2.0", "typeProperties": { "server": "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST= oraclesample.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=db1)))", "username": "<user name>", "password": "<password>", "authenticationType": "<authentication type>" }, "connectVia": { "referenceName": "<name of Integration Runtime>", "type": "IntegrationRuntimeReference" } } }Dica
O Azure Key Vault tem suporte para a
serverpropriedade. Você pode editar o JSON do serviço vinculado para adicionar a referência do Azure Key Vault, conforme mostrado abaixo:
Observe que:
Se você usar o Nome do Serviço Oracle na versão 1.0, poderá usar a Nomenclatura do Easy Connect (Plus) ou o Descritor do Conector como o formato do servidor na versão 2.0.
Se você usar o Oracle SID na versão 1.0, precisará usar o Descritor do Conector como o formato de servidor na versão 2.0.
Para algumas propriedades de conexão adicionais na versão 1.0, fornecemos propriedades ou parâmetros alternativos na
serverpropriedade na versão 2.0. Você pode consultar a tabela abaixo para atualizar as propriedades da versão 1.0.Versão 1.0 Versão 2.0 método de criptografia PROTOCOL (parâmetro em server)tnsnamesfile TNS_ADMIN (variável de ambiente com suporte no runtime de integração auto-hospedada) servername servidor enablebulkload
Valor: 1, 0enableBulkLoad
Valor: verdadeiro, falsofetchtswtzastimestamp
Valor: 1, 0fetchTswtzAsTimestamp
Valor: verdadeiro, falsoservidores alternativos DESCRIPTION_LIST (parâmetro em server)ArraySize fetchSize cachedcursorlimit statementCacheSize connectionretrycount RETRY_COUNT (parâmetro em server)initializationstring initializationString tempo limite de login CONNECT_TIMEOUT (parâmetro em server)versão do criptoprotocolo SSL_VERSION (parâmetro em server)truststore WALLET_LOCATION (parâmetro em server)Por exemplo, se você usar
alternateserversna versão 1.0, poderá definir oDESCRIPTION_LISTparâmetro na propriedade do servidor na versão 2.0:Serviço vinculado da versão 1.0 usando
alternateservers:{ "name": "OracleV1", "properties": { "type": "Oracle", "typeProperties": { "connectionString": "host=oraclesample.com;port=1521;servicename=db1;alternateservers=(HostName= oraclesample2.com:PortNumber=1521:SID=db2,HostName=255.201.11.24:PortNumber=1522:ServiceName=db3)" } } }Serviço vinculado da versão 2.0 idêntico usando o parâmetro
DESCRIPTION_LISTno Descritor do Conector:{ "name": "OracleV2", "properties": { "type": "Oracle", "version": "2.0", "typeProperties": { "server": "(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oraclesample.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=db1)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oraclesample2.com)(PORT=1521))(CONNECT_DATA=(SID=db2)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=255.201.11.24)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=db3))))", "username": "<user name>", "password": "<password>", "authenticationType": "<authentication type>" } } }
O mapeamento de tipo de dados para o serviço vinculado Oracle versão 2.0 é diferente do da versão 1.0. Para saber mais sobre o mapeamento de tipo de dados mais recente, consulte o mapeamento de tipo de dados para Oracle.
Uma propriedade
supportV1DataTypesde conexão adicional na versão 2.0 pode reduzir as dificuldades de atualização causadas por alterações de tipo de dados. Definir essa propriedade paratruegarantir que o tipo de dados na versão 2.0 permaneça consistente com a versão 1.0.
Diferenças entre o Oracle versão 2.0 e a versão 1.0
O conector Oracle versão 2.0 oferece novas funcionalidades e é compatível com a maioria dos recursos da versão 1.0. A tabela a seguir mostra as diferenças de recursos entre a versão 2.0 e a versão 1.0.
| Versão 2.0 | Versão 1.0 |
|---|---|
| Os mapeamentos a seguir são usados dos tipos de dados Oracle para os tipos de dados de serviço provisórios usados pelo serviço internamente. NUMBER(p,s) –> Int16, Int32, Int64, Single, Double, Decimal FLOAT(p)-> Duplo ou Decimal com base em sua precisão NÚMERO –> Decimal CARIMBO DE DATA/HORA COM FUSO HORÁRIO —> DateTimeOffset INTERVALO DE ANO PARA MÊS -> Int64 INTERVALO DE DIA A SEGUNDO -> TimeSpan |
Os mapeamentos a seguir são usados dos tipos de dados Oracle para os tipos de dados de serviço provisórios usados pelo serviço internamente. NUMBER(p,s) -> Decimal ou String com base na sua precisão FLOAT(p)-> Duplo NUMBER -> Duplo CARIMBO DE DATA/HORA COM FUSO HORÁRIO -> DateTime INTERVAL YEAR TO MONTH - >String INTERVAL DAY TO SECOND - > String> |
É suportado o convertDecimalToInteger na cópia da origem quando supportV1DataTypes é definido como true. |
Suporte convertDecimalToInteger na origem da cópia. |
Não há suporte para usar ? como espaço reservado para parâmetros de consulta de atividade de script. Você pode usar o parâmetro nomeado (como :paramA) ou o parâmetro posicional (como :1) como uma substituição. |
Suporte ao uso de ? como espaço reservado para parâmetros de consulta de atividade de script. |
| Suporte ao TLS 1.3. | TLS 1.3 não é compatível. |
| Há suporte para TLS/SSL bidirecional com a carteira SSO do Oracle. Para obter mais informações, confira este artigo | Não há suporte para TLS/SSL bidirecional com a carteira Oracle. |