Oracle

Strings de conexão para Oracle

.NET Framework Data Provider for Oracle

Padrão

Data Source=BancoDeDados;Integrated Security=yes;

Este funciona apenas com Oracle 8i release 3 ou posterior

Autenticação do Windows

Data Source=BancoDeDados;User Id=/;

Autenticação Proxy

Data Source=BancoDeDados;User Id=Usuario;Password=Senha;Proxy User Id=pUserId;Proxy Password=pPassword;

Conexão Privilegiada com privilégios SYSDBA

Data Source=BancoDeDados;User Id=SYS;Password=SYS;DBA Privilege=Usuario;

Conexão Privilegiada com privilégios SYSOPER

Data Source=BancoDeDados;User Id=SYS;Password=SYS;DBA Privilege=SYSOPER;

Especificando nome de usuário e senha

Data Source=BancoDeDados;User Id=Usuario;Password=Senha;Integrated Security=no;

Este funciona apenas com Oracle 8i release 3 ou posterior

Omitindo tnsnames.ora

Este é outro tipo de string de conexão Oracle que não depende de você ter um DSN para a conexão. Você cria uma string de conexão com base no formato usado no arquivo tnsnames.ora sem a necessidade de ter um desses arquivos no computador cliente.

SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));uid=Usuario;pwd=Senha;

Omitindo tnsnames.ora Alternativa

Alguns relataram problemas com o anterior e com o Visual Studio. Use o próximo se você encontrou problemas.

Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));User Id=Usuario;Password=Senha;

Usando Pool de Conexões

O serviço de pool de conexões criará um novo pool se não puder encontrar nenhum pool existente que corresponda exatamente às propriedades da string de conexão da nova conexão. Se houver um pool correspondente, uma conexão será reciclada desse pool.

Data Source=BancoDeDados;User Id=Usuario;Password=Senha;Min Pool Size=10;Connection Lifetime=120;Connection Timeout=60;Incr Pool Size=5;Decr Pool Size=2;

A primeira conexão aberta cria o pool de conexões. O serviço cria inicialmente o número de conexões definido pelo parâmetro Min Pool Size.

O atributo Incr Pool Size define o número de novas conexões a serem criadas pelo serviço de pool de conexões quando mais conexões são necessárias.

Quando uma conexão é fechada, o serviço de pool de conexões determina se o tempo de vida da conexão excedeu o valor do atributo Connection Lifetime. Se sim, a conexão é fechada; caso contrário, a conexão retorna ao pool de conexões.

O serviço de pool de conexões fecha conexões não utilizadas a cada 3 minutos. O atributo Decr Pool Size especifica o número máximo de conexões que podem ser fechadas a cada 3 minutos.

Utilizando a funcionalidade de Expiração de Senha

Primeiro, abra uma conexão com uma string de conexão. Quando a conexão é aberta, um erro é gerado porque a senha expirou. Capture o erro e execute o comando OpenWithNewPassword fornecendo a nova senha.

Data Source=myOracleDB;User Id=myUsername;Password=myPassword;


oConn.OpenWithNewPassword(sTheNewPassword);

Oracle Data Provider for .NET / ODP.NET

Balanceamento de Carga de Conexão em Tempo de Execução

Otimize o pooling de conexão para o banco de dados RAC, equilibrando as solicitações de trabalho entre as instâncias RAC.

Data Source=Servidor;User Id=Usuario;Password=Senha;Load Balancing=True;

Este recurso só pode ser usado contra um banco de dados RAC e somente se o pooling estiver habilitado (padrão).

Conexões Privilegiadas

O Oracle permite que os administradores de banco de dados se conectem ao Oracle Database com privilégios SYSDBA ou SYSOPER.

Data Source=Servidor;User Id=Usuario;Password=Senha;DBA Privilege=Usuario;

SYSOPER também é válido para o atributo DBA Privilege.

Desativar pooling

