Boa noite. Consegui resolver com a seguinte solução: https://hs2n.wordpress.com/2012/06/12/oracle-using-sqlplus-and-sqlldr-on-databases-without-tnsnames-entry/#comment-700
Obrigado a todos. On Wed, May 27, 2020 at 8:38 PM Jose Laurindo Chiappa jlchia...@yahoo.com.br [oracle_br] <oracle_br@yahoogrupos.com.br> wrote: > > > Blz ? Então, principalmente quando vc tem múltiplos produtos Oracle na sua > máquina , vc SIMPLESMENTE TEM QUE setar diretamente a ORACLE_HOME e o PATH, > sob penas de confusões as maiores... E ao que parece vc TEM SIM um client > Oracle 10.2.0.3 E um banco 11.2.0.1 , banco esse que OBVIAMENTE já trouxe > um client 11.2.0.1 na mesma ORACLE_HOME : eu DEDUZI isso pelas msgs > "Conectado a: > Oracle Database 11g Enterprise Edition Release 11.2.0.1.0" E ""SQL*Plus: > Release 10.2.0.3.0" do sqlplus que vc está usando para conectar nesse > bancolocal.... > > Sobre qual setar , seguinte : vc quer usar o sqlldr que está nesse client > 10.2.0.3 (ESPERO que seja um client FULL, instalado com TODAS AS > FERRAMENTAS, e não um Instant Client!!) , OU vc quer usar o sqlldr desse > client 11.2.0.1 que veio com o banco 11.2.0.1 ?? Vc seta ORACLE_HOME ( *** > E *** também PATH, Por Favor!!!!) apontando para aquele produto que vc quer > usar.... > Há um ponto ** CRÍTICO ** porém, que só agora eu vejo já que vc NÃO TINHA > dito antes : vejo agora que esse client 10g que vc tem é 10.2.0.3 , E o > banco destino é 11.2..0.1 : cfrme a nota do Suporte Oracle "Client / > Server Interoperability Support Matrix for Different Oracle Versions" (Doc > ID 207303.1) bem DIRETAMENTE aponta, o client 10g pra conectar no banco > 11 DEVERIA estar na versão 10.2.0.3 , E o banco deveria estar em 11.2.0.4 - > qquer combinação FORA desses valores Não É certificada..... > Então pra mim ESSE é seu problema, vc está caindo nalgum BUG por conta de > versões de client e de server incompatíveis ou ao menos são suportadas > entre si,,, > > Sendo assim, eu RECOMENDO que vc use o client (e o sqlldr claro) que veio > com esse banco 11g local que vc tem aí... Pra isso, vc faz nesse prompt de > comandos onde vc está , logado como usuário admin dessa máquina : > > SET ORACLE_HOME=n:\homedessebancooracle11g > SET PATH=%ORACLE_HOME%\bin > > e aí valide que vc TEM o executável do sqlldr no local , digitando : > > DIR %ORACLE_HOME%\BIN\sqlldr*.* > > e o executável TEM que aparecer.... Aí SIM, com as DUAS variáveis setadas, > peça um : > > TYPE %ORACLE_HOME%\network\admin\TNSNAMES.ORA > > E um : > > TYPE %ORACLE_HOME%\network\admin\sqlnet.ora > > Confirme que TANTO o TNSNAMES.ORA quanto o SQLNET.ORA estão corretos, E > QUE vc realmente Não tem (nem no REGISTRY nem no proprio prompt dos) a > variável TNS_ADMIN setada.... > > Tudo ok, aí SIM peça o tnsping , o sqlplus > user/senha@hoststringdobancoremoto E então o sqlldr > usuario/senha@hoststringdobancoremoto ..... resto do comando ..... > > ABraços, > > Chiappa > > Em quarta-feira, 27 de maio de 2020 17:30:26 BRT, Eduardo Perdomo > panc...@gmail.com [oracle_br] <oracle_br@yahoogrupos.com.br> escreveu: > > > > > Segue os testes: > 1-) Conectado no banco local > c:\Temp>sqlplus local/local@local > > SQL*Plus: Release 10.2.0.3.0 - Production on Qua Mai 27 17:19:11 2020 > > Copyright (c) 1982, 2006, Oracle. All Rights Reserved. > > > Conectado a: > Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit > Production > With the Partitioning, OLAP, Data Mining and Real Application Testing > options > > SQL> > > > 2-) Conectado no banco de producao > c:\Temp>sqlplus wint/wint@rede > > SQL*Plus: Release 10.2.0.3.0 - Production on Qua Mai 27 17:20:23 2020 > > Copyright (c) 1982, 2006, Oracle. All Rights Reserved. > > > Conectado a: > Oracle Database 11g Release 11.2.0.4.0 - 64bit Production > > SQL> > > 3-) Tnsping local > > c:\Temp>tnsping local > > TNS Ping Utility for 32-bit Windows: Version 10.2.0.3.0 - Production on > 27-MAI-2020 17:22:06 > > Copyright (c) 1997, 2006, Oracle. All rights reserved. > > Arquivos de parÔmetros usados: > D:\oracle\product\10.2.0\client_1\network\admin\sqlnet.ora > > > Usado o adaptador TNSNAMES para resolver o apelido > Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL > = TCP)(HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SID = LOCAL))) > OK (0 ms) > > 4-) tnsping remoto > c:\Temp>tnsping rede > > TNS Ping Utility for 32-bit Windows: Version 10.2.0.3.0 - Production on > 27-MAI-2020 17:22:39 > > Copyright (c) 1997, 2006, Oracle. All rights reserved... > > Arquivos de parÔmetros usados: > D:\oracle\product\10.2.0\client_1\network\admin\sqlnet.ora > > > Usado o adaptador TNSNAMES para resolver o apelido > Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL > = TCP)(HOST = 10.0.0.200)(PORT = 1521))) (CONNECT_DATA = (SID = WINT))) > OK (60 ms) > > 5-) Logo os dois bancos tem entradas no tnsnames e os dois são conectáveis > > 6-) Importando no banco local > > c:\Temp>sqlldr local/local@local control=example.ctl log=employee.log > bad=employee.bad > > SQL*Loader: Release 11.2.0.1.0 - Production on Qua Mai 27 17:25:19 2020 > > Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights > reserved. > > Atingido o ponto de commit - contagem de registros l¾gicos 5 > Atingido o ponto de commit - contagem de registros l¾gicos 6 > > > c:\Temp>sqlplus local/local@local > > SQL*Plus: Release 10.2.0.3.0 - Production on Qua Mai 27 17:30:24 2020 > > Copyright (c) 1982, 2006, Oracle. All Rights Reserved. > > > Conectado a: > Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit > Production > With the Partitioning, OLAP, Data Mining and Real Application Testing > options > > SQL> select * from employee; > > ID > ---------- > NAME > > -------------------------------------------------------------------------------- > DEPT SALARY > ---------------------------------------- ---------- > 100 > Thomas > Sales 5000 > > 200 > Jason > Technology 5500 > > c:\Temp> > > 7-) Importando banco remoto > c:\Temp>sqlldr wint/wint@rede control=example.ctl log=employee.log > bad=employee.bad > > SQL*Loader: Release 11.2.0.1.0 - Production on Qua Mai 27 17:26:52 2020 > > Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights > reserved.. > > SQL*Loader-704: Erro interno: ulconnect: OCIServerAttach [0] > ORA-12154: TNS:nÒo foi possÝvel resolver o identificador de conexÒo > especificado > > c:\Temp> > > > 8-) Levando em consideração que o tnsping funciona pelo tnsnames.ora, > seria a variável ORACLE_HOME, já que não a tenho configurada no windows ? > 9-) Se sim, qual path devo setar, do caminho do banco ou do client ? > 10-) Pq o sqlldr dá erro 12154 e o sqlplus/sqlbbx/sqlnavigator não? > > Caminho banco:D:\app\Consultor\product\11.2.0\dbhome_1 > Caminho do client: D:\oracle\product\10.2.0\client_1 > > Obrigado. > > > > > On Wed, May 27, 2020 at 12:58 PM Jose Laurindo Chiappa > jlchia...@yahoo.com.br [oracle_br] <oracle_br@yahoogrupos.com.br> wrote: > > > > Mostrando que pro sql*loader é EXATAMENTE A MESMA COISA, eis um exemplo > nesse mesmo ambiente que citei na msg anterior, com ORACLE_HOME e PATH > setados, etc : > > => crio uma tabelinha no banco-destino : > > SYSTEM@abobora::CNTNR=CDB$ROOT> create table EMPLOYEE > 2 ( > 3 id number, > 4 name varchar2(100), > 5 dept varchar2(40), > 6 salary number > 7 ); > > Tabela criada. > > SYSTEM@abobora::CNTNR=CDB$ROOT> > SYSTEM@abobora::CNTNR=CDB$ROOT>exit > > => Agora vou ter um arquivo de dados E um arquivo de controle para serem > usados com o sql*loader : > > C:\Users\User 2am>type employee.txt > 100,Thomas,Sales,5000 > 200,Jason,Technology,5500 > 300,Mayla,Technology,7000 > 400,Nisha,Marketing,9500 > 500,Randy,Technology,6000 > 501,Ritu,Accounting,5400 > > C:\Users\User 2am>type example.ctl > load data > infile 'employee.txt' > into table employee > fields terminated by "," > ( id, name, dept, salary ) > > C:\Users\User 2am> > > ==> posso chamar o sqlldr CONECTANDO LÁ NO BANCO REMOTO com a host string > correta , de boa : > > C:\Users\User 2am>sqlldr system/oracle@abobora control=example.ctl > log=employee.log bad=employee.bad > > SQL*Loader: Release 19.0.0.0.0 - Production on Qua Mai 27 12:52:21 2020 > Version 19.3.0.0.0 > > Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights > reserved. > > Caminho usado: Convencional > Atingido o ponto de confirmação - contagem de registros lógicos 6 > > Tabela EMPLOYEE: > 6 Linhas carregados com sucesso. > > Verifique o arquivo log: > employee..log > para obter mais informações sobre a carga.. > > C:\Users\User 2am>type employee.log > > SQL*Loader: Release 19.0.0.0.0 - Production on Qua Mai 27 12:52:21 2020 > Version 19.3..0.0.0 > > Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights > reserved. > > Arquivo de Controle: example.ctl > Arquivo de Dados: employee.txt > Arquivo de Incorreções: employee.bad > Arquivo de Descarte: nenhum(a) foi especificado(a) > > (Permite todos os descartes) > > Número a ser carregado: ALL > Número a ser ignorado: 0 > Erros permitidos: 50 > Array de ligação: 250 linhas, máximo de 1048576 bytes > Continuação: nenhum(a) foi especificado(a) > Caminho usado: Convencional > > Tabela EMPLOYEE, carregada a partir de cada registro lógico. > Opção de inserção em vigor para esta tabela: INSERT > > Nome da Coluna Posição Tam Term Incl Tipo de Dados > ------------------------------ ---------- ----- ---- ---- > --------------------- > ID FIRST * , CHARACTER > NAME NEXT * , CHARACTER > DEPT NEXT * , CHARACTER > SALARY NEXT * , CHARACTER > > > Tabela EMPLOYEE: > 6 Linhas carregados com sucesso. > 0 Linhas não carregado devido a erros de dados. > 0 Linhas não carregado porque todas as cláusulas WHEN falharam. > 0 Linhas não carregado porque todos os campos eram nulos. > > > Espaço alocado para o array de ligação: 258000 bytes(250 > linhas) > Bytes do buffer de leitura: 1048576 > > Total de registros lógicos ignorados: 0 > Total de registros lógicos lidos: 6 > Total de registros lógicos rejeitados: 0 > Total de registros lógicos descartados: 0 > > A execução começou em Qua Mai 27 12:52:21 2020 > A execução foi finalizada em Qua Mai 27 12:52:22 2020 > > O tempo decorrido foi: 00:00:00.27 > O tempo de CPU foi: 00:00:00.08 > > C:\Users\User 2am> > > ==> conectando lá no banco remoto E confirmando que tudo tá ok : > > C:\Users\User 2am>sqlplus system/oracle@abobora > > SQL*Plus: Release 19..0.0.0.0 - Production on Qua Mai 27 12:54:08 2020 > Version 19.3.0.0.0 > > Copyright (c) 1982, 2019, Oracle. All rights reserved. > > Horário do último log-in bem-sucedido: Qua Mai 27 2020 12:52:21 -03:00 > > Conectado a: > Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production > Version 18.4.0.0.0 > > > SYSTEM@abobora::CNTNR=CDB$ROOT> select * from employee; > > ID NAME DEPT SALARY > ---------- -------------------- ------------------------------ ---------- > 100 Thomas Sales 5000 > 200 Jason Technology 5500 > 300 Mayla Technology 7000 > 400 Nisha Marketing 9500 > 500 Randy Technology 6000 > 501 Ritu Accounting 5400 > > 6 linhas selecionadas. > > SYSTEM@abobora::CNTNR=CDB$ROOT> > > []s > > Chiappa > > > Em quarta-feira, 27 de maio de 2020 12:37:33 BRT, Jose Laurindo Chiappa > jlchia...@yahoo.com.br [oracle_br] <oracle_br@yahoogrupos.com.br> > escreveu: > > > > > E só acrescentando, eu ** REPITO ** : vc só consegue conectar com o SID > indicado na variável ORACLE_SID ** para bancos LOCAIS **, como é o banco > DEV que vc diz ter na sua máquina - um banco REMOTO, residindo em OUTRA > MÁQUINA, vc ABSOLUTAMENTE TEM que ter uma entrada no arquivo TNSNAMES.ORA > ** e ** deve indicar essa entrada com @ em seja qual tool vc quer > conectar... Entendo que é POR ISSO que no banco DEV local aí seu vc > consegue conectar SEM indicar @hoststring , MAS não consegue no banco PROD > remoto.... > Pra acessar esse banco PROD remoto, repiuto, vc TEM que ter uma entrada > corretamente apontando pra ele no TNSNAMES.ORA e TEM que USAR essa entra > com um @ na tool de conexão.... > > []s > > Chiappa > > Em quarta-feira, 27 de maio de 2020 12:30:45 BRT, Jose Laurindo Chiappa > jlchia...@yahoo.com.br [oracle_br] <oracle_br@yahoogrupos.com.br> > escreveu: > > > > > Na verdade não chame as entradas do TNSNAMES.ORA de "SID" porque elas não > são isso, ok ? Isso evita muita confusão de conceitos... > Muito bem : se vc vai acessar por uma tool de linha de comando um banco > remoto (como é o seu caso) não tem segredo, vc TEM que ter uma entrada > apropriada para esse banco no TNSNAMES.ORA (tomando o CUIDADO de confirmar > que vc não tem em lugar nenhum assignado valor pra variável TNS_ADMIN > apontando pra algum lugar não-padrão) e TEM que ter as variáveis > ORACLE_HOME e PATH setadas apontando para ESSE home aonde no diretório > NETWORK/ADMIN vc tem o TNSNAMES.ORA correto..... > Pra testar e demonstrar que não tem NADA A VER a entrada no TNSNAMES..ORA > com o SID, num ambiente onde tenho 100% de Certeza que não há variável > TNS_ADMIN setada, no software client Oracle instalado em d:\oracledb19c > (que inclusive é o client que veio com um database local também instalado > mas não importa) eu quero configurar ele para acessar um database que > reside na máquina de IP 192.168.10.20 e atendido por um listener ouvindo > na porta 1521 com o SERVICE_NAME XE, vou chamar a entrada de ABOBORA : > > C:\Users\User 2am>SET ORACLE_HOME=d:\oracledb19c > C:\Users\User 2am>SET PATH=%ORACLE_HOME%\bin;%PATH% > > C:\Users\User 2am>type %ORACLE_HOME%\network\admin\tnsnames.ora > # tnsnames.ora Network Configuration File: > D:\OracleDB19c\NETWORK\ADMIN\tnsnames.ora > # Generated by Oracle configuration tools. > > ORACLR_CONNECTION_DATA = > (DESCRIPTION = > (ADDRESS_LIST = > (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1527)) > ) > (CONNECT_DATA = > (SID = CLRExtProc) > (PRESENTATION = RO) > ) > ) > > ABOBORA = > (DESCRIPTION = > (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.20)(PORT = 1521)) > (CONNECT_DATA = > (SERVER = DEDICATED) > (SERVICE_NAME = XE) > ) > ) > > C:\Users\User 2am> > > > C:\Users\User 2am>tnsping abobora > > TNS Ping Utility for 64-bit Windows: Version 19.0.0.0.0 - Production on > 27-MAI-2020 12:25:43 > > Copyright (c) 1997, 2019, Oracle. All rights reserved. > > Arquivos de parâmetros usados: > d:\oracledb19c\network\admin\sqlnet.ora > > > Usado o adaptador TNSNAMES para resolver o apelido > Tentativa de contatar (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = > 192.168.10.20)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) > (SERVICE_NAME = XE))) > OK (90 ms) > > ==> muito bem, o LISTENER provado acessível pelo TNSPING, vamos > efetivamente conectar com essa entrada ABOBORA : > > C:\Users\User 2am>sqlplus system/oracle@abobora > > SQL*Plus: Release 19....0.0.0.0 - Production on Qua Mai 27 12:25:58 2020 > Version 19.3.0.0.0 > > Copyright (c) 1982, 2019, Oracle. All rights reserved. > > Horário do último log-in bem-sucedido: Ter Mai 26 2020 16:49:31 -03:00 > > Conectado a: > Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production > Version 18.4.0.0.0 > > > WHERE > -------------------------------------------------- > CNTNR=CDB$ROOT > > 1 linha selecionada.. > > SYSTEM@abobora::CNTNR=CDB$ROOT> > > ==> faça EXATAMENTE esses testes aí na sua máquina que com certeza vc > Consegue conectar, ou então descobrir onde está teu erro.... > > []s > > Chiappa > Em quarta-feira, 27 de maio de 2020 11:37:10 BRT, Eduardo Perdomo > panc...@gmail.com [oracle_br] <oracle...@yahoogrupos..com.br > <oracle_br@yahoogrupos.com.br>> escreveu: > > > > > Bom dia. > Esqueci de mencionar que SID, nesse exemplo são as entradas no > TNSNAMES.ORA, pois consigo acessar normalmente os dois bancos via > sqlplus/navigator/dbexpress etc. > O problema é só no sqlldr que não reconhece a entrada do tbsnames, alias, > só está reconhecendo uma, como se fosse um default...... > > > On Wed, May 27, 2020 at 9:37 AM Jose Laurindo Chiappa > jlchia...@yahoo.com.br [oracle_br] <oracle_br@yahoogrupos.com.br> wrote: > > > > Ah, só complementando : nessa toada de conectar via software client Oracle > (conexão jdbc thin é outra coisa, é conexão direta sem client Oracle) sem > que vc edite/monte um TNSNAMES.ORA na sua máquina, além de informar os > dados de conexão todos vc tem TAMBÉM as possibilidades de : > > a) conexão via EZCONNECT, onde vc informa > usuario/senha@servername:port/instanceOUservice_name, > vide How To: Perform a direct connect to Oracle without a tnsnames.ora > file <https://support.....esri.com/en/technical-article/000010842> > > ou > > b) vc pode setar a variável TNS_ADMIN apontando pra algum local da sua > rede onde alguém já criou um arquivo TNSNAMES.ORA 'público', todo mundo usa > ele > > Okdoc ?? > > How To: Perform a direct connect to Oracle without a tnsnames.ora file > > Technical Article Details : How To: Perform a direct connect to Oracle > without a tnsnames.ora file > <https://support.esri.com/en/technical-article/000010842> > > > > Em quarta-feira, 27 de maio de 2020 09:23:40 BRT, Jose Laurindo Chiappa < > jlchia...@yahoo.com.br <jlchia...@yahoo.com..br>> escreveu: > > > Blz ? Então, vamos por ordem aí : PRIMEIRO, o que vc informa depois do @ > absolutamente *** NÃO É *** um SID, não : isso é uma ENTRADA DE HOST NO > ARQUIVO TNSNAMES.ORA, ok ??? NADA A VER, o SID é o identificador da > instância, vc até PODE conectar por ele (principalmente se ele for local) > mas são coisas Completamente Diferentes.... > No seu caso, como vc está numa máquina que tem um database Oracle local, > com CERTEZA vc tem (no registry, provavelmente) uma variável ORACLE_SID > apontando pra esse banco DEV, E COMO EU DISSE, banco local vc consegue > conectar só por SID.... Mas como PROD é um banco remoto, vc NÂO TEM COMO > conectar só por SID, vc TEM que informar um @entradadotns , E TEM QUE CRIAR > a entrada correspondente no arquivo TNSNAMES.ORA, certo ?? repito, conexão > por SID é só para banco local, para banco remoto vc TEM que ter uma entrada > correspondente à esse banco no TNSNAMES..ORA e TEM QUE informar essa > entrada para as tools de conexão após um @ , blz ? > > []s > > Chiappa > > OBS : não que eu recomende se fazer isso mas para Informação, em algumas > tools Oracle (como sqlplus, por exemplo) até é possível vc ao invés de > informar uma entrada no TNSNAMES.ORA vc passar todos os detalhes da > conexão, vide > https://asktom.oracle.com/pls/apex/asktom.search?tag=how-to-connect-sqlplus-without-tnsnamesora > por exemplo.... > > ----------------------------- > Bom dia. > > Estou tentando fazer um insert via sqlldr no oracle. > Tenho dois bancos, dev e prod, sendo dev no meu note e prod em outra máquina > Quando não especifico o sid no parametro userid=usuario/senha aponta para o > banco local dev > Quando especifico o SID como userid=usuario/senha@prod, não encontra o > banco do SID prod > Como tivesse como default o banco/sid dev. > Será alguma variável ? > > -- > > Eduardo Perdomo > Consultor de Implantação > Totvs - www.totvs.com..br <http://www.totvs.com.br> > (21) 96845-8592panc...@gmail.comeduardo.perd....@totvs.com.br > > > > > -- > > Eduardo Perdomo > Consultor de Implantação > Grupo PC Sistemas - www.grupopc.com.br > (21) 6845-8592 > panc...@gmail.com > eduardo.perd...@pcinformatica.com.br > Blog: eduardo.perdomo.nom.br > > > > > > > > > -- > > Eduardo Perdomo > Consultor de Implantação > Grupo PC Sistemas - www.grupopc.com.br > (21) 6845-8592 > panc...@gmail.com > eduardo.perd...@pcinformatica.com.br > Blog: eduardo.perdomo.nom.br <http://eduardo.perdomo.nom..br> > > > > -- Eduardo Perdomo Consultor de Implantação Grupo PC Sistemas - www.grupopc.com.br (21) 6845-8592 panc...@gmail.com eduardo.perd...@pcinformatica.com.br Blog: eduardo.perdomo.nom.br