Oracle 一键巡检自动生成 Word 报告

news2025/1/11 7:56:08

前言

Oracle 数据库巡检通常需要消耗大量时间和精力,包括收集数据库以及主机的相关信息。针对 Word 报告的样式调整,也是重复和费事的,所以我针对 Oracle 巡检所需检查的信息以及报告模板,写了一套自动巡检并且生成报告的脚本。巡检人员只需要执行脚本,脚本会自动生成一个完整的 Word 报告(样式格式都无需调整),只需要检查报告中是否存在问题即可。

本文演示一套 19C RAC 的集群数据库自动巡检。

介绍

Oracle 一键巡检脚本可将巡检结果一键生成为 Word 报告!本脚本通过 python 将巡检结果生成为 Word 报告,分为两部分:

  • 第一部分通过 shell 和 sql 脚本生成巡检压缩包
  • 第二部分通过 python 解析巡检压缩包生成 Word 巡检报告

Word 报告内容主要包括:主机巡检,数据库巡检,DataGuard 同步检查,Rman 备份检查, rac 集群检查,数据库性能分析(awr 内部 sql 获取),抓取 alert日志,抓取 awr 报告等,内容极其丰富。如果是 rac,会抓取所有节点报告。

  • 报告可选:周/月/季三种类型,生成的 Word 可直接交付客户
  • 支持所有操作系统,所有版本
  • 支持Oracle 10/11/12/18/19/21 等版本
  • 支持 non-cdb/cdb 架构
  • 如果一台主机有多个实例,支持一键巡检多个实例,生成一个巡检文件,方便快捷
  • 支持一键生成多个数据库 Word 报告
  • Word 报告生成支持自定义客户名称,巡检公司名称,巡检人员名称,巡检公司 LOGO等,直接解放双手
  • Word 报告生成后根据数据库巡检结果,在 Word 中直接提供巡检建议,全程智能巡检
  • 数据库主机无需安装任何第三方软件,只需要上传巡检脚本,一键执行生成巡检文件即可
  • 脚本持续更新

咨询巡检脚本可扫码进微信群或者添加作者微信 Lucifer-0622

Oracle 数据库主机只需需要上传对应 DB 的巡检脚本:

[oracle@rac01:/home/oracle/check]$ ll
-rw-r--r-- 1 root root 202369 Mar 15 09:12 dbcheck10g.sql
-rw-r--r-- 1 root root 206342 Mar 15 09:12 dbcheck11g.sql
-rw-r--r-- 1 root root 207786 Mar 15 09:12 dbcheck12c.sql
-rw-r--r-- 1 root root  24819 Mar 15 09:13 oscheck.sh

oscheck.sh 是用来巡检主机相关信息以及配置检查。
dbcheck*.sql 是用来巡检数据库相关信息,12c 包括 12c 以后的版本。

演示

Oracle 数据库巡检

Oracle 数据库其中一个节点上传巡检脚本(本文选择节点一):

[root@rac01:/root]$ chown -R oracle:oinstall /home/oracle/check/
[oracle@rac01:/home/oracle/check]$ chmod +x oscheck.sh 
[oracle@rac01:/home/oracle/check]$ ll
total 232
-rw-r--r-- 1 oracle oinstall 207786 Mar 15 09:12 dbcheck12c.sql
-rwxr-xr-x 1 oracle oinstall  24819 Mar 15 09:13 oscheck.sh

执行脚本一键巡检 Oracle 数据库:

## 如果一台主机上有多个实例,可以通过参数 -o 来指定,例如:
sh oscheck.sh -o orcl,lucifer,test
## 确保 ORACLE_SID 正确后,执行脚本
[oracle@rac01:/home/oracle/check]$ sh oscheck.sh

#==============================================================#                                                                                  
Oracle数据库主机检查                                                                                  
#==============================================================#                                                                                  

