Gblog

おもにTips

errorstack

errorstack の取り方なんてもう忘れてしまいました。。。 デバッグコマンドになるので、実行には十分にご注意いただき自己責任でおねがいします。

like '\_optim%' escape '\'

隠しパラメータの確認方法2のとこで like '_optim%' ってやったけど、これだと 先頭1文字がが "_" じゃないやつもヒットしちゃう。ほんとはエスケープしてあげる必要がある。で必要になったときのためのメモ。タイトルのとおり。

隠しパラメータの確認方法2

隠しパラメータって V$ ビューで見えないかと思ってる方も多いかもしれませんが。設定すれば見えます。例えば。 SQL> alter system set "_optim_peek_user_binds" = false ;System altered.SQL> col name for a30SQL> col value for a10SQL> col description…

show parameter の裏側

show parameter に SQL TRACE をしかけてみた。 event 10046 level 12 でバインド変数もみてみた。 結果、 =====================PARSING IN CURSOR #18446741324870934176 len=289 dep=0 uid=0 oct=3 lid=0 tim=3873769313860 hv=2462394820 ad='d3ce4140' …

SQL文の先頭のヒントは無視される

そもそもコメントは無視されるのですが、 何が言いたいかというと。 /* TEST */SELECT 1 FROM DUAL; SELECT 1 FROM DUAL; この 2つのSQLの SQL_ID は同じ。

asmcmd のコマンドをみたいとき

asmcmd って結構べんりですよね。しょぼいけど。

今度はコンポジット

パーティションの CREATE 文は書きましたが、今度はコンポジット・パーティション。主なものだけですが。

パーティションの CREATE 文

当然、そらでかけるわけもなく。

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 3…

log file sync の調べ方

log file sync をすごく簡単に言うと、、、 「コミット時に発生する待機で、LGWRによるREDOログの書込み完了待ち」 です。 トランザクションがコミットされると、データの整合性が保たれるようREDOログ情報をファイルに書き出す必要があります。 なので、サ…

adaptive log file sync ...

log file sync の待機時間が長いというので、post-wait から polling に変わっていないか調べました。 AWR でここら辺のインスタンス統計が上がると polling になっている可能性があります。 redo synch poll writes redo synch polls 意味は、、、よくわか…

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

パーティションごとの件数はこんな感じで確認できます。 select count(*) from [table_name] partition( [parition_name] ); サブパーティションの場合は?

spool で CSV (Comma-Separated Values)

TSV やったんで、CSV もついでに。 こんなかんじ set lin 120set pages 0set head offset feed offset term offset trims onset echo offspool test.csvselect dummy || ',' || dummy from dual;spool off

spool で TSV (Tab-Separated Values)

CHR 関数でできる。CHR(9) がタブ。 こんな感じ set lin 120 set pages 0set head off set feed off set term off set trims onset echo off spool test.tsvselect 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 IN…

遅延セグメント作成

パラメータは、DEFERRED_SEGMENT_CREATION でデフォルトが true 。 つまり、デフォルトだと表を作成してもセグメントは作成されない。テストするときとか、たまに不便。 segment creation immediate 句をつけてあげると即時にセグメントが作成される。 SQL> …

Predicate information って V$SQL_PLAN で見れるのね

しらなかった。 例えば。

インスタンスを起動するのに必要なパラメータは何か?

パラメータのデフォルト値を調べる用事で、DB 作るの面倒だし、なんとか NOMOUNT で起動できないか考えた結果。。。

yum って

使ったことない。 rpm を追加でインストールする用事があったので少しさわってみました。 isoイメージがあるのでこれをリポジトリに。 /media にマウントして # mount /dev/cdrom /media リポジトリの設定を超適当に書きます。 /etc/yum.repos.d/oel67.rep […

DBMS_METADATA.GET_DDL

何を忘れるって、引数の順番。 select DBMS_METADATA.GET_DDL(object_type,object_name,owner) as sql from dual ; 自分で実行するなら owner は省略可能。 object_type は、、、いろいろできるよ。

AWR SQL レポートの出力も非対話で

できるのね。

バイナリの sar をテキストにする

