修改sga及共享池等造成out of memory 启动不起来数据库修复方法

本文章只针对oracle 10g。


笔者今天为了修改shared_pool_size 、large_pool_size等参数,首先需要加大sga_max_size与sga_target。

由于windows下的oracle,虽然内存有8g,但是oracle os内存没有那么大。

利用如下语句:

ALTER SYSTEM SET sga_max_size = 3000M COMMENT='internally adjusted' SCOPE=SPFILE

然后

shutdown immediate

startup

结果悲剧了。报了out of memory的错误,经过网上查找,才知道只能设置到1.7G。由于没有备份,参数又改错了,数据库启动不起来。网上说,找到$oracle_home\db_1\database\initSID.ora(如:如果sid为orcl对应为initorcl.ora),只要有这个文件,就可以将参数修正回来。但我发现我没有。发现在$oracle_home\db_1\dbs目录下的SPECIAL.ORA里面有我刚才修改的参数值,也就是说,将该文件破坏掉了。

后来经过探索,找到了比较简单的方式。步骤如下:

1. 找到initSID.ora文件

方式一:从自己的数据$oracle_home\admin\SID(如:orcl)\pfile下会得到init.ora.XXXX(一串数字),将其命名为initSID.ora(以下为了表述方便均以orcl为例)

方式二:如果方式一文件损坏,可以从同样10g数据库中$oracle_home\db_1\database\initorcl.ora和$oracle_home\admin\orcl\pfile下寻找,并命名为init.ora

方式三:如果以上都没有发现该文件,可以在另一台同样的oracle数据库服务器cmd下执行以下命令:

sqlplus /nolog

connect / as sysdba

create pfile='d:\initorcl.ora' from spfile;

去d盘拷贝该文件

2.在启动不起来的服务器执行一下命令

sqlplus /nolog

connect / as sysdba

startup pfile='xx路径\initorcl.ora

3.这时已经执行成功了,但是此时是pfile运行起来的,如果想改sga等参数,需要切回spfie启动,所以执行以下命令

create spfile from pfile

shutdown immediate

startup

此时,即可继续修改sga等参数。

4.此时数据库已经正常,但是我的修改sga还没有完成。此时学了乖,再修改参数前,将新增加的initorcl.ora备份

在sga只能配到1.7g的情况下,本人相关修改配置参考如下:

ALTER SYSTEM SET sga_max_size = 1700M COMMENT='internally adjusted' SCOPE=SPFILE
ALTER SYSTEM SET sga_target = 1700M SCOPE=BOTH

ALTER SYSTEM SET large_pool_size      = 1000M Scope=spfile;     -- 设置 大型池 大小(1G
)

ALTER SYSTEM SET shared_pool_size     = 268435456 Scope=spfile;     -- 设置 共享池 大小(256*1024*1024)
ALTER SYSTEM SET db_cache_size        = 268435456 Scope=spfile;     -- 设置 高速缓存 大小(256*1024*1024)
ALTER SYSTEM SET java_pool_size       = 33554432  Scope=spfile;     -- 设置 java池 大小( 32*1024*1024)
ALTER SYSTEM SET pga_aggregate_target = 268435456 Scope=spfile;     -- 设置 PGA总容量  (256*1024*1024)

5.经过反复实验,终于将sga、共享池、大池等参数配置完,为了保存自己这份参数成果,又执行了如下命令:

create pfile='d:\initorcl.ora' from spfile;

将该文件存盘,想给另一台数据库直接使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值