後で詳細にトレースすること。
OAFで実行されるSQLをStored Outline化し、DBA_OUTLINES、V$SQLを参照して、使われるかどうかを見たが、使われず。一度ログオフして、再度参照するとDBA_OUTLINEのUSE列が変化した。VO側のキャッシュのせいなのだろうか?
2012年10月30日火曜日
2012年10月27日土曜日
Migrate From Stored Outline To SQL Plan Management
Stored Outlineは次バージョン以降で廃止が予定されているということで、SQL Plan Management Plan(以下、SPM)をオラクルは今後推奨。また、Stored OutlineからSPMへのi移行を実施するパッケージ・プロシージャが提供されている。
【必要な権限】
DBMS_SPMパッケージに対する実行権限
だと思う。
【移行方法】
【必要な権限】
DBMS_SPMパッケージに対する実行権限
ADMINISTER
SQL
MANAGEMENT
OBJECT権限
だと思う。
【移行方法】
DBA_OUTLINES のMIGRATED列が 'NOT-MIGRATED'のアウトラインが、移行前のアウトラインである。 DBMS_SPM.MIGRATE_STORED_OUTLINE ファンクションを使用してアウトラインを ベースラインに移行するCATEGORY 列を用いて対象を絞り込んで移行するには以下の様に設定する。 ----------------------- DECLARE my_rep CLOB; BEGIN my_rep := DBMS_SPM.MIGRATE_STORED_OUTLINE( attribute_name => 'CATEGORYの列を指定', attribute_value => 'OUTLINE名を指定' ); END; / ----------------------【格納されているベースラインの実行計画を見る方法】
select * from table(dbms_xplan.display_sql_plan_baseline(sql_handle=>'XXXXXX'));
【格納されているベースラインを使用したかどうかを確認する方法】 Stored Outlineでは、DBA_OUTLINESやV$SQLを参照するとアウトラインを使用したかどうかが わかるが、ベースラインでは、そのようなビューは見当たらない。あくませ、Acceptedしている かどうかである。 その場合、 1. set autotrace traceonly explainでNotesを見るか 2. select * from table(dbms_xplan.display_cursor('SQL_ID','CHILD_NUMBER')); でSQL_IDとCHILD_NUMBERを指定してNotesを見るかのどちらかである。'XXXXXX'は、dba_sql_plan_baselinesビューのsql_handle列を指定する。
2012年10月25日木曜日
emacs -- config --
とりあえず。勉強は続ける。
;; ツールバーを非表示
(tool-bar-mode 0)
;; カラム数を表示
(column-number-mode t)
;; TABの表示幅
(setq-default tab-width 4)
;; 時計の表示
(display-time-mode t)
;; 行番号を常に表示する
(global-linum-mode t)
;; Title Bar
(setq frame-title-format "%f")
;; cua-modeの設定
(cua-mode t) ; cua-mode on
(setq cua-enable-cua-keys nil) ; CUAキーバインドを無効
;; ツールバーを非表示
(tool-bar-mode 0)
;; カラム数を表示
(column-number-mode t)
;; TABの表示幅
(setq-default tab-width 4)
;; 時計の表示
(display-time-mode t)
;; 行番号を常に表示する
(global-linum-mode t)
;; Title Bar
(setq frame-title-format "%f")
;; cua-modeの設定
(cua-mode t) ; cua-mode on
(setq cua-enable-cua-keys nil) ; CUAキーバインドを無効
フィルタ述語とアクセス述語
基本をメモ
フィルタ述語: 行頭の番号に対応するオペレーションの実行時に、取得したデータから 対象データを抜粋(フィルタ)する処理
アクセス述語: 行頭の番号に対応するオペレーションの実行時に、表示された述語を使用して データにアクセスしたことを示す。一般にINDEX Scan系の処理の場合に表示される。
アクセス述語の場合、データが選択的に選ばれるため、ブロックアクセス量は少なく、
フィルター処理はデータにアクセスした後に絞込みをかける為、アクセス述語に比べるとブロック数
は多い。
フィルタ述語: 行頭の番号に対応するオペレーションの実行時に、取得したデータから 対象データを抜粋(フィルタ)する処理
アクセス述語: 行頭の番号に対応するオペレーションの実行時に、表示された述語を使用して データにアクセスしたことを示す。一般にINDEX Scan系の処理の場合に表示される。
アクセス述語の場合、データが選択的に選ばれるため、ブロックアクセス量は少なく、
フィルター処理はデータにアクセスした後に絞込みをかける為、アクセス述語に比べるとブロック数
は多い。
2012年10月22日月曜日
問い合わせによる一時変数の置換 --- refactoring ---
一時変数は、一時的でかつローカルな使用の為、メソッドの内容を理解してたどり着く必要がある。つまり、長いメソッドになりがちである。それらを問い合わせメソッドにしてしまうことにより、内容の理解を容易にし、他のメソッドからも呼び出すことが可能になる。
[リファクタリングを行いやすい状況]
・ 一度だけ代入される一時変数
・ 代入される値をつくる式が副作用を起こしにくい。
[Example: from Refactoring by Martin Fowler]
if (baseProce() > 1000)
[リファクタリングを行いやすい状況]
・ 一度だけ代入される一時変数
・ 代入される値をつくる式が副作用を起こしにくい。
[Example: from Refactoring by Martin Fowler]
double basePrice = _itemprice * _quantity;
if (basePrice > 10000)
return basePrice * 0.95
else
return basePrice * 0.98
↓
if (baseProce() > 1000)
return basePrice * 0.95
else
return basePrice * 0.98
double basePrice() {
return _itemprice * _quantity;
}
2012年10月12日金曜日
CURSOR_SHARING Memo
============================================
CURSOR_SHARINGでは、同じカーソルを共有するSQL文の種類を判断。
FORCE
既存のカーソルを共有する場合、またはカーソル・プランが最適ではない場合に、新しいカーソルの作成が許可される。
SIMILAR
リテラルがわずかに異なっても、その他が同じSQL文であれば、
その異なるリテラルがSQL文の意味または計画が最適化される程度のいずれかに
影響しないかぎり、カーソルが共有される。
EXACT
同一のテキストを含む文のみに、前述のカーソルの共有が許可される。
============================================
9i当時はSimilarにすることで、複数のリテラル値でも共有カーソル化されると売りだったが、
現状のオラクルコメントは以下の通り。「優れたカーソル共有」機能には更に分析が必要。
CURSOR_SHARINGでは、同じカーソルを共有するSQL文の種類を判断。
FORCE
既存のカーソルを共有する場合、またはカーソル・プランが最適ではない場合に、新しいカーソルの作成が許可される。
SIMILAR
リテラルがわずかに異なっても、その他が同じSQL文であれば、
その異なるリテラルがSQL文の意味または計画が最適化される程度のいずれかに
影響しないかぎり、カーソルが共有される。
EXACT
同一のテキストを含む文のみに、前述のカーソルの共有が許可される。
============================================
9i当時はSimilarにすることで、複数のリテラル値でも共有カーソル化されると売りだったが、
現状のオラクルコメントは以下の通り。「優れたカーソル共有」機能には更に分析が必要。
CURSOR_SHARING=SIMILARの設定は11.1以降のリリースでは推奨されません。
次のリリース(12.1)ではこの値は廃止される可能性があります。
11.1以降のリリースではCURSOR_SHARING=FORCEを設定し、3.でも紹介した11.1の
新機能「優れたカーソル共有」を利用することが推奨されています
2012年10月9日火曜日
GitHub Manual
とりあえず、ソースを「GitHub」にUpしてみた。使い方は、まだわかっていないが、WWWに転がっている各種ドキュメントを見ながらやると、何だかんだで、できてしまうのが、今の時代の凄さを感じるな、やはり。
http://git-scm.com/documentation
http://git-scm.com/documentation
SQL Developer Custom Report 001 - v$sql_monitor -
SQL Developerでのレポート作成実施。v$sql_monitorからsqlを抽出し、その実行計画を子レポートで出力する。
ダウンロードして、SQL Developerのレポートタブで取り込んでください。
間違っていたりしたら、改善ポイントを御指摘頂けると、嬉しいです
RealtimeSQLMonitor_ExecutePlan.xml
ダウンロードして、SQL Developerのレポートタブで取り込んでください。
間違っていたりしたら、改善ポイントを御指摘頂けると、嬉しいです
RealtimeSQLMonitor_ExecutePlan.xml
登録:
投稿 (Atom)