事件回首:
晚上11点加班中,开发中产品将在第二天向大客户演示。突然一大群测试同学消息轰炸:500,服务崩了。我发请求一看,Oracle挂了,简单。因为开发中使用的云服务器资源占用快爆了,时不时会出现这种情况。我麻溜地去服务器重启了实例:好了,试一下。没想到还是被消息轰炸:没好,还是不行。
我看实例服务确已启动,但是进程里却没有找见。于是用SqlPlus连接实例,自动连接到了空闲实例。在空闲实例中键入启动该实例的命令,报出错误:
Specified value of sga_target greater than sga_max_size
回想原因,是因为10多天前我更改该实例内存时,将sga_target和sga_max_size同时调到了10G,而前几天调低至6G时,仅更改了sga_max_size。因为重启服务才会生效,所以实例挂掉后启不起来。而此时已无法连接至实例去修改。因为是开发库并未做负载,里面的演示数据也不是一时半会儿能搞出来的。想着明天就要演示而此时出现这个问题,不由得惊出一身冷汗。
好在上网查阅及尝试之后,问题顺利解决。
解决方法:
1.SqlPlus管理员身份登录
打开cmd:输入命令sqlplus /nolog登录,输入命令conn /as sysdba连接数据库
2.根据spfile创建pfile
输入命令CREATE PFILE='D:\oracle\app\oracle\product\12.1.0\dbhome_1\dbs\pfile01.ora' FROM SPFILE创建pfile
3.修改pfile中的参数
sga_target的数值要小于或等于sga_max_size的数值
4.启动pfile
输入命令startup pfile='D:\oracle\app\oracle\product\12.1.0\dbhome_1\dbs\pfile01.ora'
5.使用管理员账号进入实例修改配置
此时实例已通过pfile的临时配置启动,直接进入实例修改配置,避免下次启动又出现问题
参考资料:/Jang_sx/article/details/83926589