我正在使用Red Hat 5.5,我正在尝试运行Sybase ASE 12.5.4。
昨天我试图使用命令"service sybase start",控制台显示sybase反复尝试初始化主数据库服务器,但失败。
更新:使用以下命令初始化/ims_systemdb/master上的数据库:
dataserver -d /ims_systemdb/master -z 2k -b 51204 -c $SYBASE/ims.cfg -e db_error.log
chmod a=rwx /ims_systemdb/master
ls -al /ims_systemdb/master
它给了我一个很好的数据库在/ims_systemdb/master的大小为104865792字节(2048x51240)。
但是当我运行
service sybase start
/logs/sybase_error.log中的错误日志如下:
00:00000:00000:2013/04/26 16:11:45.18 kernel Using config area from primary master device.
00:00000:00000:2013/04/26 16:11:45.19 kernel Detected 1 physical CPU
00:00000:00000:2013/04/26 16:11:45.19 kernel os_create_region: can't allocate 11534336000 bytes
00:00000:00000:2013/04/26 16:11:45.19 kernel kbcreate: couldn't create kernel region.
00:00000:00000:2013/04/26 16:11:45.19 kernel kistartup: could not create shared memory
我读"os_create_region"是正常的,如果你没有设置shmmax在sysctl足够高,所以我把它设置为16000000000000,但我仍然得到这个错误。有时,当我摆弄。cfg文件时,我得到这个错误信息:
00:00000:00000:2013/04/25 14:04:08.28 kernel Using config area from primary master device.
00:00000:00000:2013/04/25 14:04:08.29 kernel Detected 1 physical CPU
00:00000:00000:2013/04/25 14:04:08.85 server The size of each partitioned pool must have atleast 512K. With the '16' partitions we cannot configure this value f
为什么会出现这两个错误,我该怎么做?
更新:目前,我看到第一条错误消息(os无法分配字节)。/etc/sysctl.conf文件的内容如下:
kernel.shmmax = 4294967295
kernel.shmall = 1048576
kernel.shmmni = 4096
但是前面的日志语句表明
os_create_region: can't allocate 11534336000 bytes
那么为什么它要分配这么大的区域,它在哪里设置的呢?
解决方案:
当你得到像"os_create_region: can't allocate 11534336000 bytes"这样的消息时,这意味着Sybase的配置文件要求内核创建一个超过/etc/sysctl.conf中shmmax变量的区域
要做的主要事情是更改ims.conf(或您正在使用的任何配置文件)。然后,更改物理内存部分中的最大内存变量。
[Physical Memory]
max memory = 64000
additional network memory = 10485760
shared memory starting address = DEFAULT
allocate max shared memory = 1
供您参考,我的/etc/sysctl.conf文件以这三行结束:
kernel.shmmax = 16000000000
kernel.shmall = 16000000000
kernel.shmmni = 8192
一旦完成,输入"showserver"来显示正在运行的进程。
有关更多信息,请参阅Sybase系统管理员指南第2卷以及前面评论中Michael Gardner提供的Red Hat内存管理链接。