第二次调整的思路是增大连接数、游标数、PGA的大小、数据库写进程的CPU核数,进一步调整SGA的大小
一、调整的参数:
alter system set processes=2000 scope=spfile;
--进程数,即可以对外提供服务的数据。同样,也与根据AS数量及AS连接数相关,一般为1500~3000
----sessions 设置processes后自动调整。
alter system set db_writer_processes=4 scope=spfile;
--配置为CPU内核数的一半
--cat /proc/cpuinfo |grep 'processor'|wc -l --显示CPU个数
alter system set open_cursors=4000;
--根据AS数量及AS连接数,配置为3000~5000
alter system set sga_max_size=16G scope=spfile;
--内存的一半,如果存储使用的是裸设备,可以提高到60%
alter system set session_cached_cursors=300 scope=spfile;
alter system set pga_aggregate_target=3G scope=spfile;
--同样,也与根据AS数量及AS连接数相关,一般为1500~3000。一般1G~3G
shutdown immediate;
startup;
二、遇到的问题:
1、SQL> startup
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device
解决办法:
参见:Linux内核参数(如kernel.shmmax)及Oracle相关参数调整(如SGA_MAX_SIZE)
2、SQL> startup
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE instance started.
Total System Global Area 1.7180E+10 bytes
Fixed Size 2114144 bytes
Variable Size 1.1744E+10 bytes
Database Buffers 5419040768 bytes
Redo Buffers 14659584 bytes
Database mounted.
Database opened.
解决办法:
alter system reset log_archive_start scope=spfile sid='*';
shutdown immediate;
startup;
Linux-x86_64 Error: 28: No space left on device问题
操作系统版本: Linux 64位
修改数据库参数后启动数据库报错
SQL> startup nomount
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device
解决方案
这个问题在linux到64位中比较常见,当SGA的值大于共享内存就会报这个错
共享内存在shmall这个参数中设置,shmall单位为页,换算成内存大小还需要把两个值相乘,如shmall=4194304,那么共享内存的大小就是(4194304*4096)/(1024*1024*1024)=16G
1.获得shmall的方式如下
# cat /proc/sys/kernel/shmall
4194304
2.我们可以通过/etc/sysctl.conf文件中kernel.shmall的值来调整共享内存大小
[root@svr28-167 ~]# vi /etc/sysctl.conf
kernel.shmall= 8388608
3.我们可以通过下面命令得到分页大小,默认是4Kb
$ getconf PAGE_SIZE
4096
4.修改完之后没忘记让它立即生效并确认
# sysctl -p