如何提高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;
下一篇: MySQL查询效率问题解答