2017-04-25 7 views
0

호스트에서 SID 목록을 조회하려고합니다. Oracle 용 호스트, 포트, 사용자 이름 및 암호가 있으며 컴퓨터에서 SID를 찾으려합니다.Java 응용 프로그램에서 컴퓨터의 SID 목록을 얻는 방법

컴퓨터에 로그온하여 "lsnrctl status"를 사용하여 SID를 반환 할 수 있지만 Java 응용 프로그램을 통해 실행하려고하면 실패합니다. 이는 오라클 버전입니다 : 10g 오라클 기본에서

보안 ON이 있습니다 의미 현지 OS 인증 그 문제 LSNRCTL는 청취자에게 명령 할 수있는 리스너를 시작 로컬 OS 사용자입니다. 청취자는 다른 사용자에게 답변을 거부합니다.

+0

이 작업을 수행하는 방법은 확실하지 않습니다. 내 Java 응용 프로그램에서 JDBC 세션을 생성하고 내가 얻을 수있는 것을 확인하려고합니다 - 어떤 제안이 도움이 될 것입니다! –

+0

포스터와 J. Chomel에 사과드립니다. 물론 ORACLE_SID를 찾고 있습니다. $ ORATAB에서 찾을 수 있습니다. 일반적으로/etc/oratab 또는/var/opt/oracle/oratab에 있습니다. 미안 - 내 두뇌 동결 완전. – sandman

답변

0

이렇게하는 방법을 찾았습니다. 청취자가 로컬 OS 인증 또는 암호를 통해 인증 된 사용자와 대화 할 수있는 암호를 청취자에게 제공 할 수 있습니다. Java 응용 프로그램은 암호를 사용하여 STATUS connect_data의 일부로 암호를 전달함으로써 인증 할 수 있습니다.

출처 : http://www.dba-oracle.com/t_listener_password_security_lsnrctl.htm

0

죄송합니다. ORACLE_SID와 (와) 세션 ID (SID)가 혼동합니다.

ORACLE_SID는 일반적으로/etc/oratab 또는/var/opt/oracle/oratab에있는 $ ORATAB에 있습니다. 응용 프로그램을 실행하는 사용자가 원하는 일을 할 수없는 경우

+1

세션 ID를 [ORACLE_SID] (http://www.orafaq.com/wiki/ORACLE_SID)와 혼동하지 않으시겠습니까? –

+0

그가 신탁을 원한 것 같습니까? 그가 프로세스 ID를 원한다면, 그 스크립트에도 존재합니다. 다른 세션 ID가 무엇인지 모르시겠습니까? – sandman

+0

서버의 Oracle 시스템 ID는이 서버에서 실행중인 데이터베이스의 목록입니다. 이 쿼리에서 얻을 수있는 현재 데이터베이스의 프로세스 ID와는 다른 것입니다. –

1

, 당신은

  • 조금 cron job 모든 이제 파일에 lsnrctl status의 결과를 수출해야하고
  • 이 읽기 java 응용 프로그램의 파일

또 다른 해결책은 java Unix 사용자가이 명령을 수행하도록 허용하는 것입니다. sudo -u oracle lsnrctl status; 이 경우 su이 작동하는 방식이나 sysadmin에서 조작하는 방법에 대한 약간의 연구가 필요합니다.