有个客户系统用的数据库是Oracle10g,头几天新换了一台服务器,安装数据库的时候参数采用了全部默认,结果运行起来发现,系统效率比以前低。检查发现sga是默认的,只有584M。
服务器的内存是4G,操作系统是Windows server 2003,于是想是否可以把sga调整到2G?
于是通告用户暂停使用系统,于是通过http://127.0.0.1:1158/em调整sga大小,于是系统瘫痪几个小时......
问题的原因是oralce的服务起不来了,报出“监听程序当前无法识别连接描述符中请求的服务”的错误,查看系统服务中的几项有关Oracle的服务显示都是正常的,郁闷了。
根据网上的资料,在network/admin下的listener.ora文件中的SID_LIST_LISTENER 段中加了类似如下的一段:
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = G:/oracle/product/10.2.0/db_1)
(SID_NAME = ORCL)
)
结果还是起不来,错误变成了:
ORA-27101 Shared memory realm does not exist
ORA-01034 ORACLE not available
在网上查与此有关的解决方法很多,但是大家抄来抄去愣是没有一个答案能用的,想着也就是动了一下sga大小,去文件中改掉不就行了。于是打开dbs目录下对应的的spfile文件,直接手工操作,结果还是不行。
再查资料,说spfile是二进制文件,可我直接当文本编辑了!
没有备份,无法恢复!
情急之下,想到我的本本上装的oracle版本跟它一样,貌似数据库的名字也一样,就是安装路径不同。
于是打开UltraEdit,用修改二进制文件的方法将我本机的spfile文件中所有涉及oracle路径的地方全部改了一遍,然后复制到客户服务器上,成功!
反思这个事故,有几点:
1.修改参数前,请备份相关文件(尤其是数据库,实在不行的时候还可以重装系统)
2.要慎重考虑分配的sga大小多少合适,说实话对于4G内存的机器,分2G给sga我觉得挺正常的,可就是超了!
3.网上的资料很多,但是真正有用的还是少,关键时刻还是要靠自己。