Oracle SGA自動管理プロパティ(sga_targetパラメータ)

11244 ワード

最近、あるネットユーザーはOracle SGAメモリの自動管理特性についてよく知らない.当時翻訳されたOracle 10 g SGAの自動化管理が渋いためかもしれないが、以下はこの問題についてOracle 10 g環境で説明し、よりよく理解するための例を示す.
 
1、関連パラメータ記述a、パラメータSHARED_POOL_SIZE SHARED_POOL_SIZE = integer [K | M | G]
Default value    If SGA_TARGET is set: If the parameter is not specified, then the default is 0 (internally determined by the Oracle Database).    If the parameter is specified, then the user-specified value indicates a minimum value for the memory pool.    If SGA_TARGET is not set (32-bit platforms): 32 M, rounded up to the nearest granule size.   If SGA_TARGET is not set (64-bit platforms): 84 M, rounded up to the nearest granule size.Range of values Minimum:the granule size Maximum:operating system-dependent b、パラメータSGA_TARGETSGA_TARGET = integer [K | M | G] Default value 0 (SGA autotuning is disabled)
SGA_TARGET specifies the total size of all SGA components. If SGA_TARGET is specified, then the following memory pools are automatically sized:    Buffer cache (DB_CACHE_SIZE)    Shared pool (SHARED_POOL_SIZE)    Large pool (LARGE_POOL_SIZE)    Java pool (JAVA_POOL_SIZE)    Streams pool (STREAMS_POOL_SIZE)
If these automatically tuned memory pools are set to non-zero values, then those values are used as minimum levels by AutomaticShared Memory Management. You would set minimum values if an application component needs a minimum amount of memory to function properly.
The following pools are manually sized components and are not affected by Automatic Shared Memory Management:  Log buffer  Other buffer caches, such as KEEP, RECYCLE, and other block sizes  Fixed SGA and other internal allocations
The memory allocated to these pools is deducted from the total available for SGA_TARGET when Automatic Shared Memory Managementcomputes the values of the automatically tuned memory pools.
 
2、パラメータsga_targetがゼロの場合
--#           ,   sga_target=0,      pool  size,db_cache_size,  
robin@SZDB:/u02/database/SYBO2SZ> grep size SYBO2SZ.ora.tmp   
*.db_block_size=8192
*.db_cache_size=285212672
*.db_recovery_file_dest_size=1G
*.java_pool_size=4194304
*.large_pool_size=4194304
*.shared_pool_size=293601280
*.streams_pool_size=4194304
robin@SZDB:/u02/database/SYBO2SZ> grep target SYBO2SZ.ora.tmp
*.pga_aggregate_target=199229440
*.sga_target=0

--#              
robin@SZDB:/u02/database/SYBO2SZ> sqlplus / as sysdba
idle> startup pfile=/u02/database/SYBO2SZ/SYBO2SZ.ora.tmp
ORACLE instance started.
---      sga_target 0
idle> show parameter sga_tar

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_target                           big integer 0

-->           
idle> SELECT name, VALUE
  2    FROM v$parameter
  3   WHERE name IN
  4            ('shared_pool_size',
  5             'java_pool_size',
  6             'streams_pool_size',
  7             'log_buffer',
  8             'db_cache_size',
  9             'db_2k_cache_size',
 10             'db_4k_cache_size',
 11             'db_8k_cache_size',
 12             'db_16k_cache_size',
 13             'db_32k_cache_size',
 14             'db_keep_cache_size',
 15             'db_recycle_cache_size',
 16             'large_pool_size');

NAME                           VALUE
------------------------------ --------------------
shared_pool_size               293601280
large_pool_size                4194304
java_pool_size                 4194304
streams_pool_size              4194304
db_cache_size                  285212672
db_2k_cache_size               0
db_4k_cache_size               0
db_8k_cache_size               0
db_16k_cache_size              0
db_32k_cache_size              0
db_keep_cache_size             0
db_recycle_cache_size          0
log_buffer                     6120448

13 rows selected.

-- Author :Robinson
-- Blog   :http://blog.csdn.net/robinson_0612

--     pfile   spfile
idle>  create spfile from pfile='/u02/database/SYBO2SZ/SYBO2SZ.ora.tmp';

File created.


3、パラメータsga_targetがゼロ値でない場合
--  db
idle> startup force;
ORACLE instance started.

idle> select distinct isspecified from v$spparameter;

ISSPEC
------
TRUE    --> true       spfile     
FALSE

--  sga_max   572m
idle> show parameter sga_max

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 572M

--  sga_target    
idle> alter system set sga_target=572m;      

System altered.

--  sga_target   576m,                      ,      
idle> show parameter sga_target

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_target                           big integer 576M

--               564m
idle> select (285212672+4194304+4194304+293601280+4194304)/1024/1024 from dual;

(285212672+4194304+4194304+293601280+4194304)/1024/1024
-------------------------------------------------------
                                                    564
                                                    
--           ,   4mb
idle> @mem_granule

NAME                                VALUE                          DESCBTION
----------------------------------- ------------------------------ ----------------------------
_ksmg_granule_size                  4194304                        granule size in bytes
_ksmg_granule_locking_status        1                              granule locking status

-- 572m  4    ,                            576m
--              ,      sga_target<=sga_max_size
idle> select 576/4 from dual;

     576/4