sar くださいっていったら、バイナリでくれた。。。 ちなみに sysstat をいれると、定期的に /var/log/sa の下に sar の結果を出力してくれます。saNN がバイナリで、sarNN がテキスト。NN は日付けになります。 でバイナリをファイルに加工する方法を調べる…

ANALYZE INDEX VALIDATE STRUCTURE;

INDEX_STATS って揮発するのね、知らなかった。 validate structure の結果は、X$KDXST に格納されるみたいですが データを参照できるのは validate structure を実行したセッションのみ。

V$GES_TRAFFIC_CONTROLLER ?

V$GES_TRAFFIC_CONTROLLER ってなんぞ? 10.2 のアップグレード・ガイドにあるがリファレンスには何もない。 もともとは、V$DLM_TRAFFIC_CONTROLLER だったらしい。

recyclebin

recyclebin まわりのコマンドもすぐわすれるのでまとめ。 パラメータは、RECYCLEBIN 。デフォルト on 。

AWR - TXエンキュー待ちの分析

TXエンキューって要するに行ロックの競合です。 昔は「アプリの問題です」でバッサリ切り捨ててしてました。今も切り捨てるのは同じですが、いろいろ調べられるようになっています。

AWR - CPU分析

見るべきポイントでちょこっと書きましたが、CPU分析の観点で整理。相変わらず 11.2.0.4 です。ごめんなさい。 最初に確認するのはいつもどおり。 Top 10 Foreground Events by Total Wait Time DB CPU が高い(最上位)の場合、これはヘルシーとも言えます…

Can't locate strict.pm

perl のことはよくわかりません。 Can't locate strict.pm in @INC ... なるエラーが発生しました。 どうやら、strict.pm が見つけられないようです。 で、locate コマンドでみると /usr/lib/perl5/5.8.8 にありました。

自動メンテナンスタスクが有効かどうかの確認

このビューもいつも忘れるので。。。。 SQL> col client_name for a32SQL> select client_name,status from dba_autotask_client;CLIENT_NAME STATUS-------------------------------- ----------------auto optimizer stats collection DISABLEDauto space …

パーティション関連のディクショナリビューで混乱したので

