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

use*_*534 9 oracle oracle-11g-r2

我有 70 GB RAM 的强大机器。我创建了一个 20 GB 作为 sga_target 的 Oracle 实例。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
Run Code Online (Sandbox Code Playgroud)

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

同样对于 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
Run Code Online (Sandbox Code Playgroud)

Phi*_*lᵀᴹ 13

您的内核参数需要修改。

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

kernel.shmall = 18350080
kernel.shmmax = 75161927680
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
Run Code Online (Sandbox Code Playgroud)

然后重启机器。

  • shmmax 是单个共享内存段的最大字节数,您有 70Gb 的 RAM,所以我使用了 70*1024*1024*1024。shmall 是可以同时存在的所有共享内存段的最大总和,以页为单位。Linux 上的页面大小通常为 4k,因此我将 shmmax 数除以 4096。 (3认同)