Oracle ADRCI工具的使用

Oracle11g版本中,alert文件的位置發生了變化,與此同時Oracle提供了一個命令行工具ADRCI,它可以很便利的查看數據庫中出現的異常。 通過這個小文兒給大家展示一下使用ADRCI (ADR Command Interface) 在11g中查看Oracle的警告日誌的方法。

1.進入到adrci命令行模式
ora11g@RHEL53 /home/oracle$ which adrci
/oracle/u01/app/oracle/product/1101/db/bin/adrci
ora11g@RHEL53 /home/oracle$ adrci -help
Syntax:
   adrci [-help] [script=script_filename]
         [exec = "one_command [;one_command;...]"]

Options      Description                     (Default)
------------------------------------------------------
script       script. file name               (None)
help         help on the command options     (None)
exec         exec a set of commands          (None)
------------------------------------------------------

ora11g@RHEL53 /home/oracle$ adrci

ADRCI: Release 11.1.0.6.0 - Beta on Fri Feb 27 15:23:52 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

ADR base = "/oracle/u01/app/oracle"
adrci>

2.使用 help show alert 命令查看幫助文檔
adrci> help

 HELP [topic]
   Available Topics:
        CREATE REPORT
        ECHO
        EXIT
        HELP
        HOST
        IPS
        PURGE
        RUN
        SET BASE
        SET BROWSER
        SET CONTROL
        SET ECHO
        SET EDITOR
        SET HOMES | HOME | HOMEPATH
        SET TERMOUT
        SHOW ALERT
        SHOW BASE
        SHOW CONTROL
        SHOW HM_RUN
        SHOW HOMES | HOME | HOMEPATH
        SHOW INCDIR
        SHOW INCIDENT
        SHOW PROBLEM
        SHOW REPORT
        SHOW TRACEFILE
        SPOOL

 There are other commands intended to be used directly by Oracle, type
 "HELP EXTENDED" to see the list

adrci> help show alert

  Usage: SHOW ALERT [-p <predicate_string>]  [-term]
                    [ [-tail [num] [-f]] | [-file <alert_file_name>] ]
  Purpose: Show alert messages.

  Options:
    [-p <predicate_string>]: The predicate string must be double quoted.
    The fields in the predicate are the fields:
        ORIGINATING_TIMESTAMP         timestamp
        NORMALIZED_TIMESTAMP          timestamp
        ORGANIZATION_ID               text(65)
        COMPONENT_ID                  text(65)
        HOST_ID                       text(65)
        HOST_ADDRESS                  text(17)
        MESSAGE_TYPE                  number
        MESSAGE_LEVEL                 number
        MESSAGE_ID                    text(65)
        MESSAGE_GROUP                 text(65)
        CLIENT_ID                     text(65)
        MODULE_ID                     text(65)
        PROCESS_ID                    text(33)
        THREAD_ID                     text(65)
        USER_ID                       text(65)
        INSTANCE_ID                   text(65)
        DETAILED_LOCATION             text(161)
        UPSTREAM_COMP_ID              text(101)
        DOWNSTREAM_COMP_ID            text(101)
        EXECUTION_CONTEXT_ID          text(101)
        EXECUTION_CONTEXT_SEQUENCE    number
        ERROR_INSTANCE_ID             number
        ERROR_INSTANCE_SEQUENCE       number
        MESSAGE_TEXT                  text(2049)
        MESSAGE_ARGUMENTS             text(129)
        SUPPLEMENTAL_ATTRIBUTES       text(129)
        SUPPLEMENTAL_DETAILS          text(129)
        PROBLEM_KEY                   text(65)

    [-tail [num] [-f]]: Output last part of the alert messages and
    output latest messages as the alert log grows. If num is not specified,
    the last 10 messages are displayed. If "-f" is specified, new data
    will append at the end as new alert messages are generated.

    [-term]: Direct results to terminal. If this option is not specified,
    the results will be open in an editor.
    By default, it will open in emacs, but "set editor" can be used
    to set other editors.

    [-file <alert_file_name>]: Allow users to specify an alert file which
    may not be in ADR. <alert_file_name> must be specified with full path.
    Note that this option cannot be used with the -tail option

  Examples:
    show alert
    show alert -p "message_text like '%incident%'"
    show alert -tail 20

