欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何提高Oracle的内存占用量,以及调整后Oracle无法启动的解决方法。

程序员文章站 2022-07-05 23:22:19
...

首先第一个要提高的是 MEMORY_TARGET, 这个是总内存占用量,也就是MAX(SGA+PGA) 这个量大概是物理内存的80%, 超过86%就不好了。 操作系统很容易触发虚拟内存。这是我们个人笔记本上的建议, 如果是服务器上,128G的情况下可以适当提高比例。

1.第一步一定是要修改 MEMORY_TARGET 否则有可能因为SGA的内存设置过高,超过MEMORY_TARGET 导致Oracle无法启动。估计很多人都中招了把。

SQL->alter system set MEMORY_TARGET=2100M scope=spfile;

2.然后修改SGA的最大峰值内存

SQL->alter system set sga_max_size=1800M scope=spfile;

3.最后修改SGA的目标值

SQL->alter system set sga_target=1800M scope=spfile;

4.最后重启服务器。

SQL->shutdown immediate;  

SQL->startup; 

网上百度到的很多教程是错误的。没有说明要防止参数范围不要超出合适的值。很多无辜的小白因此重装Oracle

如果你不幸中招了, 导致Oracle无法启动。不要慌。
首先进入管理模式,(Oracle无法启动也能进入!!!)

这个是在命令行里执行。 或者运行中执行。 后面的参数一定要带上。就直接进入管理模式了。不需要账号密码。

 sqlplus / as sysdba

然后启动Oracle

SQL->startup;

在SGA大于memory_target的情况下,使用startup 会出现异常:

SQL->
ORA-00844: Parameter not taking MEMORY_TARGET into account
ORA-00851: SGA_MAX_SIZE 1073741824 cannot be set to more than MEMORY_TARGET 872415232.

这个时候解决方法如下。先创建启动配置文件 init0321.ora

SQL> create pfile='D:\init0321.ora' from spfile;
File created. 

然后修改:init0321.ora 文件内容

*.memory_target=1073741824 //主要是这个数值要大于sga_max_size 确保 memory_targe 大于 SGA+PGA 

*.sga_max_size=805306368  //sga_max_size单位是字节,最好和sga_target相等

*.sga_target=805306368

sga_max_size等于memory_target会出现,

ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 1036M,


SQL> startup pfile='D:\init0321.ora';

SQL> create spfile from pfile='D:\init0321.ora';

SQL> shutdown;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup;