使用Oracle官方巡檢工具ORAchk巡檢資料庫

来源:http://www.cnblogs.com/raobing/archive/2016/12/17/6189629.html
-Advertisement-
Play Games

ORAchk概述 ORAchk是Oracle官方出品的Oracle產品健康檢查工具,可以從MOS(My Oracle Support)網站上下載,免費使用。這個工具可以檢查Oracle資料庫,GoldenGate,Oracle Enterprise Manager 12c、13c等Oracle產品, ...


ORAchk概述

ORAchk是Oracle官方出品的Oracle產品健康檢查工具,可以從MOS(My Oracle Support)網站上下載,免費使用。這個工具可以檢查Oracle資料庫,GoldenGate,Oracle Enterprise Manager 12c、13c等Oracle產品,具體支持的產品和相關資料可以參考MOS文檔:ORAchk - Health Checks for the Oracle Stack (Doc ID 1268927.2)。

ORAchk支持所有主流平臺,當然,對有些平臺的支持並不是很完美,比如,對windows平臺的支持是限定版本,而且需要安裝Cygwin這樣的軟體。最新版本的ORAchk對Oracle資料庫的版本支持是:10gR2,11gR1,11gR2,12cR1,12cR2。

ORAchk是一個命令行工具,運行後收集系統配置信息,同時按照預定義的規則,評估配置是否符合Oracle的最佳實踐,評估結果輸出為一份html格式的健康檢查報告,報告中會有所有檢查項的細節數據,以及根據規則給被檢查系統的一個綜合評分。雖然這個評分規則比較“簡單粗暴”,(所有檢查項的分值都一樣),但這個分數還是有一定意義的,起碼給領導或甲方看的時候,可以給出一個量化指標了,而且可以在不同的系統之間,或不同時間的同一個系統之間進行比較。

ORAchk執行及報告樣例

(ORAchk目前最新的版本是12.2.0.1.1,後續的例子里都是這個版本)

ORAchk的執行比較簡單,下載軟體包(鏈接在上面提到的MOS文檔中),上傳到伺服器,解壓縮,然後直接以root身份執行orachk,也可以用oracle軟體安裝用戶執行,在運行時會提問root口令,也可以選擇使用sudo或者略過需要使用root身份的檢查。

以檢查一套linux平臺上的oracle 11.2.0.4 RAC為例:

clip_image001

ORAchk會自動識別CRS HOME,請用戶確認(當然,檢查單實例就沒有這個問題了),還會提問是檢查集群中的哪個資料庫。因為RAC的所有實例的主機都會執行檢查,如果以前沒有配置過root用戶的用戶等效性,還會自動幫你配置,也都比較簡單,跟著提示做就可以。檢查完成後,會生成一個打包文件,裡面包含最終的html格式的報告,以及相關的細節數據,報告的例子:

clip_image002

以上面的檢查為例,報告分5部分。Database Server章節主要是OS,ASM和數據據的檢查項,我們只要關註fail和warning的檢查項就可以了:

clip_image003

可以點擊“view”,查看檢查項的具體細節:

clip_image004

Patch Recommendation 是補丁建議:

clip_image005

Cluster Wide的檢查主要是檢查RAC節點之間的配置是否一致,比如時間、目錄屬主之類的

clip_image006

MAA 記分卡主要是檢查系統是否符合Oracle推薦的最大可用性架構:(什麼是最大可用性架構,不是本文的重點)

clip_image007

另外最耗時的10個檢查什麼的,我覺得沒什麼意義。

ORAchk以後臺進程的方式定時運行

ORAchk可以配置成以後臺進程模式,按照用戶定義的時間間隔,自動運行,同時把結果通過email的方式發送給用戶。

Daemon Mode配置方法

1. 配置orachk

使用orachk設置自動運行參數,有兩個參數是必須設置的:AUTORUN_SCHEDULE 和NOTIFICATION_EMAIL,設置的例子:

