ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 裝ecc6.0專案中错误

裝ecc6.0專案中错误

原创 Linux操作系统 作者:senseinvest 时间:2009-06-14 09:46:44 0 删除 编辑

,windows平臺下 oracle的SGA 大于3G,數據庫無法開啟,会提示ORA-27102(out of memory)

 

故障主機環境﹕

事故日期時間﹕2008/03/28
IP:10.138.2.80 OS:Windows2003 DB:oracle 10.2.0.2.0 SAP: ECC6.0
Support package﹕Version 7.00/0023Patch level﹕
SAP_BASIS 700 0009 SAP_ABA 700 0009 PI_BASIS 2005_1_700 0009 SAP_BW 700 0009 SEM-BW 600 0006

 

RootCause 分析﹕

Oracle SGA在32位操作系统下有限制,针对32bit的Windows,Windows2003上不能利用超过4G的内存,一般是3G
的内存保留给进程,1G内存保留给核心的,具体原理记得应该是2的32次方为windows的最大寻址空间,也就是
4G。但是这4G里,缺省情况下,会分配0G到2G的这个位置给操作系统使用,而其他非操作系统进程只能使用
2G到4G这部分内存。即便只有oracle这一个进程,也最多使用2G内存。可以压缩操作系统使用的部分,也就是
0G到2G,可以压缩出1个G的内存给非操作系统进程使用。

解決過程﹕

要想使SGA超过3GB,则必须使用Windows提供的4GT(4G Tunning)技术
第一步:若Oracle是開啟狀態,需要進入MS-DOS命令行把oracle關閉
# sqlplus /nolog
SQL>conn / as sysdba
SQL>shutdown immediate
第二步:修改C:\boot.init的启动参数,加入 /3G /PAE切换开关(紅色粗體部分)。
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /noexecute=optout / 3G /PAE /fastdetect

第三步:修改注册表,加入AWE_WINDOW_MEMORY,值為1073741824(此為缺省值為1G)
第四步:在Oracle中启用AWE
修改初始化参数档,注释掉 DB_CACHE_SIZE参数,加入以下参数(紅色粗體部分標識出來了):
USE_INDIRECT_DATA_BUFFERS = TRUE
DB_BLOCK_BUFFERS = 206848 (根據自己需求調整參照下面公式)
DB_BLOCK_SIZE=8192 (database數據庫塊大小為8k) 由此來決定data buffer大小
備注:Data Buffer Size=DB_BLOCK_BUFFERS*DB_BLOCK_SIZE=206848*8192=1,694,498,816 (在SQL里用show sga
命令可以看到此項表示此時databuffer 為1.7G)
說明:DB_BLOCK_BUFFERS参数是在SGA中可作缓冲用的数据库块数。该参数决定SGA的大小,对数据库性能
具有决定性因素。若取较大的值,则可减少I/O次数,但要求内存空间较大,每个缓冲区的大小由参数
DB_BLOCK_SIZE决定。
第五步:登入系統,進入MS-DOS模式運行SQL*PLUS,開啟數據庫,看SGA有沒有調整過來.
# sqlplus /nolog
SQL>conn / as sysdba
SQL>startup

KeyWord及參考note

notes: 441663 , SGA, db_block_buffer,DB_CACHE_SIZE,USE_INDIRECT_DATA_BUFFERS

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21495077/viewspace-606243/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-04-26

  • 博文量
    51
  • 访问量
    27474