隠しパラメータ変更
試してないけれど、備忘録的に手順を残します。
隠しパラメータ変更は、oracleサポートの許可のもと変更すること
インスタンス再起動必要の可能性あり
--■変更前パラメータ確認
set linesize 130
col "parameter" for a30
col "description" for a50
col "value" for a20
SELECT
ksppinm as "parameter"
, ksppdesc as "description"
, ksppstvl as "value"
FROM x$ksppi
JOIN x$ksppcv USING (indx)
WHERE ksppinm IN ('[隠しパラメータ名]');
--■パラメータ変更
alter system set _ktb_debug_flags=8 scope = spfile;
--■変更後パラメータ確認
SELECT
ksppinm as "parameter"
, ksppdesc as "description"
, ksppstvl as "value"
FROM x$ksppi
JOIN x$ksppcv USING (indx)
WHERE ksppinm IN ('[隠しパラメータ名]');
表領域
対象表領域に存在するパーティションテーブルの構成を確認
SELECT OWNER,TABLE_NAME,PARTITIONING_TYPE,SUBPARTITIONING_TYPE,PARTITION_COUNT,DEF_SUBPARTITION_COUNT FROM ALL_PART_TABLES
WHERE OWNER='スキーマ名';
パーティションの定義の確認
SELECT
TABLE_OWNER,TABLE_NAME,
SUBPARTITION_COUNT as "サブパーティション数",
TABLESPACE_NAME,PARTITION_NAME as "パーティション名",
NUM_ROWS as "パーティション内の行数"
FROM DBA_TAB_PARTITIONS WHERE TABLE_OWNER='スキーマ名'AND TABLE_NAME='テーブル名';
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マニュアル
【Oracle】ログ解析 - アラートログ
アラートログ
トラブルが起きた時、まずアラートログを参照する
アラートログは以下のような情報が出力されます。
ADR_HOME配下のDIAGNOSTIC_DEST/diag/rdbms/alert/<DBNAME>/<ORACLE_SID>/trace/alter_<ORACLE_SID>.logに出力される
- データベース起動、停止日時
- 全てのデフォルト値以外の初期化パラメータ
- バックグラウンド・プロセス起動
- ログ順序番号
- ログスイッチ情報
- 表領域の作成
- ALTER分の発行
- エラーメッセージ
トレースファイル
プロセスごとのログファイル
SMON,PMONなどのバックグラウンドプロセスがエラーを受け取った時に、それらをログとして出力する。
トレースの出力先ディレクトリを確認
SQL> select value from V$DIAG_INFO where name = 'Diag Trace';
VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/orcl/orcl/trace
参考資料
【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】プロセス数
プロセス数の確認
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) 1PROGRAM 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) 1PROGRAM 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) 131行が選択されました。
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で確認したプログラムを指定する