前几天看了一个帖子讨论ORA-12518,还是06年的帖子,到11年还没有找到问题原因迷惑,虽然知道ora-12518的原因很多,这里还是贴出一份。
2011/03/24
不知谁写的极度操蛋的代码导致开发数据库一直报
ORA-12518: TNS: 监听程序无法分发客户机连接,然后是N多人来找我,说为啥,为啥。丫的,咱又不是保姆,为啥不自己解决~
开始翻看alter.log,不看还好,一看下了一跳,最近10分钟的日志蹦出了一大串
ORA-27300: OS 系统相关操作: spcdr:9261:4200 失败, 状态为: 997
耗尽操作系统内存,导致数据库挂掉了。这个问题是10.2.0.1装在32位的windows系统上常见的,随便google了一下就能很清楚明白了。
把Oracle数据库重启可以临时解决,但过几天还会发生,最好还是打上补丁。
ok,向领导建议,升级打补丁吧~
ok,向领导建议,升级打补丁吧~
上峰说,要和现场的数据库一致,真他娘的操蛋,那找我干嘛!
无奈之下,开始对操作系统以及数据库参数进行调解。这倒是很简单,在网上倒是很多,而且还有以前转载某某的一份文章做参考,《突破Oralce for win2k 的2g内存限制》
具体设置步骤:
1 首先应卸载实例,关闭oracle服务。
2 打开操作系统3G开关(操作如下):
修改boot.ini文件,在启动windows项中添加 /3G 参数。修改过后的boot.ini文件应该类似以下内容:
[boot loader]
timeout=8
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Advanced Server" /3G /fastdetect
注意在启动win2K AdvServer的一栏里,多了一个 /3G 参数。这个参数的作用,就是让windows启动时,将自己的内核及支持程序装载到内存地址 0xC0000000 到 0xFFFFFFFF 之间,给应用程序留出3G的空间来。
3 打开oracle 开关
1 首先应卸载实例,关闭oracle服务。
2 打开操作系统3G开关(操作如下):
修改boot.ini文件,在启动windows项中添加 /3G 参数。修改过后的boot.ini文件应该类似以下内容:
[boot loader]
timeout=8
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Advanced Server" /3G /fastdetect
注意在启动win2K AdvServer的一栏里,多了一个 /3G 参数。这个参数的作用,就是让windows启动时,将自己的内核及支持程序装载到内存地址 0xC0000000 到 0xFFFFFFFF 之间,给应用程序留出3G的空间来。
3 打开oracle 开关
use_indirect_data_buffers = true
使用这个参数后,
DB_CACHE_SIZE等9i引入的内存参数都不支持,就更不要说10G的SGA_TARGET了,我们需要去掉SGA_TARGET和DB_CACHE_SIZE参数
不然就会报
ORA-00385: cannot enable Very Large Memory with new buffer cache parameters
重新启动操作系统,启动数据库。OK,虽然这么干了,迟早还是会出同样的问题,没办法的办法,咱也少找点茬,点到为止,尽力而为。
重新启动操作系统,启动数据库。OK,虽然这么干了,迟早还是会出同样的问题,没办法的办法,咱也少找点茬,点到为止,尽力而为。
建议大补到10.2.0.4
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23754390/viewspace-690423/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23754390/viewspace-690423/