在 RHEL 上使用较少内存运行 Oracle DB Server

在 RHEL 上使用较少内存运行 Oracle DB Server

我有一台适用于 RHEL 7 的 VM/Hyper-V,我需要在其中安装 Oracle DB Server (12.1.0.2.0) - Standard Edition (SE2) 以及应用服务器、apache、本地 LDAP 和其他用于开发人员编码的产品

我想用尽可能少的内存运行 Oracle,以便我的 VM 达到最佳状态。如何以最小内存启动 Oracle 服务器实例

答案1

问题并不像看上去那么简单。

首先,您的实例现在使用了多少内存?也许值得保持原样?

其次,您使用自动内存管理(AMM)还是自动共享内存管理(ASMM)?

要检查它,您应该以 SYSDBA 身份连接您的实例并说:

SQL> 显示参数目标

如果内存目标设置为非零值,则您正在使用 AMM。如果内存目标为零,并且sga_target为非零,则表示您正在使用 ASMM。如果两者sga_target内存目标为零,则说明您没有使用自动管理,这是不太可能的。

接下来,检查您是否正在使用 spfile (https://stackoverflow.com/questions/12031587/how-to-check-whether-oracle-instance-is-started-using-pfile-or-spfile) 并备份。

然后对于AMM

SQL> 更改系统设置内存目标 = 1500M 范围 = spfile;

或者对于 ASMM

SQL> 改变系统设置 sga_target=1200M 范围=spfile;

SQL> 改变系统设置 sga_max_size=1200M 范围=spfile;

并重新启动您的实例。

如果您使用的是 pfile(而不是 spfile),那么只需使用任何文本编辑器对其进行编辑,设置值并重新启动实例。

谨防!Oracle 要求不低于1GB内存。如果您将 memory_target 设置得太低,您的实例将无法启动,并且您必须重新创建 spfile。

答案2

您可以设置内核参数并配置资源限制,例如 /proc/sys/kernel/shmall、/proc/sys/kernel/sem、/proc/sys/kernel/shmmax、/proc/sys/fs/file-max、/proc/sys/net/core/rmem_max 等。它将帮助您以最少的物理内存启动 oracle。

相关内容