當前位置:
首頁 >
关于Window操作系统中对Oracle的性能监控
發布時間:2025/1/21
95
豆豆
生活随笔
收集整理的這篇文章主要介紹了
关于Window操作系统中对Oracle的性能监控
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目的 本文是為了測試數據倉庫的 實時數據抽取功能對源數據庫和操作系統的性能的影響 。由于 Windows 操作系統未提供類似于 UNIX 下的 Top 、 ps 、 vmstat 等 CPU 、內存、 I/O 監控工具,同時 Oracle 作為操作系統下的一個唯一進程而存在,這就導致 windows 操作系統在監控 Oracle 方面效果不是很理想。
一、 任務管理器 任務管理器能夠提供正在您的計算機上運行的程序和進程的相關信息。還顯示最常用的度量進程性能的單位。 使用任務管理器可以監視計算機性能的關鍵指示器。可以查看正在運行的程序的狀態,并終止已停止響應的程序。還可以使用多達 15 個參數評估正在運行的進程的活動,查看反映 CPU 和內存使用情況的圖形和數據。 通過任務管理器的菜單— > 查看— > 選擇列,可以自定義需要監測系統和用戶進程的活動狀況。 任務管理器的使用是非常普遍的,因為它可以從宏觀上反映出服務器系統的負載情況 (CPU ,內存, I/O ,虛擬內存 ) ,進一步能夠判斷出機器硬件的配置和軟件的運行狀況。 但是任務管理器只能在進程這一級上進行監測,檢測不到更細微的線程的運行情況,對于 Oracle 這樣的大型數據庫系統的監控顯然不夠的。
二、 性能監視器 可以使用“性能”來自動收集本地或者遠程計算機的性能數據。您可以使用“系統監視器”查看已記錄的計數器數據,或者將數據導出到電子表格程序或用于分析和生成報表的數據庫中。 與“系統監視器”相似,“性能日志和警報”支持定義:性能對象、性能計數器和性能對象實例。它同時支持為有關監視硬件資源和系統服務的數據設定采樣間隔。 默認情況下,進程和線程實例附加了 #n (其中, n 是整數) ( 聯機幫助中的解釋,不太明白什么含意 ) ,缺省情況下,性能監視器無法對用戶進程和進程內的線程情況進行跟蹤,按照以下進行設置后,即可實現線程和用戶進程的跟蹤。 要添加進程標識符 ID ,可以在 KEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesPerfProcPerformance 子項下創建名為 ProcessNameFormat 的 DWORD 值,并將其值設為 2 。 同樣,要添加線程 ID ,可以在 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesPerfProcPerformance 子項下創建名為 ThreadNameFormat 的 DWORD 值,并將其值設為 2 。 通常情況下需要監視的組件和關注對象,更詳細的信息,請看計數器中的說明 組件:磁盤
正被監視的性能方面:用法
要監視的計數器:
物理磁盤 Disk Reads/sec (磁盤讀取 / 秒)
物理磁盤 Disk Writes/sec (磁盤寫入 / 秒)
邏輯磁盤 % Free Space (可用空間) 組件:磁盤
正被監視的性能方面:瓶頸
要監視的計數器:物理磁盤 Avg.Disk Queue Length (磁盤隊列平均長度)(所有實例) 組件:內存
正被監視的性能方面:用法
要監視的計數器:
內存 Available Bytes (可用字節)
內存 Cache Bytes (緩存字節) 組件:內存
正被監視的性能方面:瓶頸或漏洞
要監視的計數器:
內存 Pages/sec (頁面 / 秒)
內存 Page Reads/sec (頁面讀取 / 秒)
內存 Transition Faults/sec (傳輸錯誤 / 秒)
內存 Pool Paged Bytes (分頁的內存池字節)
內存 Pool Nonpaged Bytes (未分頁的內存池字節) 組件:處理器
正被監視的性能方面:用法
要監視的計數器:處理器 % Processor Time (處理器時間)(所有實例) 組件:處理器
正被監視的性能方面:瓶頸
要監視的計數器:
系統 Processor Queue Length (處理器隊列長度)(所有實例)
處理器 Interrupts/sec (中斷 / 秒)
系統 Context switches/sec (上下文切換 / 秒)
1. 在性能 的性能日志和警報 選擇 計數器日志 2. 點擊 新建日志設置 3. 在常規選項卡中選擇添加計數器,性能對象選擇 Thread ,計數器中選擇需要監控的性能指標,并在實例中選擇相應的 Oracle 線程進行跟蹤。 4. 然后在計數器日志中選擇名稱 Oracle_Thread, 進行啟動 具體的計數器解釋請看說明: Example:% Processor Time 是所有進程線程使用處理器執行指令所花的時間百分比。指令是計算機執行的基礎單位。線程是執行指令的對象,進程是程序運行時創建的對象。此計數包括處理某些硬件間隔和陷阱條件所執行的代碼。
? 5. 運行相應的程序后一段時間后,停止 Oracle_Thread 計數器的運行 6. 在性能監視器中,選擇工具欄 查看日志活動,到指定的文件夾中選擇相應的日志文件。 7. 然后可以通過 查看圖表,查看直方圖,查看報告的工具 閱讀和評估一段時間以來各個線程的運行狀況。 8. 但是在系統監視器中無法顯示兩個不同測試階段的的測試對比,可以在計數器日志 日志文件設置中日志的格式,通常是文本文件 ( 制表符或者逗號分割方式)。然后將前后兩段時間的數據倒入 Excel 表,利用 Excel 表的強大功能進行性能比較。
三、 QSlice 工具 Qslice 這個工具可以用來在 Windows 操作系統中觀察用戶進程 (Oracle 進程 ) 及各線程的資源消耗,主要是從 CPU 占用率角度來衡量的。 使用 getsql.sql 腳本即可獲得當前正在執行的 SQL 語句: -- 來自 Eygle 網站上 REM getsql.sql REM author eygle REM 在 windows 上 , 已知進程 ID, 得到當前正在執行的語句 REM 在 windows 上 , 進程 ID 為 16 進制 , 需要轉換 , 在 UNIX 直接為 10 進制 SELECT /*+ ORDERED */ sql_text FROM v$sqltext a WHERE (a.hash_value, a.address) IN ( SELECT DECODE (sql_hash_value, 0, prev_hash_value, sql_hash_value ), DECODE (sql_hash_value, 0, prev_sql_addr, sql_address) FROM v$session b WHERE b.paddr = (SELECT addr FROM v$process c WHERE c.spid = TO_NUMBER ('&pid', 'xxxx'))) ORDER BY piece ASC /
? 然后在 PL/SQL 中運行該腳本就可以找到最消耗資源的問題 SQL ,接下來就可以進行針對性調整了 . 20068-qslice.exe 將其改名為qslice即可
四、 pslist 工具 PsList 是一個能夠列出進程和其線程占用資源詳細信息的小軟件。 PsList is utility that shows you a combination of the information obtainable individually with pmon and pstat. You can view process CPU and memory information, or thread statistics. What makes PsList more powerful than the Resource Kit tools is that you can view process and thread statistics on a remote computer. 。
Pstools.chm pslist.exe
五、 關于 Oracle 進程和 Windows 線程的對照關系 事實上通過性能監視器或者 QSlice 工具、 PsList 看到的線程即可能是 Oracle 中的用戶進程,也可能是 Oracle 的后臺進程;這些工具給出的線程號也都是 16 進制的數字,不太有利于數據庫的監控;因此我們必須把 Oracle 的后臺進程以數據庫的語言列舉出來。 對于 Oracle 用戶進程,則可以取出來在 Oracle 進行分析判斷。
SELECT spid, name FROM V$BGPROCESS, V$PROCESS WHERE V$BGPROCESS.paddr=V$PROCESS.addr; Spid name 1848 PMON 3100 DBW0 2568 LGWR 3080 CKPT 1868 SMON 3040 RECO 3776 CJQ0 2912 QMN0
一、 任務管理器 任務管理器能夠提供正在您的計算機上運行的程序和進程的相關信息。還顯示最常用的度量進程性能的單位。 使用任務管理器可以監視計算機性能的關鍵指示器。可以查看正在運行的程序的狀態,并終止已停止響應的程序。還可以使用多達 15 個參數評估正在運行的進程的活動,查看反映 CPU 和內存使用情況的圖形和數據。 通過任務管理器的菜單— > 查看— > 選擇列,可以自定義需要監測系統和用戶進程的活動狀況。 任務管理器的使用是非常普遍的,因為它可以從宏觀上反映出服務器系統的負載情況 (CPU ,內存, I/O ,虛擬內存 ) ,進一步能夠判斷出機器硬件的配置和軟件的運行狀況。 但是任務管理器只能在進程這一級上進行監測,檢測不到更細微的線程的運行情況,對于 Oracle 這樣的大型數據庫系統的監控顯然不夠的。
二、 性能監視器 可以使用“性能”來自動收集本地或者遠程計算機的性能數據。您可以使用“系統監視器”查看已記錄的計數器數據,或者將數據導出到電子表格程序或用于分析和生成報表的數據庫中。 與“系統監視器”相似,“性能日志和警報”支持定義:性能對象、性能計數器和性能對象實例。它同時支持為有關監視硬件資源和系統服務的數據設定采樣間隔。 默認情況下,進程和線程實例附加了 #n (其中, n 是整數) ( 聯機幫助中的解釋,不太明白什么含意 ) ,缺省情況下,性能監視器無法對用戶進程和進程內的線程情況進行跟蹤,按照以下進行設置后,即可實現線程和用戶進程的跟蹤。 要添加進程標識符 ID ,可以在 KEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesPerfProcPerformance 子項下創建名為 ProcessNameFormat 的 DWORD 值,并將其值設為 2 。 同樣,要添加線程 ID ,可以在 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesPerfProcPerformance 子項下創建名為 ThreadNameFormat 的 DWORD 值,并將其值設為 2 。 通常情況下需要監視的組件和關注對象,更詳細的信息,請看計數器中的說明 組件:磁盤
正被監視的性能方面:用法
要監視的計數器:
物理磁盤 Disk Reads/sec (磁盤讀取 / 秒)
物理磁盤 Disk Writes/sec (磁盤寫入 / 秒)
邏輯磁盤 % Free Space (可用空間) 組件:磁盤
正被監視的性能方面:瓶頸
要監視的計數器:物理磁盤 Avg.Disk Queue Length (磁盤隊列平均長度)(所有實例) 組件:內存
正被監視的性能方面:用法
要監視的計數器:
內存 Available Bytes (可用字節)
內存 Cache Bytes (緩存字節) 組件:內存
正被監視的性能方面:瓶頸或漏洞
要監視的計數器:
內存 Pages/sec (頁面 / 秒)
內存 Page Reads/sec (頁面讀取 / 秒)
內存 Transition Faults/sec (傳輸錯誤 / 秒)
內存 Pool Paged Bytes (分頁的內存池字節)
內存 Pool Nonpaged Bytes (未分頁的內存池字節) 組件:處理器
正被監視的性能方面:用法
要監視的計數器:處理器 % Processor Time (處理器時間)(所有實例) 組件:處理器
正被監視的性能方面:瓶頸
要監視的計數器:
系統 Processor Queue Length (處理器隊列長度)(所有實例)
處理器 Interrupts/sec (中斷 / 秒)
系統 Context switches/sec (上下文切換 / 秒)
1. 在性能 的性能日志和警報 選擇 計數器日志 2. 點擊 新建日志設置 3. 在常規選項卡中選擇添加計數器,性能對象選擇 Thread ,計數器中選擇需要監控的性能指標,并在實例中選擇相應的 Oracle 線程進行跟蹤。 4. 然后在計數器日志中選擇名稱 Oracle_Thread, 進行啟動 具體的計數器解釋請看說明: Example:% Processor Time 是所有進程線程使用處理器執行指令所花的時間百分比。指令是計算機執行的基礎單位。線程是執行指令的對象,進程是程序運行時創建的對象。此計數包括處理某些硬件間隔和陷阱條件所執行的代碼。
? 5. 運行相應的程序后一段時間后,停止 Oracle_Thread 計數器的運行 6. 在性能監視器中,選擇工具欄 查看日志活動,到指定的文件夾中選擇相應的日志文件。 7. 然后可以通過 查看圖表,查看直方圖,查看報告的工具 閱讀和評估一段時間以來各個線程的運行狀況。 8. 但是在系統監視器中無法顯示兩個不同測試階段的的測試對比,可以在計數器日志 日志文件設置中日志的格式,通常是文本文件 ( 制表符或者逗號分割方式)。然后將前后兩段時間的數據倒入 Excel 表,利用 Excel 表的強大功能進行性能比較。
三、 QSlice 工具 Qslice 這個工具可以用來在 Windows 操作系統中觀察用戶進程 (Oracle 進程 ) 及各線程的資源消耗,主要是從 CPU 占用率角度來衡量的。 使用 getsql.sql 腳本即可獲得當前正在執行的 SQL 語句: -- 來自 Eygle 網站上 REM getsql.sql REM author eygle REM 在 windows 上 , 已知進程 ID, 得到當前正在執行的語句 REM 在 windows 上 , 進程 ID 為 16 進制 , 需要轉換 , 在 UNIX 直接為 10 進制 SELECT /*+ ORDERED */ sql_text FROM v$sqltext a WHERE (a.hash_value, a.address) IN ( SELECT DECODE (sql_hash_value, 0, prev_hash_value, sql_hash_value ), DECODE (sql_hash_value, 0, prev_sql_addr, sql_address) FROM v$session b WHERE b.paddr = (SELECT addr FROM v$process c WHERE c.spid = TO_NUMBER ('&pid', 'xxxx'))) ORDER BY piece ASC /
? 然后在 PL/SQL 中運行該腳本就可以找到最消耗資源的問題 SQL ,接下來就可以進行針對性調整了 . 20068-qslice.exe 將其改名為qslice即可
四、 pslist 工具 PsList 是一個能夠列出進程和其線程占用資源詳細信息的小軟件。 PsList is utility that shows you a combination of the information obtainable individually with pmon and pstat. You can view process CPU and memory information, or thread statistics. What makes PsList more powerful than the Resource Kit tools is that you can view process and thread statistics on a remote computer. 。
Pstools.chm pslist.exe
五、 關于 Oracle 進程和 Windows 線程的對照關系 事實上通過性能監視器或者 QSlice 工具、 PsList 看到的線程即可能是 Oracle 中的用戶進程,也可能是 Oracle 的后臺進程;這些工具給出的線程號也都是 16 進制的數字,不太有利于數據庫的監控;因此我們必須把 Oracle 的后臺進程以數據庫的語言列舉出來。 對于 Oracle 用戶進程,則可以取出來在 Oracle 進行分析判斷。
SELECT spid, name FROM V$BGPROCESS, V$PROCESS WHERE V$BGPROCESS.paddr=V$PROCESS.addr; Spid name 1848 PMON 3100 DBW0 2568 LGWR 3080 CKPT 1868 SMON 3040 RECO 3776 CJQ0 2912 QMN0
總結
以上是生活随笔為你收集整理的关于Window操作系统中对Oracle的性能监控的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在 Red HatAS4下添加网卡驱动!
- 下一篇: 利用WDS实现零接触部署Windows