LoginSignup
6
0

More than 3 years have passed since last update.

Oracle DatabaseのALERTファイル参照機能を試す(ATP)

Last updated at Posted at 2020-08-13

Oracle Databaseインスタンス上で発生したエラーや障害の情報は、アラートファイルとトレースファイルに出力されます。アラートファイルには発生した事象の概要が、トレースファイルには詳細が出力されます。データベースが稼働するサーバにSSH等で接続できる場合はファイルを直接参照すればよいのですが、クラウド上のマネージド・サービスではOSにログインすることができません。このためOracle Databaseが提供する機能を使ってSQL文でアラートファイルとトレースファイルを参照します。

ADRの情報

Oracle Databaseでは障害情報はADR (Automatic Diagnostic Repository)で管理されます。下記はOracle Cloudが提供するATPに接続してV$DIAG_INFOビューを参照しています。

SQL> SELECT * FROM V$DIAG_INFO;

   INST_ID NAME                           VALUE                                                                           CON_ID
---------- ------------------------------ --------------------------------------------------------------------------- ----------
         2 Diag Enabled                   TRUE                                                                                 0
         2 ADR Base                       /u02/app/oracle                                                                      0
         2 ADR Home                       /u02/app/oracle/diag/rdbms/epa1pod/epa1pod2                                          0
         2 Diag Trace                     /u02/app/oracle/diag/rdbms/epa1pod/epa1pod2/trace                                    0
         2 Diag Alert                     /u02/app/oracle/diag/rdbms/epa1pod/epa1pod2/alert                                    0
         2 Diag Incident                  /u02/app/oracle/diag/rdbms/epa1pod/epa1pod2/incident                                 0
         2 Diag Cdump                     /u02/app/oracle/diag/rdbms/epa1pod/epa1pod2/cdump                                    0
         2 Health Monitor                 /u02/app/oracle/diag/rdbms/epa1pod/epa1pod2/hm                                       0
         2 Default Trace File             /u02/app/oracle/diag/rdbms/epa1pod/epa1pod2/trace/epa1pod2_ora_25184.trc             0
         2 Active Problem Count           0                                                                                    0
         2 Active Incident Count          0                                                                                    0

11行が選択されました。

アラートファイル

アラートファイルの内容ををSQL文で取得する方法について記載しています。

アラートファイルの参照

アラートファイルの情報はV$DIAG_ALERT_EXTビューで参照できます。下記の例はATPインスタンスで検索しています。

SQL> SELECT ORIGINATING_TIMESTAMP, MESSAGE_TEXT FROM V$DIAG_ALERT_EXT ORDER BY 1;
...
ORIGINATING_TIMESTAMP                    MESSAGE_TEXT
---------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
20-08-07 13:02:59.141000000 +00:00       Completed: alter pluggable database application APP$CDB$PDBONLY$ADWC begin upgrade '18.2.5-200702.1' to '18.2.5-200715.1' USE ERROR FUNCTION 'SYS.SQLPATCH_ACCEPTABLE_ERROR'
20-08-07 13:03:17.840000000 +00:00       alter pluggable database application APP$CDB$PDBONLY$ADWC end upgrade
20-08-07 13:03:17.849000000 +00:00       Completed: alter pluggable database application APP$CDB$PDBONLY$ADWC end upgrade
20-08-07 13:03:18.075000000 +00:00       alter pluggable database application APP$CDB$PDBONLY$OLTP begin upgrade '18.2.5-200702.1' to '18.2.5-200715.1' USE ERROR FUNCTION 'SYS.SQLPATCH_ACCEPTABLE_ERROR'
20-08-07 13:03:18.087000000 +00:00       Completed: alter pluggable database application APP$CDB$PDBONLY$OLTP begin upgrade '18.2.5-200702.1' to '18.2.5-200715.1' USE ERROR FUNCTION 'SYS.SQLPATCH_ACCEPTABLE_ERROR'
20-08-07 13:03:18.140000000 +00:00       alter pluggable database application APP$CDB$PDBONLY$OLTP end upgrade
20-08-07 13:03:18.151000000 +00:00       Completed: alter pluggable database application APP$CDB$PDBONLY$OLTP end upgrade
20-08-07 13:03:18.352000000 +00:00       alter pluggable database application APP$CDB$ALL$ADWC begin upgrade '18.2.5-200715.1' to '18.2.5-200728' USE ERROR FUNCTION 'SYS.SQLPATCH_ACCEPTABLE_ERROR'
20-08-07 13:03:18.361000000 +00:00       Completed: alter pluggable database application APP$CDB$ALL$ADWC begin upgrade '18.2.5-200715.1' to '18.2.5-200728' USE ERROR FUNCTION 'SYS.SQLPATCH_ACCEPTABLE_ERROR'
20-08-07 13:03:20.136000000 +00:00       ALTER DATABASE PROPERTY SET AUTOMATIC_TABLESPACE_CALLOUT = 'C##CLOUD$SERVICE.DBMS_AUTO_TBS.GET_SEGMENT_TABLESPACE'
20-08-07 13:03:20.141000000 +00:00       Completed: ALTER DATABASE PROPERTY SET AUTOMATIC_TABLESPACE_CALLOUT = 'C##CLOUD$SERVICE.DBMS_AUTO_TBS.GET_SEGMENT_TABLESPACE'
...

アラートファイルの種類

