Messages in this thread | | | Date | Thu, 25 Mar 1999 22:54:47 +0100 | From | Alessandro Suardi <> | Subject | Re: LARGE Oracle Installation (Buffer Problems) |
| |
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/
| |