2012-05-08 3 views
0

root 사용자로 Oracle Listner를 시작하고 싶습니다. 오라클 사용자로서 리스너를 시작할 수 있습니다. 하지만 루트 사용자로 시작하지 않습니다. root 사용자로 상태를 확인하고 중지 할 수 있습니다. 이 메시지에 따라 부여합니다 루트로루트 사용자로 Oracle Listener를 시작할 수 없습니다.

나는 리스너를 시작할 때 : -

# lsnrctl start 

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 08-MAY-2012 15:08:11 

Copyright (c) 1991, 2005, Oracle. All rights reserved. 

Starting /opt/oracle/102/bin/tnslsnr: please wait... 

/opt/oracle/102/bin/tnslsnr: error while loading shared libraries: libclntsh.so.10.1: cannot open shared object file: No such file or directory 
TNS-12547: TNS:lost contact 
TNS-12560: TNS:protocol adapter error 
    TNS-00517: Lost contact 
    Linux Error: 32: Broken pipe 

루트 사용자로 리스너를 시작하는 저를 도와주세요.

+2

그냥하지 마세요. oracle 사용자로 시작하십시오. – Mat

+0

하지만 그 요구 사항 만 있습니다. 루트로 시작하고 싶습니다. 런타임에 내가 오라클 사용자를 가질 수 있도록 모든 대안이 있습니다. – Anjali

+1

그 요구 사항은 어디서 발생합니까? 그 이유는 무엇입니까? – Mat

답변

2

루트 사용자로 Oracle을 실행하면 보안 상 위험 할 수 있습니다. 루트 사용자로 rdbms 및/또는 리스너를 실행하는 단일 이유는 없습니다. 설치를 완전히 엉망으로 만들지 않으면 root로 실행할 수도 없습니다.

root 사용자로 리스너를 실행해야하는 경우 환경 변수가 올바른지 확인하십시오.

Linux 용
# export ORACLE_HOME=/opt/oracle/102 
    # export PATH=$PATH:$ORACLE_HOME/bin 

    # cd $ORACLE_HOME/bin 
    # chmod u+s lsnrctl 
    # lsnrctl start 

LSNRCTL : 귀하의 경우에는 버전 10.2.0.5.0 - 생산에 09 5 월 2012 20시 51분 7초

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

Starting /data/oracle/base/product/se_10205_s/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 10.2.0.5.0 - Production System parameter file is /data/oracle/base/admin/network/listener.ora Log messages written to /data/oracle/base/product/se_10205_s/network/log/listener.log Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 10.2.0.5.0 - Production Start Date
09-MAY-2012 20:51:09 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /data/oracle/base/admin/network/listener.ora Listener Log File /data/oracle/base/product/se_10205_s/network/log/listener.log Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER))) The listener supports no services The command completed successfully

# lsnrctl stop 

LSNRCTL for Linux: Version 10.2.0.5.0 - Production on 09-MAY-2012 20:52:16

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))) TNS-01190: The user is not authorized to execute the requested listener command

하지 마십시오 이 작업을 수행; 만약 당신이 실수를 저 지르면. root가 아닌 dba 그룹의 구성원 인 다른 사용자를 선택하십시오.

BTW :

Started with pid=5215 Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))) TNS-12555: TNS:permission denied TNS-12560: TNS:protocol adapter error
TNS-00525: Insufficient privilege for operation Linux Error: 1: Operation not permitted

문제가 있었다 - 분명 - /var/tmp/.oracle/sLISTENER 루트에 의해 소유되었다 :이 작은 데모 후 나는 약간의 문제를 해결했다. 올바른 사용자에게 약간의 도구가 도움이되었습니다.

+0

도움에 감사드립니다 ... 나는 이것을 이해했다. 청취자를 시작하는 스크립트가 하나 있다는 것을 알고 싶습니다. 그 스크립트는 루트 권한을가집니다. 오라클에 대한 권한을 변경하면 리스너가 성공적으로 시작됩니다. 그렇지 않으면 실패합니다. 그 스크립트에 suid를 주면 작동할까요, 안 되겠습니까? for - chmod u + s abc.sh – Anjali

+0

아니요, 스크립트의 setuid는 무시됩니다. Setuid는 바이너리에서만 작동합니다. oracle에 su를 수행하는 $ ORACLE_HOME/bin 앞에있는 루트 PATH에있는 lsnrctl 스크립트를 사용할 수 있습니다. –

관련 문제