使用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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...