Data Source=Servidor;User Id=Usuario;Password=Senha;Pooling=False;

Especificando parâmetros de Pooling

Por padrão, o pooling de conexão está habilitado. Esta controla os mecanismos de pooling. O serviço de pooling de conexão cria pools de conexão usando a propriedade ConnectionString para identificar exclusivamente um pool.

Data Source=Servidor;User Id=Usuario;Password=Senha;Min Pool Size=10;Connection Lifetime=120;Connection Timeout=60;Incr Pool Size=5;Decr Pool Size=2;

A primeira conexão aberta cria o pool de conexões. O serviço cria inicialmente o número de conexões definido pelo parâmetro Min Pool Size.

O atributo Incr Pool Size define o número de novas conexões a serem criadas pelo serviço de pool de conexões quando mais conexões são necessárias.

Quando uma conexão é fechada, o serviço de pool de conexões determina se o tempo de vida da conexão excedeu o valor do atributo Connection Lifetime. Se sim, a conexão é fechada; caso contrário, a conexão retorna ao pool de conexões.

O serviço de pool de conexões fecha conexões não utilizadas a cada 3 minutos. O atributo Decr Pool Size especifica o número máximo de conexões que podem ser fechadas a cada 3 minutos.

Método de Nomenclatura Easy Connect para conectar a uma Instância

Este não especifica um serviço ou uma porta.

Data Source=username/password@myserver//instancename;

Método de Nomenclatura Easy Connect para conectar a uma instância de servidor dedicado

Este não especifica um serviço ou uma porta.

Data Source=username/password@myserver/myservice:dedicated/instancename;

Outras opções de servidor: SHARED, POOLED (para usar em vez de DEDICATED). Dedicado é o padrão.

Restringindo tamanho do Pool

Use este para restringir o tamanho do pool.

Data Source=Servidor;User Id=Usuario;Password=Senha;Max Pool Size=40;Connection Timeout=60;

O atributo Max Pool Size define o número máximo de conexões para o pool de conexão. Se uma nova conexão for solicitada, mas não houver conexões disponíveis e o limite para Max Pool Size tiver sido alcançado, o serviço de pooling de conexão espera pelo tempo definido pelo atributo Connection Timeout. Se o tempo de Connection Timeout tiver sido atingido e ainda não houver conexões disponíveis no pool, o serviço de pooling de conexão gerará uma exceção indicando que a solicitação foi interrompida.

Usando autenticação de usuário do Windows

O Oracle pode abrir uma conexão usando as credenciais de login do usuário do Windows para autenticar os usuários do banco de dados.

Data Source=Servidor;User Id=/;

Se o atributo Senha for fornecido, ele é ignorado.

A Autenticação do Sistema Operacional não é suportada em um procedimento armazenado .NET.

Usando o Método de Nomeação Easy Connect (aka EZ Connect)

O método de nomeação de fácil conexão permite que os clientes se conectem a um banco de dados sem qualquer configuração.

Data Source=username/password@//myserver:1521/my.service.com;

A porta 1521 é usada se nenhum número de porta for especificado na string de conexão.

Certifique-se de que EZCONNECT está habilitado no arquivo sqlnet.ora. NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

'//' na fonte de dados é opcional e está lá para habilitar valores de nome de host no estilo URL

Usando ODP.NET sem tnsnames.ora

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));User Id=Usuario;Password=Senha;

Artigo: "Oracle Data Provider for .NET" por Rama Mohan

Usando Segurança Integrada

Data Source=TORCL;Integrated Security=SSPI;

Usando TNS

Data Source=TORCL;User Id=Usuario;Password=Senha;

dotConnect for Oracle

Padrão

User ID=Usuario;Password=Senha;Host=Servidor;Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0;

Microsoft OLE DB Provider for Oracle

Segurança padrão

Esta string de conexão usa um provedor da Microsoft.