收集主机 OS 层信息 ...                                                                                  
收集数据库补丁信息 ...                                                                                  
收集数据库监听信息 ...                                                                                  

#==============================================================#                                                                                  
检查数据库实例:luciferdg1                                                                                  
#==============================================================#                                                                                  

收集数据库ALERT日志 ...                                                                                  
收集数据库AWR报告 ...                                                                                  

Note1: Information about Instance

   INST_ID       DBID NAME       DATABASE_ROLE        CREATED              LOG_MODE      OPEN_MODE            VERSION    SESSIONID
---------- ---------- ---------- -------------------- -------------------- ------------- -------------------- ---------- --------------------
         1 4019382963 LUCIFER    PRIMARY              2024-03-13 10:21:39  ARCHIVELOG    READ WRITE           19.0.0.0.0 392,13105,30182
         2 4019382963 LUCIFER    PRIMARY              2024-03-13 10:21:39  ARCHIVELOG    READ WRITE           19.0.0.0.0 392,13105,30182


Note2: Information abount Recyclebin

+------------------------------------------------------------------------------------------------------------+
|                                    Oracle Database health Check script                                     |
|------------------------------------------------------------------------------------------------------------+
|                              Copyright (c) 2022-2100 lpc. All rights reserved.                             |
+------------------------------------------------------------------------------------------------------------+

DBHealthCheck  Author: Lucifer

+----------------------------------------------------------------------------+
Now DBCheck staring, the time cost depending on size of database.
Begining ......500
+----------------------------------------------------------------------------+

-----Oracle Database  Check STRAT, Starting Collect Data Dictionary Information----
start...Set Environment Variables, Configure html headers.....
start collect...Database Informaion...
start collect......Overview of Instance Informaion...
start collect......Overview of Database Informaion...
start collect......Database Version Informaion...
start collect......Database Component and Patch Informaion...
start collect......Database Parameter Informaion...
start collect......Database Resource Informaion...
start collect......Database ControlFile Informaion...
start collect......Database LogFile Informaion...
start collect......Archive Log Size in last 10 Days...
start collect......Invalid Object Informaion...
start collect......Tablespace Usage Informaion...
start collect......Top10 Index Informaion...
start collect......Range Partition Extend Check Informaion...
start collect......Object in System TableSpace Informaion...
start collect......BitCoin Attack Check...
start collect......SYSAUX Objects Informaion...
start collect......Flashback Database Parameters...
start...OverView Database User Information...
start collect......System Manager Role Informaion...
start collect......Schema Informaion...
start collect......Profile Informaion...
start collect......Directory Informaion...
start collect......Job Informaion...
start collect......Database Link Informaion...
start collect......Autotask Informaion...
start...OverView Database of Backup and Recover Information...
start collect......Dataguard Parameter...
start collect......Dataguard Applied Status...
start collect......Dataguard Status...
start collect......RMAN Backup Info...
start collect......Orphaned DataPump Jobs...
start collect......Instacne Alert Log...
start...OverView Database of ASM Information...
start collect......ASM Instance Informaion...
start collect......ASM Diskgroup Attribute...
start collect......ASM Disk Group...
start...OverView Database Performace Information...
start collect......AWR Configure Informaion...
start collect......Awrrpt Snap Informaion...
start collect......Awrrpt Load Profile Informaion...
start collect......Instance Efficiency Percentages...
start collect......TOP 10 Wait Event...
start collect......System Time Model...
start collect......TOP 10 SQL Order by Elapsed Time...
start collect......Awrcrt Informaion...
Database script execution ends....

压缩包位置: /home/oracle/check/dbcheck_rac01_20240315.tar.gz  

执行完之后会在当前目录生成一个 tar 压缩包:

