Linux x86_64 - Oracle 64 bit - Will not start using > 3.7 GB

Hi Guys,

Any feedback on this is welcome …

Problem Description: Recently installed RAC 10.2.0.4 installation on Linux system - Linux 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:56:44 EST 2007 x86_64 x86_64 x
86_64 GNU/Linux
Database/Instances start ok at SGA_MAX_SIZE <= 3.7GB. Got to 4GB out of memory error.(ORA-27102)
Appears to be adhering to the rules of a Linux 32bit installation instead of 64bit installation.

ukapx100_$ cat /proc/meminfo
MemTotal: 32908464 kB
MemFree: 29858660 kB

Thank you

Steve

Yeah, bummer. Seen that, been bitten! :wink:

If you have a 64-bit distro, it beggars belief that it might not have the >4G kernel option enabled, but you could try an Ubuntu live CD just to be on the safe side. My previous experience of this issue came down to the BIOS.

From memory (!) you will have a BIOS option that related to “memory holes” (unless there is something ‘more’ obvious relating to memory mapping) , whatever it’s set to, reverse it and then have a crack.

fyi; again this is from memory, you should be able to get up to 64G on a 32bit system, provided the correct setting it enabled in the kernel. On 32 bit systems I think it’s disabled by default because of the overheads it introduces. (in terms of memory usage and processor cycles)

If the BIOS is recognising all of your memory, and you’re using grub legacy, check your /boot/grub/menu.lst for a line with something like ‘mem=4G’… The line ‘should’ appear only once… Remove the ‘4G’ so it reads ‘mem=’ then update grub:

sudo update-grub

and reboot

If you’re using Grub2…You’re probably as ‘lost’ as I am :wink:

Mmm, Ubuntu 64-bit has this enabled by default … I would sort of assume any sensible 64 version of Linux would do the same … but you would definitely need this for many (most) 32 bit distro’s running on a machine with > 4G RAM. (I’m still betting it’s the BIOS setting … :wink: )

I’m with you… Probably the BIOS, I just read a few people had found this line ‘unexpectedly’ in menu.lst in 64bit Linux, so thought it wouldn’t hurt to check.

Semaphore and Shared Memory

ukapx100_$ su - root
Password:
[root@ukapx100 ~]# /sbin/sysctl -a | grep sem
kernel.sem = 250 32000 100 128
[root@ukapx100 ~]# /sbin/sysctl -a | grep shm
vm.hugetlb_shm_group = 0
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmax = 1073741824 ===> See Metalink 567506.1
[root@ukapx100 ~]#

Attempt to start Idle Instance local SQLPlus

ukapx100_$ echo $ORACLE_HOME
/u001/app/oracle/product/10.2.0/db_1
ukapx100_$ which sqlplus
/u001/app/oracle/product/10.2.0/db_1/bin/sqlplus
ukapx100_$ sqlplus “/ as sysdba”

SQL*Plus: Release 10.2.0.4.0 - Production on Wed Mar 24 19:46:00 2010

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

Connected to an idle instance.

SQL> startup
ORA-27102: out of memory
Linux-x86_64 Error: 12: Cannot allocate memory
Additional information: 1
Additional information: 4096006
SQL> exit
Disconnected

Attempt to start idle Instance using srvctl

ukapx100_$ srvctl start database -d Q0094X
ukapx100_$ srvctl status instance -d Q0094X -i Q0094X1
Instance Q0094X1 is running on node ukapx100
ukapx100_$

ukapx100_$ sqlplus “/ as sysdba”

SQL*Plus: Release 10.2.0.4.0 - Production on Wed Mar 24 19:49:18 2010

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

Connected to an idle instance.

SQL> exit

sqlplus “sys/xxxxxxxx@Q0094X1 as sysdba”

SQL> show parameter sga

NAME TYPE VALUE


lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 4G
sga_target big integer 4G
SQL>

Thanks for the feedback …

[root@ukapx100 ~]# cat /boot/grub/menu.lst

grub.conf generated by anaconda

Note that you do not have to rerun grub after making changes to this file

NOTICE: You have a /boot partition. This means that

all kernel and initrd paths are relative to /boot/, eg.

root (hd0,0)

kernel /vmlinuz-version ro root=/dev/vg00/rootlv

initrd /initrd-version.img

#boot=/dev/sda
default=1
timeout=30
splashimage=(hd0,0)/grub/splash.xpm.gz
title /boot/vmlinuz-2.6.9-67.ELsmp (SINGLE USER)
root (hd0,0)
kernel /vmlinuz-2.6.9-67.ELsmp ro root=/dev/vg00/rootlv rhgb quiet single
initrd /initrd-2.6.9-67.ELsmp.img
title Red Hat Enterprise Linux AS (2.6.9-67.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-67.ELsmp ro root=/dev/vg00/rootlv rhgb quiet
initrd /initrd-2.6.9-67.ELsmp.img
title Red Hat Enterprise Linux AS-up (2.6.9-67.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-67.EL ro root=/dev/vg00/rootlv rhgb quiet
initrd /initrd-2.6.9-67.EL.img
[root@ukapx100 ~]#

Hi,

Have you read this all the way through?

http://www.puschitz.com/TuningLinuxForOracle.shtml

Reasons to use MySQL (!)

Thanks for the feedback …

HugePages allocated

ukapx100_$ ulimit -l
unlimited
ukapx100_$ grep Hugepagesize /proc/meminfo
Hugepagesize: 2048 kB
ukapx100_$ cat /etc/sysctl.conf | grep vm.nr_hugepages
vm.nr_hugepages=2054
ukapx100_$ grep Huge /proc/meminfo
HugePages_Total: 2054
HugePages_Free: 5
Hugepagesize: 2048 kB

Shared Memory Segments

ukapx100_$ ipcs -m

------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x55008f12 0 root 644 120064 1 locked
0x00000000 491522 oracle 600 16777216 28
0x00000000 524291 oracle 600 1073741824 28
0x00000000 557060 oracle 600 1073741824 28
0x00000000 589829 oracle 600 1073741824 28
0xb60b48e0 622598 oracle 600 1059061760 28

Attempt to connect to 4GB SGA using local SQLPlus = Fail

ukapx100_$ echo $ORACLE_SID
Q0094X1
ukapx100_$ echo $ORACLE_HOME
/u001/app/oracle/product/10.2.0/db_1
ukapx100_$ sqlplus “/ as sysdba”

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Mar 26 11:54:38 2010

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

Connected to an idle instance.

SQL> exit

Attempt to connect to SGA=4GB with SQLPlus using TNS = Success

ukapx100_$ sqlplus “sys/EWWq2XHF@Q0094X1 as sysdba”

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Mar 26 11:55:35 2010

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters and Real Application Testing options

SQL> select instance_name, instance_role
2 from v$instance;

INSTANCE_NAME INSTANCE_ROLE


Q0094X1 PRIMARY_INSTANCE

SQL> show sga

Total System Global Area 4294967296 bytes
Fixed Size 2089472 bytes
Variable Size 788532736 bytes
Database Buffers 3489660928 bytes
Redo Buffers 14684160 bytes
SQL>

Ok, can we get output for;

cat /proc/version
cat /proc/cpuinfo
free
file /bin/bash
uname -m

So … I cannot start or connect using local SQLPlus (Bequeath adapter) but I can start and connect using TNS SQLNet (TCP-IP) … when the Oracle SGA memory = 4Gb … is there a Bequeath network limit that I am missing ?

Thanks

Steve