tshizuku03の日記

主にoracleやLinuxコマンドについての記事を載せていきたいと思っています。

V$ACTIVE_SESSION_HISTORY取得

set linesize 10000
set pagesize 1000
set trimspool on
set long 75
col sample_time for a25
col event for a60
col user_name for a20
col sql_text for a80
select
dhash.inst_id inst_id
, dhash.sample_time sample_time
, dhash.session_id
, dhash.time_waited time_waited
, dhash.event event
, dhash.user_id user_id
, (select username from dba_users where user_id = dhash.user_id) user_name
, dhash.sql_id sql_id
, (select sql_text from gv$sqltext where inst_id = dhash.inst_id and sql_id = dhash.sql_id and piece = 0 and rownum = 1) sql_text
--, dhash.p1 p1
--, dhash.p2 p2
--, dhash.p3 p3
from gv$active_session_history dhash
where to_date('yyyymmddhh24mi', 'yyyymmddhh24mi') <= sample_time
and sample_time < to_date('yyyymmddhh24mi', 'yyyymmddhh24mi')

 Oracleマニュアル

V$SESSION

V$ACTIVE_SESSION_HISTORY

【Oracle】ログ解析 - アラートログ

アラートログ

トラブルが起きた時、まずアラートログを参照する

アラートログは以下のような情報が出力されます。

ADR_HOME配下のDIAGNOSTIC_DEST/diag/rdbms/alert/<DBNAME>/<ORACLE_SID>/trace/alter_<ORACLE_SID>.logに出力される

  • データベース起動、停止日時
  • 全てのデフォルト値以外の初期化パラメータ
  • バックグラウンド・プロセス起動
  • ログ順序番号
  • ログスイッチ情報
  • 表領域の作成
  • ALTER分の発行
  • エラーメッセージ

 

トレースファイル

 プロセスごとのログファイル

 SMON,PMONなどのバックグラウンドプロセスがエラーを受け取った時に、それらをログとして出力する。

/u01/app/oracle/diag/rdbms/<インスタンス名>/trace/.trc 

トレースの出力先ディレクトリを確認

SQL> select value from V$DIAG_INFO where name = 'Diag Trace';

VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/orcl/orcl/trace

 

参考資料

www.atmarkit.co.jp

【Oracle】SESSION

セッションの状況を診断し、対処方法を検討する

select sid, seq#, event p1, p2, p3, wait_time, seconds_in_wait, state

from v$session;  

列名意味
sid セッション識別子
seq# このセッションにおける待機シーケンス
event 現在待機中の待機イベント名称(または前回待機していたイベントの名称)
p1,p2,p3 待機の詳細を表す追加パラメータ(待機イベントにより意味は異なる)
wait_time 前回のイベントによる待機時間(待機中にのみ秒単位で時間が更新される)
wait_time_ 待機イベントによる待機時間(待機中に1マイクロ秒単位で更新される)
WAITING 待機時間が不明※

 

Oracleマニュアル:V$SESSION

【Oracle】プロセス数

プロセス数の確認

1.現在、インスタンスじょうで起動しているプロセス数の総数を確認します。

SQL> select count(*) from v$process;

COUNT(*)
----------
31    ←バックグラウンド・プロセス及びサーバ・プロセスの合計数

 

2.アプリケーションの確認

接続数の多いアプリケーションを確認できる

SQL> col PROGRAM for A40

SQL> select program,count(*) from v$process group by program; 

PROGRAM COUNT(*)
---------------------------------------- ----------
oracle@node1.oracle11g.jp (LGWR) 1
oracle@node1.oracle11g.jp (ARC2) 1
oracle@node1.oracle11g.jp (J001) 1
oracle@node1.oracle11g.jp (PMON) 1
oracle@node1.oracle11g.jp (RECO) 1
oracle@node1.oracle11g.jp (ARC0) 1
oracle@node1.oracle11g.jp (J000) 1
PSEUDO 1
oracle@node1.oracle11g.jp (DIAG) 1
oracle@node1.oracle11g.jp (DBRM) 1
oracle@node1.oracle11g.jp (CKPT) 1

