欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

oracle12c新增的診斷事件的初步嘗試-創(chuàng)新互聯(lián)

   Oracle 在11g的版本中已 經(jīng)對 可 診 斷 性功能 進 行了大量改 進 ,而在Oracle 11g版本之前 診 斷 事件的 語 法的比 較 有限的,11g的版本中的內(nèi)核 調(diào)試 和 診 斷 功能已 經(jīng)讓 我 們 可以更 詳細(xì) 精確地的 查 看到跟蹤和 轉(zhuǎn)儲 診 斷 信息,在oracle 12c的新版本中,oracle 繼續(xù)對 診 斷 功能 進 行 優(yōu) 化改 進 ,并且提供了更加 實 用性的功能,以更加方便我 們進 行故障 診 斷 和 處 理。

創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、興縣網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為興縣等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

一.關(guān)于oracle 診 斷 事件的介 紹 :

在 MOS 文檔中《 Introduction to ORACLE Diagnostic EVENTS ( 文檔  ID 218105.1) 》 對 oracle 診斷事件 做了一些介 紹 ,以下 僅簡單進 行介 紹 ,本文的重點是介 紹 oracle 12c  中新增的 診 斷 事件功能。

 

Introduction to ORACLE Diagnostic EVENTS

----------------------------------------

1. 診 斷 事件主要當(dāng)沒有足 夠 的信息來解決 某個 的 問題 用于生成更多的 診 斷 信息。

2. 診 斷 事件也用于通 過 更改 Oracle 的行 為 或啟用某些未 記錄 的特性來解決某些 問題。

 

Setting EVENTS

--------------

有多種方式可以 設(shè) 置事件。

設(shè) 置事件要取決于事件的性 質(zhì) 和當(dāng) 時的情況。 ORACLE 一再 強調(diào)設(shè) 置事件 應(yīng) 有明確的 Oracle 支持服 務(wù) 或相關(guān)文章 為 依據(jù)。切 記 生 產(chǎn) 系 統(tǒng) 中不要隨意 設(shè) 置使用。

大多數(shù)事件可以使用以下多種方法 設(shè) 置:

(1)      通 過 初始化參數(shù) :

EVENT = "<event_name><action>"

(2)      通 過 當(dāng)前會 話 :

ALTER SESSION SET EVENTS '<event_name><action>';

(3)      使用 調(diào)試 工具

o ORADEBUG

oradebug event <event_name><action>

      o ORAMBX (VMS only)

 

EVENT Categories

----------------

最常用的事件具體分 為以下 四 類 :  :

o 根據(jù)要求 轉(zhuǎn)儲出 信息 (Immediate Dump)

例如可以 轉(zhuǎn)儲 出以下相關(guān)信息: SYSTEMSTATE, ERRORSTACK, CONTROLF, FILE_HDRS and REDOHDR

發(fā)生錯誤時轉(zhuǎn)儲診斷信 (On-Error Dump)

例如當(dāng)某個ora 錯誤發(fā) 生 時 dump 出 現(xiàn) 相關(guān)信息: EVENT "942 trace name ERRORSTACK level 3"

oracle 的行

常用解決某些缺陷或啟用某些 隱 藏的功能 。

o 例運行 生成跟蹤 信息 (Trace Events)

例如 :10046

EVENT = "10046 trace name context forever, level 12"

二.oracle 12c新增的診斷事件:

以下分別 通 過 命令oradebug doc event name 可以查看查詢oracle 11g 和12c版本支持的event列表:

oracle 11g 中的部分 診 斷 事件功能:

oracle 12c 新增的診斷事件的初步嘗試

oracle 12c  中的部分 診 斷 事件功能( 紅 色框中 為 12c 新增的events):

oracle 12c 新增的診斷事件的初步嘗試

從以上所 查詢 的 結(jié) 果可以看出 oracle 12c events in library RDBMS 增加了 不了events,實際上即使是11g在日常的數(shù)據(jù)庫運維中我們真正會使用的非常少,因此也無法都了解熟悉,我選取了部分新添加的event 進行測試了解。

1. 診斷事件:wait_event[]

描述:event to control wait event post-wakeup actions

從關(guān)于 該 事件的解 釋 可以初步估 計 其 與數(shù)據(jù)庫中 等待事件有關(guān),看起來 是 與某些等待事件 喚 醒之后的某些 動 作有關(guān)。

oracle 提供了 診 斷 事件的功能,但 實際 關(guān)于其的 詳細(xì) 描述的 資 料非常少,在之前 讀過 某個案例是 剛 好使用12c的 這 個新功能去 診 斷 了一個“l(fā)og file sync”的 問題 , 該問題 在oracle 12.1.0.1版本上,用 戶 會 話長時間 的等到“l(fā)og file sync”,盡管當(dāng) 時 沒有出 現(xiàn) “l(fā)og file parallel write” 的等待 時間 異常以及在“l(fā)og buffer”也沒有明 顯 的爭用等。

     在 該 案例中,作者通 過該 新功能 單 獨 獲 取了log file sync等待的 調(diào) 用堆 棧 跟蹤信息去弄清楚Oracle在出 現(xiàn) 此 問題時 運行的函數(shù) 調(diào) 用 順 序以及調(diào)用的是否是異常函數(shù)。

如果在12c之前需要 獲 取同 樣 的信息,可能通 過像 Solaris 上 DTrace 操作系 統(tǒng) 工具可以捕 獲 ,但是如果 僅針對 某個等待事件,那是其 實 是非常 難 的事,更何況在其他操作系 統(tǒng) 平臺下。

       于此,我 們 可以 嘗試 模 擬 使用 該 診 斷 事件來跟蹤等待事件。

使用以下命令 語 法 進 行跟蹤 調(diào) 用堆 棧信息 :

SQL> alter session set events 'wait_event["<wait event name>"]  trace("%s\n", shortstack())';

oracle 12c 新增的診斷事件的初步嘗試

單 獨生成log file sync出 現(xiàn) 的call stack 信息,根據(jù) 這 個信息可以知道函數(shù)是被那些函數(shù)按照什么 順 序 調(diào) 用的,以便 進 一步分析:

oracle 12c 新增的診斷事件的初步嘗試

另外,以上可以配合開啟SQL 跟蹤功能去來跟蹤每個 “l(fā)og file sync” 的等待的 時長 來配合分析。

oracle 12c 新增的診斷事件的初步嘗試

oracle 12c 新增的診斷事件的初步嘗試

這樣配合的話我們可以進行跟蹤對比每次出現(xiàn)問題等待事件時其執(zhí)行情況,包括時長等,再查看其調(diào)用堆棧信息是否與正常時有無差別。特別是在針對單個等待事件的跟蹤,這樣是非常方便的。

 

2. 診斷事件:sql_monitor_test   

sql_monitor          event to force monitoring SQL statements

sql_monitor_test     event to test SQL monitoring

sql_monitor_test  看起像是基于sql_monitor的基礎(chǔ)再增加的功能,在原來就有的sql_monitor的作用是強制去監(jiān)控某些sql語句,而sql_monitor_test的作用是測試SQL的監(jiān)控。由于沒有其他相關(guān)的文檔說明,這里只能進行推算。

在此我能想到的應(yīng)該與Oracle 11G后新增SQL MONITORING功能,通過SQL MONITORING可以知道整個SQL執(zhí)行過程中消耗的哪一類資源最多,以及一個正在執(zhí)行的SQL語句知當(dāng)前執(zhí)行到哪一步? 還可以輕松獲取語句的綁定變量、監(jiān)控索引的整個創(chuàng)建過程及創(chuàng)建完索引剩余的工作量。

查詢 sql_monitor 的用法:

SQL> oradebug doc event name  sql_monitor

sql_monitor: event to force monitoring SQL statements

Usage

-------

sql_monitor

   recursive       < false | true >,

   force           < false | true >

 

recursive :應(yīng)該是一并監(jiān)控sql的遞歸sql,force也即是強制的意思。

由于沒有更多詳細(xì)的文檔說明,我只能借鑒sql_trace的用法,可以指定某個sql_id進行設(shè)置。

sql_trace 用例語法:

ALTER session SET EVENTS 'sql_trace [sql: sql_id=56bs32ukywdsq] bind=true, wait=true';

sql_monitor 的借鑒語法

