婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 使用Oracle跟蹤文件的問題詳解

使用Oracle跟蹤文件的問題詳解

熱門標簽:如何辦理400客服電話 神行者百貨商場地圖標注 地圖標注什么軟件好用 外呼系統(tǒng)怎樣才能不封號 西藏地圖標注改進點 地圖標注百度競價 外呼系統(tǒng)線路經常出問題嗎 地圖標注專員入駐 安陽手機自動外呼系統(tǒng)原理是什么

一、什么是跟蹤文件?

跟蹤文件中包含了大量而詳細的診斷和調試信息。通過對跟蹤文件的解讀和分析,我們可以定位問題、分析問題和解決問題。從跟蹤文件的產生的來源來看,跟蹤文件又可以分為兩類:一類是數據庫的操作人員有意生成的;另一類則是由于出現了異常錯誤,由數據庫自動生成的。對于后一類,只對Oracle內部的技術支持人員是有用的,但對于我們,則多半看不懂。前一類,則是我們經常用到的,幫助我們分析、調整和優(yōu)化應用性能,處理并解決問題。

那么在哪里可以找到跟蹤文件呢?通過查詢數據字典v$diag_info可以確定跟蹤文件的存儲路徑,如下所示。

select * from v$diag_info;

進入目錄/u01/app/oracle/diag/rdbms/orcl/orcl/trace可以看到以trc為后綴的跟蹤文件,如下圖所示。

二、跟蹤文件的命名規(guī)則

一個跟蹤文件的名字一般由以下幾部分組成:

  • ORACLE_SID
  • 固定字符
  • 服務器的進程ID號
  • 文件后綴名 .trc
  • 各部分之間以下劃線連接。

例如:orcl_mmon_12210.trc,其中:“orcl" 是本環(huán)境下數據庫的SID,"12210"為產生該跟蹤文件會話所使用的服務器進程ID號。如何知道我的ORACLE_SID和會話所使用的服務器進程ID呢?

三、如何確定跟蹤文件?

為了演示的方便,我們給一個普通用戶scott授予dba的角色。

1、使用管理登錄,并授予scott授予dba的角色

[oracle@oracle12c ~]$ sqlplus / as sysdba

SQL> grant dba to scott;

Grant succeeded.

SQL> 

2、確定Oracle SID,如下所示。這里的SID就是:orcl

SQL> select instance_name from V$instance;

INSTANCE_NAME
----------------
orcl

SQL> 

3、切換到scott用戶,并確定會話ID

SQL> conn scott/tiger
Connected.
SQL> select sid from v$mystat where rownum=1;

       SID
----------
	70

SQL> 

4、根據會話ID,確定會話的地址信息

SQL> select paddr from v$session where sid=70;

PADDR
----------------
000000006DAB6588

SQL> 

5、根據會話的地址信息,確定操作系統(tǒng)的進程號

SQL> select spid from v$process where addr='000000006DAB6588';

SPID
------------------------
54685

SQL> 

進入目錄/u01/app/oracle/diag/rdbms/orcl/orcl/trace會發(fā)現,此時并不存在包含54685的跟蹤文件,原因是要使用跟蹤文件需要手動開啟會話的跟蹤。

6、開啟會話的跟蹤

SQL> alter session set sql_trace=true;

Session altered.

SQL> 

7、執(zhí)行一條簡單的SQL語句,并檢查/u01/app/oracle/diag/rdbms/orcl/orcl/trace目錄,這時候就可以看到生成的跟蹤文件。

[oracle@oracle12c trace]$ pwd
/u01/app/oracle/diag/rdbms/orcl/orcl/trace
[oracle@oracle12c trace]$ ls *54685.trc
orcl_ora_54685.trc
[oracle@oracle12c trace]$ 

四、使用跟蹤文件診斷SQL

根據跟蹤對于診斷SQL語句是非常有用的,下面通過一個簡單的示例來說明。

1、執(zhí)行下面的的SQL語句

select * from scott.emp where deptno=10;

select * from scott.emp where deptno=20;

select * from scott.emp where deptno=30;

這三條SQL分別查詢10、20和30號部門的員工。通過觀察發(fā)現,這三條SQL除了where的條件的參數值不一樣,其他部分都是一樣的。這樣的SQL語句叫做“重復的SQL”。如果數據庫中存在大量的重復SQL,會使得每次在執(zhí)行的時候都會進行SQL的解析,再生成執(zhí)行計劃。從而影響數據庫的性能。

下面通過跟蹤文件來驗證上面的結論。

2、由于前面開啟了會話的跟蹤,如果不再需要進行跟蹤了,需要手動關閉一下。

SQL> alter session set sql_trace=false;

Session altered.

SQL> 

3、使用tkprof工具格式化跟蹤文件

[oracle@oracle12c trace]$ tkprof orcl_ora_54685.trc /home/oracle/a.txt sys=no sort=fchela

TKPROF: Release 12.2.0.1.0 - Development on Mon Jun 28 10:37:48 2021

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
[oracle@oracle12c trace]$ 

4、查看生成的a.txt文件,如下所示:

SQL ID: 1mvxd868z75nf Plan Hash: 3956160932
select *
from scott.emp where deptno=30

SQL ID: 2nbac4n9hnzth Plan Hash: 3956160932
select *
from scott.emp where deptno=20

SQL ID: 062r5atccuyv4 Plan Hash: 3956160932
select *
from scott.emp where deptno=10

可以看成盡管三條SQL對應的SQL ID不一樣,但是生成的Plan Hash是一樣的。這就說明這三條SQL的執(zhí)行計劃是一樣的。既然如此,我們可以使用綁定變量的方式來改寫這三條SQL。讓這三條SQL語句在執(zhí)行的時候,不用每次都生成執(zhí)行計劃。只需要復用第一次生成的執(zhí)行計劃即可。從而提高性能。

以上就是使用Oracle的跟蹤文件的詳細內容,更多關于Oracle跟蹤文件的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 對于oracle對session進行跟蹤的分析

標簽:張掖 萍鄉(xiāng) AXB 貴港 酒泉 阜陽 雞西 衡水

巨人網絡通訊聲明:本文標題《使用Oracle跟蹤文件的問題詳解》,本文關鍵詞  使用,Oracle,跟蹤,文件,的,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用Oracle跟蹤文件的問題詳解》相關的同類信息!
  • 本頁收集關于使用Oracle跟蹤文件的問題詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 盐津县| 正阳县| 枣阳市| 英超| 加查县| 株洲县| 宣恩县| 永昌县| 平湖市| 朔州市| 天全县| 铜鼓县| 曲麻莱县| 乌恰县| 庄浪县| 澎湖县| 英德市| 德江县| 墨玉县| 阿瓦提县| 个旧市| 西畴县| 安龙县| 肃南| 楚雄市| 灵石县| 平罗县| 天台县| 马龙县| 宁远县| 柳州市| 西昌市| 鹤峰县| 夏津县| 灵台县| 保靖县| 会同县| 鲜城| 两当县| 岳阳县| 南充市|