adrci>

3.使用 show alert 列出各個目錄下的日誌目錄,輸入編號4,系統會自動調用vi編輯器查看數據庫的alert日誌
adrci> show alert

Choose the alert log from the following homes to view:

1: diag/tnslsnr/RHEL53/listener
2: diag/clients/user_unknown/host_411310321_11
3: diag/clients/user_oracle/host_2175824367_11
4: diag/rdbms/ora11g/ora11g
Q: to quit

Please select option:4

4.另外一種查看方式是,指定具體的 homepath 然後使用“show alert -tail 15”查看對應日誌文件的後15行
adrci> show homepath
ADR Homes:
diag/tnslsnr/RHEL53/listener
diag/clients/user_unknown/host_411310321_11
diag/clients/user_oracle/host_2175824367_11
diag/rdbms/ora11g/ora11g
adrci> set homepath diag/rdbms/ora11g/ora11g
adrci> show alert -tail 15
2009-02-27 14:25:05.036000 +08:00
Starting background process SMCO
SMCO started with pid=21, OS id=3855
Starting background process FBDA
FBDA started with pid=22, OS id=3857
replication_dependency_tracking turned off (no async multimaster replication found)
2009-02-27 14:25:07.246000 +08:00
Starting background process QMNC
QMNC started with pid=23, OS id=3859
2009-02-27 14:25:17.325000 +08:00
db_recovery_file_dest_size of 4096 MB is 0.00% used. This is a
user-specified limit on the amount of space that will be used by this
database for recovery-related files, and does not reflect the amount of
space available in the underlying filesystem or ASM diskgroup.
2009-02-27 14:25:33.727000 +08:00
Completed: ALTER DATABASE OPEN
2009-02-27 14:29:59.158000 +08:00
Starting background process CJQ0
CJQ0 started with pid=25, OS id=3892
adrci>

5.小結
 使用ADRCI命令可以很好的對各個目錄中的日誌文件進行集中查看,可以有效的提高工作效率,贊一個,在高度緊張的問題處理環境中這個工具可以有效的提高問題診斷的效率。
============

 

#ADRCI

11G new feature

Automatic Diagnostic Repository Command-Interpreter

ADRCI工具是Oracle11g才推出的新工具,主要用來管理alert文件、trace文件、dump文件、健康監事報告等。

11g中alert,trace文件的位置發生了變化, 從原來的ORACLE_BASE/admin/INSTANCE_NAME目錄變成了ORACLE_BASE/diag/rdbms/DBNAME/INSTANCE_NAME目錄。

Oracle之所以修改了這個跨越多個版本都沒有修改過的參數設置,就是因爲Oracle在11g中推出了ADRCI。這個工具可以統一管理ASM實例和多個數據庫實例的alert文件、後臺trace文件、用戶trace文件,dump文件等等。

而且這個工具可以快速查詢錯誤相關的所有trace文件,並將這些文件打包到一個zip文件,以便將問題相關的信息提供給Oracle的技術支持。

下面是adrci 的一些快速學習的事項

0. 注意事項, 知識快速整理.

1. 定位problem,incident

2. 定位tracefile (user trace file, alert log file)

3. 生成package

0. 注意事項, 知識快速整理.

show alert -tail -f 相關操作的時候需要先 
set home 因爲adrci是多目錄操作不然會報錯 DIA-48449: Tail alert can only apply to single ADR home 這是爲了保證在多實例下不至於造成混亂。 
 
adrci 也支持spool 
 
adrci 是基於一個叫做fault diagnosability infrastructure(錯誤診斷框架), 這樣一個底層框架的, 核心的思想就是, 通過problemincident來定位錯誤。 
 