# ./orachk –set “AUTORUN_SCHEDULE=3 * * 0 ;[email protected]

其中AUTORUN_SCHEDULE是運行的時間,含義是:AUTORUN_SCHEDULE=hour day month day_of_week

用*代表所有值,比如上面例子中“3 * * 0” 代表每個星期天的3點執行(0代表星期天,6代表星期六)

NOTIFICATION_EMAIL參數的值就是接受報告的郵箱地址。

2. 啟動後臺進程

# ./orachk –d start

這種模式需要工具expect來處理root口令,避免多次交互輸入口令,這個工具的下載地址:http://expect.sourceforge.net/

Expect 安裝是源碼安裝,在linux平臺上,需要tcl-devel 這個rpm包,安裝expect和tcl-devel 包的過程略。

郵件相關配置

ORAchk支持使用mailx和sendmail兩種方式發送郵件,為了外部郵箱能夠收到郵件,我使用了mailx的方式,在我的測試機上,安裝的是Oracle Linux 6.5,系統自帶mailx 12.4,為了保證能夠讓ORAchk使用mailx,需要保證系統上安裝了uuencode,sharutils rpm包裡面有這個工具。

另外,在/etc/mail.rc,增加下列配置行,主要是目前大部分外部smtp伺服器都是需要認證才能發郵件,所以要給出認證信息:

clip_image008

如果一切正常,在orachk目錄下的orachk_daemon.log會有類似的字樣:

clip_image009

郵件樣例

第一次的郵件報告就是一份html格式的報告,後續的報告會包含上一次的報告和本次報告,以及兩份報告的不同之處。

clip_image010

Collection Manager

ORAchk的軟體包裡面還提供了一個web應用,用於管理健康檢查的結果,應用的名字叫Collection Manager(CM),在這個應用中,一次檢查被稱為一個Collection。

CM是一個Oracle APEX應用,Oracle APEX顯然不是這篇文章討論的問題,關於APEX的介紹及安裝部署會在其他文章介紹。

CM在導入APEX後,運行應用,登錄的界面是這個樣子的:

clip_image011

在系統中應用包含兩個樣例Collection,是在一個sample系統上運行的2次檢查。可以很直觀地看到最新一次的檢查,FAIL的檢查項31%,WARNING的檢查項31%,PASS的檢查項38%。

我們把我們實際的Collection上傳兩個:

clip_image012

直接上傳zip包,系統會自動在後臺解壓縮並處理,需要花幾分鐘時間。

clip_image013

查看我們上傳的兩個不同系統的Collection:

clip_image014

點擊圖表,可以轉到具體信息頁面,比如我們點擊4%的紅色區域,會轉向這個頁面,除了能查看具體的檢查項信息外,還可以針對問題創建Ticket:

clip_image015

CM應用中應該算是自帶了一個事件管理系統,可以將檢查後發現的配置缺陷,當作一個事件,通過CM中的事件管理功能,進行追蹤管理:

clip_image016

另外這個應用還可以進行不同Collection的比較,也很方便。

從這個應用的內容看,官方希望的系統健康檢查流程應該是這樣的:

1. 客戶自助或服務商現場工程師運行orachk,生成Collection

2. 上傳Collection到CM應用,CM是部署在雲(公有或私有)上的

3. 客戶登錄系統查看、管理自己系統的檢查報告,不再需要服務人員提供檢查結果

4. 檢查出的問題可以使用CM應用來進行跟蹤管理

其實要真能這樣也不錯,但是個人覺得目前可能實現起來還有一些障礙:

1. Orachk和CM系統都沒有中文版,估計還得有服務商翻譯,可能最後還是要轉變成傳統的交付物。

2. Orachk目前檢查的內容還不能算全面,比如性能方面的數據

使用自定義檢查項

ORAchk支持自定義檢查項,用戶只要按照一定的規則,創建對應的XML配置文件,就可以讓ORAchk進行自定義檢查。

