一.报错信息
linux 启动ORACLE数据库的时候报错
ORA-00839: SGA_TARGET cannot be modified to the specified value
大概意思是SGA_TARGET 里面内容配置的有问题。
二.情境再现(本章可以忽略)
这个问题不会单单出现,平常都会由另一个问题,导致这个问题出现。
由于我JAVA使用的是多线程,访问oracle数据库,而oracle数据库是有线称上限的,超过线称后,所有用户都会被锁死,禁止登陆,甚至DBA用户也无法登陆
2.1. 线称锁死
1.9.2 ORA-00020: maximum number of processes (150) exceeded
2.2线称数量增加
那么,我们看到了,oracle默认的线称数量是150 最大值,那么我就要登陆oracle进行修改了。
1.登陆oracle数据库
注意,此时dba 直接登陆是无法登陆的,所以必须这样登陆
[oracle@jian-3226 ~]$ sqlplus -prelim / as sysdba
2.然后增加线称数量 800
注意这句话99%会报错,因为你没有spfile文件
alter system set processes=800 scope=spfile;
3.增加个spfile文件
SQL> create spfile from pfile;
4.然后再次执行
alter system set processes=800 scope=spfile;
5.重启数据库
三.异常报错(本章可忽略)
我添加了个spfile配置文件,结果数据库再启动的时候,提示
ORA-00839: SGA_TARGET cannot be modified to the specified value
数据库此时无法启动,我刚刚添加了个spfile配置文件,那么我们推断出,应该刚刚默认配置文件的有问题,SGA_TARGET参数过大,那么我们就要修正。
结果发现,由于oracle 数据库已经被关闭,会提示数据库没有启动,要修改参数,就必须要启动数据库才行,所以失败。
无法设置,因为数据库并没有启动
ORA-01034: ORACLE not available
四.最终方案(解决ORA-00839: SGA_TARGET)
那么我们只能去修改创建的pfile源文件才行!!
- 进入oracle主目录
如果不知道,可以用查看主目录路径
echo $ORACLE_HOME
- 在oracle/product/12.1.0/db_1/dbs/目录下找到 pfile 开头的文件
我的是叫这个
- 下载到本地,修改文件里面的内容,之所以报错,就是因为你SGA_TARGET项配置有问题,请注意:【必须按照我这个配置文件的内容进行修改!同时将文件上方所有包含SGA_TARGET的配置必须全部删除】里面乱码没关系,只改你需要的就行。
- 修改完成后,替换,oracle数据库重新启动,成功。