1 前言 3
2 目的 3
3 ORACLE内存结构概述 3
4 常用参数说明 3
4.1 BUFFER_POOL_KEEP 4
4.2 CPU_COUNT 4
4.3 DB_BLOCK_BUFFERS 4
4.4 DB_BLOCK_SIZE 5
4.5 DB_FILE_MULTIBLOCK_READ_COUNT 5
4.6 GLOBAL_NAMES 5
4.7 INSTANCE_NAME 5
4.8 LICENSE_MAX_SESSIONS 5
4.9 LICENSE_MAX_USERS 6
4.10 LOG_BUFFER 6
4.11 OPEN_CURSORS 6
4.12 SERVICE_NAMES 6
4.13 SHARED_POOL_SIZE 6
4.14 SORT_AREA_SIZE 7
4.15 JAVA_POOL_SIZE 7
4.16 LARGE_POOL_SIZE 7
4.17 HASH_POOL_SIZE 7
4.18 SHARED_POOL_RESERVED_SIZE 7
4.19 SESSION_CACHED_CURSORS 8
4.20 CURSOR_SPACE_FOR_TIME 8
4.21 SGA_MAX_SIZE 8
4.22 SORT_AREA_RETAINED_SIZE 8
4.23 PGA_AGGREGATE_TARGET 8
4.24 WORKAREA_SIZE_POLICY 9
4.25 SQL_TRACE 9
4.26 TIMED_STATISTICS 9
4.27 DB_CACHE_SIZE 9
4.28 DB_KEEP_CACHE_SIZE 9
4.29 DB_RECYCLE_CACHE_SIZE 9
4.30 DB_FILE_MULTIBLOCK_READ_COUNT 10
4.31 DB_WRITER_PROCESSES 10
5 参数设置原则 10
5.1 SGA系统全局区 10
5.1.1 数据缓冲区(DB_BLOCK_BUFFERS) 10
5.1.2 共享池(SHARED_POOL_SIZE) 10
5.1.3 日志缓冲区(LOG_BUFFER) 11
5.1.4 JAVA池(JAVA_POOL_SIZE) 11
5.1.5 大池(LARGE_POOL_SIZE) 11
5.2 PGA程序全局区 11
5.2.1 分类区(SORT_AREA_SIZE)与哈希区(HASH_AREA_SIZE) 11
6 参数设置实例 11
1 前言
2 目的
3 ORACLE内存结构概述
内存结构=SGA(系统全局区)+PGA(程序全局区)
SGA就是我们所说的内存调优的主要对象。我们重点就是设置SGA
SGA包括:(包括以下五个区)
数据缓冲区:db_block_buffers
共享池: shared_pool_size
日志缓冲区: log_buffer
JAVA池: Java_pool_size
大池: Large_pool_size
PGA包括:
分类区: sort_area_size
哈希区: hash_area_size
4 常用参数说明
Oracle 的parameter参数,分动态参数和静态参数,静态参数需要重新启动数据库才能生效,动态参数不需要重新启动数据库即可生效。
Oracle 9i可以使用spfile的特性,使用alter system set 参数名=参数值 scope=both[spfile];的方法进行修改。
以下给出了Oracle 数据库重点关注的parameter的初始优化设置。
静态参数sga_max_size
Shared pool
动态参数shared_pool_size
静态参数shared_pool_reserved_size
动态参数open_cursors
静态参数cursor_space_for_time
静态参数session_cached_cursors
Data buffer
动态参数db_cache_size
动态参数db_keep_cache_size
动态参数db_recycle_cache_size
(sga_max_size大小,除了分配给所有非data buffer的size,都分配给data buffer)
Sga other memory
动态参数large_pool_size
静态参数java_pool_size
动态参数log_buffer
Other memory
动态参数sort_area_size
静态参数sort_area_retained_size
静态参数pga_aggregate_target
动态参数workarea_size_policy
磁盘I/O配置
静态参数sql_trace
动态参数timed_statistics
动态参数db_file_multiblock_read_count
静态参数db_writer_processes
静态参数undo_management
动态参数undo_retention
4.1 BUFFER_POOL_KEEP
参数类型: 字符串
语法: BUFFER_POOL_KEEP = {integer |
(BUFFERS: integer [, LRU_LATCHES: integer] ) }
这里 integer是缓冲区数,和LRU锁存器的数
参数类: 静态
默认值:无
BUFFER_POOL_KEEP 可以使你在DB_BLOCK_BUFFERS 下作为保留缓冲池来驻留对象。你也可以用分配一个LRU的一部分(用DB_BLOCK_LRU_LATCHES )
可以指定5种格式,比如简单的:
BUFFER_POOL_KEEP = 5
或指定缓冲区的组合项和LRU锁存器,如:
BUFFER_POOL_KEEP = (BUFFERS: 400 [, LRU_LATCHES:3] )
4.2 CPU_COUNT
参数类型: 整数
参数类: 静态
默认值: 有Oracle系统自动设置
值的范围:0 到 n
一般由Oracle安装程序自动设置。CPU_COUNT指定CPU的个数。Oracle使用此参数设置LOG_SIMULTANEOUS_COPIES的默认值。单个CPU时CPU_COUNT为1。根据经验,你可以修改SIMULTANEOUS_COPIES 为CPU个数的两倍。
4.3 DB_BLOCK_BUFFERS
参数类型: 整数
参数类: 静态
默认值: 48MB/块大小
值的范围:4 到 操作系统允许的最大
并行服务器:多个实例可以有不同的值。
DB_BLOCK_BUFFERS 指定高速缓冲区的数目。由几个参数一起构成SGA的大小。
缓冲区的实际的大小与DB_BLOCK_SIZE参数有关。有效地使用这个参数可以改善I/O的性能。这个缓冲区的保留("keep")和再利用("recycle")是这个缓冲区变过来的。另外,缓冲区中的每个LRU列表至少包含50个缓冲区。因此,你必须指定合适的BUFFER_POOL_KEEP 和 BUFFER_POOL_RECYCLE,确保BLOCK_BUFFERS符合下面公式:
DB_BLOCK_BUFFERS > #_buffers_in_"keep"_buffer_pool
+ #_BUFFERS_IN_"recycle"_pool
+ 50*(DB_BLOCK_LRU_LATCHES
- #_lru_latches_in_"keep"_buffer_pool
- #_lru_latches_in_"recycle"_buffer_pool)
如果你没有在BUFFER_POOL_KEEP和BUFFER_POOL_中指定任何LRU,则LRU默认为1。
注意:在oracle9i以上版本,该参数已被db_cache_size代替了,所以该参数在oracle9i以上版本默认为0。我们不用设置它。
4.4 DB_BLOCK_SIZE
参数类型: 整数
参数类: 静态
默认值: 与操作系统有关,通常为8k
值的范围:2k,8k,16k,32k
并行服务器:必须设置所有的实例有相同的数据块。
4.5 DB_FILE_MULTIBLOCK_READ_COUNT
参数类型: 整数
参数类: 动态,范围= ALTER SYSTEM, ALTER SESSION.
默认值: 8
值的范围:与操作系统有关
在扫描表时一次读的最小的数据块数目。在OLTP和批处理事务中,此参数可以是4到16。对于DSS类型应用,可以设置高些。
4.6 GLOBAL_NAMES
参数类型: 布尔型
参数类: 动态,范围 = ALTER SESSION, ALTER SYSTEM.
默认值: TRUE
值的范围:TRUE | FALSE
用于知单数据库全局名称。如果是分布环境,要将此参数设置为TRUE。
4.7 INSTANCE_NAME
参数类型: 字符型
语法:INSTANCE_NAME = instance_id
参数类: 静态
默认值: 实例的SID
指定数据库实例的名字,在安装创建完成后此参数已经设置好,用户一般不用设置此参数。
4.8 LICENSE_MAX_SESSIONS
参数类型: 整数型
参数类: 动态 ,范围= ALTER SYSTEM
默认值: 0 到 许可的数
并行服务器: 多个实例可以有不同的值,但是所有实例的会话数之和应该等于所有数据库允许的会话总数。当会话达到最大值时,只有具有RESTRICTED_SESSION权限的用户才能进行登录到数据库。而一般的用户会得到提示信息。0 值表示当前的会话不受限制。如果 设置为非0的话,还要参考 LICENSE_SESSIONS_WARNING参数。
如果不希望使能使用许可和用户许可,可以设置 LICENSE_MAX_SESSIONS 或LICENSE_MAX_USERS 任何一个为0即可。
4.9 LICENSE_MAX_USERS
参数类型: 整数型
参数类: 动态 ,范围= ALTER SYSTEM
默认值: 0
值范围: 0 到 用户许可数
并行服务器: 多个实例有相同的值。如果指定了不同的值,则第1个实例的值优先。
LICENSE_MAX_USERS 指定数据库可以建立的用户数目,如果达到这个值,将不能再创建更多的用户。当然你可以加大这个值。
|
|