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 指定數據庫可以建立的用戶數目,如果達到這個值,將不能再創建更多的用戶。當然你可以加大這個值。
|
|