パーティション関連のディクショナリビューはいろいろあるので整理。 表、パーティション、サブパーティションの情報DBA_TABLESDBA_TAB_PARTITIONSDBA_TAB_SUBPARTITIONS 表のカラム情報DBA_TAB_COLSDBA_TAB_COLUMNS 表の統計(パーティションごとの統計も含…

rpm -qa コマンドで32bitパッケージと64-bitパッケージを区別する

rpm -qa だと # rpm -qa | grep glibc-2.5glibc-2.5-81glibc-2.5-81 2行でてくるけど。 --queryformat オプションを使用すると # rpm -qa --queryformat="%{name}-%{version}-%{release}.%{arch}\n" | grep glibc-2.5glibc-2.5-81.i686glibc-2.5-81.x86_64 …

AWR SQL report で何が見えるのか?

AWR report (awrrpt.sql) だと、SQL 単位の情報は SQL ordered by * のセクションでしか確認できない。 AWR SQL report (awrsqrpt.sql) だと 実行計画(Execution Plan) 実行統計(Plan Statistics) などが確認可能。期間中に複数プランがあればまとめて出し…

library cache: mutex X

AWR の分析で、ちょっと気になった library cache: mutex X 。一般的に発生するのは、以下のような場合。 ハード・パース Version Count が高い SQL の実行 ただ今回の環境は、Soft Parse がほぼ 100% で Version count が高い SQL はいませんでした。ASH か…

PL/SQLのチューニング?

PL/SQLで、SQL以外の部分が遅い場合は、NATIVE Compile で改善できます。

AWR - latch: shared pool の分析

引き続き(?)AWR を分析中なのでしょうか・・・。 Top 10 Foreground Events で latch: shared pool が高かったので調べてみました。 shared pool ラッチは、shared pool を保護するラッチです。複数のプロセスが同時に割当てを行おうとすると破損してしま…

v$sesstat が使いにくい件

なんだよ、これ統計名、持ってないじゃん! ということで SELECT se.sid,username,name,valueFROM v$sesstat st,v$statname sn,v$session seWHERE st.statistic# = sn.statistic#AND st.sid = se.sidAND username = 'TEST'AND (name = 'session cursor cache…

AWR - latch: row cache object の分析

引き続き(?)AWR を分析中です。Top 10 Foreground Events で latch: row cache object が高かったので調べてみました。 latch なので、 Latch Activity Latch Sleep Breakdown Latch Miss Sources など、情報がありますが Latch ってみてもよくわからない…

Soft Parse / Hard parse

AWR を分析中です。 Soft Parse が異常に高いので調べてみました。 基本的には、SQL実行時には必ずパース(解析)が必要になります。

SQL_TEXT から SQL_ID を取得する。

SQL_ID っていつも V$SQL.SQL_ID とかから拾っていましたが、dbms_sqltune_util0.sqltext_to_sqlid なるものを見つけました。 SQL> col sql_id for a15SQL> select 111111 from dual 2 / 111111---------- 111111SQL> select dbms_sqltune_util0.sqltext_to_…

DESC DBMS_STATS

ちょっと話題にあがったので。 表の定義が確認できるSQL*Plus のコマンド DESCRIBE (短縮系は DESC)ですが、ファンクションやパッケージの引数も確認できます。 SQL> DESC DBMS_STATSPROCEDURE ALTER_DATABASE_TAB_MONITORING 引数名 タイプ In/Out Defaul…

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

引き続き AWR について。最近そんな仕事ばかり。 最初にみるのは Top 10 Foreground Events by Total Wait Time == CPU 消費が高い場合 == Host CPU Time Model Statistics DB CPUbackground cpu timeparse time elapsed SQL ordered by CPU Time SQL ordere…

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

ちょっと用事があったのでまとめます。 AWRの保持期間を変更して、(しばらく運用してから)awrextr.sql で別環境に移行することを想定。 容量のチェックとか必要そうなポイントをまとめました。 1. AWRで使用している領域の確認 SQL> select SCHEMA_NAME, t…

索引の使用状況の監視

列の使用状況を監視する方法を書いたので、ついでに索引も。 1. 索引のモニタリング開始 ALTER INDEX ... MONITORING USAGE; を実行して監視を有効にします。 SQL> ALTER INDEX TAB1_PK MONITORING USAGE;索引が変更されました。SQL> select * from v$object…

Selectivity とか Cardinarity

ちょっと統計関係の用語をメモ。すぐ忘れてしまうので。 計算式は、ヒストグラムがない場合の話。 セレクティビティ(Selectivity)選択率。条件にヒットする行の割合。Selectivity = 1 / NDV NDVnumber of distinct valuesNUM_DISTINCT カーディナリティ(Card…

列に関するワークロードと拡張統計

先日、拡張統計を取りたいと思ったものの、そらでは書けず調べてもなかなか見つけられなかったので書いておきます。

Wait-For-Graph の見方(Single)

こっちはおまけです。12.1.0.2 Single 環境でのデッドロック。 *** 2016-03-18 21:52:36.564DEADLOCK DETECTED ( ORA-00060 )See Note 60.1 at My Oracle Support for Troubleshooting ORA-60 Errors[Transaction Deadlock]The following deadlock is not an…

Wait-For-Graph の見方(RAC)

久しぶりに Wait-for-graph(WFG) を見る用事があったのですが、すっかり忘れていました。RAC の場合、デッドロック時の待機状況をしめす WFG は LMDプロセスが出力してくれます。基本、全ノードの LMD のトレースを確認するのがよいです。

シェルの話

監視などで常駐させるなら #!/bin/sh(echo "set lin 120 pages 1000 feed off"echo "conn / as sysdba"while [ 1 ]doecho "select sid,serial#,event,seq# from v\$session where username='TEST';"sleep 1done) | sqlplus /nolog テストなどで都度接続させ…

v$parameter と v$parameter2

前回の記事で使いましたが、パラメータの確認にたまに便利な v$parameter2。 たとえば、 SQL> select name , value from v$parameter where name ='control_files';NAME VALUE--------------- ------------------------------------------------------------…

初期化パラメータに複数の値を設定する

これもいつも忘れてしまう。例えば初期化パラメータの control_file や event など 単一のパラメータに複数の値を設定する場合の設定方法。 pfile の場合は、2行に分けて続けて書いてあげればいい。 control_files='/u01/app/oracle/oradata/ora112/control0…