ORAchk的軟體包裡面提供了一個sample_user_defined_checks.xml,給出了幾個例子,而且有詳細的註釋,只要按照這個規則,生成user_defined_checks.xml,放在orachk所在的目錄,就可以讓orachk進行自定義檢查了。自定義檢查項目前支持兩種類型:OS 命令和SQL語句。下麵我看一個SQL語句的自定義檢查:

這個檢查返回空閑空間比例小於10%的表空間的個數,為0是檢查通過,不為0是FAIL。

<?xml version="1.0" encoding="UTF-8"?>

<UserDefinedChecks

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:noNamespaceSchemaLocation="user_defined_checks.xsd"> <!-- Main Tag (root element)-->

<CHECK AUDIT_CHECK_NAME="Tablespace Utilization">

<!-- This check should run on all supported platforms and versions given the platform and version specs below -->

<ORACLE_VERSION>*</ORACLE_VERSION>

<PLATFORMS>

<PLATFORM TYPE="*">

<FLAVOR>*</FLAVOR>

</PLATFORM>

</PLATFORMS>

<PARAM_PATH>tbs_ut</PARAM_PATH> <!—註意這裡參數值需要和SQL_COMMAND中的返回字元串匹配-->

<SQL_COMMAND> <!—這個SQL返回空閑空間比例小於10的表空間的個數-->

<![CDATA[ select 'tbs_ut = '||count(*) from (select a.tablespace_name,

trunc(sum(a.tots) / 1024 / 1024, 2) Tot_Size_mb,

round(sum(a.sumb) / 1024 / 1024, 2) Tot_Free_mb,

round(sum(a.sumb) * 100 / sum(a.tots), 2) Pct_Free,

round(sum(a.largest) / 1024 / 1024, 2) Max_Free_mb,

sum(a.chunks) Chunks_Free

from (select tablespace_name,

0 tots,

sum(bytes) sumb,

max(bytes) largest,

count(*) chunks

from dba_free_space a

group by tablespace_name

union

select tablespace_name, sum(bytes) tots, 0, 0, 0

from dba_data_files

group by tablespace_name) a

group by a.tablespace_name)

where PCT_FREE &lt; 10;]]> <!—註意大於號,小於號,等號都需要替換為XML能夠處理的字元-->

</SQL_COMMAND>

<SQL_COMMAND_REPORT>

<![CDATA[select 'Free PCT less 10% TBS = '||count(*) from (select a.tablespace_name,

trunc(sum(a.tots) / 1024 / 1024, 2) Tot_Size_mb,

round(sum(a.sumb) / 1024 / 1024, 2) Tot_Free_mb,

round(sum(a.sumb) * 100 / sum(a.tots), 2) Pct_Free,

round(sum(a.largest) / 1024 / 1024, 2) Max_Free_mb,

sum(a.chunks) Chunks_Free

from (select tablespace_name,

0 tots,

sum(bytes) sumb,

max(bytes) largest,

count(*) chunks

from dba_free_space a

group by tablespace_name

union

select tablespace_name, sum(bytes) tots, 0, 0, 0

from dba_data_files

group by tablespace_name) a

group by a.tablespace_name)

where PCT_FREE &lt; 10;]]>

</SQL_COMMAND_REPORT>

<OPERATOR>=</OPERATOR>

<COMPARE_VALUE>0</COMPARE_VALUE> <!—操作符是等號,比較值是0,也就是說SQL返回0,代表pass,否則fail-->

<CANDIDATE_SYSTEMS>*</CANDIDATE_SYSTEMS>

<COMPONENT_DEPENDENCY>RDBMS</COMPONENT_DEPENDENCY>

<DATABASE_MODE>3</DATABASE_MODE> <!— 3代表open,2代表mount,1代表nomount-->

<DATABASE_TYPE>CDB:PDB:NORMAL</DATABASE_TYPE>

<DATABASE_ROLE>PRIMARY</DATABASE_ROLE>

<ALERT_LEVEL>FAIL</ALERT_LEVEL>