[oracle@rac01:/home/oracle/check]$ ll
total 640
-rw-r--r-- 1 oracle oinstall 207786 Mar 15 09:12 dbcheck12c.sql
drwxr-xr-x 2 oracle oinstall    227 Mar 15 09:28 dbcheck_rac01_20240315
-rw-r--r-- 1 oracle oinstall 417254 Mar 15 09:28 dbcheck_rac01_20240315.tar.gz
-rwxr-xr-x 1 oracle oinstall  24819 Mar 15 09:13 oscheck.sh

这个就是脚本获取到的所有信息集合,包含以下内容:

[oracle@rac01:/home/oracle/check]$ cd dbcheck_rac01_20240315/
[oracle@rac01:/home/oracle/check/dbcheck_rac01_20240315]$ ll
## 节点1的 alert 日志
-rw-r--r-- 1 oracle oinstall   54530 Mar 15 09:27 alert_luciferdg1.log
## 节点2的 alert 日志
-rw-r--r-- 1 oracle oinstall 3785318 Mar 15 09:27 alert_luciferdg2.log
## 节点1的 awrrpt 报告
-rw-r--r-- 1 oracle oinstall 1506483 Mar 15 09:27 awrrpt_luciferdg1_13_46.html
## 节点2的 awrrpt 报告
-rw-r--r-- 1 oracle oinstall 1455454 Mar 15 09:27 awrrpt_luciferdg2_13_46.html
## Oracle Database 巡检报告 html 格式
-rw-r--r-- 1 oracle oinstall  121960 Mar 15 09:28 dbcheck_4019382963_LUCIFER_19.0.0.0.0_20240315.html
## Oracle 主机巡检报告 txt 格式
-rw-r--r-- 1 oracle oinstall   12823 Mar 15 09:27 oscheck_rac01_20240315.txt

接下来就是将 tar 文件获取到本地,进行 word 报告一键生成程序即可。

生成 Word 报告

放入巡检文件

通过 sftp 等工具获取到 tar 报告,放到 checkfiles 目录下:

╭─lucifer@Lucifer-2 /Volumes/DBA/Github/OracleHealthCheck/checkfiles ‹main●›
╰─$ ll
total 816
-rw-r--r--  1 lucifer  staff   407K  3 15 09:38 dbcheck_rac01_20240315.tar.gz
-rw-r--r--@ 1 lucifer  staff     0B  1 22 10:19 请将巡检文件移动到此目录下.txt

配置 Python 环境

前置工作(必须满足):

  • 建议下载安装 Python 3 最新版本,并且配置好 Python 环境
  • 下载安装 chrome 浏览器以及 chromedriver
  • 需要安装以下 Python 模块,在根目录下执行:pip install -r requirements.txt 即可

Word 报告一键生成程序是通过 Python 来写的,完整程序目录如下:

╭─lucifer@Lucifer-2 /Volumes/DBA/Github/OracleHealthCheck ‹main●›
╰─$ tree -N
.
├── README.md
├── checkfiles
│   └── 请将巡检文件移动到此目录下.txt
├── example
│   └── example.md
├── reports
│   └── word 巡检报告将在此目录下生成.txt
├── requirements.txt
├── resources
│   ├── chromedriver
│   ├── config.ini
│   ├── images
│   │   └── Oracle.png
│   ├── js
│   │   └── crt21.js
│   └── templates
│       ├── Oracle数据库巡检报告模板_周.docx
│       ├── Oracle数据库巡检报告模板_季.docx
│       └── Oracle数据库巡检报告模板_月.docx
├── scripts
│   ├── db
│   │   ├── dbcheck10g.sql
│   │   ├── dbcheck11g.sql
│   │   └── dbcheck12c.sql
│   └── os
│       └── oscheck.sh
└── src
    ├── awrcrt.py
    ├── create_config.py
    ├── create_desc.py
    ├── create_report.py
    ├── main.py
    └── parse_file.py

运行 Python 脚本需要安装 Python 运行环境,去官方下载最新的安装包即可:Download Python,注意:在安装 Python 时勾选 “Add Python to PATH” 复选框,安装程序会自动添加环境变量,否则需要手动配置

