真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle12c新增的診斷事件的初步嘗試

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

在豐潤(rùn)等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),網(wǎng)絡(luò)營(yíng)銷推廣,外貿(mào)網(wǎng)站制作,豐潤(rùn)網(wǎng)站建設(shè)費(fèi)用合理。

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

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

 

Introduction to ORACLE Diagnostic EVENTS

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

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

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

 

Setting EVENTS

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

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

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

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

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

EVENT = ""

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

ALTER SESSION SET EVENTS '';

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

o ORADEBUG

oradebug event

      o ORAMBX (VMS only)

 

EVENT Categories

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

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

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

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

發(fā)生錯(cuò)誤時(shí)轉(zhuǎn)儲(chǔ)診斷信 (On-Error Dump)

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

oracle 的行

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

o 實(shí) 例運(yùn)行 時(shí) 生成跟蹤 信息 (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,實(shí)際上即使是11g在日常的數(shù)據(jù)庫(kù)運(yùn)維中我們真正會(huì)使用的非常少,因此也無法都了解熟悉,我選取了部分新添加的event 進(jìn)行測(cè)試了解。

1. 診斷事件:wait_event[]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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的作用是強(qiáng)制去監(jiān)控某些sql語(yǔ)句,而sql_monitor_test的作用是測(cè)試SQL的監(jiān)控。由于沒有其他相關(guān)的文檔說明,這里只能進(jìn)行推算。

在此我能想到的應(yīng)該與Oracle 11G后新增SQL MONITORING功能,通過SQL MONITORING可以知道整個(gè)SQL執(zhí)行過程中消耗的哪一類資源最多,以及一個(gè)正在執(zhí)行的SQL語(yǔ)句知當(dāng)前執(zhí)行到哪一步? 還可以輕松獲取語(yǔ)句的綁定變量、監(jiān)控索引的整個(gè)創(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也即是強(qiáng)制的意思。

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

sql_trace 用例語(yǔ)法:

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

sql_monitor 的借鑒語(yǔ)法

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

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

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

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

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

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

sql_monitor_test 的用法:

SQL> oradebug doc event name  sql_monitor_test

 

sql_monitor_test: event to test  SQL monitoring

 

Usage

-------

sql_monitor_test

   level           

 

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

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

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

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

 

 

3. 診斷事件:fault

Event used to inject  fault  in  RDBMS  kernel

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

而其使用方法也是進(jìn)行需要設(shè)置event成 fault,我在自己的實(shí)驗(yàn)環(huán)境上進(jìn)行測(cè)試,建議千萬不要在生成環(huán)境進(jì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)的診斷事件,我猜想是否是對(duì)某些對(duì)象或操作做某些awr的診斷,但查看其使用語(yǔ)法:

SQL> oradebug doc event name awrdiag[]

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

Use , or .

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

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

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

三.小結(jié):

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



分享名稱:oracle12c新增的診斷事件的初步嘗試
分享鏈接:http://weahome.cn/article/iesgss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部