Gblog

おもにTips

SQL_TEXT から SQL_ID を取得する。

SQL_ID っていつも V$SQL.SQL_ID とかから拾っていましたが、dbms_sqltune_util0.sqltext_to_sqlid なるものを見つけました。

SQL> col sql_id for a15
SQL> select 111111 from dual
  2  /

    111111
----------
    111111

SQL> select dbms_sqltune_util0.sqltext_to_sqlid('select 111111 from dual'||chr(0)) sql_id from dual;

SQL_ID
---------------
59bjbpsjgmvkp

SQL>
SQL> select sql_text from v$sql  where sql_id='59bjbpsjgmvkp';

SQL_TEXT
--------------------------------------------------------------------------------
select 111111 from dual

 11.2 からかな?

参照:http://www.morganslibrary.org/reference/pkgs/dbms_sqltune_util0.html

便利かも?

DESC DBMS_STATS

ちょっと話題にあがったので。

表の定義が確認できるSQL*Plus のコマンド DESCRIBE (短縮系は DESC)ですが、ファンクションやパッケージの引数も確認できます。

SQL> DESC DBMS_STATS
PROCEDURE ALTER_DATABASE_TAB_MONITORING
 引数名                         タイプ                  In/Out Default?
 ------------------------------ ----------------------- ------ --------
 MONITORING                     BOOLEAN                 IN     DEFAULT
 SYSOBJS                        BOOLEAN                 IN     DEFAULT
PROCEDURE ALTER_SCHEMA_TAB_MONITORING
 引数名                         タイプ                  In/Out Default?
 ------------------------------ ----------------------- ------ --------
 OWNNAME                        VARCHAR2                IN     DEFAULT
 MONITORING                     BOOLEAN                 IN     DEFAULT
PROCEDURE ALTER_STATS_HISTORY_RETENTION
 引数名                         タイプ                  In/Out Default?
 ------------------------------ ----------------------- ------ --------
 RETENTION                      NUMBER                  IN
・・・

とか

SQL> DESC TIMESTAMP_TO_SCN
FUNCTION TIMESTAMP_TO_SCN RETURNS NUMBER
 引数名                         タイプ                  In/Out Default?
 ------------------------------ ----------------------- ------ --------
 QUERY_TIME                     TIMESTAMP               IN

 とか

引数がわからないとかに使います。ちょっと便利なコマンド。

 

AWR でみるべきポイントのメモ

引き続き AWR について。最近そんな仕事ばかり。

 

最初にみるのは

  • Top 10 Foreground Events by Total Wait Time

== CPU 消費が高い場合 ==

  • Host CPU
  • Time Model Statistics
  • DB CPU
    background cpu time
    parse time elapsed
  • SQL ordered by CPU Time
  • SQL ordered by Parse Calls

== I/O の待機が高い場合 ==

  • Load Profile
  • IO Profile
  • SQL ordered by User I/O Wait Time
  • SQL ordered by Reads
  • SQL ordered by Physical Reads (UnOptimized)
  • File IO Stats (Tablespace IO Stats)
  • Instance Efficiency Percentages (Target 100%)
    Buffer Hit %:
  • Segments by Physical Reads
  • Segments by Physical Read Requests
    Segments by * は他にも複数あり、状況に応じて。

個人的には、以下はあまり見ません。

  • IOStat by Function summary
  • IOStat by Filetype summary
  • IOStat by Function/Filetype summary

== 共有プール関連 ==

  • Instance Efficiency Percentages (Target 100%)
    Soft Parse %:
    Latch Hit %:
  • Memory Statistics
  • Shared Pool Statistic
  • SQL ordered by Sharable Memory
  • SQL ordered by Version Count
  • Shared Pool Advisory
  • Memory Dynamic Components
  • Memory Resize Ops (Memory Resize Operations Summary)
  • SGA breakdown difference

== GLOBAL CACHE 関連 ==

  • Global Cache Load Profile
  • SQL ordered by Cluster Wait Time
  • Segments by Global Cache Buffer Busy
  • Segments by CR Blocks Received
  • Segments by Current Blocks Received
  • Other Instance Activity Stats
    gc blocks lost

他にもみるポイントはあるかもですが、どちらかというとみるべきポイントをしぼっていきたい。これいらないんじゃね?というものがあれば消していきたい。

実際にまわしてみてから、アップデート予定。

AWRで性能分析するための準備

ちょっと用事があったのでまとめます。

AWRの保持期間を変更して、(しばらく運用してから)awrextr.sql で別環境に移行することを想定。

容量のチェックとか必要そうなポイントをまとめました。

 

1. AWRで使用している領域の確認

SQL> select SCHEMA_NAME, trunc(SPACE_USAGE_KBYTES/1024,1) "SPACE_USAGE_MB"
  2    from v$sysaux_occupants
  3   where OCCUPANT_NAME='SM/AWR'

SCHEMA_NAM     SPACE_USAGE_MB
---------- ------------------
SYS                       472
続きを読む

索引の使用状況の監視

列の使用状況を監視する方法を書いたので、ついでに索引も。

 

1. 索引のモニタリング開始

ALTER INDEX ... MONITORING USAGE; を実行して監視を有効にします。

SQL> ALTER INDEX TAB1_PK MONITORING USAGE;

索引が変更されました。

SQL> select * from v$object_usage;

INDEX_NAME TABLE_NAME                     MON USE START_MONITORING    END_MONITORING
---------- ------------------------------ --- --- ------------------- -------------------
TAB1_PK    TAB1                           YES NO  04/02/2016 01:43:15

 こんな感じ。

続きを読む