安装好 Python 之后,运行命令安装依赖包:

## 命令行窗口进入到 requirements.txt 所在目录运行
╭─lucifer@Lucifer-2 /Volumes/DBA/Github/OracleHealthCheck ‹main●›
╰─$ pip install -r requirements.txt

等待安装完成即可。

接下来还需要下载 chromedriver 以及 Google Chrome 浏览器: Chrome for Testing availability

image.png

下载稳定版本后进行安装即可,chromedriver 下载解压后放到 resources 目录下(Windows的是有后缀的):

╭─lucifer@Lucifer-2 /Volumes/DBA/Github/OracleHealthCheck/resources ‹main●›
╰─$ ll
-rwxr-xr-x@ 1 lucifer  staff    15M  3 12 07:17 chromedriver
-rw-r--r--@ 1 lucifer  staff   2.0K  2 29 14:00 config.ini
drwxr-xr-x@ 4 lucifer  staff   128B  1 22 12:28 images
drwxr-xr-x@ 3 lucifer  staff    96B  1 22 10:19 js
drwxr-xr-x@ 5 lucifer  staff   160B  1 22 10:19 templates

至此,脚本所需 Python 环境就配置好了。

生成 Word 报告

进入到 main.py 所在的目录 src:

╭─lucifer@Lucifer-2 /Volumes/DBA/Github/OracleHealthCheck/src ‹main●›
╰─$ ll
-rw-r--r--@ 1 lucifer  staff   3.2K  1 22 10:19 awrcrt.py
-rw-r--r--@ 1 lucifer  staff   3.0K  1 22 10:19 create_config.py
-rw-r--r--@ 1 lucifer  staff    14K  1 22 10:19 create_desc.py
-rw-r--r--@ 1 lucifer  staff   5.1K  1 22 10:19 create_report.py
-rwxr-xr-x@ 1 lucifer  staff   8.2K  1 22 10:19 main.py
-rw-r--r--@ 1 lucifer  staff   5.3K  1 22 10:19 parse_file.py

运行脚本调用图形化程序:

╭─lucifer@Lucifer-2 /Volumes/DBA/Github/OracleHealthCheck/src ‹main●›
╰─$ python main.py

运行完之后会弹出一个图形化报告生成工具:

工具页面包含可编辑选项:

  • 客户公司名称
  • 服务公司名称
  • 巡检人员
  • 服务公司 logo
  • 巡检类型:根据不同巡检类型生成不同的报告内容
  • Word 报告保存位置(默认建议不改动)

根据自己实际情况填写后,本文按照默认配置选择季度巡检,点击 生成报告 即可,查看运行过程:

解压 /Volumes/DBA/Github/OracleHealthCheck/checkfiles/dbcheck_rac01_20240315.tar.gz 到临时目录
复制 crt21.js 到临时目录 $_tmp
启动谷歌游览器并设置宽度
访问 html 文件 file:///Volumes/DBA/Github/OracleHealthCheck/src/$_tmp/dbcheck_4019382963_LUCIFER_19.0.0.0.0_20240315.html
正在截取 awrcrt 性能分析图,请稍等...
截图已完成
关闭游览器
保存到 /Volumes/DBA/Github/OracleHealthCheck/reports/Lucifer 有限公司-Oracle数据库4019382963_LUCIFER巡检报告_20240315.docx
删除图片临时目录
删除临时目录
执行完成!

运行完成后在 reports 目录下已自动生成 Word 报告:

╭─lucifer@Lucifer-2 /Volumes/DBA/Github/OracleHealthCheck/reports ‹main●›
╰─$ ll
total 1192
-rw-r--r--@ 1 lucifer  staff   594K  3 15 09:59 Lucifer 有限公司-Oracle数据库4019382963_LUCIFER巡检报告_20240315.docx
-rw-r--r--@ 1 lucifer  staff     0B  1 22 10:19 word 巡检报告将在此目录下生成.txt