ADRにはアラートファイルは2種類格納されてます。テキスト形式で、traceディレクトリに格納されている「alert_{DB名}.log」ファイルと、alertディレクトリに格納されている「log.xml」ファイルです。log.xmlファイルは一定サイズ以上になると「log_{数字}.xml」ファイルが作成されます。オンプレミス環境を使って、V\$DIAG_ALERT_EXTビューがどちらのファイルを参照しているか確認しました。サーバ・プロセスに対してstraceコマンドを指定し、システムコールをトレースします。

$ strace -p 6179
strace: Process 6179 attached
read(13, "\0\0\1w\6\0\0\0\0\0\3^\10a\200\0\0\0\0\0\0\376\377\377\377\377\377\377\377%\0\0"..., 8208) = 375
getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 7899}, ru_stime={0, 13823}, ...}) = 0
write(7, "Wed Aug 12 20:42:53 2020 +09:00\n", 32) = 32
write(7, "LENGTH : '286'", 14)          = 14
write(7, "\n", 1)                       = 1
write(7, "ACTION :[37] 'SELECT COUNT(*) FR"..., 285) = 285
write(7, "\n", 1)                       = 1
getrusage(0x1 /* RUSAGE_??? */, {ru_utime={0, 8905}, ru_stime={0, 13852}, ...}) = 0
mmap(0x7f19cee82000, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f19cee82000
mmap(0x7f19cee92000, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f19cee92000
times({tms_utime=0, tms_stime=1, tms_cutime=0, tms_cstime=0}) = 442200221
lstat("/u01/app/oracle/diag/rdbms/o19a/O19A/alert/log.xml", {st_mode=S_IFREG|0640, st_size=1259727, ...}) = 0
stat("/u01/app/oracle/diag/rdbms/o19a/O19A/alert/log.xml", {st_mode=S_IFREG|0640, st_size=1259727, ...}) = 0
geteuid()                               = 1001
...
lstat("/u01/app/oracle/diag/rdbms/o19a/O19A/alert/log_7.xml", {st_mode=S_IFREG|0640, st_size=10485844, ...}) = 0
stat("/u01/app/oracle/diag/rdbms/o19a/O19A/alert/log_7.xml", {st_mode=S_IFREG|0640, st_size=10485844, ...}) = 0
geteuid()                               = 1001
open("/u01/app/oracle/diag/rdbms/o19a/O19A/alert/log_7.xml", O_RDONLY) = 11
...

上記のようにXML形式のファイルを参照していることがわかります。複数ファイルに分割されている場合も、すべてのファイルを参照しています。

トレースファイルの参照

トレースファイルの内容はV\$DIAG_TRACE_FILEビューと、V\$DIAG_TRACE_FILE_CONTENTSビューから参照できます。

トレースファイルのリスト

トレースファイルの一覧を取得できるビューがV\$DIAG_TRACE_FILEです。このビューにはCON_ID列がありますが、ATPでは接続したPDBの情報だけが取得できます。

SQL> SELECT TRACE_FILENAME, CHANGE_TIME FROM V$DIAG_TRACE_FILE ORDER BY 2;

TRACE_FILENAME                                                       CHANGE_TIME
-------------------------------------------------------------------- -----------------------------
epa1pod2_mz00_215291.trc                                             20-08-13 01:39:57.000 +00:00
epa1pod2_mz00_290214.trc                                             20-08-13 01:51:55.000 +00:00
epa1pod2_mz00_367205.trc                                             20-08-13 02:05:44.000 +00:00
epa1pod2_mz00_45256.trc                                              20-08-13 03:24:58.000 +00:00
epa1pod2_mz00_263771.trc                                             20-08-13 04:03:06.000 +00:00
epa1pod2_mz00_278930.trc                                             20-08-13 04:06:54.000 +00:00
epa1pod2_mz00_349218.trc                                             20-08-13 04:18:57.000 +00:00
epa1pod2_w017_207029.trc                                             20-08-13 04:23:47.000 +00:00
epa1pod2_mz00_59563.trc                                              20-08-13 04:36:55.000 +00:00
epa1pod2_mz00_106559.trc                                             20-08-13 04:45:45.000 +00:00
epa1pod2_mz00_143273.trc                                             20-08-13 04:51:54.000 +00:00
...

トレースファイルの内容

トレースファイルの内容はV\$DIAG_TRACE_FILE_CONTENTSビューで確認できます。

SQL> SELECT PAYLOAD FROM V$DIAG_TRACE_FILE_CONTENTS WHERE TRACE_FILENAME='epa1pod2_ora_75705.trc';

PAYLOAD
---------------------------------------------------------------------------------------------------
Trace file /u02/app/oracle/diag/rdbms/epa1pod/epa1pod2/trace/epa1pod2_ora_75705.trc
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
Build label:    RDBMS_PT.DBCLOUD18_LINUX.X64_200707
ORACLE_HOME:    /u02/app/oracle/product/18.1.0.0/dbhome_1
System name:    Linux
Node name:      xxxxxxxx
Release:        4.1.12-124.30.1.el7uek.x86_64
Version:        #2 SMP Thu Aug 8 01:38:50 GMT 2019
Machine:        x86_64
VM name:        Xen Version: 4.4 (HVM)
Storage:        Exadata
Instance name: epa1pod2
Redo thread mounted by this instance: 2
Oracle process number: 1130


*** 2020-08-13T01:24:51.805878+00:00 (BOOFMAINBG1VVMN_DB202003021003(667))
...
6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0