Google은 연결 구성에 OID/LDAP 조회를 사용하고 있습니다. TNS_ADMIN
환경 변수와 oracle.net.tns_admin
Java 특성이 올바르게 설정되어 있고 sqlnet.ora 및 ldap.ora가 들어있는 디렉토리를 가리 킵니다. 연결 문자열의씬 JDBC 클라이언트를 사용하여 LDAP/OID 조회를 통해 Oracle SID를 확인하는 중 문제가 발생했습니다.
java.sql.SQLRecoverableException: IO Error: could not resolve the connect identifier "ourtnsalias"
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:458)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:546)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:236)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at TnsTest.main(TnsTest.java:29)
Caused by: oracle.net.ns.NetException: could not resolve the connect identifier "tnsalias"
at oracle.net.resolver.NameResolver.resolveName(NameResolver.java:181)
at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:416)
at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:687)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:247)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1102)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:320)
... 7 more
Exception in thread "main" java.lang.NullPointerException
at TnsTest.main(TnsTest.java:46)
다음 맛 성공적으로 연결 :
- 전체 TNS 문자열 :
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host.company.com)(PORT=####))(CONNECT_DATA=(SERVICE_NAME=service_name)))
- 전체 LDAP 그러나, JDBC 연결 URL은 : 연결을 시도 할 때
jdbc:oracle:thin:@ourtnsalias
에서 예외가 발생합니다 url :
jdbc:oracle:thin:@ldap://oid.company.net:####/ourtnsname,CN=OracleContext,dc=company,dc=net
이것은 LDAP/OID 조회에 문제가 있음을 나타냅니다. 그러나 실행중인 tnsping ourtnsname
도 성공적으로 연결됩니다.
OID/LDAP 조회를 수행 할 때 연결 문자열에서 TNS 별칭 만 사용하는 방법이 있습니까? 나는 프로그래머하지만 DBA하지 오전 시간 다시 같은 문제에 나의 동료를 도왔다
String connectionURL = "jdbc:oracle:thin:@ourtnsalias";
System.setProperty("oracle.net.tns_admin", "c:/oracle/network/admin");
Class.forName("oracle.jdbc.OracleDriver");
Connection c = DriverManager.getConnection(connectionURL, userid, password);
정확하게 똑같은 문제가 있습니다. 우리는 2 개의 서버가 거의 동일하게 구성되어 있고, 다른 하나는 오류를 반환합니다. 심지어 tnsping 등이 잘 작동한다고 생각합니다. 해결 방법을 찾았습니까? – Bittercoder