Re: LARGE Oracle Installation (Buffer Problems)

Alessandro Suardi (asuardi@uninetcom.it)
Thu, 25 Mar 1999 22:54:47 +0100


Anas wrote:

> Total System Global Area 171752720 bytes
> Fixed Size 48400 bytes
> Variable Size 105832448 bytes
> Database Buffers 65536000 bytes
> Redo Buffers 335872 bytes
>
>
> Those are the maximum values I can get.
> initSID.ora with
>
> shared_pool_size = 102005473
> db_block_buffers = 8000
>
> with 9000 it will abort with the error i sent ya.
>

Hmm... you have 8K blocks so I doubled buffers on mine, set your
values, echo'ed 150,000,000 into /proc/sys/kernel/shmmax and it
came up. So I raised parameters until I got bored:

SVRMGR> startup nomount
ORACLE instance started.
Total System Global Area 267042064 bytes
Fixed Size 48400 bytes
Variable Size 201318400 bytes
Database Buffers 65536000 bytes
Redo Buffers 139264 bytes

This on a 2.2.4 kernel, 64MB, 160MB swap (sic) with

shared_pool_size = 197000000
db_block_buffers = 16000

[root@dogbert asuardi]# ipcs -m

------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 205440 oracle 660 49152 7
0x00000000 205441 oracle 660 100663296 7
0x00000000 205442 oracle 660 100663296 7
0x339dd88c 205443 oracle 660 65687552 7

So it's funny I can't reproduce your behavior on my box... BUT:
if I set back my buffers to 2000 (8192KB total) and a 140,000,000
shared_pool I get the weird

SVRMGR> startup nomount
ORA-12700: invalid NLS parameter value (nls_language)

the instance doesn't come up and my semaphore cluster doesn't
get cleaned up (I have to ipcrm it) !! Strace actually shows that

