我有一台适用于 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。