本文章只针对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;
将该文件存盘,想给另一台数据库直接使用。