test.__db_cache_size=33554432
test.__java_pool_size=4194304
test.__large_pool_size=4194304
test.__shared_pool_size=117440512
test.__streams_pool_size=0
*.audit_file_dest='D:\oracle\product\10.2.0\admin\test\adump'
*.background_dump_dest='D:\oracle\product\10.2.0\admin\test\bdump'
*.compatible='10.2.0.3.0'
*.control_files='D:\oracle\product\10.2.0\oradata\test\control01.ctl','D:\oracle\product\10.2.0\oradata\test\control02.ctl','D:\oracle\product\10.2.0\oradata\test\control03.ctl'
*.core_dump_dest='D:\oracle\product\10.2.0\admin\test\cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='test'
*.db_recovery_file_dest='D:\oracle\product\10.2.0\flash_recovery_area'
*.db_recovery_file_dest_size=1073741824
*.dispatchers='(PROTOCOL=TCP) (SERVICE=testXDB)'
*.job_queue_processes=10
*.log_archive_dest_1='LOCATION=D:\oracle\product\10.2.0\oradata\archive'
*.log_archive_format='ARC%S_%R.%T'
*.nls_language='SIMPLIFIED CHINESE'
*.nls_territory='CHINA'
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=1000
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=1105
*.sga_target=167772160
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='D:\oracle\product\10.2.0\admin\test\udump'
*.utl_file_dir='d:\oracle\product\10.2.0\oradata\test\logs_utl_file'
-----------------------------------------------------------------------------------------------------------------------------------
自动SGA内存管理特征 : 双下划线的参数
自动SGA内存管理
与管理PGA内存有两种方法一样,从Oracle 10g开始,管理SGA内存也有两种方法:手动管理和自动管理。手动管理需要设置所有必要的池和缓存参数,自动管理则只需设置少数几个内存参数和一个SGA_TARGET参数。通过设置SGA_TARGET参数,实例就能设置各个SGA组件的大小以及调整它们的大小。
注意 在Oracle9i及以前版本中,只能用手动SGA内存管理,不存在参数SGA_TARGET,而且参数 SGA_MAX_SIZE只是一个上限,而不是动态目标。
在Oracle 10g中,与内存相关的参数可以归为两类:
q 自动调优的SGA参数:目前这些参数包括DB_CACHE_SIZE、SHARED_POOL_SIZE、LARGE_POOL_SIZE和JAVA_POOL_SIZE。
q 手动SGA参数:这些参数包括LOG_BUFFER、STREAMS_POOL、DB_NK_CACHE_SIZE、DB_KEEP_CACHE_SIZE和DB_RECYCLE_CACHE_SIZE。
在Oracle 10g中,任何时候你都能查询V$SGAINFO,来查看SGA的哪些组件的大小可以调整。
注意 要使用自动SGA内存管理,参数STATISTICS_LEVEL必须设置为TYPICAL或ALL。如果不支持统计集合,数据库就没有必要的历史信息来确定大小。
采用自动SGA内存管理时,确定自动调整组件大小的主要参数是SGA_TARGET,这个参数可以在数据库启动并运行时动态调整,最大可以达到SGA_MAX_SIZE参数设置的值(默认等于SGA_TARGET,所以如果想增加SGA_TARGET,就必须在启动数据库实例之前先把SGA_MAX_SIZE设置得大一些)。数据库会使用SGA_TARGET值,再减去其他手动设置组件的大小(如DB_KEEP_CACHE_SIZE、DB_RECYCLE_CACHE_SIZE等),并使用计算得到的内存量来设置默认缓冲区池、共享池、大池和Java池的大小。在运行时,实例会根据需要动态地对这4个内存区分配和撤销内存。如果共享池内存用光了,实例不会向用户返回一个ORA-04031“Unable to allocate N bytes of shared memory”(无法分配N字节的共享内存)错误,而是会把缓冲区缓存缩小几MB(一个颗粒的大小),再相应地增加共享池的大小。
随着时间的推移,当实例的内存需求越来越确定时,各个SGA组件的大小也越来越固定。即便数据库关闭后又启动,数据库还能记得组件的大小,因此不必每次都从头再来确定实例的正确大小。这是通过4个带双下划线的参数做到的:__DB_CACHE_SIZE、__JAVA_POOL_SIZE、__LARGE_POOL_SIZE和__SHARED_POOL_SIZE。如果正常或立即关闭数据库,则数据库会把这些值记录到存储参数文件(SPFILE)中,并在启动时再使用这些值来设置各个区的默认大小。
另外,如果知道4个区中某个区的最小值,那么除了设置SGA_TARGET外,还可以设置这个参数。实例会使用你的设置作为下界(即这个区可能的最小大小)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-591970/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/35489/viewspace-591970/
本文介绍了Oracle 10g数据库中自动SGA内存管理的特性及其实现方式。从手动管理SGA内存转变为自动管理,只需要设置SGA_TARGET参数,数据库即可动态调整各内存组件的大小。此外,还提到了与内存管理相关的参数及其作用。
512

被折叠的 条评论
为什么被折叠?



