從零開始實現資料庫自動化巡檢(一)
一:資料庫巡檢分為幾個階段
第一階段:手動巡檢
透過逐條執行巡檢命令,複製貼上到巡檢word文件。
第二階段:指令碼巡檢
將巡檢命令打包到指令碼,執行指令碼,巡檢內容輸出文字檔案,在複製貼上到巡檢word文件裡。
第三階段:自動巡檢
在第二階段基礎上,指令碼巡檢的基礎上,透過python讀取巡檢文字檔案,將內容輸出到巡檢wrod文件裡。
第四階段:智慧巡檢
在第三階段基礎上,透過python讀取巡檢文字檔案時,根據關鍵字匹配,自動解讀巡檢內容輸出報告說明和處理建議,並將風險項自動加粗標紅。
說明:
本次主要講解第三階段,自動巡檢部分。
二:明確巡檢範圍
本次以Oracle RAC資料庫巡檢為例。
1:資料庫基礎資訊
作業系統版本、IP資訊、VIP資訊、架構資訊、資料庫建立時間、資料庫啟動時間、資料庫版本資訊、資料庫補丁資訊、字符集、例項狀態。
2:資料庫檔案資訊
表空間資訊、資料檔案資訊、臨時檔案資訊、UNDO檔案資訊、回滾段資訊、REDO LOG檔案資訊、ARCHIVELOG資訊、控制檔案資訊。
3:資料庫叢集資訊
ASM磁碟組資訊、ASM磁碟資訊、OCR資訊、OLR資訊、VOTEDISK資訊、CRS資訊、監聽資訊。
4:資料庫物件資訊
表資訊、分割槽表資訊、檢視、觸發器、儲存過程、索引、失效物件、異常物件、JOBS、SCHEDULER_JOBS、資料庫大小、使用者資料大小。
5:資料庫備份資訊
全備資訊、增量備份資訊、歸檔備份資訊、異地備份檔案資訊。
6:資料庫效能資訊
使用者角色、使用者密碼策略、使用者統計資訊、等待事件、TOP SQL
7:資料庫引數資訊
根據引數基線匹配當前引數設定是否正確。
8:資料庫系統資訊
磁碟目錄資訊、NFS資訊、
9:資料庫日誌資訊
資料庫告警日誌、叢集告警日誌、ASM日誌、作業系統日誌。
10:資料庫巡檢結果
三:Oracle RAC巡檢指令碼
指令碼名稱:Oracle_rac_check_v1_20211111.sh
透過指令碼巡檢方式:
使用root使用者,
./Oracle_rac_check_v1_20211111.sh > oracle_check_20220503.log
獲取指令碼內容:
微信公眾號《IT小Chen》---Oracle---日常維護---Oracle RAC巡檢指令碼v1.0
四:透過python自動巡檢
由於本人沒接觸過python,也不懂開發,自動巡檢實現過程也肯定是漏洞百出的,後面也會逐步完善。
一開始考慮透過python直接連線資料庫,執行資料庫操作,結果輸出到word文件,但是出於資料庫安全、輸出格式考慮,放棄了這種方式。
後來考慮透過python讀取整個巡檢文字檔案,根據模糊搜尋複製指定段落到word文件,由於能力有限,這種方式沒有試驗成功。
最後考慮採用如下最笨的方式:
1.透過巡檢指令碼自動生成多個巡檢檔案。
例如:
1_資料庫基礎資訊.log、2_資料庫檔案資訊.log、3_資料庫叢集資訊.log等。
2.資料庫作業系統上配置定時任務,每月25號,自動執行巡檢指令碼。
3.巡檢文字結果過自動上傳到FTP伺服器指定目錄。
4.透過python依次讀取log檔案,並輸出到巡檢word文件裡。
5.FTP伺服器上配置定時任務,自動執行python,生成word格式巡檢文件。
6.DBA檢查並收集巡檢文件。
其中:Python部分指令碼內容如下:
# 匯入庫 from docx import Document from docx.shared import Pt from docx.shared import Inches from docx.oxml.ns import qn from docx.shared import RGBColor # 新建空白文件 doc1 = Document() # 讀取巡檢文字內容 f1 = open("D:\\python\\tmp\\1.txt",encoding = "utf-8") f2 = open("D:\\python\\tmp\\2.txt",encoding = "utf-8") f3 = open("D:\\python\\tmp\\3.txt",encoding = "utf-8") # 文件標題 doc1.add_heading('XXX系統Oracle資料庫巡檢報告',0) #段落描述 doc1.add_paragraph('巡檢時間 2022年05月03日\n巡檢人:陳舉超') #建立一級標題(資料庫基礎資訊) doc1.add_heading('一:資料庫基礎資訊',1) #段落描述 paragraph = doc1.add_paragraph('') run = paragraph.add_run(f1.read()) #字號:預設11號,改成10號 run.font.size = Pt(10) #字型:預設Cambria(正文),改成"Times New Roman"字型 run.font.name = 'Times New Roman' #字型顏色:預設黑色,改成紅色 #run.font.color.rgb = RGBColor(0xFF, 0x00, 0x00) # 建立一級標題(資料庫叢集資訊) doc1.add_heading('二:資料庫叢集資訊',1) #段落描述 doc1.add_paragraph(f2.read()) # 建立一級標題 doc1.add_heading('三:資料庫物件資訊',1) #段落描述 doc1.add_paragraph(f3.read()) # 建立一級標題 doc1.add_heading('十:巡檢結果',1) #段落描述 doc1.add_paragraph('巡檢結果:正常') # word文件名稱 doc1.save('XXX系統Oracle資料庫巡檢報告20220503.docx') #關閉檔案 f1.close() f2.close() f3.close()
執行python指令碼
檢視巡檢文件
檢視巡檢文件內容
###chenjuchao 20220503###
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2890643/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【mq】從零開始實現 mq-04-啟動檢測與實現優化MQ優化
- 從零開始實現一個RPC框架(零)RPC框架
- 03LangChain初學者指南:從零開始實現高效資料檢索LangChain
- 從零開始實現multipart/form-data資料提交ORM
- 從零開始的Java RASP實現(一)Java
- 從零開始實現放置遊戲(一)遊戲
- 從零開始實現一個RPC框架(一)RPC框架
- 資料分析從零開始實戰 | 基礎篇(一)
- 從零開始實現一個RPC框架(四)RPC框架
- 從零開始實現一個RPC框架(二)RPC框架
- 從零開始實現一個RPC框架(五)RPC框架
- 從零開始實現一個RPC框架(三)RPC框架
- [Flutter]從零開始實現一個巢狀滑動的PageView(一)Flutter巢狀View
- SQL Server資料庫巡檢SQLServer資料庫
- 從零開始發明 AC 自動機
- 從零開始學typescript— 自動編譯TypeScript編譯
- 從零開始實現一個分散式RPC框架分散式RPC框架
- 從零開始實現一個IDL+RPC框架RPC框架
- 從零開始用 proxy 實現 Mobx
- 從零開始實現線上直播
- 【從零開始學習 MySql 資料庫】(2) 函式MySql資料庫函式
- [Flutter]從零開始實現一個巢狀滑動的PageView(三)Flutter巢狀View
- 一張圖帶你解讀 -- 如何從零開始學習介面自動化
- 資料視覺化初探-從零開始開發一個渲染引擎概述視覺化
- 自動化運維-Python paramiko 實現無客戶端系統巡檢運維Python客戶端
- MySQL資料庫健康檢查--MySQL巡檢MySql資料庫
- 幾何庫從零開始
- 從零開始實現一個MyBatis加解密外掛MyBatis解密
- 從零開始實現一個自己的指令碼引擎指令碼
- 從零開始 實現一個自己的指令碼引擎指令碼
- 從零開始實現React(一):JSX和虛擬DOMReactJS
- 從零開始寫 Docker(十)---實現 mydocker logs 檢視容器日誌Docker
- 「乾貨」介面自動化實踐:高效智慧介面場景自動巡檢方案
- 從零開始的Java RASP實現(二)Java
- MSSQL資料庫健康檢查--SQL Server巡檢SQL資料庫Server
- 資料分析從零開始實戰 | 基礎篇(三)
- 資料分析從零開始實戰 | 基礎篇(二)
- Oracle資料庫(RAC)巡檢報告Oracle資料庫