至此,Word 报告已经生成完成。

Word 报告演示

Word 报告可以查看:Lucifer 有限公司-Oracle数据库4019382963_LUCIFER巡检报告_20240315.pdf

注意:脚本默认读取 checkfiles 下的所有 dbcheck 开头的 html 和 tar.gz 文件,并根据一个数据库一个 word 报告的方式批量生成报告。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1520214.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【回归预测】基于DBO-RF(蜣螂优化算法优化随机森林)的回归预测 多输入单输出【Matlab代码#67】

文章目录 【可更换其他算法,获取资源请见文章第6节:资源获取】1. 随机森林RF算法2. 蜣螂优化算法3. 实验模型4. 部分代码展示5. 仿真结果展示6. 资源获取 【可更换其他算法,获取资源请见文章第6节:资源获取】 1. 随机森林RF算法 …

【每日一问】手机如何开启USB调试?

一、背景 当电脑跟手机之间需要进行交互的时候,可以考虑使用usb进行连接。那么手机如何开启USB调试呢? 二、操作步骤: 思路: 步骤1:手机开启开发者模式 步骤2:在开发者模式中,开启“USB调试”…

孙宇晨最新研判:加密货币将成为全球金融基础设施的一部分

近日,波场TRON创始人、火币HTX全球顾问委员会委员孙宇晨接受了在加密社区有重要影响力的媒体平台Bankless的专访,就自己的从业经历、涉足加密行业的理想、波场TRON本身的发展和未来的市场走向等话题进行了详细的分享。 孙宇晨认为,波场TRON的使命是为那些没有银行账户的人提供…

数据结构——字符串

1.leetcode 151 题目链接: . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/reverse-words-in-a-string/…

Vue.js+SpringBoot开发天沐瑜伽馆管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 瑜伽课程模块2.3 课程预约模块2.4 系统公告模块2.5 课程评价模块2.6 瑜伽器械模块 三、系统设计3.1 实体类设计3.1.1 瑜伽课程3.1.2 瑜伽课程预约3.1.3 系统公告3.1.4 瑜伽课程评价 3.2 数据库设计3.2.…

HTML—标签的分类,span和div标签,不同的标签之间类型转换

标签的分类: ①块级标签:无论内容多少,会充满整个行。大小可自定义 例:p,h1,ul,ol,hr 等 ②行级标签:自身的大小就是标签的大小,不会占一整行。大小不可调 例…

免费升级https的方式(含教学)

背景:随着现在全民网络安全意识的日益提升,各个网站实现的https数量也随之提升,那么如何将原本网站的http访问方式升级为https呢?下面均为干货内容。 目录 http访问和https访问的区别: 实现https后有哪些好处&#x…

多人聊天室 (epoll - Linux网络编程)

文章目录 零、效果展示一、服务器代码二、客户端代码三、知识点1.bind() 四、改进方向五、跟练视频 零、效果展示 一个服务器作为中转站&#xff0c;多个客户端之间可以相互通信。至少需要启动两个客户端。 三个客户端互相通信 一、服务器代码 chatServer.cpp #include <…

Java代码审计安全篇-反序列化漏洞

前言&#xff1a; 堕落了三个月&#xff0c;现在因为被找实习而困扰&#xff0c;着实自己能力不足&#xff0c;从今天开始 每天沉淀一点点 &#xff0c;准备秋招 加油 注意&#xff1a; 本文章参考qax的网络安全java代码审计和部分师傅审计思路以及webgoat靶场&#xff0c;记录…

续上篇 qiankun 微前端配置

上篇文章地址&#xff1a;微前端框架 qiankun 配置使用【基于 vue/react脚手架创建项目 】-CSDN博客 主应用&#xff1a; src/main.js 配置&#xff1a; import Vue from vue import App from ./App.vue import router from ./router import { registerMicroApps, start } …

