TFDPhysDriverLink.VendorHome Oracle como Atribuir
Primeiro parabenizar pela iniciativa. Assim todos ganham com mais conhecimento adquirido e assim melhorando seus projetos.
Gostaria se possível claro, no meu ambiente estou utilizando Oracle, e necessito no meu ambiente informar a proprietada VendorHome do componente TFDPhysOracleDriverLink
FDPhysOracleDriverLink1.VendorHome:= 'OraClient19Home1';
se isso nao for informado ocorre essa mensagem de erro
como faço para passar isso no ConnectionDBConfig, por que cheguei ate preencher o exemplo que vc tem no trexo:
edtDriverDefName.Text, //NOME DA CONFI DO DRIVER - [OPCIONAL] - IDENTIFICAÇÃO DO DRIVER, USADO NA CONFIGURAÇÃO DA CONEXÃO FDPhysFBConnectionDefParams.DriverID procedure(FDStanDefinition: IFDStanDefinition) //PARAMETRIZAÇÃO DO DRIVER COM O BANCO DE DADOS - [OPCIONAL] begin FDStanDefinition.AsString['BaseDriverID'] := 'FB'; //DRIVER BASE DO FIREDAC
//DEFINE O LOCAL DA DLL CLIENT DO FIREBIRD.
FDStanDefinition.AsString['VendorHome'] := edtDriverVendorHome.Text; //https://docwiki.embarcadero.com/Libraries/Sydney/en/FireDAC.Phys.TFDPhysDriverLink.VendorHome
//DEFINE O NOME DA DLL CLIENT DO FIREBIRD.
FDStanDefinition.AsString['VendorLib'] := edtDriverVendorLib.Text; //https://docwiki.embarcadero.com/Libraries/Sydney/en/FireDAC.Phys.TFDPhysDriverLink.VendorLib
end,
Neste trecho mencionado tem a parte VendorHome mais mesmo passando não funciona, como contorno, criei um DataModule e dentro dele coloquei o componente e atribui a informação, mais fica estranho desta maneira..
se vc tiver algum orientação agradeço.
Acabei desconbrindo o problema deverá preencher assim: o trecho:
'Ora', //NOME DA CONFI DO DRIVER - [OPCIONAL] - IDENTIFICAÇÃO DO DRIVER, USADO NA CONFIGURAÇÃO DA CONEXÃO FDPhysFBConnectionDefParams.DriverID procedure(FDStanDefinition: IFDStanDefinition) //PARAMETRIZAÇÃO DO DRIVER COM O BANCO DE DADOS - [OPCIONAL] begin FDStanDefinition.AsString['BaseDriverID'] := 'Ora'; //DRIVER BASE DO FIREDAC
//DEFINE O LOCAL DA DLL CLIENT DO FIREBIRD.
FDStanDefinition.AsString['VendorHome'] := TConstantes.OracleVendorHome; //https://docwiki.embarcadero.com/Libraries/Sydney/en/FireDAC.Phys.TFDPhysDriverLink.VendorHome
//DEFINE O NOME DA DLL CLIENT DO FIREBIRD.
//FDStanDefinition.AsString['VendorLib'] := edtDriverVendorLib.Text; //https://docwiki.embarcadero.com/Libraries/Sydney/en/FireDAC.Phys.TFDPhysDriverLink.VendorLib
end,
Boa tarde @Alyssonpp, tudo certo?
Obrigado pelo feedback, eu nunca trabalhei com Oracle, mas acredito que a configuração seja igual para todos os bancos homologados pela Embarcadero.
Uma dúvida, essa configuração que tu está usando é uma variável de ambiente e qual a arquitetura(32/64 bits) da instalação do Oracle?
FDPhysOracleDriverLink1.VendorHome:= 'OraClient19Home1';
Sim isso ocorre.. por que eu tenho os dois client do oracle 19 em 32 e 64bits, mas aqui so esta exigindo no ambiente de desenvolvimento.. em ambiente produção o sistema sozinho conecta na versao correta.. me parece que algo do delphi do IDE que acaba nao resolvendo sem informar. Mas so é necessario o VendorHome nada mais
Sim isso ocorre.. por que eu tenho os dois client do oracle 19 em 32 e 64bits, mas aqui so esta exigindo no ambiente de desenvolvimento.. em ambiente produção o sistema sozinho conecta na versao correta.. me parece que algo do delphi do IDE que acaba nao resolvendo sem informar. Mas so é necessario o VendorHome nada mais
A IDE do Delphi é 32bits, neste caso tu vai precisar usar as DLL's desta arquitetura, por exemplo:
https://github.com/antoniojmsjr/MultithreadingFireDAC/assets/20980984/9b308e12-b3b2-458a-b145-3be1fe77f0d7
Em runtime tu pode conectar no Oracle usando as DLL's na pasta do executável ou informando no parâmetro VendorLib o caminho da DLL oci.dll.
O parâmetro VendorHome só consegui usar se o Oracle está instalado no PC informando o SID.
Para acesso remoto eu usei as configurações:
lFDPhysOracleConnectionDefParams.UserName := 'SYSTEM'; lFDPhysOracleConnectionDefParams.Password := '123456'; lFDPhysOracleConnectionDefParams.Database := 'VM-WIN10-000:1521/XE';
usando as DLL's na past do executável.
Essa foi a minha primeira experiência usando Oracle, rsrsrs
Uma curiosidade, usando o exemplo MultithreadingFireDAC.dproj para testar as conexões com o Oracle, se eu executar muitas requisições sequidas executando um comando SQL é gerado o seguinte erro : [FireDAC][Phys][Ora] ORA-12516: TNS:listener could not find available handler with matching protocol stack.
Mas se eu ativar o pool de conexões o erro não acontece, tu sabe qual o limite de conexões que o Oracle suporta ao mesmo tempo? @Alyssonpp
o Oracle de fato é mundo a parte.. ele tem muitas configurações e ele tem limites de cursores que são definidos no padrão da instalação, certamente estourou esse limite padrão e tem que ser aumentado, normalmente aqui quando ocorre algo a isso recorremos ao DBA que é especializado para acompanhar e acertar esses valores, mais de fato o Oracle tem essas particularidades., complementando o outro tramite so utilizo oracle aqui, no meu ambiente em nenhum caso foi necessario colocar as DLLs, simplesmente instala-se o client Oracle 32 ou 64bits e aponta usuário, senha e database e funciona de boa.