problem  incident 是一種相輔相成的關係, problem指的是大的問題,叫criticial error, 一個大問題會由很多小的incidents所導致。所以他們是1:n的關係. 
 
problem 的數據都預先定義在v$diag_critical_error了(應該是,猜的) 
 
adrci> show incident                                                                                                                                                               
 
ADR Home = /u01/app/oracle/diag/rdbms/opt/opt: 
************************************************************************* 
INCIDENT_ID          PROBLEM_KEY                                                 CREATE_TIME                               
-------------------- ----------------------------------------------------------- ----------------------------------------  
121                  ORA 4031                                                    2010-08-17 14:49:59.384000 +08:00        
209                  ORA 4031                                                    2010-08-17 14:50:25.980000 +08:00        
2 rows fetched 
 
adrci>                                                                                                                                                                             
adrci>                                                                                                                                                                             
adrci> show problem                                                                                                                                                                
 
ADR Home = /u01/app/oracle/diag/rdbms/opt/opt: 
************************************************************************* 
PROBLEM_ID           PROBLEM_KEY                                                 LAST_INCIDENT        LASTINC_TIME                              
-------------------- ----------------------------------------------------------- -------------------- ----------------------------------------  
1                    ORA 4031                                                    209                  2010-08-17 14:50:25.980000 +08:00        
1 rows fetched 
 
--- 很容易看到一個04031對應了:  2091212個事件

1. 如何identified 這以上的problem和incident的tracefile所在位置呢。

1. 先說problem, problem都是記錄在alert裏的, 一般是放在$ORACLE_BASE/diag/rdbms/$DBNAME/$ORACLE_SID/trace/alert_SID.log,  
可以手動去找, 不過adrci提供了更高效的方式, 直接吧04031那段記錄在TMP文件裏。獲取的命令是: 
 
show alert -p "message_text like '%ORA-04031%'" #詳細 
show problem -p "problem_id=1" # 看某一個problem 
 
2. incident 相關: 
 
# INCIDENT_FILE 顯示了tracefile的位置。 
show incident -MODE DETAIL -p "incident_id=121" 

2. 定位tracefile (user trace file, alert log file)

# This example shows all trace files for incidents 1 and 4, under the path /home/steve/temp: 
show tracefile %mmon% -rt 
# This example shows all trace files for incidents 1 and 4, under the path /home/steve/temp: 
show tracefile -i 1 4 -path /home/steve/temp

3. 生成 package

set homepath diag/rdbms/opt/opt 
方法一 
ips pack problem 1 
方法二 
# Created package 8 without any contents, correlation level typical 
ips create package 
Added problem 1 to package 8 
ips add incident 121 package 8 
ips add incident 209 package 8 
ips add file /u01/app/oracle/diag/rdbms/opt/opt/trace/opt_dbrm_5035.trc  package 8 
ips generate package 8 
 
adrci> ips get metadata from file /home/oracle/script/IPSPKG_20110220163312_COM_1.zip                                                                                              
IPS metadata from file /home/oracle/script/IPSPKG_20110220163312_COM_1.zip: 
---------------------------------------------------------- 
<?xml version="1.0" encoding="US-ASCII"?> 
<PACKAGE> 
    <PACKAGE_ID>8</PACKAGE_ID> 
    <PACKAGE_NAME>IPSPKG_20110220163312</PACKAGE_NAME> 
    <MODE>Complete</MODE> 
    <SEQUENCE>1</SEQUENCE> 
    <LAST_COMPLETE>1</LAST_COMPLETE> 
    <DATE>2011-02-20 16:37:55.035301 +08:00</DATE> 
    <ADR_BASE>/u01/app/oracle</ADR_BASE> 
    <ADR_HOME>/u01/app/oracle/diag/rdbms/opt/opt</ADR_HOME> 
    <PROD_NAME>rdbms</PROD_NAME> 
    <PROD_ID>opt</PROD_ID> 
    <INST_ID>opt</INST_ID> 
    <OCM_GUID/> 
    <FINALIZED>1</FINALIZED> 
</PACKAGE> 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章