ABC公司Oracle数据库参数调整建议1.Oracle参数initdb.ora (修改建议)目前系统现在分析:(1)Windows 2003可以显示50G内存,但操作系统是32位,最多默认支持4G,用户进程支持2G,Oracle可能支持1.7G内存;(2)不清楚是否对操作系统做过支持大内存的调整;从下表的参数分析,可能没有修改;(3)不清楚此系统Windows是否允许在虚拟环境(Virtual Machine),故保守起见,我们的建议是:把内存往小里调整。
根据我们的经验,对Oracle数据库调整如下:总内存控制在1.5GSGA控制在800MPGA使用700Mtestdb.__db_cache_size=469762048testdb.__java_pool_size=8388608testdb.__large_pool_size=8388608testdb.__oracle_base='D:\app\Administrator'#ORACLE_BASE set from environment testdb.__pga_aggregate_target= 734003200 #700M #671088640testdb.__sga_target=838860800 #800M #1249902592testdb.__shared_io_pool_size=0testdb.__shared_pool_size= 335544320 #320M #738197504testdb.__streams_pool_size=8388608*.audit_file_dest='D:\app\Administrator\admin\xbrldb\adump'*.audit_trail='db'*.compatible='11.2.0.0.0'*.control_files='E:\data\xbrldb\control01.ctl','D:\app\Administrator\flash_recovery_ area\xbrldb\control02.ctl'*.db_block_size=8192*.db_domain=''*.db_name='xbrldb'*.db_recovery_file_dest='D:\app\Administrator\flash_recovery_area'*.db_recovery_file_dest_size=21474836480*.diagnostic_dest='D:\app\Administrator'*.dispatchers='(PROTOCOL=TCP) (SERVICE=xbrldbXDB)'*.fast_start_mttr_target=30*.job_queue_processes=1000testdb.local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(H OST=10.24.58.100)(PORT=1531))))'*.log_archive_format='ARC%S_%R.%T'*.memory_target= 1610612736 #1.5G#1916796928*.nls_language='SIMPLIFIED CHINESE'*.nls_territory='CHINA'*.open_cursors=300*.processes=1500*.remote_login_passwordfile='EXCLUSIVE'*.sessions=1655*.sga_max_size=838860800 #800M 1258291200*.undo_tablespace='UNDOTBS1'2.Wind ows内存调整参考资料2.1.Windows 2003支持大内存先要开启PAE功能,方法如下:打开Boot.ini 文件,然后将/PAE 参数添加到boot.ini中,如以下所示:multi(0)disk(0)rdisk(0)partition(2)\%systemroot%="Windows Server 2003, Datacenter Edition" /PAE如果CPU、主板、操作系统都支持并启用PAE(物理地址扩展),那么此时的物理内存地址总线就是36位。
2^36 = 68719476736 = 64 GB另外,当前的x64并非真正使用64位的地址总线,而是48位,所以内存上限是2^48。
所以,现在的32位系统并非纯正的“32位”;x64并非纯正的"64位"。
为什么Windows 2003 32位版本最高可以支持128GB内存?自P4、K8以后的32位CPU,物理地址地址都是40位,所以可以支持128GB。
另外windows2003的版本也对此有影响:Windows Server 2003 Web Edition 32位版最大能支援2G的RAM,Windows Server 2003 Standard Edition 32位版最大能支援4G的RAM,Windows Server 2003 Enterprise Edition 32位版最大能支援32G的RAM, Windows Server 2003 Datacenter Edition 32位版最大能支援512G的RAM远景上还有一个很详细的讨论贴:/thread-456977-1-1.html2.2.32位Windows上扩展Oracle SGA使用大内存/2010/04/32位windows上扩展oracle-sga使用大内存/默认情况下32位系统最大只能访问4G的内存,用户进程最多访问2G的内存空间,系统内核保留2G的内存空间。
如果想增加用户进程访问的内存空间,那么需要修改windows 的启动参数boot.ini,在boot.ini文件中增加/3G的开关. [operating systems]multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003, Enterprise"/fastdetect /3G这样可以扩展用户进程访问多达3G的内存空间,系统内核保留1G的内存空间。
/3G只是给用户进程增加了1G的内存空间,但是我们使用的内存还是限制在4G 以内。
针对上面的情况我们可以通过PAE(物理地址扩展,Inter发明)技术让操作系统使用理论上多大64G的内存,大约我们都知道32位的应用最多能识别4G 的内存,要访问大于4G的内存,除了操作系统可以识别访问大于4G的内存外,应用软件也要支持访问大于4G的功能。
支持PAE的Windows操作系统有:Microsoft Windows Server 2003 Enterprise EditionMicrosoft Windows Server 2003 Datacenter EditionMicrosoft Windows 2000 Advanced ServerMicrosoft Windows 2000 Datacenter Server支持PAE技术的Oracle版本:Oracle 9.2.xOracle 10.1.xOracle 10.2.xOracle 11.1.xOracle 11.2.xWindows上启用PAE在Windows上启用PAE,/3G和/PAE可以同时使用,如果同时使用这两个参数,那么操作系统最能只能使用16G的内存。
有关Windows PAE相关知识可以参考下面的连接:/kb/283037/zh-cn/whdc/system/platform/server/PAE/pae_os.mspx [operating systems]multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /PAE[operating systems]multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /3G /PAE除了配置/PAE之外,启动OracleServiceSID(SID代表实际的数据库实例)的服务还必须有”Lock Pages In Memory”系统权限,这个权限默认属于LocalSystem用户。
一般Oracle的服务都用这个服务启动,如果不是,则可以修改启动服务的账户为LocalSystem用户。
Oracle中使用PAE在介绍Oracle使用PAE之前,首先必选先引入一概念。
AWE:地址窗口扩展,地址窗口扩展到意思是在普通的用户进程空间内划分一快区域,这里的普通用户进程空间指导前面的2G或3G(启用/3G后)的内存空间。
通过参数AWE_WINDOW_MEMORY定义这个区域大小,默认为1G,这个区域其实是一个指针窗口,这个指针窗口指向大于4G物理内存之外的某个物理地址范围。
Oracle 在访问扩展到物理内存时,首先必须将要访问的数据映射到AWE区域,然后在AWE区域中操作这些数据块。
以此循环。
其实Oracle就是通过AWE间接的访问大于4G的物理内存,并不是Oracle的进程直接操作大于4G的物理内存。
Oracle SGA中只有数据库缓冲区可以使用这一扩展内存空间。
其他的SGA组件都必须在2G/3G的内存空间内定义。
默认情况下AWE_WINDOW_MEMORY=min(4096*DB_BLOCK_SIZE*8*2*CPU_COUNT)/8 + (awe_window_memory * 10%)。
可以通过编辑windows注册表来定义HKLM\Software\Oracle\Home0\AWE_WINDOW_MEMORY 默认为1G并且AWE不支持db_cache_size、ASMM(自动共享内存管理)、AMM(自动内存管理)技术,用db_blocks_buffer的形式使用扩站内存,定义db_blocks_buffer前,首先定义use_indirect_data_buffers=true.操作前搞清楚如何分配内存空间:3G内存空间内包括以下Oracle组件:PGA、UGAshared_pool_size、java_pool_size、large_pool_size、log_buffer_size、streams_pool_sizeAWE_WINDOW_MEMORY所有线程的堆栈空间怎样定义各个内存的大小,需要DBA仔细斟酌。