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
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 -
Unable to attach shared memory segment
Hi. I've installed a 8.1.5 database in Linux and configured DB_BLOCK_SIZE as 4K. My hardware is Pentium III 500 processor, 512 Mb memory size, 1.5 Gb swap memory and I'm trying to allocate 30000 blocks in database buffer cache (240 Mb), 50Mb in shared pool and processes=200. When I try to startup database it fails with ORA-27213 error. My kernel parameters are: SHMMAX=256 Mb, SHMMNI=1, SHMSEG=10, SHMMIN=1 and SEMMNI=100, SEMMSL > 210, SEMMNS > 410, SEMOPM=100, SEMMVX=32767.
What's wrong?Hi MYH,
First, check to see if the OS still has the old heap allocated.
You don't say your OS, but try using "ipcs":
Use the ipcs –pmb command to identify all held RAM memory segments, the then use the ipcrm –m command to release the RAM memory from UNIX.
For (non_AIX) Use the ipcs –sa command to display held semaphores and then use the ipcrm –s command to release the held semaphores for the instance
As we noted in Chapter 1, we can create a single command to terminate all Oracle processes associated with your hung database instance.
root> ps -ef|grep $ORACLE_SID| \
grep -v grep|awk '{print $2}'|xargs -i kill -9 {} We can then check for held memory using the ipcs –pmb command and remove the memory held by the database:
root> ipcs -pmb
IPC status from /dev/kmem as of Mon Sep 10 16:45:16 2001
T ID KEY MODE OWNER GROUP SEGSZ CPID LPIDHope this helps . . .
Donald K. Burleson
Oracle Press author
Author of "Oracle Tuning: The Definitive Reference"
http://www.rampant-books.com/book_2005_1_awr_proactive_tuning.htm -
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 -
ORA-29855 - Unable to allocate shared memory
Hi,
We are encountering troubles (unable to allocate shared memory) while indexes creation. We tried to increase the share_size_memory (actually 52 mb) but this had no effect on this error. The Oracle error code is ORA-29855.
The database is version 8.1.7, hosted on a Linux machine (RedHat 7.2) with 512 mb of memory. The code used for the index creation works fine on other machines (code from 9iAS Wireless installation) running with Windows 2000 as operation system.
Any help or comment will be appreciated.
Thanks,
Fabrice Clari.
The error message is:
java.sql.SQLException: ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-13200: internal error [ROWID:AAAGDwAAFAAAAvjAAA] in spatial indexing.
ORA-13206: internal error [] while creating the spatial index
ORA-13011: value is out of range
ORA-00600: internal error code, arguments: [kope2ucoll700], [], [], [], [], [], [], []
ORA-04031: unable to allocate 16396 bytes of shared memory ("large pool","unknown object","koh-kghu sessi","kolcalm coll")
ORA-06512: at "MDSYS.SDO_INDEX_METHOD", line 8
ORA-06512: at line 1Which portion of shared memory did you increase? The error indicates you need to increase large_pool_size. It seems you may also have other problems since you have several errors, and this only relates to the ORA-04031 error.
-
Ora-04031 unable to allocate shared memory
Hi Guru's
Could some one help me in finding the sql's/program which causing the ora-04031 unable to allocate 3896 bytes of shared memory.
any suggestion is highly apprciated
Kind RegardsYou may want to take look at:
ORA-04031: unable to allocate 4032 bytes of shared memory
>
ORA-04031 unable to allocate n bytes of shared memory ("string","string","string","string")
Cause: More shared memory is needed than was allocated in the shared pool.
Action: If the shared pool is out of memory, either use the DBMS_SHARED_POOL package to pin large packages, reduce your use of shared memory, or increase the amount of available shared memory by increasing the value of the initialization parameters SHARED_POOL_RESERVED_SIZE and SHARED_POOL_SIZE. If the large pool is out of memory, increase the initialization parameter LARGE_POOL_SIZE. -
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 -
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 -- -
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 -
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." -
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 -
Redhat: TT0837: Cannot attach data store shared-memory segment, error 12
Customer has two systems, one Solaris and one Linux. We have six DSNs with one dsn PermSize at 1.85G. Both OS systems are 32-bit. After migrating from TT6.0 to 11.2, I can not get replication working on the Linux system for the 1.85G dsn. The Solaris system is working correctly. I've been able to duplicate the issue in out lab also. If I drop the PermSize down to 1.0G, replication is started. I've tried changing multiple parameters including setting up HugePages.
What else could I be missing? Decreasing the PermSize is not an option for this customer. Going to a full 64-bit system is on our development roadmap but is at least a year away due to other commitments.
This is my current linux lab configuration.
ttStatus output for the failed Subscriber DSN and a working DynamicDB DSN. As you can see, the policy is set to "Always" but it has no Subdaemon or Replication processes running.
Data store /space/Database/db/Subscriber
There are no connections to the data store
Replication policy : Always
Replication agent is running.
Cache Agent policy : Manual
Data store /space/Database/db/DynamicDB
There are 14 connections to the data store
Shared Memory KEY 0x5602000c ID 1826586625 (LARGE PAGES, LOCKED)
Type PID Context Connection Name ConnID
Replication 88135 0x56700698 LOGFORCE 4
Replication 88135 0x56800468 REPHOLD 3
Replication 88135 0x56900468 TRANSMITTER 5
Replication 88135 0x56a00468 REPLISTENER 2
Subdaemon 86329 0x08472788 Manager 2032
Subdaemon 86329 0x084c5290 Rollback 2033
Subdaemon 86329 0xd1900468 Deadlock Detector 2037
Subdaemon 86329 0xd1a00468 Flusher 2036
Subdaemon 86329 0xd1b00468 HistGC 2039
Subdaemon 86329 0xd1c00468 Log Marker 2038
Subdaemon 86329 0xd1d00468 AsyncMV 2041
Subdaemon 86329 0xd1e00468 Monitor 2034
Subdaemon 86329 0xd2000468 Aging 2040
Subdaemon 86329 0xd2200468 Checkpoint 2035
Replication policy : Always
Replication agent is running.
Cache Agent policy : Manual
Summary of Perm and Temp Sizes of each system.
PermSize=100
TempSize=50
PermSize=100
TempSize=50
PermSize=64
TempSize=32
PermSize=1850 => Subscriber
TempSize=35 => Subscriber
PermSize=64
TempSize=32
PermSize=200
TempSize=75
[SubscriberDir]
Driver=/opt/SANTone/msc/active/TimesTen/lib/libtten.so
DataStore=/Database/db/Subscriber
AutoCreate=0
DurableCommits=0
ExclAccess=0
LockLevel=0
PermWarnThreshold=80
TempWarnThreshold=80
PermSize=1850
TempSize=35
ThreadSafe=1
WaitForConnect=1
Preallocate=1
MemoryLock=3
###MemoryLock=0
SMPOptLevel=1
Connections=64
CkptFrequency=300
DatabaseCharacterSet=TIMESTEN8
TypeMode=1
DuplicateBindMode=1
msclab3201% cat ttendaemon.options
-supportlog /var/ttLog/ttsupport.log
-maxsupportlogsize 500000000
-userlog /var/ttLog/userlog
-maxuserlogsize 100000000
-insecure-backwards-compat
-verbose
-minsubs 12
-maxsubs 60
-server 16002
-enableIPv6
-linuxLargePageAlignment 2
msclab3201# cat /proc/meminfo
MemTotal: 66002344 kB
MemFree: 40254188 kB
Buffers: 474104 kB
Cached: 19753148 kB
SwapCached: 0 kB
HugePages_Total:
2000
HugePages_Free:
2000
HugePages_Rsvd:
0
HugePages_Surp:
0
Hugepagesize:
2048 kB
## Before loading Subscriber Dsn
msclab3201# ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0xbc0101d6 1703411712 ttadmin 660 1048576 1
0x79010649 24444930 root 666 404 0
## After loading Subscriber Dsn
msclab3201# ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0xbc0101d6 1703411712 ttadmin 660 1048576 2
0x7f020012 1825964033 ttadmin 660 236978176 2
0x79010649 24444930 root 666 404 0
msclab3201#
msclab3201# sysctl -a | grep huge
vm.nr_hugepages = 2000
vm.nr_hugepages_mempolicy = 2000The size of these databases is very close to the limit for 32-bit systems and you are almost certainly running into address space issues given that 11.2 has a slightly larger footprint than 6.0. 32-bit is really 'legacy' nowadays and you should move to a 64-bit platform as soon as you are able. That will solve your problems. I do not think there is any other solution (other than reducing the size of the database).
Chris -
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 -
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)
Maybe you are looking for
-
Could I have damaged my hdd for unadequate ventilation?
Hi, anyone thinks I could have damaged the internal HDD of mi mid 2011 mac mini by having papers/magazines on top of it while using? my HDD is not responding or restoring either and windows PC does not recognizes it now that I have taken it out of th
-
Custom Exit to count No: of Employee based on User Input Date
Hi There, I have a requirement to Count the no: of Employees for each Position Id. This count value changes with time (Time-dependent). So, when the user Keys-in a date at the Query Execution-Prompt, it should take the date value and then count the n
-
Is it possible to filter domain value ranges when displaying a dropdown listbox in a table control according to the value of another field? For instance, - I have an ITAB with the fields FIELD1 and FIELD2 and a table control TABCON connected to it. -
-
I can't pre-order Madonna's Confessions on a Dance Floor and get the new single because each time it say that my credit balance is out of date and to say "ok" to refresh but it still allows me to buy other music so I am confused! and frustrated! Anyo
-
Undisclosed Recipients instead of Group Name
Hi, Created "Test Group" in address book. Dragged test names/addresses to it. Opened mail preferences and under Composing, unchecked "When sending to a group, show all member addresses." Composed email: typed Test Group in To field, typed in Subject