<PASS_MSG>The number of Tablespaces which free PCT less 10% is zero</PASS_MSG>

<FAIL_MSG>The number of Tablespaces which free PCT less 10% is not zero</FAIL_MSG>

<BENEFIT_IMPACT>

<![CDATA[ tablespace free pct should be more than 10% ]]>

</BENEFIT_IMPACT>

<RISK>

<![CDATA[ leak of space ]]>

</RISK>

<ACTION_REPAIR>

<![CDATA[ add datafile or resize datafile ]]>

</ACTION_REPAIR>

<LINKS>

<LINK></LINK>

</LINKS>

</CHECK>

<!-- END USER DEFINED CHECKS -->

</UserDefinedChecks>

自定義檢查項,可以和其他檢查項一起執行,也可以單獨執行,單獨執行自定義檢查項的語法是:

# ./orachk –profile user_defined_checks

下麵是自定義檢查項報告樣例:

clip_image017

如果你覺得這樣寫XML麻煩,還可以使用CM應用來生成自定義檢查項的XML文件,菜單路徑:Administration -> “+ Add New User Defined Checks”

clip_image018

定義好後,可以生成XML文件並下載:

clip_image019

不過這個功能並不完善,缺乏必要得有效性檢查,如果想不出錯,還是要把XML得規則搞清楚,我個人還是比較喜歡手工寫XML。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • GridView 可以指定顯示的條目的列數。 listview一般顯示的條目的列數都是一列 如果是列表(單列多行形式)的使用ListView,如果是多行多列網狀形式的優先使用GridView android:numColumns=”auto_fit” //GridView的列數設置為自動 GridV ...
  • 現在二維碼的應用越來越普及,二維碼掃描也成為手機應用程式的必備功能了。本文將基於 Xamarin.Android 平臺使用 ZXing.Net.Mobile 做一個簡單的 Android 條碼掃描示常式序。 1、新建一個 Xamarin.Android 應用: 閱讀全文 ...
  • 苦心人天不負, 為了項目終於把 iOS 10 跳轉系統設置的方法給搞定了, 很欣慰. http://www.cnblogs.com/lurenq/p/6189580.html iOS 10 跳轉系統設置的欄位 電池電量 Prefs:root=BATTERY_USAGE 通用設置 Prefs:root ...
  • 從今天開始研究開發自己的編程語言Ocelot,從《自製編譯器》出發,然後再自己不斷完善功能並優化。 編譯器前端簡單,就不深入研究了,直接用現成的一款工具叫JavaCC,它可以生成抽象語法樹,抽象語法樹是生成中間代碼的關鍵,而中間代碼又是生成後端代碼的關鍵。 整個編譯器代碼採用java語言編寫,主要功 ...
  • 本文用於收集在運維中經常使用的系統內置函數,持續整理中 一,常用Metadata函數 1,查看資料庫的ID和Name 2,查看對象的ID和Name,對象的Schema,對象的定義 3,查看Schema的ID和Name,通過對象ID獲取對象的架構名(Schema) 4,查看Column的Name 二, ...
  • 基本概念: 資料庫DB(database): + 數據的倉庫,數據的集合,是數據的一種結構化的存儲 資料庫管理系統DBMS(database management system): + 管理資料庫的一套軟體 + 比如Oracle、MySQL、SQL server、DB2 + 介於應用程式和操作系統之 ...
  • 本文出處:http://www.cnblogs.com/wy123/p/6189100.html 標題有點拗口, 先拋出問題:一個查詢沒有明確指定排序方式,那麼,第二次執行這個同樣的查詢的時候,查詢結果會不會與第一次的查詢結果排序方式完全一樣? 答案是不確定的,兩個完全一樣的查詢,結果也完全一樣,兩 ...
  • List Publishers = new List(); Publisher publish1 = new Publisher(); publish1.Code = "01"; publish1.Name = "北京出版社1"; Publishers.Add(publish1); ... ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...