본문 바로가기
Server&OS/Linux

linux에서 sqlplus 실행시 libclntsh.so.11.1 permission 에러가 떨어질때

by 백룡화검 2012. 8. 28.

출처 : http://blog.naver.com/bahn1075/130083809759


환경 : Enterprise Linux Enterprise Linux Server release 5.4 (Carthage)
         Kernel 2.6.18-164.el5 on an x86_64

         Oracle 11g R2


oracle 설치를 마치고 sqlplus 를 처음 실행하려고 할때

sqlplus: error while loading shared libraries: /u01/oracle/oracle11/product/11.2.0/db_1/lib/libclntsh.so.11.1: cannot restore segment prot after reloc: Permission denied

이런 에러가 떨어질 때가 있다.
확인해보니 파일권한, 설정 기타등등 아무것도 문제가 없다. 난감하다.

해결은 간단하게 말해서 OS를 Permissive 모드로 운영하는 것이다.
(난 DBA고 리눅스도 이번에 처음 만지는 거라 저게 무슨 말인지는 모른다. 걍 sqlplus를 실행하기 위해 시키는대로 하는 것일뿐)

문서 ID 454196.1에서 알려주는 방법은 먼저 아래 command를 실행하고

/usr/sbin/semanage fcontext -a -t textrel_shlib_t $ORACLE_HOME/lib/libnnz11.so
/usr/sbin/semanage fcontext -a -t textrel_shlib_t $ORACLE_HOME/lib/libnque11.so
/usr/sbin/semanage fcontext -a -t textrel_shlib_t $ORACLE_HOME/lib/libclntsh.so.11.1

그 다음 아래 커맨드로 현재 OS mode를 확인한 뒤 Permissive 모드로 바꿔주라는 것이다.

Commands, as root:
======================
getenforce       (returns "Enforcing")
setenforce 0
getenforce       (returns "Permissive")