我有一台具有70 GB RAM的强大机器。可以创建多少个20 GB的Oracle实例?


9

我有一台具有70 GB RAM的强大机器。我创建了一个具有20 GB的Oracle实例作为sga_target。sga_target > 10G即使关闭第一个数据库,我也无法创建另一个Oracle实例。如果我设置sga_target >=10G它在启动时给出以下错误:

ORA-27104:共享内存的系统定义的限制配置错误

虽然free -m显示虽然有足够的内存可用:

             total       used       free     shared    buffers     cached
Mem:         72419      34490      37928          0        618      28159
-/+ buffers/cache:       5711      66707
Swap:         2047          0       2047

我需要增加交换空间吗?在这方面的任何指针都受到高度赞赏。

同样对于70 GB的内存,用于创建许多实例,交换空间的最佳价值是什么?是否有某种方法可以计算出来?我的目标是每个实例至少有两个实例,sga_target=20G并且一次只能保持一个实例。如果我在这里缺少任何概念?

输出ipcs -im如下

------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 4194303
max total shared memory (kbytes) = 8388608
min seg size (bytes) = 1

Answers:


13

您的内核参数需要修改。

编辑/etc/sysctl.conf并确保存在以下几行:

kernel.shmall = 18350080
kernel.shmmax = 75161927680
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128

然后重启机器。


谢谢你的作品。您能告诉我如何确定shmall,shmax和shmni等这些值。有什么方法可以计算这些值?
user419534

3
shmmax是单个共享内存段的最大大小(以字节为单位),您具有70Gb RAM,因此我使用了70 * 1024 * 1024 * 1024。shmall是一次可以存在的所有共享内存段的最大总和,以页为单位。在Linux中的页面大小通常为4k,所以我用4096除以SHMMAX号
Philᵀᴹ


0

设置shmmax值取决于操作系统是32位还是64位。有metalink注释详细解释了这一点。

Linux x86和x86-64的最大SHMMAX值[ID 567506.1]

请看一看。

还有关于Oracle的共享内存/信号量的注释,这应该是一个有趣的阅读。

TECH:Unix信号量和共享内存的解释[ID 15566.1]

此致,Nagendra Chillale

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.