----------
       144
       
-- spfile  pfile   sga_target          
idle> create pfile='/tmp/tmp.ora' from spfile;

File created.

--        dbname          sga_target        
idle> ho grep size /tmp/tmp.ora
SYBO2SZ.__db_cache_size=285212672
SYBO2SZ.__java_pool_size=4194304
SYBO2SZ.__large_pool_size=4194304
SYBO2SZ.__shared_pool_size=297795584
SYBO2SZ.__streams_pool_size=4194304
*.db_block_size=8192
*.db_cache_size=285212672
*.db_recovery_file_dest_size=1G
*.java_pool_size=4194304
*.large_pool_size=4194304
*.shared_pool_size=293601280
*.streams_pool_size=4194304

--/tmp/tmp.ora    sga_target   603979776=576m
idle> ho grep sga_target /tmp/tmp.ora
*.sga_target=603979776

--    /tmp/tmp.ora,            ,             
idle> vi /tmp/tmp.ora
idle> ho grep size /tmp/tmp.ora
SYBO2SZ.__db_cache_size=285212672
SYBO2SZ.__java_pool_size=4194304
SYBO2SZ.__large_pool_size=4194304
SYBO2SZ.__shared_pool_size=297795584
SYBO2SZ.__streams_pool_size=4194304
*.db_block_size=8192
#*.db_cache_size=285212672
*.db_recovery_file_dest_size=1G
#*.java_pool_size=4194304
#*.large_pool_size=4194304
#*.shared_pool_size=293601280
#*.streams_pool_size=4194304

--       
idle> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

--     pfile  
idle> startup pfile=/tmp/tmp.ora
ORACLE instance started.

--            sga_target            0
idle> SELECT name, VALUE
  2    FROM v$parameter
  3   WHERE name IN
  4            ('shared_pool_size',
  5             'java_pool_size',
  6             'streams_pool_size',
  7             'log_buffer',
  8             'db_cache_size',
  9             'db_2k_cache_size',
 10             'db_4k_cache_size',
 11             'db_8k_cache_size',
 12             'db_16k_cache_size',
 13             'db_32k_cache_size',
 14             'db_keep_cache_size',
 15             'db_recycle_cache_size',
 16             'large_pool_size');

NAME                                VALUE
----------------------------------- ------------------------------
shared_pool_size                    0
large_pool_size                     0
java_pool_size                      0
streams_pool_size                   0
db_cache_size                       0
db_2k_cache_size                    0
db_4k_cache_size                    0
db_8k_cache_size                    0
db_16k_cache_size                   0
db_32k_cache_size                   0
db_keep_cache_size                  0
db_recycle_cache_size               0
log_buffer                          6120448

13 rows selected.

--  sga_max_size    576m,    sga_target      sga_max_size
idle> show parameter sga_max

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sga_max_size                         big integer 576M


4、小結a、設定sga_targetがゼロ以外の値の場合、以下のパラメータはsga_を受けます.targeの制御ですが、その総額はsgaを超えません.target.Buffer cache(DB_CACHE_SIZE)Shared pool(SHARED_POOL_SIZE)Large pool(LARGE_POOL_SIZE)Java pool(JAVA_POOL_SIZE)Streams pool(STREAM_POOL_SIZE)b、ゼロでないsga_targetの場合、いくつかのパラメータ間のサイズを動的に割り当てることができ、必要に応じて各部分のサイズを動的に調整することができる.c、sga_の場合targetがゼロ値でない場合、DB_も設定されていますCACHE_SIZEなど上記のいくつかのパラメータは、sga_targeは、設定した値よりも小さくない値を初期値として割り当てます.d、sga_を設定する場合targetがゼロの場合、SGA関連パラメータメモリの割り当てはパラメータによって制御され、システム状況に応じて動的にサイズを調整することはできない.f、Oracle 10 g以降SGAのメモリ管理をsga_に設定することを推奨するtarget動的管理.
 
その他の参照
PL/SQL-->カーソル
PL/SQL-->暗黙カーソル(SQL%FOUND)
一括SQLのFORALL文
大量SQLのBULK COLLECT句
PL/SQLセットの初期化と付与
PL/SQL連合配列とネスト表PL/SQL変長配列PL/SQL-->PL/SQL記録
SQL tuning手順
高効率SQL文必殺技
親カーソル、子カーソル、共有カーソル
バインド変数とそのメリットとデメリット
dbms_xplanのdisplay_cursor関数の使用
dbms_xplanのdisplay関数の使用
実行計画の各フィールドの各モジュールの説明
EXPLAIN PLANを使用したSQL文実行プランの取得
Oracle ROWID
NULL値とインデックス(一)
NULL値とインデックス(2)
AUTOTRACE機能の有効化
関数によりインデックス列が無効になります
Oracleバインド変数のスヌープ
Oracle適応共有カーソル
Oracle表領域およびデータファイルOracleパスワードファイルOracleパラメータファイルOracleオンラインREDOログ・ファイル(ONLINE LOG FILE)Oracle制御ファイル(CONTROOLFILE)Oracleアーカイブ・ログOracleロールバックおよびUNDO(UNDO)Oracleデータベース・インスタンス起動クローズ・プロセスOracle 10 g SGAの自動管理OracleインスタンスおよびOracleデータベース(Oracleアーキテクチャ)