Gblog

おもにTips

STA (SQL Tuning Advisor) のコマンド

メモメモ。。。

 

VARIABLE STMT_TASK VARCHAR2(64);
EXEC :STMT_TASK := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id=>'xxxxxxxxxxxxx', time_limit=>300);
EXEC DBMS_SQLTUNE.EXECUTE_TUNING_TASK(:STMT_TASK);
SET LONGCHUNKSIZE 2000000 LONG 2000000 LINESIZE 300 PAGESIZE 1000;
COLUMN REPORT FORMAT A300
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK(:STMT_TASK) AS REPORT FROM DUAL;

 

log file sync の調べ方

log file sync をすごく簡単に言うと、、、

 

「コミット時に発生する待機で、LGWRによるREDOログの書込み完了待ち」

 

です。

 

トランザクションがコミットされると、データの整合性が保たれるようREDOログ情報をファイルに書き出す必要があります。

なので、サーバープロセスが commit すると LGWR は REDOログバッファの情報を REDOログファイルに書き出します。

サーバープロセスはそれを待ちます。

 

「commit 時に log file sync で待つ」

 

これは正常な動作です。

 

でも log file sync 待ちが長くなると何か問題があるかもしれません。

 

続きを読む

adaptive log file sync ...

log file sync の待機時間が長いというので、post-wait から polling に変わっていないか調べました。

AWR でここら辺のインスタンス統計が上がると polling になっている可能性があります。

  • redo synch poll writes
  • redo synch polls

意味は、、、よくわかりません。redo synch writes は、

ログ・バッファも適用されている変更を、コミットのためにディスクに書き込む必要があった回数

とあります。poll がついてるのできっとそういうことでしょう。

redo synch polls は polling の回数かな、、、LGWR の?

続きを読む

サブパーティションごとの件数

パーティションごとの件数はこんな感じで確認できます。

select count(*) from [table_name] partition( [parition_name] );

 

サブパーティションの場合は?

続きを読む

spool で CSV (Comma-Separated Values)

TSV やったんで、CSV もついでに。

こんなかんじ

set lin 120
set pages 0
set head off
set feed off
set term off
set trims on
set echo off
spool test.csv
select dummy || ',' || dummy  from dual;
spool off

 

続きを読む

spool で TSV (Tab-Separated Values)

CHR 関数でできる。CHR(9) がタブ。

こんな感じ

set lin 120
set pages 0
set head off
set feed off
set term off
set trims on
set echo off
spool test.tsv
select dummy || CHR(9) || dummy from dual;
spool off

続きを読む

COMMAND_TYPE

V$SQL の COMMAND_TYPE 列や、V$SESSION の COMMAND列は、NUMBER 型。

これは、V$SQLCOMMAND で定義されている。

SQL> select * from V$SQLCOMMAND order by 1;

COMMAND_TYPE COMMAND_NAME
------------ ------------------------------
           0
           1 CREATE TABLE
           2 INSERT
           3 SELECT
           4 CREATE CLUSTER
           5 ALTER CLUSTER
           6 UPDATE
           7 DELETE
         ...
         220 DROP FLASHBACK ARCHIVE
         222 CREATE SCHEMA SYNONYM
         224 DROP SCHEMA SYNONYM
         225 ALTER DATABASE LINK

225まであんの?(11.2.0.4) って思ったけど、結構番号がとんでる。

 

V$ビューの定義を確認してみると、、、

SQL> select VIEW_DEFINITION from V$FIXED_VIEW_DEFINITION
  2  where VIEW_NAME ='GV$SQLCOMMAND';

VIEW_DEFINITION
----------------------------------------------------------------------
select inst_id, indx, oct_name  from x$oct where indx=oct_type

 

で、除外されているやつをみてみた。

SQL> select *  from x$oct where indx!=oct_type;

ADDR                   INDX    INST_ID   OCT_TYPE OCT_NAME
---------------- ---------- ---------- ---------- ------------------------------
000000000C14EDC0         69          1          0
000000000C14EFB0        100          1          0
000000000C14EFC0        101          1          0
000000000C14EFD0        102          1          0
000000000C14EFE0        103          1          0
000000000C14EFF0        104          1          0
000000000C14F000        105          1          0
...

 

何も面白くなかった。。。