Provider=msdaora;Data Source=BancoDeDados;User Id=Usuario;Password=Senha;

Conexão Confiável

Provider=msdaora;Data Source=BancoDeDados;Persist Security Info=False;Integrated Security=Yes;

Oracle Provider for OLE DB

Segurança padrão

Provider=OraOLEDB.Oracle;Data Source=BancoDeDados;User Id=Usuario;Password=Senha;

Conexão Confiável

Este especifica autenticação do SO a ser usada ao conectar-se a um banco de dados Oracle.

Provider=OraOLEDB.Oracle;Data Source=BancoDeDados;OSAuthent=1;

Controlando mecanismo de cache de conjunto de linhas

Especifica o tipo de cache usado pelo provedor para armazenar dados do conjunto de linhas. OraOLEDB oferece dois mecanismos de cache; Arquivo e Memória.

Provider=OraOLEDB.Oracle;Data Source=BancoDeDados;User Id=Usuario;Password=Senha;CacheType=File;

Memória é o valor padrão. Todos os dados do conjunto de linhas são armazenados na memória, o que oferece melhor desempenho à custa de uma maior utilização de memória.

Arquivo = Todos os dados do conjunto de linhas são armazenados no disco. Este mecanismo de cache limita o consumo de memória à custa do desempenho.

Controlando o tamanho do chunk

Este especifica o tamanho, em bytes, dos dados nas colunas LONG e LONG RAW buscados e armazenados no cache do provedor.

Provider=OraOLEDB.Oracle;Data Source=BancoDeDados;User Id=Usuario;Password=Senha;ChunkSize=200;

Providenciar um valor alto para este atributo melhora o desempenho, mas requer mais memória para armazenar os dados no conjunto de linhas. Os valores válidos são de 1 a 65535. O padrão é 100.

Controlando o tamanho do fetch

Este especifica o número de linhas que o provedor buscará de cada vez (array de busca).

Provider=OraOLEDB.Oracle;Data Source=BancoDeDados;User Id=Usuario;Password=Senha;FetchSize=200;

O valor de FetchSize deve ser definido adequadamente dependendo do tamanho dos dados e do tempo de resposta da rede. Se o valor for definido muito alto, isso pode resultar em mais tempo de espera durante a execução da consulta. Se o valor for definido muito baixo, isso pode resultar em muitas mais viagens de ida e volta ao banco de dados. Os valores válidos são de 1 a 429,496,296. O padrão é 100.

Oracle XE, C++ ADO

Provider=OraOLEDB.Oracle;Data Source=localhost:1521/XE;Initial Catalog=BancoDeDados;User Id=Usuario;Password=Senha;

Oracle XE, VB6 ADO

Provider=OraOLEDB.Oracle;dbq=localhost:1521/XE;Database=BancoDeDados;User Id=Usuario;Password=Senha;

String de conexão sem TNS

Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myHost)(PORT=myPort)))(CONNECT_DATA=(SID=MyOracleSID)(SERVER=DEDICATED)));User Id=Usuario;Password=Senha;

Usando com Microsofts OLE DB .NET Data Provider

O Microsoft OLE DB .NET Data Provider pode utilizar o OraOLEDB como o OLE DB Provider para acessar o Oracle. No entanto, isso deve ser ativado na string de conexão.

Provider=OraOLEDB.Oracle;Data Source=BancoDeDados;User Id=Usuario;Password=Senha;OLEDB.NET=True;

O atributo de string de conexão OLEDB.NET não deve ser usado em aplicações ADO.

Usando OraOLEDB Custom Properties com Microsofts OLE DB .NET Data Provider

As propriedades SPPrmsLOB e NDatatype só podem ser definidas como atributos de string de conexão quando OraOLEDB é usado pelo OLE DB .NET Data Provider.

Provider=OraOLEDB.Oracle;Data Source=BancoDeDados;User Id=Usuario;Password=Senha;OLEDB.NET=True;SPPrmsLOB=False;NDatatype=False;SPPrmsLOB=False;

