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_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