Of late, in one of our test unix (Sun Solaris) boxes, a database user is trying to connect to the database, but getting an error “ORA-27123: unable to attach to shared memory segment” with permission denied issue.
Initially we thought that there might be an issue with SGA memory area or may be an issue with the shared memory segments and semaphores for the instance allocated. But later we found that the permission on ORACLE_HOME directory got changed accidentally with the full permission.
Here are our findings:
$ sqlplus testusr/password@testdbAs per Oracle Error Messages:
SQL*Plus: Release 10.2.0.2.0 - Production on Tue Jan 27 20:53:44 2009
Copyright (c) 1982, 2005, Oracle. All Rights Reserved.
ORA-01034: ORACLE not available
ORA-27123: unable to attach to shared memory segment
SVR4 Error: 13: Permission denied
Error: ORA-27123: unable to attach to shared memory segmentCheck the oracle executable file permission.
Cause: shmat() call failed
Action: check permissions on segment, contact Oracle support
$ cd $ORACLE_HOME/binHere the oracle file permission has -rwxrwxr-x i.e. 775, but this file must have the permission -rwsr-s- -x i.e. 6751
$ ls -l oracle
-rwxrwxr-x 1 oracle dba 119582976 Feb 3 2008 oracle
Change the permissions for oracle file.
$ cd $ORACLE_HOME/binAfter changing the permissions on oracle executable file, all the users are now able to connect to the database without any errors.
$ chmod 6751 oracle
$ ls -l oracle
-rwsr-s--x 1 oracle dba 119582976 Feb 3 2008 oracle
Note: For further information refer the Oracle Metalink Note ID: 1011995.6 Subject: COMMON ORACLE PERMISSION PROBLEMS ON UNIX.