ALTER system SET EVENTS 'sql_monitor [sql:sql_id=56bs32ukywdsq] recursive = true , force = true';

oracle 12c 新增的診斷事件的初步嘗試

在數(shù)據(jù)庫中可以執(zhí)行成功,說明語法應(yīng)該沒問題,設(shè)置之后應(yīng)該就可以強制的針對一些sql進行監(jiān)控了。

而在10G數(shù)據(jù)庫中執(zhí)行以上命令oracle是無法識別的應(yīng)該是不支持的。

oracle 12c 新增的診斷事件的初步嘗試

而再根據(jù)event的描述,sql_monitor_test僅僅是用于做一個SQL monitoring的測試。

sql_monitor_test 的用法:

SQL> oradebug doc event name  sql_monitor_test

 

sql_monitor_test: event to test  SQL monitoring

 

Usage

-------

sql_monitor_test

   level           <ub4>

 

按照以上,其開啟診斷事件可以通過以下命令。

ALTER system SET EVENTS ' sql_monitor_test [sql:sql_id=f3yfg50ga0r8n]level 12';

oracle 12c 新增的診斷事件的初步嘗試

以上也是可以正常設(shè)置了,但可能受環(huán)境影響或者方式正確,沒有生成相關(guān)的信息,苦于無法找到更多的相關(guān)描述的資料,因此關(guān)于該新的功能仍需進一步研究。

 

 

3. 診斷事件:fault

Event used to inject  fault  in  RDBMS  kernel

從描述看來,是用來向RDBMS內(nèi)核注入故障,難道是通過設(shè)置事件使數(shù)據(jù)庫產(chǎn)生故障?我想可能性不大,目前看來也無法真正了解其真正的用途,再擔(dān)當(dāng)描述來看不應(yīng)該是屬于追蹤作用,也許是在某些特殊場景下規(guī)避某些問題。

而其使用方法也是進行需要設(shè)置event成 fault,我在自己的實驗環(huán)境上進行測試,建議千萬不要在生成環(huán)境進行操作。

SQL> oradebug doc event name fault

 

fault: Event used to inject fault in RDBMS kernel

 

Usage

-------

fault

 

ALTER system SET EVENTS  'fault’;

oracle 12c 新增的診斷事件的初步嘗試

執(zhí)行之后并無出現(xiàn)任何異常,沒有生成任何trace文件,alert日志也沒有告警,這更無法去探究其真正用途了。

4.        其他診斷事件

awrdiag[]     AWR Diagnostic Event

我較為感興趣的是awrdiag[],從描述來看是AWR相關(guān)的診斷事件,我猜想是否是對某些對象或操作做某些awr的診斷,但查看其使用語法:

SQL> oradebug doc event name awrdiag[]

Error: " awrdiag[] " not a known event/library name

Use <event_name>, <library_name> or <library_name>.<event_name>

    其參數(shù)內(nèi)容要使用<event_name>, <library_name>難道這里的event_name指的是診斷事件名,而library_name指的是其歸類庫,例如我們所看到的Events in library RDBMS,但我嘗試去使用語句去執(zhí)行后是錯誤的。

oracle 12c 新增的診斷事件的初步嘗試

而報出ora-49115說明event的目標(biāo)沒有指定,對于awrdiag[]目前還未找到的相關(guān)的其他說明,因此就沒有繼續(xù)進行分析。

三.小結(jié):

oracle 在12c 版本新增不上新的特性,同時也對原來的某些功能進行改進添加。實際上,某些oracle診斷事件的功能一般都只在某些極端的情況下才使用,oracle對此部分的功能沒有公開更多的說明,我們只能憑著嘗試的角度去了解它們,實際某些新增的功能具有很大的意義,從此次對oracle 12c 新增一些的診斷事件的初步了解過程中,發(fā)現(xiàn)wait_event[] 事件對我們來說作用較大,特別是在遇到某些較為疑難的的等待事件問題上。


網(wǎng)站標(biāo)題:oracle12c新增的診斷事件的初步嘗試-創(chuàng)新互聯(lián)
鏈接URL:http://chinadenli.net/article6/dosiig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、定制開發(fā)、移動網(wǎng)站建設(shè)動態(tài)網(wǎng)站、網(wǎng)頁設(shè)計公司響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)