根據Alert日誌查詢資料庫啟動、關閉時間

Hoegh發表於2016-02-03
    alert日誌記錄oracle例項生命週期中發生的重要事件,例如資料庫啟動、關閉、日誌切換等,方便程式設計師和管理員發現問題。有時alert日誌內容較多,我們很難快速定位我們感興趣的資訊,例如資料庫啟動時間。今天和大家分享一個利用外部表,根據alert日誌查詢資料庫啟動、關閉資料庫時間的方法,個人認為非常好用。

建立轉儲目錄

首先我們建立一個目錄,用來指定alert日誌的路徑。
SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
PL/SQL Release 11.2.0.3.0 - Production
CORE    11.2.0.3.0      Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

SQL> show parameter background_dump_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest                 string      /u01/app/oracle/diag/rdbms/hoegh/HOEGH/trace
SQL>
SQL> create or replace directory data_dir as '/u01/app/oracle/diag/rdbms/hoegh/HOEGH/trace';

Directory created.

SQL>

建立外部表

SQL>
SQL> CREATE TABLE alert_log
(
text_line varchar2(255)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY data_dir
ACCESS PARAMETERS
(
records delimited by newline
fields
)
LOCATION
(
'alert_HOEGH.log'
)
)
reject limit unlimited
/  2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20  

Table created.

SQL>

執行查詢

SQL> set linesize 300
set pagesize 100
select to_char(last_time,'dd-mon-yyyy hh24:mi') shutdown,
to_char(start_time,'dd-mon-yyyy hh24:mi') startup,
round((start_time-last_time)*24*60,2) mins_down,
round((last_time-lag(start_time) over (order by r)),2) days_up,
case when (lead(r) over (order by r) is null )
then round((sysdate-start_time),2)
end days_still_up
from (
select r,
to_date(last_time, 'Dy Mon DD HH24:MI:SS YYYY') last_time,
to_date(start_time,'Dy Mon DD HH24:MI:SS YYYY') start_time
from (
select r,
text_line,
lag(text_line,1) over (order by r) start_time,
lag(text_line,2) over (order by r) last_time
from (
select rownum r, text_line
from alert_log
where text_line like '___ ___ __ __:__:__ 20__'
or text_line like 'ALTER DATABASE OPEN'
)
)
where text_line like 'ALTER DATABASE OPEN'
)
/SQL> SQL>   2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21   22   23   24   25   26  

SHUTDOWN                   STARTUP                     MINS_DOWN    DAYS_UP DAYS_STILL_UP
-------------------------- -------------------------- ---------- ---------- -------------
13-oct-2014 23:36          13-oct-2014 23:36                 .08
13-oct-2014 23:37          13-oct-2014 23:37                 .07          0
14-oct-2014 00:13          14-oct-2014 00:13                 .07        .03
14-oct-2014 00:16          14-oct-2014 00:16                 .07          0
14-oct-2014 00:18          14-oct-2014 00:18                 .07          0
14-oct-2014 00:21          14-oct-2014 00:22                 .07          0
07-jan-2016 23:00          07-jan-2016 23:00                 .07     450.94
08-jan-2016 20:02          08-jan-2016 20:02                 .08        .88
08-jan-2016 20:15          08-jan-2016 20:15                 .07        .01         26.04

9 rows selected.

SQL>

~~~~~~~ the end~~~~~~~~~
hoegh
2016.02.03

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30162081/viewspace-1986182/,如需轉載,請註明出處,否則將追究法律責任。

相關文章