Oracle Instant Client에서 이름 조회에 LDAP 사용


14

Oracle 클라이언트의 전체 설치와 충돌하는 버전 또는 비트에 문제가있는 결과로, 개발 팀 (내 멤버 인)은 Oracle Instant Client 를 사용 하고 개발 시스템에서 대부분 설치를 피하는 방향으로 나아가고 있습니다. 새로운 프로젝트. 이 설정을 사용하여 프로덕션 환경에 배포 할 때까지도 잘 작동했습니다. 우리는 주로 .NET 상점이므로 Java가 아닌 기본 클라이언트 (.NET 랩퍼 포함)를 사용하고 있습니다.

이제 클라이언트는 데이터베이스 서비스를 LDAP 서버에 등록하고 이름 조회에 LDAP 서버를 사용해야합니다. 제공 한 파일 sqlnet.oraldap.ora파일 (및 함께 제공되는 암호화 구성 파일)이 올바른 것으로 보입니다. 특히이 sqlnet.ora파일은 넷 서비스 이름을 찾기위한 가능한 소스로 LDAP를 지정합니다.

names.directory_path=(tnsnames,ldap)

SQL Developer (LDAP 정보를 직접 입력 할 수 있음)를 사용하여 작업 한 컴퓨터에서 LDAP를 사용하여 서비스에 액세스 할 수 있다고 확신합니다. 올바른 것으로 가정하면 Instant Client에서이 구성을 인식하고 이름 조회에 LDAP를 사용하려면 어떻게해야합니까?

내가 지금까지 시도한 것

TNS_ADMIN제공된 파일이 포함 된 디렉토리로 환경 변수를 설정하려고 시도했지만 Instant Client가 tnsnames.ora파일을 인식하도록하는 데에는 문제가 없지만 LDAP를 시작하기에 충분하지 않은 것 같습니다. 경로, 사용자 이름 및 비밀번호가 변경된 결과는 다음과 같습니다.

(다음 명령은 Windows 명령 프롬프트이지만 Linux에서 비슷한 기능을 수행 할 수 있다고 생각합니다. sqlplus여기에는 동일한 버전의 Instant Client 바이너리가 포함 된 Instant 버전도 있습니다.)

C:\TEMP>SET TNS_ADMIN=C:\path\to\sqlnet\ldap\and\tnsnames\ora\files

C:\TEMP>echo %TNS_ADMIN%
C:\path\to\sqlnet\ldap\and\tnsnames\ora\files

C:\TEMP>sqlplus.exe USERNAME/PASSWORD@LOCALTNSNAME

SQL*Plus: Release 11.2.0.2.0 Production on Mon Jul 7 10:22:25 2014

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Produ
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

C:\TEMP>sqlplus.exe USERNAME/PASSWORD@LDAPTNSNAME

SQL*Plus: Release 11.2.0.2.0 Production on Mon Jul 7 10:24:21 2014

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

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

사이드 노트

이 질문에 추가 할 수있는 TNS, LDAP 또는 Instant Client (또는 일반 Oracle Client)에 대한 태그가 있습니까? 찾을 수 없습니다.


올바른 실행 파일입니까? "where sqlplus"
Bjarte Brandt

@BjarteBrandt 예, where( C:\TEMP\sqlplus.exe)를 실행할 때 예상되는 것 입니다. 더 구체적으로 말하면, sqlplus기계에 "설치"되어 있지 않습니다. 현재 디렉토리에 있고 클라이언트 바이너리가 옆에 있습니다. 그것은 완전히 다른 디렉토리에서 꺼져 있기 때문에 환경 변수를 tnsnames.ora사용 하여 파일 에서 확실히 선택됩니다 TNS_ADMIN.
jpmc26

@BjarteBrandt 올바른 클라이언트 바이너리를 사용하고 있는지 확인하기 위해 계속 진행했습니다 where oci.dll. 또한 예상 결과를 제공합니다 C:\TEMP\oci.dll.
jpmc26

도메인 문제 일 수 있습니다. FQ 이름도 사용해 보셨습니까? (dbname_or_whatever.domainname)
ik_zelf

2
@ ora-600 죄송합니다.이 질문에 대해 잊었습니다. 클라이언트가 우리에게 제공 한 구성 파일 자체에 문제가있는 것으로 나타났습니다. (Kerberos 구성 파일; 아마도 기억 나지 않습니다.) 재밌는 점은 이것을 시도하는 개발 환경에서 작업하고 있다는 것입니다. 내가 아는 한 찌르다 (우리는 앱을 작동시키기 위해 로컬 TNS 이름을 사용하게되었습니다.) 프로젝트에 돈을 낭비했습니다. 생산에 있어도 투자 수익은 비용에 비해 미미합니다.
jpmc26

답변:


1

장소 sqlnet.oraldap.ora당신의 파일을 $ORACLE_ADMIN디렉토리와 환경 변수를 설정해야합니다. 나는 TNS_ADMIN디렉토리를 만들었다

(Linux) 내 .bashrc

export TNS_ADMIN=/opt/oracle/instantclient_12_1/network/admin
export ORACLE_ADMIN=${TNS_ADMIN}

[ku14lts:/opt/oracle/instantclient_12_1/network/admin]
$ ls
ldap.ora  sqlnet.ora  tnsnames.ora

그리고 내 데이터베이스가 아닌 DB에 연결할 수있었습니다 tnsnames.ora

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.