OCI를 사용하여 데이터베이스와 통신하는 C 응용 프로그램이 있습니다. 인스턴트 클라이언트 방법을 사용하여 서버에 독립 실행 형 Oracle 설치가 없습니다. 응용 프로그램이 링크 된 몇 개의 라이브러리 만 있습니다.Oracle OCI - 다른 사용자로 실행 중일 때 ORA-12705로 실패 함
일반적으로 응용 프로그램은 사용자 dai로 실행되며 모든 것이 잘 작동합니다. 응용 프로그램 (그룹 다이에) 다른 사용자로 실행되는 경우, 그것은보고, 실행되지 : 그래서
Error while trying to retrieve text for error ORA-12705
나는 이것이 권한 오류가 있음을 상상할 수있는,하지만 난 그게 뭔지 파일 확실하지 않다 액세스하려고합니다. 오라클 라이브러리의 권한은
dai:/dai/oracle/lib> ls -l
total 201872
-rwxrwxrwx 1 dai dai 24719097 16 Feb 2009 libclntsh.a
-rwxrwxrwx 1 dai dai 5972457 16 Feb 2009 libocci.a
-rwxrwxrwx 1 dai dai 72651344 04 Jun 2010 libociei.so
메인 OCI 라이브러리가 정적으로 연결되어 추측 수 있듯이
을하지만, 거기에 하나의 동적 링크 라이브러리는 왜 확실하지 않은 (하지만 AIX의 instantclient 패키지는 이러한 파일과 함께 ...). 내 LIBPATH는 두 사용자가 모두 괜찮은 것으로 보입니다.LIBPATH=/dai/oracle/lib
어떤 다른 사용 권한을 확인해야합니까?
편집 : 방금 무슨 일이 일어나고 있는지 보려면 truss
(AIX와 동일한 Linux strace
)을 실행 해 보았습니다. dai 사용자로 실행할 때 예기치 않은 파일을 읽지 못했습니다. 트러스 문제 세트-UID 프로그램을 추적하는 것 같았다 -는 C 응용 프로그램에 대한 사용 권한은 다음과 같이 설정했다 :
dai:/dai/bin> ls -l stats_backup
-rwsrwsr-x 1 dai dai 6173358 Aug 12 10:08 stats_backup
그래서 내가
chmod a-s
를하고 다시 시도를하고, 지금 작동한다!
그래서 프로그램은 s 비트없이 OK로 실행되지만 다시 넣으면 바로 중단됩니다. S 비트 세트로 트러스를 실행할 수 없기 때문에 이것이 왜 필요한지 알아내는 것은 어렵습니다. 이 프로그램은 s 비트 세트가없는 다른 환경에서는 작동하지 않으므로 실행 가능한 해결책은 아니지만 문제가 발생한 위치를 가리키는 포인터가됩니다.
많은 베테랑 사용자가 S.O. 자신의 관심사/전문 분야 태그가 붙은 메시지 만보기 만하면 aix 태그를 유닉스로 변경하면 문제를 더 잘 볼 수 있습니다. 행운을 빕니다. – shellter
조언 주셔서 감사합니다, 나는 그것을 줄거야! 실제로 직장에서 일하는 사람들에게 묻는 동안 솔라리스에서도 비슷한 결과가 나왔다. 문제가 무엇이든 관계없이 AIX에만 해당되는 것은 아니다. – asc99c
ora 클라이언트가 생성 한 oradiag 디렉토리와 관련이있을 수 있습니다. 이름은'/ home/yourname/oradiag_yourname'입니다. –