1

我正在使用 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

如果您没有将 sysctl 中的 shmmax 设置得足够高,我读到“os_create_region”是正常的,所以我将其设置为 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

为什么会出现这两个错误,我该怎么办?

更新:

目前,我看到了第一条错误消息(操作系统无法分配字节)。/etc/sysctl.conf 的内容如下:

kernel.shmmax = 4294967295
kernel.shmall = 1048576
kernel.shmmni = 4096

但是之前的日志语句指出

os_create_region: can't allocate 11534336000 bytes

那么为什么它试图分配的区域如此之大,又是在哪里设置的呢?

4

1 回答 1

0

解决方案:

当你收到类似“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 内存管理的链接。

于 2013-05-01T19:55:06.943 回答