电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Oracle最強有力的輔助診斷工具SQL_TRACE

瀏覽:129日期:2023-11-28 10:19:32
本文主要針對SQL_TRACE的使用方法進行了詳細的介紹,在文章的最后,大家可以通過一個實際案例加深對SQL_TRACE的理解。

SQL_TRACE概述:

SQL_TRACE是Oracle數據庫提供的用于進行SQL跟蹤的手段,在某種意義上講,可以說是Oracle最強有力的輔助診斷工具。

SQL_TRACE可以作為初始化參數在全局啟用,也可以通過命令行方式在具體session啟用。

1.在全局啟用

在參數文件(pfile/spfile)中指定:

sql_trace =true

在全局啟用SQL_TRACE會導致所有進程的活動被跟蹤,包括后臺進程及所有用戶進程,在此情況下通常會導致比較嚴重的性能問題,所以在生產環境中必須要小心使用。

注意: 通過在全局啟用sql_trace,我們可以跟蹤到所有后臺進程的活動,很多在文檔中的抽象說明,通過跟蹤文件的實時變化,我們可以清晰的看到各個進程之間的緊密協調。

2. 在當前session級設置

大多數的情況下,我們使用sql_trace跟蹤當前進程。通過跟蹤當前進程可以發現當前操作的后臺數據庫遞歸活動(這在研究數據庫新特性時尤其有效),研究SQL執行,發現后臺錯誤等。

在session級啟用和停止sql_trace方式如下:

啟用當前session的跟蹤:

SQL> alter session set sql_trace=true;Session altered.

此時的SQL操作將被跟蹤:

SQL> select count(*) from dba_users; COUNT(*)----------34

結束跟蹤:

SQL> alter session set sql_trace=false;Session altered.

3.跟蹤其他用戶進程

在很多時候我們需要跟蹤其他用戶的進程,而不是當前用戶,我們可以通過Oracle提供的系統包DBMS_SYSTEM. SET_SQL_TRACE_IN_SESSION來完成。

SET_SQL_TRACE_IN_SESSION程序需要提供三個參數:

SQL> desc dbms_system…PROCEDURE SET_SQL_TRACE_IN_SESSION Argument Name TypeIn/Out Default? ----------------- ------------- ------ -------- SID NUMBER IN SERIAL# NUMBER IN SQL_TRACE BOOLEAN IN…

通過v$session我們可以獲得sid、serial#等信息。

獲得進程信息,選擇需要跟蹤的進程:

SQL> select sid,serial#,username from v$session 2 where username is not null; SID SERIAL# USERNAME---------- ---------- ------------------------------ 8 2041 SYS 9437 EYGLE

設置跟蹤:

SQL> exec dbms_system.set_sql_trace_in_session(9,437,true)PL/SQL procedure successfully completed.….

可以等候片刻,跟蹤session執行任務,捕獲sql操作……

停止跟蹤:

SQL> exec dbms_system.set_sql_trace_in_session(9,437,false)PL/SQL procedure successfully completed.

10046事件概述:

10046事件是Oracle提供的內部事件,是對SQL_TRACE的增強.

10046事件可以設置以下四個級別:

1 - 啟用標準的SQL_TRACE功能,等價于sql_trace

4 - Level 1 加上綁定值(bind values)

8 - Level 1 + 等待事件跟蹤

12 - Level 1 + Level 4 + Level 8

類似sql_trace,10046事件可以在全局設置,也可以在session級設置。

1. 在全局設置

在參數文件中增加:

event='10046 trace name context forever,level 12'

此設置對所有用戶的所有進程生效、包括后臺進程.

2.對當前session設置

通過alter session的方式修改,需要alter session的系統權限:

SQL> alter session set events '10046 trace name context forever';Session altered.SQL> alter session set events '10046 trace name context forever, level 8';Session altered.SQL> alter session set events '10046 trace name context off';Session altered.

3.對其他用戶session設置

通過DBMS_SYSTEM.SET_EV系統包來實現:

SQL> desc dbms_system...PROCEDURE SET_EVArgument NameTypeIn/Out Default?--------------- ----------------------- ------ --------SI BINARY_INTEGERINSE BINARY_INTEGERINEV BINARY_INTEGERINLE BINARY_INTEGERINNM VARCHAR2 IN...

其中的參數SI、SE來自v$session視圖。

查詢獲得需要跟蹤的session信息:

SQL> select sid,serial#,username from v$session where username is not null;SID SERIAL# USERNAME---------- ---------- ----------------------8 2041 SYS9 437 EYGLE

執行跟蹤:

SQL> exec dbms_system.set_ev(9,437,10046,8,'eygle');PL/SQL procedure successfully completed.

結束跟蹤:

SQL> exec dbms_system.set_ev(9,437,10046,0,'eygle');PL/SQL procedure successfully completed.

獲取跟蹤文件

上面生成的跟蹤文件位于user_dump_dest目錄中,位置及文件名可以通過下面的SQL查詢得到:

SQL> select 2 d.value||'/'||lower(rtrim(i.instance, chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name 3 from 4 ( select p.spid 5 from sys.v$mystat m,sys.v$session s,sys.v$process p 6 where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p, 7 ( select t.instance from sys.v$thread t,sys.v$parameter v 8 where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i, 9 ( select value from sys.v$parameter where name = 'user_dump_dest') d 10 / TRACE_FILE_NAME----------------------------/opt/oracle/admin/hsjf/udump/hsjf_ora_1026.trc

讀取當前session所設置的參數

假如我們通過alter session的方式設置了sql_trace,此設置在正常情況下是不能通過show parameter方式獲取的,需要我們通過dbms_system.read_ev來獲?。?

SQL> set feedback offSQL> set serveroutput on SQL> declare 2 event_level number; 3 begin 4 for event_number in 10000..10999 loop 5 sys.dbms_system.read_ev(event_number, event_level); 6 if (event_level > 0) then 7 sys.dbms_output.put_line(8 'Event ' ||9 to_char(event_number) ||10 ' is set at level ' || 11 to_char(event_level)12 ); 13 end if; 14 end loop; 15 end; 16 /Event 10046 is set at level 1

標簽: Oracle 數據庫
主站蜘蛛池模板: 微信小程序定制,广州app公众号商城网站开发公司-广东锋火 | 高低温老化试验机-步入式/低温恒温恒湿试验机-百科 | 中医治疗皮肤病_潍坊银康医院「山东」重症皮肤病救治平台 | 烽火安全网_加密软件、神盾软件官网| 成都APP开发-成都App定制-成都app开发公司-【未来久】 | 英国雷迪地下管线探测仪-雷迪RD8100管线仪-多功能数字听漏仪-北京迪瑞进创科技有限公司 | Safety light curtain|Belt Sway Switches|Pull Rope Switch|ultrasonic flaw detector-Shandong Zhuoxin Machinery Co., Ltd | 泥沙分离_泥沙分离设备_泥砂分离机_洛阳隆中重工机械有限公司 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 水稻烘干机,小麦烘干机,大豆烘干机,玉米烘干机,粮食烘干机_巩义市锦华粮食烘干机械制造有限公司 水环真空泵厂家,2bv真空泵,2be真空泵-淄博真空设备厂 | 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | POS机官网 - 拉卡拉POS机免费办理|官网在线申请入口 | 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | LNG鹤管_内浮盘价格,上装鹤管,装车撬厂家-连云港赛威特机械 | 船老大板材_浙江船老大全屋定制_船老大官网 | 北京三友信电子科技有限公司-ETC高速自动栏杆机|ETC机柜|激光车辆轮廓测量仪|嵌入式车道控制器 | 「银杏树」银杏树行情价格_银杏树种植_山东程锦园林 | 动力配电箱-不锈钢配电箱-高压开关柜-重庆宇轩机电设备有限公司 聚天冬氨酸,亚氨基二琥珀酸四钠,PASP,IDS - 远联化工 | 大型工业风扇_工业大风扇_大吊扇_厂房车间降温-合昌大风扇 | 粘度计NDJ-5S,粘度计NDJ-8S,越平水分测定仪-上海右一仪器有限公司 | 光伏支架成型设备-光伏钢边框设备-光伏设备厂家 | 全自动过滤器_反冲洗过滤器_自清洗过滤器_量子除垢环_量子环除垢_量子除垢 - 安士睿(北京)过滤设备有限公司 | 全自动在线分板机_铣刀式在线分板机_曲线分板机_PCB分板机-东莞市亿协自动化设备有限公司 | 卫浴散热器,卫浴暖气片,卫生间背篓暖气片,华圣格浴室暖气片 | 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 一点车讯-汽车网站,每天一点最新车讯! | 模温机-油温机-电加热导热油炉-工业冷水机「欧诺智能」 | 作文导航网_作文之家_满分作文_优秀作文_作文大全_作文素材_最新作文分享发布平台 | 沙盘模型公司_沙盘模型制作公司_建筑模型公司_工业机械模型制作厂家 | 河南中专学校|职高|技校招生-河南中职中专网 | 安全,主动,被动,柔性,山体滑坡,sns,钢丝绳,边坡,防护网,护栏网,围栏,栏杆,栅栏,厂家 - 护栏网防护网生产厂家 | 钢格板|热镀锌钢格板|钢格栅板|钢格栅|格栅板-安平县昊泽丝网制品有限公司 | 搜活动房网—活动房_集装箱活动房_集成房屋_活动房屋 | 二手回收公司_销毁处理公司_设备回收公司-找回收信息网 | 粉末冶金注射成型厂家|MIM厂家|粉末冶金齿轮|MIM零件-深圳市新泰兴精密科技 | 千淘酒店差旅平台-中国第一家针对TMC行业的酒店资源供应平台 | 蜘蛛车-高空作业平台-升降机-高空作业车租赁-臂式伸缩臂叉装车-登高车出租厂家 - 普雷斯特机械设备(北京)有限公司 | 卸料器-卸灰阀-卸料阀-瑞安市天蓝环保设备有限公司 | 带锯机|木工带锯机圆木推台锯|跑车带锯机|河北茂业机械制造有限公司| | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! |