pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1 Tweet
前回のネタ振りから随分間があいてしまいました。m(_ _)m
「pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? 」シリーズで_pga_max_sizeが固定値の様に見えてしまっているのですが、そのようになってしまった、"大きなミス"ってどこかわかりますか?
ってところ、わかりますかね。
実は、行く先々で pga_aggregate_targetとか _pga_max_sizeの値を覗いてみてて、あれ、自分のMacやPCで確かめた値と違う???何故ってことが数回あって、あ、そういことかと気付いたわけです。
答えから先に言うと、
Oracle10g R1までは確かに _pga_max_sizeは200MBで固定値だった。ところが、Oracle10g R2以降は、Oracleが内部で動的に変更する隠しパラメータになったということ。
そして、_pga_max_sizeをalter system文で変更してしまうと、Oracle10g R2以降では、その値は動的に変更されず、ユーザが設定した値で固定されてしまう。
ということ。
この影響で、私が実施したテストケースでは全て_pga_max_sizeは200MBのままで固定値のように見えていたということ。。
orz... まあ、隠しパラメータですから、どんな仕様変更があっても文句はいいません。>< はい。
では、早速、alter system文で値を設定してしまった _pga_max_sizeパラメータを元の状態に戻しましょう!
手順としては、Oracleインスタンス起動、spfileからpfileを作り、pfileから_pga_max_sizeの部分を削除、インスタンス停止、pfileでOracleインスタンス起動、spfile作って再起動って感じです。
とりあえず、Oracle10g R1で。
SYS> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Prod
PL/SQL Release 10.1.0.3.0 - Production
CORE 10.1.0.3.0 Production
TNS for MacOS X Server: Version 10.1.0.3.0 - Production
NLSRTL Version 10.1.0.3.0 - Production
SYS> show parameter pga
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 100M
SYS> @pgastat
NAME size(MB)
------------------------------ ----------
aggregate PGA target parameter 100
aggregate PGA auto target 76.1923828
global memory bound 5
SYS>
SYS> create pfile from spfile;
ファイルが作成されました。
SYS> !cat $ORACLE_HOME/dbs/initxtiger.ora
・・・中略・・・
xtiger.__large_pool_size=4194304
xtiger.__shared_pool_size=104857600
*._pga_max_size=209715200
*.background_dump_dest='/Volumes/Discus/4oracle/oracle/u01/app/oracle/admin/xtiger/bdump'
*.compatible='10.1.0.2.0'
・・・中略・・・
SYS> edit $ORACLE_HOME/dbs/initxtiger.ora
*._pga_max_sizeの行を削除!
SYS> !cat $ORACLE_HOME/dbs/initxtiger.ora
・・・中略・・・
xtiger.__large_pool_size=4194304
xtiger.__shared_pool_size=104857600
*.background_dump_dest='/Volumes/Discus/4oracle/oracle/u01/app/oracle/admin/xtiger/bdump'
*.compatible='10.1.0.2.0'
・・・中略・・・
SYS> shutdown
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SYS>
SYS> startup pfile=$ORACLE_HOME/dbs/initxtiger.ora
ORACLEインスタンスが起動しました。
Total System Global Area 293601280 bytes
Fixed Size 778888 bytes
Variable Size 120331640 bytes
Database Buffers 171966464 bytes
Redo Buffers 524288 bytes
データベースがマウントされました。
データベースがオープンされました。
SYS> create spfile from pfile;
ファイルが作成されました。
SYS> shutdown
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SYS> startup
ORACLEインスタンスが起動しました。
Total System Global Area 293601280 bytes
Fixed Size 778888 bytes
Variable Size 120331640 bytes
Database Buffers 171966464 bytes
Redo Buffers 524288 bytes
データベースがマウントされました。
データベースがオープンされました。
SYS> show parameter pga
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
pga_aggregate_target big integer 100M
SYS> @pgastat
NAME size(MB)
------------------------------ ----------
aggregate PGA target parameter 100
aggregate PGA auto target 76.3242188
global memory bound 5
SYS> @show_hidden_pga_param
KSPPINM KSPPSTVL KSPPSTDF
------------------------------ ------------------------------ ---------------------------
_pga_large_extent_size 1048576 TRUE
_pga_max_size 209715200 TRUE
_use_ism_for_pga TRUE TRUE
pga_aggregate_target 104857600 FALSE
SYS>
戻った〜。 show parameter pgaで 隠しパラメータである_pga_max_sizeパラメータが表示されているということは、その値がデフォルト値と同じ値であっても、そのパラメータの値は、ユーザがセットした値ということ。show parameterで _pga_max_sizeが表示されなくなったらOK。
ちなみに、 show_hidden_pga_param.sqlは以下のようなクエリ。
select
a.ksppinm
,b.ksppstvl
,b.ksppstdf
from
x$ksppi a join x$ksppcv b
on a.indx = b.indx
where
a.ksppinm like '%pga%'
order by
a.ksppinm
/
次回へつづく。
前回までのあらすじ・・・
・Mac De Oracle なんですが、Windows(32bit)でのOracleな話
・Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #2
・Mac De Oracle なんですが、Windows(32bit)でのOracleな話 #3
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #5
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #6
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #7
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #8
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #9
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #10
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #11
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #12
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #13
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #14
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #15
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #16
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #17
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #18
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #19
・_pga_max_sizeってOracle11gではどうなったっけ? という確認。
・_pga_max_sizeってOracle11gではどうなったっけ? という確認。シーズン2
| 固定リンク | 0
コメント