shmget(865982604, 158339072, IPC_CREAT|IPC_EXCL|0x1b0|0660) = -1 EINVAL (Invalid argument)
shmget(IPC_PRIVATE, 158334976, IPC_CREAT|IPC_EXCL|0x1b0|0660) = -1 EINVAL (Invalid argument)
shmget(IPC_PRIVATE, 158326784, IPC_CREAT|IPC_EXCL|0x1b0|0660) = -1 EINVAL (Invalid argument)
shmget(IPC_PRIVATE, 158187520, IPC_CREAT|IPC_EXCL|0x1b0|0660) = -1 EINVAL (Invalid argument)
shmget(IPC_PRIVATE, 149995520, IPC_CREAT|IPC_EXCL|0x1b0|0660) = 266880
shmat(266880, 0x20000000, 0) = 0x20000000
shmget(865982604, 8343552, IPC_CREAT|IPC_EXCL|0x1b0|0660) = 266881
shmget(865982605, 0, 0) = -1 ENOENT (No such file or directory)
shmget(865982606, 0, 0) = -1 ENOENT (No such file or directory)
shmget(865982607, 0, 0) = -1 ENOENT (No such file or directory)
shmat(266881, 0x29000000, 0) = 0x29000000
umask(0) = 02
umask(02) = 0
semget(IPC_PRIVATE, 30, IPC_CREAT|0x1b0|0660) = 6914
semget(IPC_PRIVATE, 30, IPC_CREAT|0x1b0|0660) = 6915
semop(0x1b03, 0x1e, 0, 0xbfffd810) = 0
semctl(6915, 0, IPC_RMID, 0xbfffd7f4) = 0
gettimeofday({922397126, 598778}, NULL) = 0
getrusage(RUSAGE_SELF, {ru_utime={4, 320000}, ru_stime={4, 0}, ...}) = 0
gettimeofday({922397126, 599586}, NULL) = 0
getrusage(RUSAGE_SELF, {ru_utime={4, 320000}, ru_stime={4, 0}, ...}) = 0
gettimeofday({922397126, 600506}, NULL) = 0
getrusage(RUSAGE_SELF, {ru_utime={4, 320000}, ru_stime={4, 0}, ...}) = 0
gettimeofday({922397126, 604847}, NULL) = 0
getrusage(RUSAGE_SELF, {ru_utime={4, 330000}, ru_stime={4, 0}, ...}) = 0
gettimeofday({922397126, 608940}, NULL) = 0
close(7) = 0
open("", O_WRONLY|O_APPEND|O_CREAT, 0664) = -1 ENOENT (No such file or directory

... but here we're already quite confused: we don't deallocate the
semaphore cluster because it's supposed to be done at shutdown --
which of course won't happen, as the instance didn't come up; and
we try to open a null filename instead of the alertSID.log file.

The "good" trace behaves differently:

shmget(865982604, 159387648, IPC_CREAT|IPC_EXCL|0x1b0|0660) = -1 EINVAL (Invalid argument)
shmget(IPC_PRIVATE, 159383552, IPC_CREAT|IPC_EXCL|0x1b0|0660) = -1 EINVAL (Invalid argument)
shmget(IPC_PRIVATE, 159375360, IPC_CREAT|IPC_EXCL|0x1b0|0660) = -1 EINVAL (Invalid argument)
shmget(IPC_PRIVATE, 159236096, IPC_CREAT|IPC_EXCL|0x1b0|0660) = -1 EINVAL (Invalid argument)
shmget(IPC_PRIVATE, 151044096, IPC_CREAT|IPC_EXCL|0x1b0|0660) = -1 EINVAL (Invalid argument)
shmget(IPC_PRIVATE, 49152, IPC_CREAT|IPC_EXCL|0x1b0|0660) = 272384
shmat(272384, 0x20000000, 0) = 0x20000000
shmget(865982604, 159338496, IPC_CREAT|IPC_EXCL|0x1b0|0660) = -1 EINVAL (Invalid argument)
shmget(IPC_PRIVATE, 159334400, IPC_CREAT|IPC_EXCL|0x1b0|0660) = -1 EINVAL (Invalid argument)
shmget(IPC_PRIVATE, 159326208, IPC_CREAT|IPC_EXCL|0x1b0|0660) = -1 EINVAL (Invalid argument)
shmget(IPC_PRIVATE, 159186944, IPC_CREAT|IPC_EXCL|0x1b0|0660) = -1 EINVAL (Invalid argument)
shmget(IPC_PRIVATE, 150994944, IPC_CREAT|IPC_EXCL|0x1b0|0660) = -1 EINVAL (Invalid argument)
shmget(IPC_PRIVATE, 150994944, IPC_CREAT|IPC_EXCL|0x1b0|0660) = -1 EINVAL (Invalid argument)
shmget(IPC_PRIVATE, 75497472, IPC_CREAT|IPC_EXCL|0x1b0|0660) = 272385
shmat(272385, 0x20400000, 0) = 0x20400000
shmget(865982604, 83841024, IPC_CREAT|IPC_EXCL|0x1b0|0660) = 272386
shmget(865982605, 0, 0) = -1 ENOENT (No such file or directory)
shmget(865982606, 0, 0) = -1 ENOENT (No such file or directory)
shmget(865982607, 0, 0) = -1 ENOENT (No such file or directory)
shmat(272386, 0x24c00000, 0) = 0x24c00000

The "bad" trace turns into "good" by echoing 128*1024^2 into shmmax
instead of 150,000,000, hence I'm not sure where the problem is.

I also seem to recall that on other Unices Oracle isn't using the
IPC_PRIVATE flag in case SGA exceeds SHMMAX, but I could be wrong
on this.

Comments ?

--alessandro <asuardi@uninetcom.it> <asuardi@it.oracle.com>

Linux 2.0.36/2.2.4 glibc-2.0.7-29 gcc-2.8.1 binutils-2.9.1.0.19a

"I hate bugs which disappear just as soon as you start trying to
narrow things down." -- Stephen Tweedie

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/