문제

내 목표는 내 OS X 시스템의 Oracle 9i 인스턴스에 연결하는 것입니다. 설정 지침을 따랐습니다 여기 그리고 오류없이 그들을 통과했습니다 (결국). 그러나 SQLPLUS가 연결할 수 없다는 것을 알게되었습니다.

[ ethan@gir ~ ]$ sqlplus xxx/yyy@zzz

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Apr 17 10:13:08 2009

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

looooong 잠깐 ...

ERROR:
ORA-12170: TNS:Connect timeout occurred

Enter user-name: xxx
Enter password: 
ERROR:
ORA-12162: TNS:net service name is incorrectly specified

Enter user-name:

나의 tnsnames.ora 파일...

zzz =
  (DESCRIPTION = 
    (ADDRESS_LIST =
      (ADDRESS =
        (PROTOCOL = TCP)
        (HOST = dbhost)
        (PORT = 1521))
    )
  (CONNECT_DATA =
    (SERVICE_NAME = zzz)
  )
)

설정 해야하는 ENV 변수가 있습니까?


업데이트

DB 호스트 머신을 핑 할 수 있습니다.

시험을 마친...

sqlplus xxx/yyy@//dbhost/zzz

갖다...

ERROR:
ORA-12170: TNS:Connect timeout occurred

사용해 보았습니다 SID 대신에 SERVICE_NAME tnsnames.ora에서. 결과를 바꾸지 않은 것 같습니다. 되돌아 갔다 SERVICE_NAME.


sqlnet.log의 마지막 커플 항목 ...

***********************************************************************
Fatal NI connect error 12170.

  VERSION INFORMATION:
    TNS for MacOS X Server: Version 10.2.0.4.0 - Production
    TCP/IP NT Protocol Adapter for MacOS X Server: Version 10.2.0.4.0 - Production
  Time: 17-APR-2009 10:33:06
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
    TNS-12535: Message 12535 not found; No message file for product=network, facility=TNS
    ns secondary err code: 12560
    nt main err code: 505
    TNS-00505: Message 505 not found; No message file for product=network, facility=TNS
    nt secondary err code: 60
    nt OS err code: 0


***********************************************************************
Fatal NI connect error 12170.

  VERSION INFORMATION:
    TNS for MacOS X Server: Version 10.2.0.4.0 - Production
    TCP/IP NT Protocol Adapter for MacOS X Server: Version 10.2.0.4.0 - Production
  Time: 17-APR-2009 11:24:08
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12535
    TNS-12535: Message 12535 not found; No message file for product=network, facility=TNS
    ns secondary err code: 12560
    nt main err code: 505
    TNS-00505: Message 505 not found; No message file for product=network, facility=TNS
    nt secondary err code: 60
    nt OS err code: 0

부분 답변

답변 해 주셔서 감사합니다. 그들은 도움이되었습니다. DNS 문제가 있음을 알았습니다. 나는 호스트 이름으로 핑을 할 수 있었기 때문에 잘 작동해야한다고 생각했다. 또한 IP 주소를 시도했습니다. 내가 필요하다는 것이 밝혀졌다 내부 "10.1.xx"이 OS X 시스템에서 작동하기 위해 "10.1.xx"IP 주소 (그러나 Windows에서는 호스트 이름이 적합합니다).

이 시점에서 나는 다음과 연결할 수 있습니다.

sqlplus xxx/yyy@//INTERNAL_IP/zzz

그러나 이러한 값이 tnsnames.ora에 입력하면 여전히 작동하지 않습니다 ...

sqlplus xxx/yyy@zzz

...

ORA-12154: TNS:could not resolve the connect identifier specified

필요한 것과 가까운 샘플 tnsnames.ora 파일을 검색하고 내용을 내 파일에 복사했습니다. 매개 변수를 변경했고 이제 모든 것이 작동합니다. 내 것이 왜 작동하지 않았는지 잘 모르겠습니다.

도움이 되었습니까?

해결책

당신은 a를 사용하고 있기 때문에 10g 클라이언트, 사용하는 것이 좋습니다 Easy Connect 대신 구문 :

export TWO_TASK=//dbhost/zzz
sqlplus xxx/yyy

, 또는 이것 또는 이것 :

sqlplus 'xxx/yyy@//dnhost/zzz'

또한 확인하십시오 ORACLE_HOME 오른쪽 폴더를 가리 킵니다. tnsnames.ora IN을 검색합니다 $ORACLE_HOME/network/admin/tnsnames.ora

다른 팁

괄호가 올바른 것 같습니다.

SID를 사용해보십시오 :

다음은 tnsnames.ora 파일의 예입니다.

IDENTIFIER =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP) (HOST = userid.myhosteddb.net)(PORT = 1521))
    )
    (CONNECT_DATA = (SID = odb))
  )

Sid에 대해 읽으십시오.

당신이 사용할 수있는

sqlplus user/password@servicename_host

연결할 수없는 경우 사용할 수 있습니다

