I login as "oracle" user in unix machine. I am able to login as another user
in
sqlplus.
But when another unix user tries to use sqlplus he gets following
error:SQL*Plus: Release 8.1.7.0.0 - Production on Mon Oct 7 10:50:21 2002
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Enter user-name: hra
Enter password:
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
SVR4 Error: 2: No such file or directory
But if use /userid/passwd@service_name then it log in correctly. Also if I set
TWO_TASK sqlplus does not give error. But I am logging to directly server,
therfore without servicename I should be able to login to sqlplus.
Puzzle is that I am able to work fine when I login as unix user "ORACLE" but
get errors when try to login as another unix user. I also checked that
ORACLE_SID is in proper case. (ps -ef | grep SMON)
I want to login without using vNet8.
Originally posted by magvivek check out the permissions.
go to $ORACLE_HOME/bin
oracle executable in unix should be SHARED to different users.
Typing in 'ls -l oracle' should yield
-rwsr-xr-x oracle dba
because users have messages like :
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
and can use db via sqlnet then they have all needed permitions
on oracle-home/bin
Another thing:
check linux kernel parameters, maybe # of os processes/semaphores are few,
and when addition user try to create new unix process (oracle dedicated server) u have problem.
When you receive this error: make sure that you have the following variables set in /etc/system. If not, copy /etc/system to /etc/system.old then make your changes to /etc/system. The variable amounts change depending on your server.
This is from Solaris 2.8, Ultra 10, with 4 G of memory.
* For ORACLE:
* 1 meg = 1048576
* 200 meg = 209715200
* 4 gig = 4294967295
set shmsys:shminfo_shmmax=209715200
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=100
set shmsys:shminfo_shmseg=10
set semsys:seminfo_semmni=100
set semsys:seminfo_semmsl=256
set semsys:seminfo_semmns=256
set semsys:seminfo_semopm=100
set semsys:seminfo_semvmx=32767
To check the shared memory use the command (in Solaris)
ipcs -A
I have checked the /etc/system file and there are no entries for the
above, I assume that means the system is runing the defaults. What are
the defaults? I used the command sysdef and some of the above are listed
but, with the value 0. Does that mean the default is 0 or 0 represents
some default? How do I find out what the actual default values are?
Any help on this would be appreciated.
Responses:
-------------------
Response #1 -- Deepak_D_Wilson@notes.seagate.com
Hope this article helps you:-
The solaris 2.X kernel comes configured with defaults for shared memory
parameters which may not be enough for large applications, such as databases.
Many database manufacturers, such as Oracle, Sybase and Informix
require that shared memory parameters be increased to handle their
system. In general, any program which makes shared memory system
service calls will be affected.
Here are the shared memory parameters, what they are, what their default
values are, and what they represent. Please note that the maxima listed
here are based on values which will fit into their datatype, which is a
(4-byte) integer, and are not realistic. Realistic maxima are not easily
figured, as they must account for many factors, including the amount of
kernel memory required by everything else on the system, and the
amount of memory the system has.
shmmax 1048576 (1Meg) 2147482647
This is the maximum size of a shared memory segment, or the largest
value which can be requested of shmget(2). Setting this value high
does not hurt anything as the resource it controls is not
preallocated, but rather is allocated on demand.
shmmin 1 2147482647
This is the minimum size of a shared memory segment. There is no need
to change this from the default, as doing so will only break code
which allocates less than the new shmmin value allows.
shmseg 6 2147482647
This is the maximum number of shared memory segments per process. It
is used as a high limit, which is checked before another segment is
allocated. No resources are preallocated based on its value.
shmmni 100 2147482647
This is the maximum number of shared memory identifiers that can exist
systemwide. Every shared memory segment has an associated identifier,
returned from shmget(). Resources are preallocated based on this
value, (112 bytes of kernel memory per identifer) so don't set it too high.
Shared memory parameters are changed by editing the /etc/system file with
lines of the form:
set shmsys:shminfo_variable = value
For example:
set shmsys:shminfo_shmmni = 150
to change shmmni to 150.
After changing the /etc/system file, reboot the system to have it take
effect.
All InterProcess Communication (IPC) parameters, including those for shared
memory, are checked by doing the following:
$ sysdef -i
Look toward the bottom of the output, for something like:
*
* IPC Shared Memory
*
1048576 max shared memory segment size (SHMMAX)
1 min shared memory segment size (SHMMIN)
100 shared memory identifiers (SHMMNI)
6 max attached shm segments per process (SHMSEG)
The values at the left will reflect the values set in the /etc/system file.
If the values are zeros, load the shared memory module and try sysdef -i
again.
Do the following to load the shared memory module:
# modload /kernel/sys/shmsys
Response #2 -- Carlo Cosolo
Carlo suggested I call SecurID tech support, as he had problems with their
parameters and Sol 2.5.
Response #3 -- Ju-Lien Lim
man sysdef
Response #4 -- jyoung@educate.com
man ipcs
Response #5 -- Glenn Satchell - Uniq Professional Services
You can inspect the current value in th ekernel using adb:
# adb -k
physmem 3e40
shminfo_shmmni/D
symbol not found
^D
#
This means that this system is not using _any_ shared memory stuff as
the modules haven't even been loaded.
If you already have these values configured then just use the larger of
the two values (securid recommendation or current).
Response #6 -- "K.Ravi"
Hi,
In Solaris, the shared memory module (or any other driver/module for that
matter) is not loaded into memory unless some process needs it. To know the
defaults, run 'modload /kernel/sys/shmsys' as root and then run 'sysdef'. If
sysdef doesn't report all the values, try this:
# adb -k /dev/ksyms /dev/mem
Bookmarks