Shared Memory Segments
I am trying to install the Oracle 8.1.6 database that came with the Solaris 8 Intel package. In the installation it is necessary to set the Shared Memory Segments. An example of how to do this is found in the Solaris 8 System Admin Guide Vol 2 on page 465. There is a line:
"set shmsys:shinfo_shmmax = 268435456".
My question is how is "268435456" computed or what is it related to? Can someone give me a formula to calculate this from megabytes?
The Oracle documentation was also vague in this area. Their example simply gave a number also, which is a minimal amount required for the database. There was no explanation of how is was actually computed.
Thanks in advance.
George R. Sealy
ISS
Hi,
As per
http://docs.sun.com/ab2/coll.707.1/SOLTUNEPARAMREF/%40Ab2PageView/6980?DwebQuery=shmmax&oqt=shmmax&Ab2Lang=C&Ab2Enc=iso-8859-1
its unit is bytes. Therefore above value is 256Mbytes.
Thanks
Kalpesh
Similar Messages
-
Error message: ORA-27125: unable to create shared memory segment Linux-x86_
Hi,
I am doing an installtion of SAP Netweaver 2004s SR3 on SusE Linux 11/Oracle 10.2
But i am facing the follow issue in Create Database phase of SAPInst.
An error occurred while processing service SAP NetWeaver 7.0 Support Release 3 > SAP Systems > Oracle > Central System > Central System( Last error reported by the step :Caught ESAPinstException in Modulecall: ORA-27125: unable to create shared memory segment Linux-x86_64 Error: 1: Operation not permitted Disconnected
Please help me to resolve the issue.
Thanks,
NishithaHi Ratnajit,
I am too facing the same error but my ORACLE is not starting,
Here are my results of following command:
cat /etc/sysctl.conf
# created by /sapmnt/pss-linux/scripts/sysctl.pl on Wed Oct 23 22:55:01 CEST 2013
fs.inotify.max_user_watches = 65536
kernel.randomize_va_space = 0
##kernel.sem = 1250 256000 100 8192
kernel.sysrq = 1
net.ipv4.conf.all.promote_secondaries = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.neigh.default.gc_thresh1 = 256
net.ipv4.neigh.default.gc_thresh2 = 1024
net.ipv4.neigh.default.gc_thresh3 = 4096
net.ipv6.neigh.default.gc_thresh1 = 256
net.ipv6.neigh.default.gc_thresh2 = 1024
net.ipv6.neigh.default.gc_thresh3 = 4096
vm.max_map_count = 2000000
# Modified for SAP on 2013-10-24 07:14:17 UTC
#kernel.shmall = 2097152
kernel.shmall = 16515072
# Modified for SAP on 2013-10-24 07:14:17 UTC
#kernel.shmmax = 2147483648
kernel.shmmax = 67645734912
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
And here is mine Limit.conf File
cat /etc/security/limits.conf
#<domain> <type> <item> <value>
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
# Added for SAP on 2012-03-14 10:38:15 UTC
#@sapsys soft nofile 32800
#@sapsys hard nofile 32800
#@sdba soft nofile 32800
#@sdba hard nofile 32800
#@dba soft nofile 32800
#@dba hard nofile 32800
# End of file
# Added for SAP on 2013-10-24
# soft nproc 2047
# hard nproc 16384
# soft nofile 1024
# hard nofile 65536
@sapsys soft nofile 131072
@sapsys hard nofile 131072
@sdba soft nproc 131072
@sdba hard nproc 131072
@dba soft core unlimited
@dba hard core unlimited
soft memlock 50000000
hard memlock 50000000
Here is mine cat /proc/meminfo
MemTotal: 33015980 kB
MemFree: 29890028 kB
Buffers: 82588 kB
Cached: 1451480 kB
SwapCached: 0 kB
Active: 1920304 kB
Inactive: 749188 kB
Active(anon): 1136212 kB
Inactive(anon): 39128 kB
Active(file): 784092 kB
Inactive(file): 710060 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 33553404 kB
SwapFree: 33553404 kB
Dirty: 1888 kB
Writeback: 0 kB
AnonPages: 1135436 kB
Mapped: 161144 kB
Shmem: 39928 kB
Slab: 84096 kB
SReclaimable: 44400 kB
SUnreclaim: 39696 kB
KernelStack: 2840 kB
PageTables: 10544 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 50061392 kB
Committed_AS: 1364300 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 342156 kB
VmallocChunk: 34359386308 kB
HardwareCorrupted: 0 kB
AnonHugePages: 622592 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 67584 kB
DirectMap2M: 33486848 kB
Please let me know where i am going wrong.
Wat thing basically u check on /proc/meminfo command
Regards,
Dipak -
ORA-27123 unable to attach shared memory segment
Running oracle 8.1.5.0.0 on Redhat 6.0 with kernel 2.2.12, I keep getting the error ORA-27123 unable to attach shared memory segment when trying to startup and instance with an SGA > 150 MB or so. I have modified the shmmax and shmall kernel parameters via the /proc/sys interface. The relevant output of ipcs -l is below:
------ Shared Memory Limits --------
max number of segments = 128
max seg size (kbytes) = 976562
max total shared memory (kbytes) = 16777216
min seg size (bytes) = 1
This system has 2gb of physical memory and is doing nothing except oracle.
I changed the shmmax and shmall parameters after the instance was created, was their something I needed to do to inform Oracle of the changes?High JW,
i had the same problem on my installation.
The solution is written in the Oracle8i Administrator Refernece on page 1-26 "Relocating the SGA"
a) determine the valid adress range for Shared Memory with:
$ tstshm
in the output Lowest & Highest SHM indicate the valid adress range
b) run genksms to generate the file ksms.s
$ cd $ORACLE_HOME/rdbms/lib
$ $ORACLE_HOME/bin/genksms -b "sga_beginn_adress" > ksms.s
c) shut down any instance
d) rebuilt the oracle exe in $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk ksms.o
$ make -f ins_rdbms.mk ioracle
the result is a new oracle kernel that loads the SGA at the adress specified in "sga_beginn_adress".
regards
Gerhard -
Oracle 11g problem with creating shared memory segments
Hi, i'm having some problems with the oracle listener, when i'm trying to start it or reload it I get the follow error massages:
TNS-01114: LSNRCTL could not perform local OS authentication with the listener
TNS-01115: OS error 28 creating shared memory segment of 129 bytes with key 2969090421
My system is a: SunOS db1-oracle 5.10 Generic_144489-06 i86pc i386 i86pc (Total 64GB RAM)
Current SGA is set to:
Total System Global Area 5344731136 bytes
Fixed Size 2233536 bytes
Variable Size 2919238464 bytes
Database Buffers 2399141888 bytes
Redo Buffers 24117248 bytes
prctl -n project.max-shm-memory -i process $$
process: 21735: -bash
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
project.max-shm-memory
privileged 64.0GB - deny
I've seen that a solution might be "Make sure that system resources like shared memory and heap memory are available for LSNRCTL tool to execute properly."
I'm not exactly sure how to check that there is enough resources?
I've also seen a solution stating:
"Try adjusting the system-imposed limits such as the maximum number of allowed shared memory segments, or their maximum and minimum sizes. In other cases, resources need to be freed up first for the operation to succeed."
I've tried to modify the "max-sem-ids" parameter and set it to recommended 256 without any success and i've kind of run out of options what the error can be?
/RegardsI see, I do have the max-shm-ids quite high already so it shouldn't be a problem?
user.oracle:100::oracle::process.max-file-descriptor=(priv,4096,deny);
process.max-stack-size=(priv,33554432,deny);
project.max-shm-memory=(priv,68719476736,deny) -
Hi,
I found the thread Cannot attach data store shared-memory segment using JDBC (TT0837) but it can't help me out.
I encounter this issue in Windows XP, and application gets connection from jboss data source.
url=jdbc:timesten:direct:dsn=test;uid=test;pwd=test;OraclePWD=test
username=test
password=test
Error information:
java.sql.SQLException: [TimesTen][TimesTen 11.2.1.5.0 ODBC Driver][TimesTen]TT0837: Cannot attach data store
shared-memory segment, error 8 -- file "db.c", lineno 9818, procedure "sbDbConnect"
at com.timesten.jdbc.JdbcOdbc.createSQLException(JdbcOdbc.java:3295)
at com.timesten.jdbc.JdbcOdbc.standardError(JdbcOdbc.java:3444)
at com.timesten.jdbc.JdbcOdbc.standardError(JdbcOdbc.java:3409)
at com.timesten.jdbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:813)
at com.timesten.jdbc.JdbcOdbcConnection.connect(JdbcOdbcConnection.java:1807)
at com.timesten.jdbc.TimesTenDriver.connect(TimesTenDriver.java:303)
at com.timesten.jdbc.TimesTenDriver.connect(TimesTenDriver.java:159)
I am confused that if I use jdbc, there is no such error.
Connection conn = DriverManager.getConnection("url", "username", "password");
Regards,
NestaI think error 8 is
net helpmsg 8
Not enough storage is available to process this command.
If I'm wrong I'm happy to be corrected. If you reduce the PermSize and TempSize of the datastore (just as a test) does this allow JBOSS to load it?
You don't say whether this is 32bit or 64bit Windows. If it's the former, the following information may be helpful.
"Windows manages virtual memory differently than all other OSes. The way Windows sets up memory for DLLs guarantees that the virtual address space of each process is badly fragmented. Other OSes avoid this by densely packing shared libraries.
A TimesTen database is represented as a single contiguous shared segment. So for an application to connect to a database of size n, there must be n bytes of unused contiguous virtual memory in the application's process. Because of the way Windows manages DLLs this is sometimes challenging. You can easily get into a situation where simple applications that use few DLLs (such as ttIsql) can access a database fine, but complicated apps that use many DLLs can not.
As a practical matter this means that TimesTen direct-mode in Windows 32-bit is challenging to use for those with complex applications. For large C/C++ applications one can usually "rebase" DLLs to reduce fragmentation. But for Java based applications this is more challenging.
You can use tools like the free "Process Explorer" to see the used address ranges in your process.
Naturally, 64-bit Windows basically resolves these issues by providing a dramatically larger set of addresses." -
Hello, gurus!
I can connect this way:
oracle@mypc sqlplus sys/sys1@mydatabase
While trying to connect this way:
oracle@mypc sqlplus sys/sys1
I am getting an error:
ORA-01034: Oracle not available
ORA-27123: unable to attach to shared memory segment
Linux Error: 13 permission denied
What's wrong?
I am on LINUX RHEL 4 + Oracle 10.2.0.4
Thanks in advance.user21123, the init.ora and/or spfile have nothing to do with this issue. These errors means that you are attempting to connect to an Oracle instance that cannot be located. This can be because you have an environment error setting as the first response mentioned or before the target instance is not running as I mentioned.
Here is the error when the environment variables are set correctly but the database is not started.
JServer Release 9.2.0.6.0 - Production
$ print $ORACLE_SID $TWO_TASK
TRN1
$ sqlplus mpowel01
SQL*Plus: Release 9.2.0.6.0 - Production on Fri Aug 22 13:07:48 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Enter password:
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
IBM AIX RISC System/6000 Error: 2: No such file or directory
SP2-0157: unable to CONNECT to ORACLE after 3 attempts, exiting SQL*Plus
$ sqlplus /nolog
SQL*Plus: Release 9.2.0.6.0 - Production on Fri Aug 22 13:08:24 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
> connect / as sysdba
Connected to an idle instance.
> startup
ORACLE instance started.
Total System Global Area 114468624 bytes
<snip>
> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production
$ sqlplus mpowel01
SQL*Plus: Release 9.2.0.6.0 - Production on Fri Aug 22 13:11:58 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Enter password:
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production
TRN1 >HTH -- Mark D Powell -- -
TNS-01115: OS error 28 creating shared memory segment of 129 bytes
hi
we are operating a solaris v5.8 with 10 instances of 10.2.0.1 databases running. each with its own listener. the system shmmni=3600 and using ipcs all are being used causing the error TNS-01115: OS error 28 creating shared memory segment of 129 bytes to occur.
The kernal parameters were set to be the same as a similiar server we have with the same configuration and more databases and that box uses only 53 memory segments
Does anyone have any ideas as to what would make this happen?i wish i could. there was one db that was not needed so i just shut it down and stopped the listener. then took an ipcs -m reading. it returned 48 rows, instead of 3603 as it did when this particular db was up. in my haste i removed the db as it was not needed so i no longer have the logs to research. too bad on my part.
well at least i have a fix but have no idea why this happened. thank you for your responses. greatly appreciated. -
Locate shared memory segments outside of pool 10
Dear All,
When i am starting my sap through STARTSAP its showing started successfully .but i am not able to logon to the system
Oracle is coming up without any issues but No dialog process is running
Facing the below errors in start profile when i am running sappfpar check =pf= START_DVEBMGS00_SAPDEV
***ERROR: Size of shared memory pool 10 too small
================================================================
SOLUTIONS: (1) Locate shared memory segments outside of pool 10
with parameters like: ipc/shm_psize_<key> =0
SOLUTION: Increase size of shared memory pool 10
with parameter: ipc/shm_psize_10 =56000000
***ERROR: Size of shared memory pool 40 too small
================================================================
SOLUTIONS: (1) Locate shared memory segments outside of pool 40
with parameters like: ipc/shm_psize_<key> =0
SOLUTION: Increase size of shared memory pool 40
with parameter: ipc/shm_psize_40 =62000000
I tired the above by giving recommended values 56000000 and 6200000 to ipc/shm_psize_10 abd ipc/shm_psize_40 respectively.but its not working.
My O/s is Linux suse9.0 and oracle 9 i
Is this is related to sysctl.conf ???
help !
RegardsDear Manoj,
my ERP2005 EhP4 Unicode system has
ipc/shm_psize_10 = 156000000
ipc/shm_psize_40 = 132000000
try these values, they are at least high enough.
Regarding your question with sysctl.conf. If the error is "shm_psize too small", then it has probably nothing to do with sysctl.conf.
Thanks,
Hannes -
Multiple shared memory segments per instance (redhat AS2.1)
We are having some trouble with oracle 9.2.0 on redhat linux advanced server. ipcs shows that quite a lot of shm segments are allocated for a single instance, which is quite strange since it should be one. Did anyone out there encounter similar problems ?
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 12845056 oracle 640 4194304 13
0x00000000 12877825 oracle 640 33554432 13
0x00000000 12910594 oracle 640 25165824 13
0x00000000 12943363 oracle 640 20971520 13
0x00000000 12976132 oracle 640 29360128 13
0x00000000 13008901 oracle 640 29360128 13
0x00000000 13041670 oracle 640 20971520 13
0x00000000 13074439 oracle 640 33554432 13
0xe7f3c788 13107209 oracle 640 33554432 65The maximum size of the shared memory segment is too small. Since Oracle cannot fit the SGA into one large shared memory segment, it allocates several shared memory segments. The maximum size of your shared memory segments is around 32 MB.
To set the maximum size for a shared memory segment, see http://www.puschitz.com/TuningLinuxForOracle.shtml#SettingSHMMAXParameter
Werner -
JLaunchInitAdministration: Can't attach to shared memory segment 69
Hi ,
I am trying to bring up a EP system , and i am getting the following error in my dev_sdm and dev_dispatcher logs ...
[Thr 1] Wed Nov 10 10:30:25 2010
[Thr 1] JLaunchRequestQueueInit: create named pipe for ipc
[Thr 1] JLaunchRequestQueueInit: create pipe listener thread
[Thr 515] WaitSyncSemThread: Thread 515 started as semaphore monitor thread.
[Thr 258] JLaunchRequestFunc: Thread 258 started as listener thread for np messages.
[Thr 1] *** ERROR => JLaunchInitAdministration: Can't attach to shared memory segment 69 (rc = 7 locking (semaphore/mutex) error) [jlnchxx_mt.c 926]
[Thr 1] *** ERROR => can't initialize JControl Administration [jlnchxx_mt.c 375]
[Thr 1] SigISetIgnoreAction : SIG_IGN for signal 20
[Thr 1] *** ERROR => JsfCloseShm: FiDetachIndex(SESSION) failed (rc = 6 invalid argument) [jsfxxshm_mt. 1243]
[Thr 1] *** ERROR => JsfCloseShm: FiDetachIndex(ALIAS) failed (rc = 6 invalid argument) [jsfxxshm_mt. 1250]
[Thr 1] *** ERROR => JsfCloseShm: FiDetachIndex(SERVICE) failed (rc = 6 invalid argument) [jsfxxshm_mt. 1257]
[Thr 1] *** ERROR => JsfCloseShm: ShmDelete(69) failed (rc = 2 invalid function argument) [jsfxxshm_mt. 1283]
[Thr 1] JLaunchCloseProgram: good bye (exitcode = -1)
It would be nice if someone can provide we some direction how to solve this ...
(btw i have already done cleanipc ... it didn't help )
Regards,
Neelit might help.
but mine is a EP system (Java Only) so not sure if its applicable in my case
You should always have latest kernel on your system , irrespective of Runtime Engine (ABAP or JAVA).
So go ahead and upgrade kernel to latest available for your release.
Regards, -
Getting Error : Cannot attach data store shared-memory segment,
HI Team,
I am trying to integrate Timesten IMDB in my application.
Machine details
Windows 2003, 32 bit, 4GB RAM.
IMDB DB details
Permanent size 500MB, temp size 40MB.
If I try to connect to database using ttisql it get connected. But If I try to connect in my Java application I get following exception.
java.sql.SQLException: [TimesTen][TimesTen 11.2.1.3.0 ODBC Driver][TimesTen]TT0837: Cannot attach data store shared-memory segment, error 8 -- file "db.c", lineno 7966, procedure "sbDbCreate"
at com.timesten.jdbc.JdbcOdbc.createSQLException(JdbcOdbc.java:3269)
at com.timesten.jdbc.JdbcOdbc.standardError(JdbcOdbc.java:3418)
at com.timesten.jdbc.JdbcOdbc.standardError(JdbcOdbc.java:3383)
at com.timesten.jdbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:787)
at com.timesten.jdbc.JdbcOdbcConnection.connect(JdbcOdbcConnection.java:1800)
at com.timesten.jdbc.TimesTenDriver.connect(TimesTenDriver.java:303)
at com.timesten.jdbc.TimesTenDriver.connect(TimesTenDriver.java:159)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:207)
Maximum permanent size that works with Java application is 100MB. But it would not be enough for our use.
Could anybody let me know the way to resolve/reason for getting this error? Any response would be appreciated.
Thanks in Advance,
Regards,
atulThis is a very common problem on 32-bit Windows. A TimesTen datastore is a single region of 'shared memory' allocated as a shared mapping from the paging file. In 'direct mode', when the application process(in your case either ttIsql or the JVM) 'connects' to the datastore the datastore memory region is mapped into the process address space. In order for this to happen it is necessary for there to be a free region in the process adddress space that is at least the size of the datastore. This region must be contiguous (i.e. a single region). Unfortunately, the process memory map in 32-bit Windows is typically highly fragmented and the more DLLs that a process uses the worse this is. Also, JVMs typically use a lot of memory, depending on configuration.
Your options to solve this are really limited to:
1. Significantly reduce the memory used by the JVM (may not be possible).
2. Use a local client/server connection from Java instead of a direct mode connection. To minismise the performance overhead make sure you use the optimised ShmIpc connectivity rather than TCP/IP. Even with this there is likely to be a >50% reduction in performance compared to direct mode.
3. Switch to 64-bit Windows, 64-bit TimesTen and 64-bit Java. Even without adding any extra memory to your machine thsi will very likely fix the problem.
Option (3) is by far the best one.
Regards,
Chris -
Shared memory segment: function not implemented
Hi!
I tried to install Oracle8 on a dual pentium II / 233 system
running Suse 6.0 (kernel 2.2.1, glibc6)
Everything went fine, until I got the message
"Database creation failed, see logfile"
The logfile /u01/app/oracle/products/8.0.5/orainst/install.log
tells me the following:
- Entering database actions section.
- Creating initORCL.ora file
- Creating crdb2ORCL.sql database catalog and file creation
script
- ERROR: The 'CREATE DATABASE' statement for the ORCL
database failed.
egrep failed to find 'ORA-' error in the file:
/u01/app/oracle/admin/ORCL/create/crdbORCL.lst
/u01/app/oracle/admin/ORCL/create/crdORCL.lst tells me:
Connected.
ORA-27125: unable to create shared memory segment
Linux Error: 38: Function not implemented
create database "ORCL"
ORA-01034: ORACLE not available
Disconnected.
So, I guess it3s something wrong with the kernel. I did the
following:
changed in /usr/src/linux/include/asm/shmparam.h:
#define SHMIDX_BITS 16 (was 15)
#define SHMMNI 100 (was (1<<_SHM_ID_BITS)) #define SHMSEG
10 (was SHMSEG SHMMNI)
checked /usr/src/linux/include/linux/sem.h:
#define SEMMNI 128
#define SEMMSL 32
#define SEMMNS (SEMMNI*SEMMSL)
Compiled new kernel, rebooted, verified that the right kernel
was loaded, installed oracle new, but it still doesn3t work.
Have I missed anything ?
thanks
Frank
nullHey, I ran into this problem too. Look and see if any db
processes failed to die last time you stopped oracle. I found a
ps_mon daemon still going when the database was down. I killed
it, restarted the database and everything was fine.
StE (guest) wrote:
: Frank Schmitt (guest) wrote:
: : ORA-27125: unable to create shared memory segment
: : Linux Error: 38: Function not implemented
: : create database "ORCL"
: : Compiled new kernel, rebooted, verified that the right kernel
: : was loaded, installed oracle new, but it still doesn3t work.
: Silly question, but did you check you had enabled SysV IPC
when
: you configured the kernel?
: -michael
null -
Max attached shared memory segments
Hi all.
I have a client/server model using SunOs 5.8 in which the server creates one shared memory segment in a single process and attaches that segment to all connected clients' shared memory.
My question is how many clients can I support with this model? The maximum # of shared memory segments that can be attached is 6 per process according to sysdef info, but so far I have attached 8 ( meaning I have connected 8 clients to the server and have attached the shared memory of the server to each of the eight clients' shared memory). Therefore, I have 8 attached shared memory segments to the server's shared memory segment, which is more than 6. The system value of SHMSEG has not been changed. Any info would be appreciated.
Thanks
Roy Park
[email protected]I am not sure if I am reading your setup correctly, but it sounds like you may only be allocating one shared memory segment. That one shared memory segment is then attached by all of the clients. If that is the case, you can attach a virtually unlimited number of clients.
The shmseg parameter limits the number of segments which can be attached by a single process. In other words if the clients each create a shared memory segment and the server attaches to all of those, then the limit should have been reached. I would like to see a little more information if that is the case. (ipcs output to start)
Alan
Sun Developer Technical Support
http://www.sun.com/developers/support -
Cannot attach data store shared-memory segment using JDBC (TT0837)
I'm currently evaluating TimesTen during which I've encountered some problems.
All of the sudden my small Java app fails to connect to the TT data source.
Though I can still connect to the data source using ttisql.
Everything worked without problems until I started poking around in the ODBC administrator (Windows 2K).
I wanted to increase permanent data size so I changed some of the parameters.
After that my Java app fails to connect with the following message:
DriverManager.getConnection("jdbc:timesten:direct:dsn=rundata_tt60;OverWrite=0;threadsafe=1;durablecommits=0")
trying driver[className=com.timesten.jdbc.TimesTenDriver,com.timesten.jdbc.TimesTenDriver@addbf1]
SQLException: SQLState(08001) vendor code(837)
java.sql.SQLException: [TimesTen][TimesTen 6.0.4 ODBC Driver][TimesTen]TT0837: Cannot attach data store shared-memory segment, error 8 -- file "db.c", lineno 8846, procedure "sbDbConnect()"
The TT manual hasn't really provided any good explanation what the error code means.
Obviusly I'v already tried restoring the original ODBC parameters without any luck.
Ideas..anyone?
/PeterPeter,
Not sure if you have resolved this issue or not. In any case, here are some information to look into.
- On Windows 32-bit, the allocation of shared data segment doesn't work the same way like on Unix and Linux. As a result, the maximum TimesTen database size one can allocate is much smaller on the Windows platform than on other platforms.
- Windows error 8 means ERROR_NOT_ENOUGH_MEMORY: not enough storage is available to process this command.
- TimesTen TT0837 says the system was unable to attach a shared memory segment during a data store creation or data store connection operation.
- What was the largest successful perm-size and temp-size you used when allocating the TimesTen database?
* One explanation for why you were able to connect using ttIsql is that it doesn't use much of the DLLs, whereas your Java application typically has a lot more DLLs.
* As a troubleshooting step, you can try reduce your Temp-size to a very small size and just see if you can connect to the data store. Eventually, you may need to reduce your perm-size to get Windows to fit the shared data segment in the process space.
By the way the TimesTen documentation has been modified to document this error as follows:
Unable to attach to a shared memory segment during a data store creation or data store connection operation.
You will receive this error if a process cannot attach to the shared memory segment for the data store.
On UNIX or Linux systems, the shmat call can fail due to one of:
- The application does not have access to the shared memory segment. In this case the system error code is EACCESS.
- The system cannot allocate memory to keep track of the allocation, or there is not enough data space to fit the segment. In this case the system error code is ENOMEM.
- The attach exceeds the system limit on the number of shared memory segments for the process. In this case the system error code is EMFILE.
It is possible that some UNIX or Linux systems will have additional possible causes for the error. The shmat man page lists the possibilities.
On Windows systems, the error could occur because of one of these reasons:
- Access denied
- The system has no handles available.
- The segment cannot be fit into the data section
Hope this helps.
-scheung -
Cannot create data store shared-memory segment error
Hi,
Here is some background information:
[ttadmin@timesten-la-p1 ~]$ ttversion
TimesTen Release 11.2.1.3.0 (64 bit Linux/x86_64) (cmttp1:53388) 2009-08-21T05:34:23Z
Instance admin: ttadmin
Instance home directory: /u01/app/ttadmin/TimesTen/cmttp1
Group owner: ttadmin
Daemon home directory: /u01/app/ttadmin/TimesTen/cmttp1/info
PL/SQL enabled.
[ttadmin@timesten-la-p1 ~]$ uname -a
Linux timesten-la-p1 2.6.18-164.6.1.el5 #1 SMP Tue Oct 27 11:28:30 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
[root@timesten-la-p1 ~]# cat /proc/sys/kernel/shmmax
68719476736
[ttadmin@timesten-la-p1 ~]$ cat /proc/meminfo
MemTotal: 148426936 kB
MemFree: 116542072 kB
Buffers: 465800 kB
Cached: 30228196 kB
SwapCached: 0 kB
Active: 5739276 kB
Inactive: 25119448 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 148426936 kB
LowFree: 116542072 kB
SwapTotal: 16777208 kB
SwapFree: 16777208 kB
Dirty: 60 kB
Writeback: 0 kB
AnonPages: 164740 kB
Mapped: 39188 kB
Slab: 970548 kB
PageTables: 10428 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 90990676 kB
Committed_AS: 615028 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 274804 kB
VmallocChunk: 34359462519 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
extract from sys.odbc.ini
[cachealone2]
Driver=/u01/app/ttadmin/TimesTen/cmttp1/lib/libtten.so
DataStore=/u02/timesten/datastore/cachealone2/cachealone2
PermSize=14336
OracleNetServiceName=ttdev
DatabaseCharacterset=WE8ISO8859P1
ConnectionCharacterSet=WE8ISO8859P1
[ttadmin@timesten-la-p1 ~]$ grep SwapTotal /proc/meminfo
SwapTotal: 16777208 kB
Though we have around 140GB memory available and 65GB on the shmmax, we are unable to increase the PermSize to any thing more than 14GB. When I changed it to PermSize=15359, I am getting following error.
[ttadmin@timesten-la-p1 ~]$ ttIsql "DSN=cachealone2"
Copyright (c) 1996-2009, Oracle. All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.
connect "DSN=cachealone2";
836: Cannot create data store shared-memory segment, error 28
703: Subdaemon connect to data store failed with error TT836
The command failed.
Done.
I am not sure why this is not working, considering we have got 144GB RAM and 64GB shmmax allocated! Any help is much appreciated.
Regards,
RajThose parameters look ok for a 100GB shared memory segment. Also check the following:
ulimit - a mechanism to restrict the amount of system resources a process can consume. Your instance administrator user, the user who installed Oracle TimesTen needs to be allocated enough lockable memory resource to load and lock your Oracle TimesTen shared memory segment.
This is configured with the memlock entry in the OS file /etc/security/limits.conf for the instance administrator.
To view the current setting run the OS command
$ ulimit -l
and to set it to a value dynamically use
$ ulimit -l <value>.
Once changed you need to restart the TimesTen master daemon for the change to be picked up.
$ ttDaemonAdmin -restart
Beware sometimes ulimit is set in the instance administrators "~/.bashrc" or "~/.bash_profile" file which can override what's set in /etc/security/limits.conf
If this is ok then it might be related to Hugepages. If TT is configured to use Hugepages then you need enough Hugepages to accommodate the 100GB shared memory segment. TT is configured for Hugepages if the following entry is in the /u01/app/oracle/EXALYTICS_MWHOME/TimesTen/tt1122/info/ttendaemon.options file:
-linuxLargePageAlignment 2
So if configured for Hugepages please see this example of how to set an appropriate Hugepages setting:
Total the amount of memory required to accommodate your TimesTen database from /u01/app/oracle/EXALYTICS_MWHOME/TimesTen/tt1122/info/sys.odbc.ini
PermSize+TempSize+LogBufMB+64MB Overhead
For example consider a TimesTen database of size:
PermSize=250000 (unit is MB)
TempSize=100000
LogBufMB=1024
Total Memory = 250000+100000+1024+64 = 351088MB
The Hugepages pagesize on the Exalytics machine is 2048KB or 2MB. Therefore divide the total amount of memory required above in MB by the pagesize of 2MB. This is now the number of Hugepages you need to configure.
351088/2 = 175544
As user root edit the /etc/sysctl.conf file
Add/modify vm.nr_hugepages= to be the number of Hugepages calculated.
vm.nr_hugepages=175544
Add/modify vm.hugetlb_shm_group = 600
This parameter is the group id of the TimesTen instance administrator. In the Exalytics system this is oracle. Determine the group id while logged in as oracle with the following command. In this example it’s 600.
$ id
$ uid=700(oracle) gid=600(oinstall) groups=600(oinstall),601(dba),700(oracle)
As user root edit the /etc/security/limits.conf file
Add/modify the oracle memlock entries so that the fourth field equals the total amount of memory for your TimesTen database. The unit for this value is KB. For example this would be 351088*1024=359514112KB
oracle hard memlock 359514112
oracle soft memlock 359514112
THIS IS VERY IMPORTANT in order for the above changes to take effect you to either shutdown the BI software environment including TimesTen and reboot or issue the following OS command to make the changes permanent.
$ sysctl -p
Please note that dynamic setting (including using 'sysctl -p') of vm.nr_hugepages while the system is up may not give you the full number of Hugepages that you have specified. The only guaranteed way to get the full complement of Hugepages is to reboot.
Check Hugepages has been setup correctly, look for Hugepages_Total
$ cat /proc/meminfo | grep Huge
Based on the example values above you would see the following:
HugePages_Total: 175544
HugePages_Free: 175544
Maybe you are looking for
-
Oracle 8.1.7 on Red Hat 7 works (here's how)
Thanks to Richard Rankin's post, I was able to get Oracle 8.1.7 working with Red Hat 7.0. It even works with the 2.4.0 kernel. Since there have been so many posts regarding this problem, I have copied Mr. Rankin's post again below: 1) Load the Redhat
-
After I edit in Word , can I convert it back to PDF?
-
My ibook wound't take my password again!
Hi everyone, I have had my computer for 21 months now, and it's been working pretty well without a problem, but 2 days ago, I switched it off and on again and input the normal password to access it but wouldn't work. I'm pretty sure the password is c
-
Unable to add special characters such as # and ( in headers of Report in Text format
Hi, I am working on developing a report that will be exported to tab delimited text format from SSRS. The Report has been developed and it is getting exported to tab delimited text format. However, special characters in the heading are getting trimme
-
Reinit/Reload for added/changed fields in PO line item and GL ODS
Hi all, Probably this is usual process in SAP BW. I have changed 2Lis_item data source and added few fields in 0Pur_o1 ods. In ods there is data from 2006 to till date. Now I have to move my changes to Production system. I have to delete and reload c