以前只是知道ORACLE SGA在不同的平台上都有大小限制,需要手工解除这个限制,但是由于一直没有把SGA调整得太大,所以一直没有碰到过,但是一旦真得让我碰上了,竟有些不知所措,搞了半天才想起来是这个原因!
故障日期:2005.8.12
故障现象:早晨数据库无法启动。错误如下:
SVRMGR> startup nomount
ORA-27123: unable to attach to shared memory segment
SVR4 Error: 22: Invalid argument
Additional information: 1
Additional information: 41203
SVRMGR>
故障处理:为了保证系统尽快投入使用,暂时还原以前的参数文件
故障分析:昨天为了优化数据库,我修改了shared_pool_size和db_block_buffer,当时把db_block_buffer加大了,shared_pool_size调小了,但是总的来说sga是调大了,现在提示shared memory 错误,看来是shared_pool_size的大小有问题
实验如下:
当时Database Buffers 是1474560000 bytes,几乎等于1.38G, shared_pool_size当时摄制的是600M,这样再加上其它的内存分配,总的已经超过了2G;后来把shared_pool_size调整为550M就没问题了,此时
SVRMGR> startup nomount
ORACLE instance started.
Total System Global Area 2123047072 bytes
Fixed Size 73888 bytes
Variable Size 637911040 bytes
Database Buffers 1474560000 bytes
Redo Buffers 10502144 bytes
SVRMGR>
SGA=2123047072 bytes=1.977G
看来Solaris下oracle sga的限制为2G,以后需要想办法调整这个限制