2016-06-15 3 views
0

SQLDeveloper를 사용하여 원격 데이터베이스에 연결할 수 있습니다.SQLcl을 사용하여 jdbc를 통해 연결할 수없는 이유

명령 줄에서 sqlcl을 사용하여 동일한 데이터베이스에 연결하려고하는데 오류가 발생합니다.

/bin/sql username/[email protected]:1521/vdbsl14 

나는 또한 시도 : 또한

SQLcl: Release 4.2.0.16.131.1023 RC on Wed Jun 15 11:36:33 2016 

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

    USER   = username 
    URL   = jdbc:oracle:thin:@delphix-vdb-n-1.va2.b2c.nike.com:1521/vdbsl14 
    Error Message = Listener refused the connection with the following error: 
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor 
Username? (RETRYING) ('username/*********@delphix-vdb-n-1.va2.b2c.nike.com:1521/vdbsl14'?) 

SQLDeveloper에서 : 여기

/bin/sql username/[email protected]//delphix.......etc. 

내가 수신하고있는 오류가 여기에

내가 실행하고 명령이다 , "custom jdbc url"아래에 다음과 같이 입력하면 아무 문제없이 연결할 수 있습니다. 그래서 나는 th를 통해 연결할 수 있기를 바랬습니다. e 명령 줄에서 동일한 URL을 사용했지만 지금까지 작동하지 않습니다.

jdbc:oracle:thin:@delphix-vdb-n-1.va2.b2c.nike.com:1521:vdbsl4 

답변

5

SID와 서비스 이름이 같지 않은 것 같습니다. SQL Developer에서 콜론으로 표시된 :vdbsl4에 표시된 것처럼 적어도 사용자가 나타낸 사용자 정의 JDBC URL에서 SID를 사용하는 것 같습니다.

SQLcl URL은 /vdbsl14의 슬래시로 표시된 서비스 이름을 사용하고 있습니다. 대신 SID를 사용하여 (즉,이 JDBC를 사용하고 있기 때문에 작업을해야 해당 URL에 :)을/변화 :

sqlcl username/[email protected]:1521:vdbsl14 

또는 (바람직하게는, 제 생각에) 서비스의 이름이 실제로 무엇인지 찾을 수 있습니다. 데이터베이스에 대한 충분한 권한이있는 경우 SQL Devleoper에서 show parameters service_names을 수행하거나 DBA로 서버에 액세스 할 수있는 경우 을 수행하거나 서비스 이름을 나타내는 TNS 별칭이 정의되어있는 경우 tnsnames.ora을 볼 수도 있습니다 . (listener.ora는 도움이되지 않지만 힌트를 줄 수 있거나 운이 좋다면 기본 서비스 이름을 표시 할 수 있습니다.)

JDBC URL에서 해당 서비스 이름을 /service_name으로 사용할 수 있습니다.

SQLcl (또는 SQL * Plus)의 TNS 별칭을 사용할 수도 있습니다. 이미 tnsnames.ora을 사용할 수 있습니다. 그렇지 않다면 서버에서 복사하거나 직접 만들 수 있습니다. 이는 SID 또는 서비스 이름을 나타낼 수 있습니다.

전체 TNS 설명을 SQL * Plus (SQLcl에 대해 확실하지 않음)로 전달할 수도 있지만 약간 불쾌합니다. tnsnames.ora이 없으면 SQLcl에 사용하는 것과 같은 '쉬운 연결'구문을 사용할 수 있지만 의 서비스 이름은입니다. SID는 허용되지 않습니다.

+0

제안 된대로 SID 수정. 마침내 3 주간의 고통 후에 만날 수 있습니다. 감사합니다! – Ben

+0

나는 여전히 서비스 이름을 찾아서 사용하고 싶지만 어쩌면 그건 내가 사용했던 것일 뿐이다. –

+1

@AlexPoole - 주문 시점 : listener.ora 및/또는 tnsnames.ora를 점검하거나 아무것도 산출하지 못할 수도 있습니다. 리스너는 데이터베이스의 동적 등록에 따라 listener.ora가없는 모든 기본값을 사용하여 쉽게 실행할 수 있습니다. 잠재적 인 단서를 조사 할 가치가 있지만 확실한 것은 아닙니다. 그러나 아마도 그것이 당신이 염두에 두었던 것입니다. – EdStevens