PROGRAM COUNT(*)
---------------------------------------- ----------
oracle@node1.oracle11g.jp (SMON) 1
oracle@node1.oracle11g.jp (D000) 1
oracle@node1.oracle11g.jp (ARC3) 1
oracle@node1.oracle11g.jp (DIA0) 1
oracle@node1.oracle11g.jp (MMNL) 1
oracle@node1.oracle11g.jp (CJQ0) 1
oracle@node1.oracle11g.jp (MMON) 1
oracle@node1.oracle11g.jp (S000) 1
oracle@node1.oracle11g.jp (SMCO) 1
oracle@node1.oracle11g.jp (QMNC) 1
oracle@node1.oracle11g.jp (Q002) 1

PROGRAM COUNT(*)
---------------------------------------- ----------
oracle@node1.oracle11g.jp (VKTM) 1
oracle@node1.oracle11g.jp (TNS V1-V3) 1
oracle@node1.oracle11g.jp (Q001) 1
oracle@node1.oracle11g.jp (W000) 1
oracle@node1.oracle11g.jp (GEN0) 1
oracle@node1.oracle11g.jp (PSP0) 1
oracle@node1.oracle11g.jp (MMAN) 1
oracle@node1.oracle11g.jp (DBW0) 1
oracle@node1.oracle11g.jp (ARC1) 1

31行が選択されました。

 

3.実行しているプログラムやSQL文の確認

必要に応じて、発行されているSQL文や、実行しているプログラムを確認します。

select s.sid, s.username, p.pid, p.spid, s.program, a.sql_text

from v$session s, v$process p, v$sqlarea a

where s.paddr = p.addr

and (s.sql_id=a.sql_id or s.prev_sql_addr=a.address)

and  (s.sql_hash_value=a.hash_value or s.prev_hash_value=a.hash_value)

and p.pid in (select pid from v$process where program like '%TNS V1-V3%')

and s.audsid != USERENV('SESSIONID');

 p.pid in (select pid from v$process where program like '%TNS V1-V3%')

のlikeには、2で確認したプログラムを指定する

「地元企業のIT活用セミナー」に参加してきました〜

************************
「地元企業のIT活用セミナー(琉球銀行主催)」

日時:2016/6/22 18:30-20:30

http://blog.lexues.co.jp/29749.html

 

上記セミナーに参加してきましたので、レポートいたします。
************************

アジェンダ
■講演テーマ
1)与那原町総合戦略、人口ビジョン策定報告
2)ITと既存企業の連携によるシナジー効果について

■業界の最先端で活躍する講師陣
沖縄大学 島田勝也氏
・株式会社レキサス 常盤木龍治 さん
・株式会社レキサス 山崎暁 さん
・株式会社AliveCast 中村 理氏 さん
琉球インタラクティブ株式会社 山田慎也氏
************************


講演1:常盤木龍治 さん
全てのユーザー企業は、20から30年で自社でITを活用するようになり、
ITベンダー企業は減少すると考えている

沖縄を拠点に置いたまま世界と勝負する
沖縄の基地経済と同じ2000億円を2030年までに売りあげる企業となる

沖縄の強み
地震が少ない
原発がない
・若いエリート層の移住が多い
・光海底ケーブル
世界でいちばん経済が伸びている アジアとのハブに沖縄がなる
沖縄の活用と成長がなければ、日本は終わる

与那原
サービスが多い。サービスレベルが高い地域。
クロスオーバーが上手くいっている

クラウドコンピューティング
クラウドで迅速な儲かる経営体質を
→今は失敗が多くできる
強み X イノベーション これががないとIT企業は衰退する

Q:沖縄で経済効果を生み出すにはどうしたらいいと思いますか
A:企業数を増やすことが大切
失敗を皆が許容できる文化を作れば、成功が生まれ世界で生き残れる

************************
講演2:レキサス 山崎暁 さん
http://www.ryukyu-frogs.com/
************************
タレント = 才能
沖縄の若き人材を育成している

Ryukyufrogs 若いうちに世界の最先端を見せて沖縄の次世代ITリーダーを育成している
ゆくゆくはITだけではなく、全ての職種をサポートして行きたい

研修費用は無料。沖縄県内IT企業と県内大学から協力を得ている。
プロジェクトに選抜された学生はシリコンバレーで世界最先端のテクノロジーに触れ、現地の起業家や投資家、エンジニアと交流することができる
プロジェクトのOBの中には、高校生で企業した学生もいる
シリコンバレーで世界を変えようと思ってもらいたい
沖縄の自立経済を。