sqlplus user/password@(DESCRIPTION=((ADDRESS=(PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))(CONNECT_DATA=(SERVICE_NAME = zzz)))

Linux를 사용하는 경우 다른 *nix os는 따옴표를 사용해야합니다.

예를 들어

sqlplus user/password@'(DESCRIPTION=((ADDRESS=(PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))(CONNECT_DATA=(SERVICE_NAME = zzz)))'

작업 디렉토리에 SQLNet.log 파일이 생성 될 수 있습니다. 이것은 당신에게 도움이 될 수 있거나 내용을 게시하면 더 많은 정보를 제공 할 수 있습니다.

당신의 예에서, 당신은 두 가지 다른 것을 시도하고 있습니다. 명령 줄에서 "xxx/yyy@zzz"를 사용했습니다. 이것은 tnsnames.ora에서 "zzz"항목을 찾는 것처럼 보이지만 시간 초과는 서버에서 아무런 응답이 없음을 나타냅니다. DBHost를 성공적으로 핑 할 수 있습니까?

두 번째 시도에서는 사용자 이름을 위해 "XXX"를 입력했습니다. SQLPLUS에 익숙하지 않은 경우에는 의미가 있지만 알 수 있듯이 데이터베이스 이름으로 유도하는 위치는 없습니다. 따라서이 경우 서비스 이름이없는 "xxx/yyy"에 연결하려고 시도하여 두 번째 오류가 발생했습니다. 이것은 기본 서비스 이름이 설정되어 있지 않다는 것을 의미합니다. 따라서이 오류는 불완전한 입력에서 비롯됩니다. 이 프롬프트에서 서비스 이름을 지정하려면 사용자 이름이 "xxx@zzz"를 입력 할 수 있습니다. 비밀번호가 신경 쓰지 않으면 실제로 전체 연결 문자열 "xxx/yyy@zzz"를 입력 할 수 있습니다. 보이는.)

Telnet을 사용하여 방화벽이 차단되지 않도록 열린 포트에 도착한 적이 있습니까? Telnet Port-Num 호스트를 시도해 볼 가치가 있습니다

당신은 당신의 환경을 설정 했습니까? 오라엔프 스크립트?

당신은 시도 했습니까? tnsping?

$ tnsping $ORACLE_SID

아마도 연결하지 못하는 기계의 출력에 연결되는 기계의 출력을 비교하는 데 도움이 될 것입니다. 적어도 그것은 DBA에 연락하기 직전에 내가하는 일입니다.

당신은 어떤 오류가 oerr 명령:

$ oerr ora 12170
12170, 00000, "TNS:Connect timeout occurred"
// *Cause:  The server shut down because connection establishment or
// communication with a client failed to complete within the allotted time
// interval. This may be a result of network or system delays; or this may
// indicate that a malicious client is trying to cause a Denial of Service
// attack on the server.
// *Action: If the error occurred because of a slow network or system,
// reconfigure one or all of the parameters SQLNET.INBOUND_CONNECT_TIMEOUT,
// SQLNET.SEND_TIMEOUT, SQLNET.RECV_TIMEOUT in sqlnet.ora to larger values.
// If a malicious client is suspected, use the address in sqlnet.log to
// identify the source and restrict access. Note that logged addresses may
// not be reliable as they can be forged (e.g. in TCP/IP).

나는 비슷한 문제가 있었고 Oracle Sqlplus가 문제가 된 것 같습니다!

이 작품 중 하나와 같은 연결 :

   > sqlplus MyUsername/MyPassword@MyHostname:1521/MyServiceName
   > sqlplus MyUsername/MyPassword@//MyHostname:1521/MyServiceName

(//는 호스트 이름 앞에서 선택 사항입니다). 그러나 비밀번호를 남기거나 사용자/패스를 모두 남겨두면 다음과 같이 실패합니다.

    sqlplus @//MyHostname:1521/MyServiceName

    SQL*Plus: Release 11.2.0.4.0 Production on Thu Apr 2 15:59:49 2015

    Copyright (c) 1982, 2013, Oracle.  All rights reserved.

    SP2-0310: unable to open file "//MyHostname:1521/MyServiceName.sql"
    Enter user-name: MyUsername
    Enter password: MyPassword
    ERROR: 
    ORA-12162: TNS:net service name is incorrectly specified

따라서 SQLPLUS가 사용자 이름/비밀번호를 요청하더라도 프롬프트에서 입력하면 가짜 오류 메시지로 어리석게 실패합니다. 연결 문자열의 시작 부분에 배치하는 경우에만 작동합니다.

멍청한 오라클 !!!

따르다 이것 단계별 설치 및 포스트 설치 방법에 대한 링크 .. 조심하십시오.

SQL Plus와 연결하려면 :

  1. 사용자 이름은 위의 링크에 주어진 명령에 따라 시스템입니다.
  2. 귀하의 비밀번호는 호랑이가 아니어야하지만 설치 시작시 설정 한 비밀번호

추신 : 브라우저가 Chrome 인 경우 설치를 테스트하는 동안 Oracle Enterprise Manager를 연결하는 문제 (브라우저 비 호환성)를 찾으면 공황하지 않습니다. 뒷 페이지 화살표와 다음 페이지 화살표를 누르면 용어에 동의하고 확인을 클릭하십시오.

나는 하루 만 에이 문제를 내 기계에서 해결했다. 그러나 그것은 당신을 위해 두 마리의 말의 문제가 될 것입니다.

Soruces : 저는 컴퓨터 과학 엔지니어 대부분 Java 코드입니다.

동일한 오류가 있었지만 (ORA-12162 : TNS : NET 서비스 이름이 잘못 지정되어 있음) 다른 이유 (Windows 7 Enterprise 64 비트). 이것이 누군가를 도울 수 있기를 바랍니다.

내 작업에서 32 비트와 64 비트 Oracle을 설치했으며 경로 변수를 기반으로 쉘은 32 비트 경로와 비교하여 SQLPLUS.EXE의 64 비트 경로를 보았습니다.

다른 경로는 다른 tnsnames.ora 파일을 사용하고 64 비트 경로에 연결 문자열이 없었습니다.

Oracle product 11.1.0 client_1_64bit 네트워크 admin tnsnames.ora

32 비트 tnsnames.ora : oracle product 11.1.0 client_1_32bit network admin tnsnames.ora에 연결 문자열이있었습니다.

또한 여러 개의 Oracle 설치가 있었기 때문에 Oracle_Home 환경 변수를 제거하여 두 설치 모두 다른 홈 디렉토리를 사용할 수 있도록해야했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top