Usando ADO, essas propriedades teriam sido definidas como uma propriedade no comando. Isso não é possível ao usar o Microsofts OLE DB .NET Data Provider. Assim, as propriedades são especificadas na string de conexão em vez disso.

PLSQLRSet: Se o procedimento armazenado, fornecido pelo consumidor, retornar um conjunto de linhas, PLSQLRSet deve ser definido como TRUE (ativado).

NDatatype: Esta propriedade permite que os consumidores especifiquem se algum dos parâmetros vinculados ao comando são dos N datatypes da Oracle (NCHAR, NVARCHAR ou NCLOB). OraOLEDB precisa desta informação para detectar e vincular os parâmetros adequadamente. Esta propriedade não deve ser definida para comandos que executam instruções SELECT. No entanto, esta propriedade deve ser definida para todos os outros SQLs, como INSERT, UPDATE e DELETE.

SPPrmsLOB: Esta propriedade permite ao consumidor especificar se um ou mais dos parâmetros vinculados aos procedimentos armazenados são do datatype LOB da Oracle (CLOB, BLOB ou NCLOB). OraOLEDB requer que esta propriedade seja definida como TRUE, para buscar a lista de parâmetros do procedimento armazenado antes da execução. O uso desta propriedade limita a sobrecarga de processamento a procedimentos armazenados que têm um ou mais parâmetros do datatype LOB.

Usando transações distribuídas

Este especifica sessões para se inscrever em transações distribuídas. Este é o comportamento padrão.

Provider=OraOLEDB.Oracle;Data Source=BancoDeDados;User Id=Usuario;Password=Senha;DistribTX=1;

Valores válidos são 0 (desativado) e 1 (ativado).

Microsoft ODBC Driver for Oracle

Versão Antiga

Driver={Microsoft ODBC Driver for Oracle};ConnectString=Arquivo.world;Uid=Usuario;Pwd=Senha;

Microsoft ODBC for Oracle

Alternativa sem TSN.ora

Driver={Microsoft ODBC for Oracle};CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=server)(PORT=7001))(CONNECT_DATA=(SERVICE_NAME=myDb)));Uid=Usuario;Pwd=Senha;

Conectar diretamente

Nenhum TSN nem DSN necessário.

Driver={Microsoft ODBC for Oracle};Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=199.199.199.199)(PORT=1523))(CONNECT_DATA=(SID=dbName)));Uid=Usuario;Pwd=Senha;

Nova versão

Driver={Microsoft ODBC for Oracle};Server=Servidor;Uid=Usuario;Pwd=Senha;

MSDataShape

MSDataShape (Oracle)

Provider=MSDataShape;Persist Security Info=False;Data Provider=MSDAORA;Data Source=orac;User Id=Usuario;Password=Senha;

Oracle in OraClient11g_home1

Padrão

Driver={Oracle in OraClient11g_home1};Dbq=myTNSServiceName;Uid=Usuario;Pwd=Senha;

Ambos Server e Dbq

ODBC;Driver={Oracle in OraClient11g_home1};SERVER=[server SID];UID=[userid];PWD=[password];DBQ=[server SID];

Algumas observações sobre o uso de ambas as palavras-chave Dbq e Server para fazer isso funcionar.

Server SID

Driver={Oracle in OraClient11g_home1};Server=Servidor;Uid=Usuario; Pwd=Senha;

Oracle in OraHome92

Padrão

Driver={Oracle in OraHome92};Dbq=myTNSServiceName;Uid=Usuario;Pwd=Senha;

Oracle in XEClient

Padrão

Oracle XE (ou "Oracle Database 10g Express Edition") é uma versão simples que é gratuita para distribuir.

Driver=(Oracle in XEClient);dbq=Servidor:1521/XE;Uid=Usuario;Pwd=Senha;