◯◯ × IT をテーマとしている
2020年にプログラミングは小学校で義務化される
日本は、理系・文系の弊害がある
ハイブリッド型人材が当たり前の時代になる
就活する必要のない人材を作る

Q:本プロジェクトのゴールはどこにあるのか?
A:自立経済を目指すために、人をシリコンバレーに送って人材育成をしている
現在、OBが60人いる。その60人で1兆円を沖縄の経済効果をもたらすことを目標としています


************************
AliveCast 中村 理氏 さん
http://exorder.jp/
************************
Exorder:来店ポイントサービス
これまでは広告を見てほしい商品があった場合、インターネットで検索したり、取り扱い店舗を探して購入する必要があった。
ExOrderはQRコードをアプリで写すだけで、欲しいと思ったときにその場で購入・決済まで済ませることが出来る。
ログイン画面なし。クレジットカードも入力なし。写真を撮影するだけ。
セキュリティ強固

世界初
店舗に来店。ただし店舗に商品はない。サンプルとチラシとQRコードのみ

購入したい商品をスマートフォンQRコード読み込み

決済アプリ(HPではない。サイトは存在しない)

購入後、自宅に商品が届く


・持ち帰るのが困難な重い商品
・地域の物産展(商品を扱っていない為、在庫を大量に抱える心配がない)

Q:amazonと共同する予定はあるか
A:amazonは国内に税金が落ちないため考えていない


************************
琉球インタラクティブ株式会社 山田慎也氏
************************
勝連城跡のバーチャルツアーがパソコンやスマートフォンで体験できるアプリを開発
http://www.katsuren-jo.jp/

現場に行かなくても360度見渡せる
実際に現場にいって、QRコード読み取ると勝連城跡の歴史等をアプリを通して知ることができる
3D映像で、戦場の様子などを見ることができる

Q:IT導入する際、お客様の上のレイヤを説得するにはどうしたらいいか?
A:この会社はどういった業務でどうゆう会社なのかを十分ヒアリングをする事を重要視している
場合によっては、IT導入したいと依頼されたが、ヒアリングをした上で
それって本当に必要ですかと提案をする場合もある。
お客様の自社の強みや本質を見極めることは重要であると考えている。

簡単にインデックスの効果を検証する

インビジブルインデックスの使い方

説明

--初期化パラメータOPTIMIZER_USE_INVISIBLE_INDEXESの確認

SQL>SHOW PARAMETER OPTIMIZER_USE_INVISIBLE_INDEXES
VALUE:FALSE → INVISIBLE属性のインデックスはオプティマイザによる検証対象外。デフォルト
VALUE:TRUE → インビジブルインデックスは通常の索引として検討

 

1.チューニング対象SQLへの効果計測が目的の場合
USE_INVISIBLE_INDEXESヒントを使用してSQLレベルでインビジブルインデックスを使用。
2.インデックス追加時の他SQLを含めた実行計画変化の確認が目的の場合
ALTER SESSION文でOPTIMIZER_USE_INVISIBLE_INDEXESをTRUEに設定することで、セッションレベルでインビジブルインデックスを使用可能状態にし、対象テーブルにアクセスするSQLを検証する

 

 

 --1.初期化パラメータOPTIMIZER_USE_INVISIBLE_INDEXの確認

SQL>SHOW PARAMERTER TOTIMIZER_USE_INVISIBLE_INDEXE
VALEU:FALSE インビジブルインデックス対象外
VALEU:TURE インビジブルインデックスは通常の索引として検討 

--2.SELECT文実行

 

--3.統計情報表示
--DISPLAY_CURSOR:セッションで最後に実行された文の実行計画を表示
--ALLSTATS LAST:最後の実行に対する統計情報のみを表示

SQL>SET PAGESIZE 0

SQL>SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL,'ALLSTATS LAST'));


--4.初期化パラメータFALSEの場合、ヒント句USE_INVISIBLE_INDEXESを指定してインビジブルインデックスをSQLレベルで使用
SQL>SELECT /*+ USE_INVISIBLE_INDEXES(インデックス名) */ 〜・・・FROM テーブル名 WHERE 〜;
SQL>SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL,'ALLSTATS LAST'));