paddle ocr识别文字

paddle使用 # pip install paddlepaddle2.5.2 -i https://mirror.baidu.com/pypi/simple # pip install paddleocr2.7.0.3 -i https://mirror.baidu.com/pypi/simplefrom paddleocr import PaddleOCR from PIL import Image import numpy as npimage Image.open(./2.png) ocr…

CentOS7 部署 k8s

准备两台虚拟机192.168.152.129192.168.152.130更改主机名192.168.152.129&#xff1a;hostnamectl set-hostname k8s-masterhostnamectl192.168.152.130&#xff1a;hostnamectl set-hostname k8s-node1hostnamectl master节点配置 1.配置hosts 在两台节点上执行vim /etc/h…

js【详解】ajax (含XMLHttpRequest、 同源策略、跨域、JSONP)

ajax 的核心API – XMLHttpRequest get 请求 // 新建 XMLHttpRequest 对象的实例 const xhr new XMLHttpRequest(); // 发起 get 请求&#xff0c;open 的三个参数为&#xff1a;请求类型&#xff0c;请求地址&#xff0c;是否异步请求&#xff08; true 为异步&#xff0c;f…

个人简历主页搭建系列-03:Hexo+Github Pages 介绍,框架配置

今天的更新内容主要是了解为什么选择这个网站搭建方案&#xff0c;以及一些前置软件的安装。 Why Hexo? 首先我们了解一下几种简单的网站框架搭建方案&#xff0c;看看对于搭建简历网站的需求哪个更合适。 在 BuiltWith&#xff08;网站技术分析工具&#xff09;上我们可以…

mybatis实现动态sql和关联映射以及延迟加载策略

一、动态sql的简述 什么是动态sql:在不同条件下拼接不同的sql Mybatis框架的动态sql技术是一种根据特定条件动态拼接SQl语句的功能&#xff0c;他存在的意义是为了解决拼接SQL语句字符串时的痛点问题。比如我们在用淘宝之类的软件在进行商品属性选择的时候&#xff0c;我们会发…

2024最新小狐狸AI 免授权源码

后台安装步骤&#xff1a; 1、在宝塔新建个站点&#xff0c;php版本使用7.2 、 7.3 或 7.4&#xff0c;把压缩包上传到站点根目录&#xff0c;运行目录设置为/public 2、导入数据库文件&#xff0c;数据库文件是 /db.sql 3、修改数据库连接配置&#xff0c;配置文件是/.env 4、…

Ubuntu20.04 部署 k8s

目前生产部署 Kubernetes 集群主要有两种方式 kubeadm Kubeadm是一个k8s部署工具&#xff0c;提供 kubeadm init 和 kubeadm join&#xff0c;用于快速部署 Kubernetes 集群。 kubeadm 是由 k8s 官方所提供的专门部署集群的管理工具。在每一个节点主机上都要手动安装并运行 …

OpenOFDM接收端信号处理流程

Overview — OpenOFDM 1.0 documentation 本篇文章为学习OpenOFDM之后的产出PPT&#xff0c;仅供学习参考。 ​​​​​​​

每日五道java面试题之springMVC篇(三)

目录&#xff1a; 第一题. Controller注解的作用第二题. RequestMapping注解的作用第三题. ResponseBody注解的作用第四题. PathVariable和RequestParam的区别第五题. Spring MVC与Struts2区别 第一题. Controller注解的作用 在Spring MVC 中&#xff0c;控制器Controller 负责…

Upload-labs靶场

文件漏洞上传进行复现 环境搭建--->搭建好环境如下&#xff1a; 打开第一关&#xff0c;尝试文件上传漏洞 根据界面提示&#xff0c;选择一个文件&#xff08;.php文件&#xff09;进行上传&#xff0c;发现无法上传 根据提示是指使用js对不合法文件进行了检查&#xff0c;…