设为首页 收藏本站
查看: 709|回复: 0

[经验分享] ORACLE大内存配置

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2018-9-23 09:57:11 | 显示全部楼层 |阅读模式
  Oracle数据库中使用超过2G的内存 (本文实例以8G内存的服务器,分配给ORACLE的DB_BLOCK_BUFFERS为6G)
WINDOWS平台上扩展SGA
  针对32bit的Windows。Windows2000上不能利用超过4G的内存,一般是2G的内存保留给进程,2G内存保留给核心的。在Windows2000 Advanced Server上可以分配3G给进程,1G留给核心的。
  
1. 如果机器的内存在4G以下,可以使用Physical Address Extensions(PAE)或者是Address Windowing Extensions(AWE)进行扩展,如果机器内存大于4GB就只能使用AWE进行扩展了。
AWE支持以下的Windows操作系统:
  Windows 2000 Datacenter Server
  Windows 2000 Advanced Server
  Windows 2003 Datacenter Edition(32bit)
  Windows 2003 Enterprise Edition(32bit)
  AWE不支持以下的Windows操作系统:
  Windows 2000 Server(Standard)
  Windows2000 Professional
  Windows XP Home Edition
  Windows XP Professional
  Windows 2003 Standard Edition
  Windows 2003 Web Edition
AWE支持的Oracle数据库的版本:
  Oracle 8.1.6.X
  Oracle 8.1.7.X
  Oracle 9.2.X
AWE不支持Oracle9.0.1.X
  在标准版的Oracle9.2.0.1上,如果你设置了use_indirect_data_buffers=true,启动就会报错:
  ORA-439-feature not enabled:very large memory.
  这个是标准版的Oracle的9.2.0.1的一个bug(#2520796),在Oracle9.2.0.2中解决了。
2. 在操作系统上启动AWE
  AWE在操作系统上可以通过在boot.ini文件中加/PAE切换启用。
  例如:
  multi(0)disk(0)rdisk(0)partition(1)/WINNT="Microsoft Windows 2000 Advanced Server" /PAE
  也可以同时使用/PAE和/3G在同一台机器上,例如:
  multi(0)disk(0)rdisk(0)partition(1)/WINNT="Microsoft Windows 2000 Advanced Server" /3GB /PAE
  但是同时使用内存最大能够支持到16G,如果要使用16G以上的内存,则必须选择其中的一种使用了。
3. 在Oracle上启用AWE
  首先要在启动的参数文件中设置参数
  USE_INDIRECT_DATA_BUFFERS=TRUE
  u  如果设置了这个参数,对于Oracle9.2.0的版本则不能再使用DB_CACHE_SIZE参数了,只能使用DB_BLOCK_BUFFERS参数。
  u  扩展的内存只能增加到BUFFER CACHE中去使用,因此只能增大DB_BLOCK_BUFFERS这个参数去扩展SGA区。
4. AWE_WINDOW_MEMORY实现故障解决
  在Oracle8.1.7版本以下启动数据库的时候不用设置AWE_WINDOW_MEMORY的最小值,而在Oracle9.2.0的版本中则强制要设置
  
  AWE_WINDOW_MEMORY的最小值,这个最小值在Oracle8.1.7中通过DB_BLOCK_LRU_LATCHES参数设定,在 Oracle9.2.0中则通过
  
  _DB_BLOCK_LRU_LATCHES隐含参数设定,Oracle9.2.0的AWE_WINDOW_MEMORY 的最小值由以下的公式计算:
  
  MIN(AWE_WINDOW_MEMORY)=(4096 * DB_BLOCK_SIZE * _DB_BLOCK_LRU_LATCHES)/8
  _DB_BLOCK_LRU_LATCHES = (Max buffer pools * SETS_PER_POOL)
  Max Buffer Pools是个常量,等于8,SETS_PER_POOL是个变量,它的大小由是否启用VLM(即设定
  
  USE_INDIRECT_DATA_BUFFERS=TRUE参数)决定:
  SETS_PER_POOL = 2* CPU_COUNT (启用 VLM)
  SETS_PER_POOL= CPU Count /2 (不启用VLM)
  例如:
  CPU's = 16
  DB_BLOCK_SIZE = 8192
  Total RAM = 16 GB
  SETS_PER_POOL = 2 * CPU_COUNT = 32
  _DB_BLOCK_LRU_LATCHES = (max buffer Pools * sets_per_pool) = 8*32 = 256 MIN(AWE_WINDOW_MEMORY)=
  
  (4096*DB_BLOCK_SIZE*_DB_BLOCK_LRU_LATCHES)/8 =( 4096 * 8192 * 256) / 8 = 1073741824 bytes = 1024 MB
  这样在Windows的注册表中的HKLM/Software/Oracle/Homex下的AWE_WINDOW_MEMORY值至少是1024M,否则就会提示错误:
  ORA-27102 out of memory
  OSD-00034 Message 34 not found; Product=RDBMS;facility =SOSD
  O/S Error: (OS 8) Not enough storage is available to process this command
5.实例(HP DL360 ProLiant G7 8G内存)
1)     设置注册表
  LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0 中增加字符项   "AWE_WINDOW_MEMORY"   值设为"1073741824"   (1G)
2)     backup L:\TESTDB\SPFILESOP.ORA
  Oracle的数据文件安装在L:\TESTDB并且数据库的启动参数也保存在L:\TESTDB
3)     备份现在正在使用的spfile
  在CMD命令下执行以下命令:
  Sqlplus /nolog
  Conn / as sysdba
  Create pfile=’d:/bk.ora’ from spfile;
4)     修改ORACLE的spfile值
  在数据库打开时,在sqlplus下执行以下命令:
  Alter system set use_indirect_data_buffers=true scope=spfile;
  Alter system set pre_page_sga=true scope=spfile;
  Alter system set db_block_buffers=786432 scope=spfile;
  (1G的DB_BLOCK_BUFFERS为131072(DB_BLOCK_SIZE为8K,1024K*1024/8=131072)修改完成后,SGA的大小为db_block_size* db_block_buffers=8k*786432=5242880K,5242880K/1024/1024=6G)
5)     修改完spfile之后,要把spfile中的db_cache_size参数注释掉。
  先导出spfile:
  Create pfile=’d:/modify.ora’ from spfile;
  然后用记事本打开D盘下面的MODIFY.ORA文件,找到db_cache_size并注释掉(在行首加上井号#),完成之后把修改好的pfile导回入spfile;
  在sqlplus下关闭数据库并导回spfile:
  Shutdown immediate;
  Create spfile from pfile=’d:/modify.ora’;
  Exit;
  备注:如果4)和5)方法没有成功,尝试下面的方法 

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

    alter system set "_db_block_lru_latches"=32 scope=spfile;
  alter system reset db_cache_size scope=spfile sid='*';
  alter system reset sga_max_size  scope=spfile sid='*';
  alter system set lock_sga=false scope=spfile;
  alter system set db_block_buffers=786432 scope=spfile;
  alter system set use_indirect_data_buffers=true scope=spfile;

    create pfile='d:\backup\new.ora' from spfile;
6)     覆盖数据库自定义SPFILE(数据库默认的SPFILE位置为ORACLE_HOME\DATABASE)
  Move D:\oracle\ora92\database\SPFILESOP.ORA to L:\TESTDB and overwirte spfilesop.ora
7)     重启服务器,搞定。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-600162-1-1.html 上篇帖子: Oracle导表语句 下篇帖子: Mysql Oracle 工具推荐
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表