create pfile=/tmp/pfile.txt from spfile
alter system set sga_max_size=ag scope=spfile;
alter system set sga_target=ag scope=spfile;
alter system set pga_aggregate_target=bg scope=spfile;

 

【问题现象】
在重启的时候有可能会报
ORA-27102: out of memory
Error: 28: No space left on device

 

【原因分析】
这个问题在linux到64位中比较常见,当SGA的值大于共享内存就会报这个错
共享内存在shmall这个参数中设置,shmall单位为页,换算成内存大小还需要把两个值相乘,如shmall=4194304,那么共享内存的大小就是(4194304*4096)/(1024*1024*1024)=16G

方案一:
出现ORA-27102错误,这是我们可以使用备分的参数文件启动数据库;
startup pfile=’/opt/oracle/product/11.1/db_1/dbs/initorcl.ora’;
问题到这里,虽然库可以启动,但参数还是没有改。

方案二:

[root@localhost ~]# vi /etc/sysctl.conf
这是我们可以修改一下系统参数/etc/sysctl.conf文件中的kernel.shmall参数
改之前
——————————————————————————-
fs.file-max = 6553600
kernel.shmall=2097152
kernel.shmmax=2147483648
kernel.shmmni=4096

改之后
——————————————————————————-
fs.file-max = 6553600
kernel.shmall = 4194304
kernel.shmmax = 2147483648
kernel.shmmni = 4096

修改完之后没忘记让它立即生效并确认
# sysctl -p
# cat /proc/sys/kernel/shmall
修改完这些参数后,我们就可以正常启动了