大家好,这里是 Lucifer三思而后行,专注于提升数据库运维效率。
前言
上两周,偶然看到小墨发布的 墨天轮智能巡检v2.3发布,适配Oracle PDB并支持12c-23ai,想起之前也使用过白求恩。于是,抱着好奇的心态,看了一下新版更新了哪些功能。
介绍
Oracle 数据库智能巡检是从 2018 年就立项的,很快就在墨天轮社区上线开通了这个功能。据说至今已经为大家生成了 1800 多份巡检报告。除了智能巡检外,还推出了 SQL 格式化、SQL 静态审核、PL/SQL 解密、AWR 分析、数据库实训环境、数据库 SQL 运行平台,数据库 AI 智能问答助手。
最近墨天轮智能巡检发布了新版本,新增特性如下:
- 采集程序新增采集 CDB、PDB 信息,并对 PDB 状态等进行巡检
- 全局新增 con_id 字段,调整数据从
CDB_
视图采集、并适配 10g、11g 老版本 - 新增 PROPS$ 信息采集,用于 PDB 与 CDB 间字符集、时区的检查
- 新增对 12c、18c、19c 版本数据库 59 个参数最佳实践的检查
- 新增对 12c、18c、19c、21c、23ai 版本系统参数最低要求的检查
- 新增官方对大版本支持生命周期检查,建议升级到 LTS 版本 19C
- 在 PSU 基础上新增对 12.2 及以上 RU 检查,建议按照最新补丁
优化调整:
- 资料库使用 MogDB 5.0,完成数据结构及数据字典的迁移
- 用 Python 重新实现上传、建模、分析、生成报告整个流程,并通过独立 Service 的方式对外提供服务
- 表空间使用率渗透到 PDB,并优化计算逻辑、不再采集 DBA_FREE_SPACE
- 更新 11g、12c、18c、19c、21c、23ai 最新 PSU、RU 信息
- 去除展示 Oracle 自带 ORA 错误号的 Describe/Action 信息
- 去除 2019-06-23 SCN 版本升级的检查
- 采集 TOPSQL 中涉及的表、索引、字段等统计信息时排除 SYS 等系统用户
- 增加 TEMP 表空间的展示
修复BUG:
- 解决采集程序 19c 以上高版本 Perl 采集程序通过 socket send() 卡住的问题
- 解决采集程序 12c 及以上无法定位和采集alert日志的问题
- 解决采集程序 12.2 alert 中时间格式变化无法识别时间的问题
- 解决采集程序读取 trace 文件中有乱码卡住的问题
- 解决采集程序 18c 及以上 VERSION 采集不到具体版本的问题
- 修复巡检报告部分建议中表空间未指定PDB的问题
- 修复因 MogDB 5.0 对 MAX/MIN(str1,str2) 调整导致出现“备份时间间隔 None 天”建议的问题
- 修复 MogDB SELECT RATIO_TO_REPORT 报错 compressed data is corrupt 的问题
- 修复 OS 内核参数有空格无法匹配建议以及数据带逗号无法 TO_NUMBER 的问题
- 修复因不同库之间索引名重复导致匹配出来索引字段重复的问题
- 修复高版本 SCN 中 Headroom 计算值为负数的问题
- 目前支持 Oracle 数据库版本有:11.2、12.1、12.2、18c、19c、21c、23ai,注意 10g 及 11.1 理论上可以支持,但不再更新和适配,部分巡检建议可能不适用。支持的操作系统:Linux、AIX、HPUX、Windows、Solaris。
实战体验
采集程序下载
智能巡检工具下载十分简单,打开 墨天轮智能巡检 即可跳转:
支持 Oracle、PostgreSQL 和 MySQL 三种类型的数据库:
这里我以 Oracle 为例,下载对应的采集程序:BTRobot-v2.3.0.zip,如果主机可以联网,还可以使用 wget 直接获取:
wget https://oss-emcsprod-public.modb.pro/tools/BTRobot-v2.3.0.zip
下载完成后,直接上传到对应的数据库主机即可。
数据库巡检
在开始操作前,需要先解压采集程序包:
## root 用户授权
[root@oracle11g:/root]# chown oracle:oinstall /home/oracle/BTRobot-v2.3.0.zi
## oracle 用户解压
[oracle@oracle11g:/home/oracle]$ unzip -q BTRobot-v2.3.0.zip
## 进入解压文件夹
[oracle@oracle11g:/home/oracle]$ cd BTRobot-v2.3.0
[oracle@oracle11g:/home/oracle/BTRobot-v2.3.0]$ ls
conf data lib ReadMe_CN.txt ReadMe_EN.txt runMe.pl
执行巡检命令前,需要先检查一下数据库的环境变量是否设置:
## 检查设置环境变量,如果没有设置,需要先设置环境变量
[oracle@oracle11g:/home/oracle]$ echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0/db
[oracle@oracle11g:/home/oracle]$ echo $ORACLE_SID
lucifer
## 确保 perl 命令存在
[oracle@oracle11g:/home/oracle/BTRobot-v2.3.0]$ type perl
perl is /u01/app/oracle/product/11.2.0/db/perl/bin/perl
执行采集:
## 默认 -S 不会采集 DG 信息,若需采集 DG 信息,请去掉 -S 参数,并在 DG 库按照提示执行语句
[oracle@oracle11g:/home/oracle/BTRobot-v2.3.0]$ perl runMe.pl -e 7 -L 7 -S -t 7 -T 7
11:53:38 runMe: Running in Local Mode
11:53:38 runMe: Library [/u01/app/oracle/product/11.2.0/db/lib32:/u01/app/oracle/product/11.2.0/db/lib:.]
11:53:38 runMe: Perl Lib [/u01/app/oracle/product/11.2.0/db/perl/lib:/u01/app/oracle/product/11.2.0/db/perl/lib/site_perl:./lib:/u01/app/oracle/product/11.2.0/db/perl/lib]
11:53:38 runMe: Get Perl [/u01/app/oracle/product/11.2.0/db/perl/bin/perl]
11:53:38 parseArgs: Parse Arguments
11:53:38 parseArgs: OPTION: OS Error Collect Day [7]
11:53:38 parseArgs: OPTION: Log History Limit [7]
11:53:38 parseArgs: OPTION: not Collect DG Data
11:53:38 parseArgs: OPTION: Alert Collect Day [7]
11:53:38 parseArgs: OPTION: Listener Collect Day [7]
11:53:38 checkENV: OS Type : [linux]
11:53:38 checkENV: OS Hostname : [oracle11g]
11:53:38 checkENV: OS HostIP : [192.168.6.60]
11:53:38 checkENV: OS Login User (ENV:USER): [oracle]
11:53:38 checkENV: Check Running Environments
11:53:38 checkENV: Script Version: [2.3.0]
11:53:38 checkENV: Oracle SID: [lucifer]
11:53:38 checkENV: Oracle Home: [/u01/app/oracle/product/11.2.0/db]
11:53:38 checkENV: Library Path: [/u01/app/oracle/product/11.2.0/db/lib32:/u01/app/oracle/product/11.2.0/db/lib]
11:53:38 checkENV: Oracle Version [11]
11:53:38 getBasic: Test DB Logging
11:53:38 connDB: Get DB Character Set [UTF8], Session Reconnected
11:53:38 getBasic: Check DB Privilege for [sys]
11:53:39 getBasic: Get DB Basic Information
11:53:39 getBasic: DBID: [4034009431]
11:53:39 getBasic: DB Name: [LUCIFER]
11:53:39 getBasic: Unique Name: [lucifer]
11:53:39 getBasic: Role: [PRIMARY]
11:53:39 getBasic: Time: [20241023115339]
11:53:39 getBasic: Language: [AMERICAN_AMERICA.AL32UTF8]
11:53:39 getBasic: OS Time: [2024-10-16 11:53:39]
11:53:39 getBasic: Alert Time: [2024-10-16 11:53:39]
11:53:39 getBasic: Listener Time: [2024-10-16 11:00:00]
11:53:39 getBasic: Minimum Snap: [956]
11:53:39 getBasic: Read OS-Instance Mapping from DB
11:53:39 getBasic: Instance Count: 1
11:53:39 getBasic: OS-Inst mapping item (Single): [oracle11g] ==> [1.lucifer]
11:53:39 checkEncode: Set OS Character [UTF8]
11:53:39 checkEncode: Set Alert Character [UTF8]
11:53:39 checkEncode: Set Listener Character [UTF8]
11:53:39 checkDIR: Parse and Check Result Directory
11:53:39 checkDIR: Result Directory Set to [data/LUCIFER_20241023115339]
11:53:39 checkDIR: Check Free Space of Result Directory
11:53:39 checkDIR: Result Directory Free Space [76882 MB)], Meet Requirement
11:53:39 checkASM: no ASM instance found for Unix
11:53:39 checkSSH: for Non-RAC Database, No Need to Check SSH Equivalent
11:53:39 selfMonitor: Start Self-Monitor [7069]
11:53:39 Monitor: Monitor Get Parent Process [7069]
11:53:42 collectDB: Collect Data for [BX_MD_DB_SYSTEM]
11:53:42 getALoc: Get Alert Locations
11:53:42 getALoc: Get DB Alert [/u01/app/oracle/diag/rdbms/lucifer/lucifer/trace/alert_lucifer.log] for Node [oracle11g]
11:53:42 cltNodRes: Begin Node Resources Collection
11:53:42 openSocket: Open Socket to Collect Node Resources
11:53:42 openSocket: Started Listen on Port [12345]
11:53:42 cltNodRes: Starting Collection Robot on Local [oracle11g]
11:53:42 cltNodRes: Current Node IP Address [192.168.6.60]
11:53:42 cltNodRes: Do Nothing Mode [MANUAL]
11:53:42 cltNodRes: Loop to read node resource informations
11:53:42 openSocket: HOSTNAME -> Connected to Node [127.0.0.1]
11:53:42 NodeRobot: oracle11g -> Host Name [oracle11g]
11:53:42 NODE_PARAMS: oracle11g -> Node Parameters have been sent Remote
11:53:42 selfMonitor: oracle11g -> Start Self-Monitor [7081]
11:53:42 Monitor: oracle11g -> Monitor Get Parent Process [7081]
11:53:45 NodeRobot: oracle11g -> Collect Node Resources for [oracle11g]
11:53:45 Checker: oracle11g -> Check Passed for [oracle11g]
11:53:45 NodeRobot: oracle11g -> Node Check Passed in Primary Node
11:53:45 osMemory: oracle11g -> Begin Memory Collection
11:53:45 osMemory: oracle11g -> Complete Memory Collection
11:53:45 osInstance: oracle11g -> Begin Extra-Instance Collection
11:53:45 osInstance: oracle11g -> Search Extra-Instance for Linux/Unix
11:53:45 osInstance: oracle11g -> Extra-Instance List : lucifer
11:53:45 osInstance: oracle11g -> Checker for: [lucifer] [/u01/app/oracle/product/11.2.0/db]
11:53:45 osInstance: oracle11g -> Collection for: [lucifer] [/u01/app/oracle/product/11.2.0/db]
11:53:45 connDB: oracle11g -> Get DB Character Set [UTF8], Session Reconnected
11:53:45 collectDB: oracle11g -> Collect Data for [RD_DB_EXTINST]
11:53:45 sendFile: oracle11g -> Sending Result File [./nirvana_db_extInst.txt]
11:53:45 sendFile: oracle11g -> File Sending Completed
11:53:45 osInstance: oracle11g -> Complete Extra-Instance Collection
11:53:45 osError: oracle11g -> Begin OS Error Collection
11:53:45 Warn: oracle11g -> No Permision to Read Linux Error Log
11:53:45 osError: oracle11g -> Complete OS Error Collection
11:53:45 osCrontab: oracle11g -> Begin OS Crontab Collection
11:53:45 osCrontab: oracle11g -> Complete OS Crontab Collection
11:53:45 osAlert: oracle11g -> Begin Alert Collection
11:53:45 osAlert: oracle11g -> Collect Alert [/u01/app/oracle/diag/rdbms/lucifer/lucifer/trace/alert_lucifer.log] for Instance [lucifer]
11:53:45 osAlert: oracle11g -> Finding Position of [2024-10-16 11:53:39], File Size is [266177]
11:53:45 osAlert: oracle11g -> Read Alert from [256398], Size is [9.55 KB]
11:53:45 osAlert: oracle11g -> Expand Error Message Range
11:53:45 osAlert: oracle11g -> Read Alert Contents
11:53:45 osAlert: oracle11g -> Begin Transfer Trace [lucifer_j001_2586.trc]
11:53:45 osAlert: oracle11g -> Complete Alert Collection
11:53:45 osBasic: oracle11g -> Begin OS Information Collection
11:53:45 osBasic: oracle11g -> Complete OS Information Collection
11:53:45 osNIC: oracle11g -> Begin OS NIC Collection
11:53:45 osNIC: oracle11g -> Collect NIC Info by [ifconfig -a]
11:53:45 osNIC: oracle11g -> Complete OS NIC Collection
11:53:45 osParameter: oracle11g -> Begin OS Parameter Collection
11:53:45 osParameter: oracle11g -> Complete OS Parameter Collection
11:53:45 osFS: oracle11g -> Begin Disk Collection
11:53:45 osFS: oracle11g -> Complete Disk Collection
11:53:45 cltStatus: oracle11g -> Begin Listener Status Collection
11:53:45 cltStatus: oracle11g -> Get Running Listener Info
11:53:45 cltStatus: oracle11g -> Get Listener [LISTENER] PATH [/u01/app/oracle/product/11.2.0/db]
11:53:45 cltStatus: oracle11g -> Collect Listener Status
11:53:45 cltStatus: oracle11g -> Complete Listener Status Collection
11:53:45 osListener: oracle11g -> Begin Listener Collection
11:53:45 osListener: oracle11g -> Collect listener log [/u01/app/oracle/diag/tnslsnr/oracle11g/listener/trace/listener.log]
11:53:45 osListener: oracle11g -> Check File Encoding
11:53:45 osListener: oracle11g -> Check Result: Lines = [16405] Warns = [0]
11:53:45 osListener: oracle11g -> Finding Position of [2024-10-16 11:00:00], File Size is [650765]
11:53:45 osListener: oracle11g -> Read Log from [621424], Size is [28 KB]
11:53:45 osListener: oracle11g -> Reading Listener Log
11:53:45 osListener: oracle11g -> Complete Listener Collection
11:53:45 cltConfig: oracle11g -> Begin Oracle Network Config Collection
11:53:46 cltConfig: oracle11g -> Complete Oracle Network Config Collection
11:53:46 osHosts: oracle11g -> Begin OS Hosts Collection
11:53:46 osHosts: oracle11g -> Hosts File Location [/etc/hosts]
11:53:46 osHosts: oracle11g -> Complete OS Hosts Collection
11:53:46 osOPatch: oracle11g -> Begin Oracle Patch Collection
11:53:48 osOPatch: oracle11g -> Complete Oracle Patch Collection
11:53:48 COMPLETE: oracle11g -> Collection Completed
11:53:48 Monitor: oracle11g -> Stop Monitor Process [7082]
11:53:48 cltNodRes: Complete Node Resources Collection
11:53:48 cltDGDat: Collect DG Data
11:53:48 cltDGDat: User Request not Collect DG Data
11:53:48 collectDB: Use SQL Statement for DB Version [11]
11:53:48 collectDB: Collect Data for [RD_DB_TFILE]
11:53:48 collectDB: Collect Data for [RD_DB_AWR_TIMEMODEL]
11:53:48 collectDB: Collect Data for [RD_DB_LOGFILE]
11:53:48 collectDB: Collect Data for [RD_DB_USER]
11:53:48 collectDB: Use SQL Statement for DB Version [11]
11:53:48 collectDB: Collect Data for [RD_DB_TS]
11:53:48 collectDB: Collect Data for [RD_DB_OBJ]
11:53:48 collectDB: Collect Data for [RD_DB_AWR_SYSSTAT]
11:53:48 collectDB: Use SQL Statement for DB Version [11]
11:53:48 collectDB: Collect Data for [RD_DB_CONTAINER]
11:53:48 collectDB: Collect Data for [RD_DB_AWR_INSTANCE]
11:53:48 collectDB: Collect Data for [RD_DB_ASMDSK]
11:53:48 collectDB: Use SQL Statement for DB Version [11]
11:53:48 collectDB: Collect Data for [RD_DB_INST]
11:53:48 collectDB: Collect Data for [RD_DB_BAKSET]
11:53:49 collectDB: Collect Data for [RD_DB_ROLE]
11:53:49 collectDB: Use SQL Statement for DB Version [11]
11:53:49 collectDB: Collect Data for [RD_DB_PROPS]
11:53:49 collectDB: Collect Data for [RD_DB_REGISTRY]
11:53:49 collectDB: Collect Data for [RD_DB_DICTSTAT]
11:53:49 collectDB: Collect Data for [RD_DB_JOB]
11:53:49 collectDB: Collect Data for [RD_DB_LINKS]
11:53:49 collectDB: Collect Data for [RD_DB_AWR_RESLIMIT]
11:53:49 collectDB: Collect Data for [RD_DB_SYSUSER]
11:53:49 collectDB: Collect Data for [RD_DB_SPPAR]
11:53:49 collectDB: Use SQL Statement for DB Version [11]
11:53:49 collectDB: Collect Data for [RD_DB_DFILE]
11:53:49 collectDB: Collect Data for [RD_DB_AWR_SGA]
11:53:49 collectDB: Collect Data for [RD_DB_AWR_SNAPSHOT]
11:53:49 collectDB: Collect Data for [RD_DB_SYSPRIV]
11:53:49 collectDB: Collect Data for [RD_DB_AWR_CONTROL]
11:53:49 collectDB: Collect Data for [RD_DB_TRIGGER]
11:53:49 collectDB: Collect Data for [RD_DB_AWR_OSSTAT]
11:53:49 collectDB: Use SQL Statement for DB Version [11]
11:53:49 collectDB: Collect Data for [RD_DB_SCHEDULER]
11:53:49 collectDB: Collect Data for [RD_DB_PAR]
11:53:49 collectDB: Collect Data for [RD_DB_BAKFILE]
11:53:49 collectDB: Collect Data for [RD_DB_BAKSPFILE]
11:53:49 collectDB: Collect Data for [RD_DB_ROLEPRIV]
11:53:49 collectDB: Collect Data for [RD_DB_SCN]
11:53:49 collectDB: Collect Data for [RD_DB_AWR_TOPEVENT]
11:53:49 collectDB: Collect Data for [RD_DB_PROFILE]
11:53:49 collectDB: Collect Data for [RD_DB_LOGHIST]
11:53:49 collectDB: Collect Data for [RD_DB_DSKGRP]
11:53:49 collectDB: Collect Data for [RD_DB_REGHIST]
11:53:49 collectDB: Collect Data for [RD_DB_BAKARCH]
11:53:49 collectDB: Use SQL Statement for DB Version [11]
11:53:49 collectDB: Collect Data for [RD_DB_SEGSUMM_SIZE]
11:53:50 collectDB: Collect Data for [RD_DB_TOPSEGS]
11:53:50 collectDB: Use SQL Statement for DB Version [11]
11:53:50 collectDB: Collect Data for [RD_DB_INFO]
11:53:50 collectDB: Collect Data for [RD_DB_LOG]
11:53:50 cltAWRSqlS: Collect AWR SQL Statistics
11:53:50 cltAWRSqlT: Collect AWR SQL Text
11:53:50 cltAWRSqlP: Collect AWR SQL Plan
11:53:50 collectDB: Collect Data for [RD_DB_AWR_SQLPLAN]
11:53:50 collectDB: Collect Data for [RD_DB_AWR_SQLPLAN]
11:53:51 cltAWRSqlO: Collect AWR SQL Objects
11:53:51 cltAWRSqlO: Collect Table-Related Informations
11:53:51 cltAWRSqlO: Collect Table for [APEX_030200], Size [1]
11:53:51 collectDB: Collect Data for [RD_DB_TABLES]
11:53:51 collectDB: Collect Data for [RD_DB_COLUMNS]
11:53:51 collectDB: Collect Data for [RD_DB_TABPART]
11:53:51 collectDB: Collect Data for [RD_DB_TABSUBPART]
11:53:51 cltAWRSqlO: Collect Table for [CTXSYS], Size [1]
11:53:51 collectDB: Collect Data for [RD_DB_TABLES]
11:53:51 collectDB: Collect Data for [RD_DB_COLUMNS]
11:53:51 collectDB: Collect Data for [RD_DB_TABPART]
11:53:51 collectDB: Collect Data for [RD_DB_TABSUBPART]
11:53:51 cltAWRSqlO: Collect Table for [SYSTEM], Size [2]
11:53:51 collectDB: Collect Data for [RD_DB_TABLES]
11:53:51 collectDB: Collect Data for [RD_DB_COLUMNS]
11:53:51 collectDB: Collect Data for [RD_DB_TABPART]
11:53:51 collectDB: Collect Data for [RD_DB_TABSUBPART]
11:53:51 cltAWRSqlO: Collect Table for [DBSNMP], Size [3]
11:53:51 collectDB: Collect Data for [RD_DB_TABLES]
11:53:51 collectDB: Collect Data for [RD_DB_COLUMNS]
11:53:51 collectDB: Collect Data for [RD_DB_TABPART]
11:53:51 collectDB: Collect Data for [RD_DB_TABSUBPART]
11:53:51 cltAWRSqlO: Collect Index-Related Informations
11:53:51 cltAWRSqlO: Collect Index for [FLOWS_FILES], Size [1]
11:53:51 collectDB: Collect Data for [RD_DB_INDEXES]
11:53:51 collectDB: Collect Data for [RD_DB_INDCOL]
11:53:51 collectDB: Collect Data for [RD_DB_INDPART]
11:53:51 collectDB: Collect Data for [RD_DB_INDSUBPART]
11:53:51 collectDB: Collect Data for [RD_DB_INDEXP]
11:53:51 cltAWRSqlO: Collect Index for [APEX_030200], Size [3]
11:53:51 collectDB: Collect Data for [RD_DB_INDEXES]
11:53:51 collectDB: Collect Data for [RD_DB_INDCOL]
11:53:51 collectDB: Collect Data for [RD_DB_INDPART]
11:53:51 collectDB: Collect Data for [RD_DB_INDSUBPART]
11:53:51 collectDB: Collect Data for [RD_DB_INDEXP]
11:53:51 cltAWRSqlO: Collect Index for [CTXSYS], Size [2]
11:53:51 collectDB: Collect Data for [RD_DB_INDEXES]
11:53:51 collectDB: Collect Data for [RD_DB_INDCOL]
11:53:51 collectDB: Collect Data for [RD_DB_INDPART]
11:53:51 collectDB: Collect Data for [RD_DB_INDSUBPART]
11:53:51 collectDB: Collect Data for [RD_DB_INDEXP]
11:53:51 cltAWRSqlO: Collect Index for [SYSTEM], Size [4]
11:53:51 collectDB: Collect Data for [RD_DB_INDEXES]
11:53:51 collectDB: Collect Data for [RD_DB_INDCOL]
11:53:51 collectDB: Collect Data for [RD_DB_INDPART]
11:53:51 collectDB: Collect Data for [RD_DB_INDSUBPART]
11:53:51 collectDB: Collect Data for [RD_DB_INDEXP]
11:53:51 cltAWRSqlO: Collect Index for [DBSNMP], Size [5]
11:53:51 collectDB: Collect Data for [RD_DB_INDEXES]
11:53:51 collectDB: Collect Data for [RD_DB_INDCOL]
11:53:51 collectDB: Collect Data for [RD_DB_INDPART]
11:53:51 collectDB: Collect Data for [RD_DB_INDSUBPART]
11:53:51 collectDB: Collect Data for [RD_DB_INDEXP]
11:53:51 cltAWRSqlO: Collect Object-Related Informations
11:53:51 cltAWRSqlO: Collect Object for [FLOWS_FILES], Size [1]
11:53:51 collectDB: Collect Data for [RD_DB_OBJECT]
11:53:51 collectDB: Collect Data for [RD_DB_SEGMENT]
11:53:51 collectDB: Collect Data for [RD_DB_PARTKEY]
11:53:51 collectDB: Collect Data for [RD_DB_SUBPARTKEY]
11:53:51 cltAWRSqlO: Collect Object for [APEX_030200], Size [4]
11:53:51 collectDB: Collect Data for [RD_DB_OBJECT]
11:53:51 collectDB: Collect Data for [RD_DB_SEGMENT]
11:53:51 collectDB: Collect Data for [RD_DB_PARTKEY]
11:53:51 collectDB: Collect Data for [RD_DB_SUBPARTKEY]
11:53:51 cltAWRSqlO: Collect Object for [CTXSYS], Size [3]
11:53:51 collectDB: Collect Data for [RD_DB_OBJECT]
11:53:52 collectDB: Collect Data for [RD_DB_SEGMENT]
11:53:52 collectDB: Collect Data for [RD_DB_PARTKEY]
11:53:52 collectDB: Collect Data for [RD_DB_SUBPARTKEY]
11:53:52 cltAWRSqlO: Collect Object for [SYSTEM], Size [6]
11:53:52 collectDB: Collect Data for [RD_DB_OBJECT]
11:53:52 collectDB: Collect Data for [RD_DB_SEGMENT]
11:53:52 collectDB: Collect Data for [RD_DB_PARTKEY]
11:53:52 collectDB: Collect Data for [RD_DB_SUBPARTKEY]
11:53:52 cltAWRSqlO: Collect Object for [DBSNMP], Size [8]
11:53:52 collectDB: Collect Data for [RD_DB_OBJECT]
11:53:52 collectDB: Collect Data for [RD_DB_SEGMENT]
11:53:52 collectDB: Collect Data for [RD_DB_PARTKEY]
11:53:52 collectDB: Collect Data for [RD_DB_SUBPARTKEY]
11:53:52 cltRACSta: Collect RAC crs_stat
11:53:52 cltRACSta: no CRS instance running
11:53:52 cltASMDat: Begin ASM-Related Data Collection
11:53:52 cltASMDat: No ASM Instance Found for Current DB System
11:53:52 cltASMDat: Completed ASM-Related Data Collection
11:53:52 cltTopAWR: Collect DB AWR Report
11:53:52 cltTopAWR: Get Top AWR [1 of 3]
11:53:56 cltTopAWR: Get Top AWR [2 of 3]
11:54:01 cltTopAWR: Get Top AWR [3 of 3]
11:54:05 cltTopAWR: Complete DB AWR Report Collection
11:54:05 cltSegStats: Collect AWR Segment Stats and Objects
11:54:05 collectDB: Collect Data for [RD_DB_AWR_SEGSTATS]
11:54:05 cltSegStats: Segment Obj Info Location [2/3/4]
11:54:05 cltSegStats: Collect Segment Object for Batch [1]
11:54:05 collectDB: Collect Data for [RD_DB_AWR_SEGOBJ]
11:54:05 cltSegStats: Collect Segment Object for Batch [2]
11:54:05 collectDB: Collect Data for [RD_DB_AWR_SEGOBJ]
11:54:05 cltSegStats: Complete AWR Segment Stats and Objects
11:54:05 cltSCNCompat: Collect SCN Compat Version
11:54:05 cltSCNCompat: Complete SCN Compat Version
11:54:05 postProcess: do Post Process
11:54:05 closeSocket: Close Socket on Port [12345]
11:54:05 postProcess:
11:54:05 postProcess: +====================== [ Summary Information ] ======================+
11:54:05 postProcess: | Table Name File Name Size |
11:54:05 postProcess: | -------------------- ----------------------------------- -------- |
11:54:05 postProcess: | RD_DB_LINKS nirvana_db_links.txt 36 B |
11:54:05 postProcess: | RD_DB_CRSSTAT nirvana_db_crsstat.txt 49 B |
11:54:05 postProcess: | RD_DB_LSNR nirvana_db_lsnr.txt 51 B |
11:54:05 postProcess: | RD_DB_PARTKEY nirvana_db_partKey.txt 51 B |
11:54:05 postProcess: | RD_DB_SUBPARTKEY nirvana_db_subPartKey.txt 51 B |
11:54:05 postProcess: | RD_DB_SYSUSER nirvana_db_sysUser.txt 54 B |
11:54:05 postProcess: | RD_OS_ERR nirvana_os_err.txt 70 B |
11:54:05 postProcess: | RD_DB_DICTSTAT nirvana_db_dictStat.txt 74 B |
11:54:05 postProcess: | RD_DB_INDEXP nirvana_db_indExp.txt 80 B |
11:54:05 postProcess: | RD_OS_MEMSTAT nirvana_os_memStat.txt 94 B |
11:54:05 postProcess: | RD_DB_AWR_CONTROL nirvana_db_awr_control.txt 98 B |
11:54:05 postProcess: | RD_DB_SCN_COMPAT nirvana_db_scn_compat.txt 102 B |
11:54:05 postProcess: | RD_DB_SCN nirvana_db_SCN.txt 105 B |
11:54:05 postProcess: | BX_MD_DB_SYSTEM nirvana_md_database.txt 116 B |
11:54:05 postProcess: | RD_OS_CRONTAB nirvana_os_crontab.txt 135 B |
11:54:05 postProcess: | RD_DB_ALERT_TRACE nirvana_db_alert_trace.txt 161 B |
11:54:05 postProcess: | RD_DB_DSKGRP nirvana_db_dskGrp.txt 180 B |
11:54:05 postProcess: | RD_OS_HOSTS nirvana_os_hosts.txt 210 B |
11:54:05 postProcess: | RD_DB_BAKSPFILE nirvana_db_bakSPfile.txt 235 B |
11:54:05 postProcess: | RD_DB_TFILE nirvana_db_tFile.txt 257 B |
11:54:05 postProcess: | RD_OS_INFO nirvana_os_info.txt 271 B |
11:54:05 postProcess: | RD_DB_ASMDSK nirvana_db_asmDsk.txt 288 B |
11:54:05 postProcess: | RD_DB_REGHIST nirvana_db_regHist.txt 293 B |
11:54:05 postProcess: | RD_DB_INST nirvana_db_inst.txt 373 B |
11:54:05 postProcess: | RD_DB_AWR_INSTANCE nirvana_db_awr_instance.txt 378 B |
11:54:05 postProcess: | RD_DB_TABSUBPART nirvana_db_tabSubPart.txt 392 B |
11:54:05 postProcess: | RD_DB_TABPART nirvana_db_tabPart.txt 400 B |
11:54:05 postProcess: | RD_DB_CONTAINER nirvana_db_container.txt 401 B |
11:54:05 postProcess: | RD_OS_FS nirvana_os_FS.txt 412 B |
11:54:05 postProcess: | RD_DB_LOGHIST nirvana_db_logHist.txt 417 B |
11:54:05 postProcess: | RD_DB_INDSUBPART nirvana_db_indSubPart.txt 437 B |
11:54:05 postProcess: | RD_DB_LOGFILE nirvana_db_logFile.txt 456 B |
11:54:05 postProcess: | RD_DB_INDPART nirvana_db_indPart.txt 490 B |
11:54:05 postProcess: | RD_DB_AWR_REPORT nirvana_db_awr_report.txt 554 B |
11:54:05 postProcess: | RD_DB_EXTINST nirvana_db_extInst.txt 555 B |
11:54:05 postProcess: | RD_OS_PAR nirvana_os_par.txt 633 B |
11:54:05 postProcess: | RD_DB_SEGSUMM_SIZE nirvana_db_segSumm_size.txt 845 B |
11:54:05 postProcess: | RD_OS_ORANET nirvana_os_oraNet.txt 888 B |
11:54:05 postProcess: | RD_DB_DFILE nirvana_db_dFile.txt 917 B |
11:54:05 postProcess: | RD_DB_LOG nirvana_db_log.txt 965 B |
11:54:05 postProcess: | RD_OS_NIC nirvana_os_NIC.txt 1.084 KB |
11:54:05 postProcess: | RD_DB_ROLE nirvana_db_role.txt 1.223 KB |
11:54:05 postProcess: | RD_DB_TS nirvana_db_ts.txt 1.240 KB |
11:54:05 postProcess: | RD_DB_JOB nirvana_db_job.txt 1.257 KB |
11:54:05 postProcess: | RD_OS_RAW nirvana_os_raw.txt 1.368 KB |
11:54:05 postProcess: | RD_OS_LSN_STATUS nirvana_os_lsnStatus.txt 1.468 KB |
11:54:05 postProcess: | RD_DB_TOPSEGS nirvana_db_topsegs.txt 1.477 KB |
11:54:05 postProcess: | RD_DB_INFO nirvana_db_info.txt 1.517 KB |
11:54:05 postProcess: | RD_DB_PROFILE nirvana_db_profile.txt 1.805 KB |
11:54:05 postProcess: | RD_DB_SEGMENT nirvana_db_segment.txt 1.980 KB |
11:54:05 postProcess: | RD_DB_BAKARCH nirvana_db_bakArch.txt 2.035 KB |
11:54:05 postProcess: | RD_DB_BAKSET nirvana_db_bakSet.txt 2.127 KB |
11:54:05 postProcess: | RD_DB_PROPS nirvana_db_props.txt 2.136 KB |
11:54:05 postProcess: | RD_DB_INDCOL nirvana_db_indCol.txt 2.290 KB |
11:54:05 postProcess: | RD_DB_REGISTRY nirvana_db_registry.txt 2.353 KB |
11:54:05 postProcess: | BX_BATCH_STATUS nirvana_batch_status.txt 2.576 KB |
11:54:05 postProcess: | RD_DB_BAKFILE nirvana_db_bakFile.txt 2.646 KB |
11:54:05 postProcess: | RD_DB_TABLES nirvana_db_table.txt 2.907 KB |
11:54:05 postProcess: | RD_DB_SPPAR nirvana_db_spPar.txt 3.346 KB |
11:54:05 postProcess: | RD_DB_ROLEPRIV nirvana_db_rolePriv.txt 4.763 KB |
11:54:05 postProcess: | RD_DB_OBJ nirvana_db_obj.txt 4.796 KB |
11:54:05 postProcess: | RD_DB_OBJECT nirvana_db_obj.txt 4.796 KB |
11:54:05 postProcess: | RD_DB_TRIGGER nirvana_db_trigger.txt 5.755 KB |
11:54:05 postProcess: | RD_OS_FILESIZE nirvana_os_fileSize.txt 5.771 KB |
11:54:05 postProcess: | RD_DB_INDEXES nirvana_db_index.txt 5.883 KB |
11:54:05 postProcess: | RD_DB_USER nirvana_db_user.txt 9.420 KB |
11:54:05 postProcess: | RD_DB_AWR_SEGOBJ nirvana_db_awr_segObj.txt 10.31 KB |
11:54:05 postProcess: | RD_DB_AWR_SNAPSHOT nirvana_db_awr_snapshot.txt 11.22 KB |
11:54:05 postProcess: | BX_BATCH_CONTROL nirvana_batch_control.txt 14.25 KB |
11:54:05 postProcess: | RD_DB_AWR_RESLIMIT nirvana_db_awr_resLimit.txt 15.13 KB |
11:54:05 postProcess: | RD_DB_SCHEDULER nirvana_db_scheduler.txt 16.54 KB |
11:54:05 postProcess: | RD_DB_COLUMNS nirvana_db_column.txt 21.19 KB |
11:54:05 postProcess: | RD_DB_ALERT nirvana_db_alert.txt 22.57 KB |
11:54:05 postProcess: | RD_DB_SYSPRIV nirvana_db_sysPriv.txt 27.99 KB |
11:54:05 postProcess: | RD_DB_AWR_SEGSTATS nirvana_db_awr_segStats.txt 29.59 KB |
11:54:05 postProcess: | RD_DB_AWR_TOPEVENT nirvana_db_awr_topEvent.txt 39.44 KB |
11:54:05 postProcess: | RD_DB_AWR_OSSTAT nirvana_db_awr_osStat.txt 44.36 KB |
11:54:05 postProcess: | RD_DB_AWR_SYSSTAT nirvana_db_awr_sysstat.txt 53.58 KB |
11:54:05 postProcess: | RD_DB_AWR_TIMEMODEL nirvana_db_awr_timeModel.txt 55.09 KB |
11:54:05 postProcess: | RD_DB_PAR nirvana_db_par.txt 60.08 KB |
11:54:05 postProcess: | RD_DB_AWR_SGA nirvana_db_awr_sga.txt 70.05 KB |
11:54:05 postProcess: | RD_DB_AWR_SQLTEXT nirvana_db_awr_sqlText.txt 128.7 KB |
11:54:05 postProcess: | RD_DB_AWR_SQLSTAT nirvana_db_awr_sqlStat.txt 221.3 KB |
11:54:05 postProcess: | RD_DB_AWR_SQLPLAN nirvana_db_awr_sqlPlan.txt 604.5 KB |
11:54:05 postProcess: +=====================================================================+
11:54:06 postProcess: Stop Monitor Process [7078]
Collection Tasks all Completed, Result File:
[ Bethune ] --> data/LUCIFER_20241023115339.zip
采集完成后,生成一个巡检文件:LUCIFER_20241023115339.zip:
[oracle@oracle11g:/home/oracle/BTRobot-v2.3.0/data]$ ll
total 456
-rw-r--r-- 1 oracle oinstall 466674 Oct 23 11:54 LUCIFER_20241023115339.zip
在当前目录的 data 文件夹下,下载巡检文件到本地主机。
巡检文件上传
巡检文件需要上传到墨天轮智能巡检工具进行报告分析和生成:
点击上传文件,上传巡检文件:
上传成功后,会自动跳转到报告分析和生成页面。
巡检报告生成
等待一会儿,报告就可以生成了:
点击查看报告就可以预览:
会给出一些数据库建议:
报告是 HTML 格式,目前仅支持在线预览,没有提供下载按钮。
写在最后
墨天轮当初定的的愿景“乐知乐享,同心共济”就是要面向 DBA 及数据库从业者构建一个学习、分享的社区,大家互帮互助共同成功。
作为一个免费的智能巡检工具,已经非常不错了,建议大家都可以玩玩~
❤️ 最后再分享推荐一下我自己写的 Oracle 一键巡检工具:
- 《Oracle 一键巡检自动生成 Word 报告》
- Lucifer 有限公司-Oracle数据库4019382963_LUCIFER巡检报告_20240315.pdf
- ❓关于Oracle一键巡检脚本的 21 个疑问与解答
感兴趣的朋友,可以添加微信:Lucifer-0622 咨询,支持正版,打击盗版!!!
往期精彩文章
Oracle 一键巡检自动生成 Word 报告
Oracle 一键安装合集
Oracle一键安装脚本的 21 个疑问与解答
Oracle一键巡检脚本的 21 个疑问与解答
全网首发:Oracle 23ai 一键安装脚本(非 RPM)
Oracle 19C 最新 RU 补丁 19.24 ,一键安装!
Oracle Linux 7.9 一键安装 Oracle 19C
RedHat 9.4(aarch64) 一键安装 Oracle 19C
openEuler 22.03 LTS SP4 一键安装 Oracle 19C RAC
RHEL 7.9 一键安装 Oracle 19C 19.23 RAC
Oracle DataGuard GAP 修复手册
优化 Oracle:最佳实践与开发规范
DBA 必备:Linux 软件源配置全攻略
Linux 一键配置时钟同步全攻略
感谢您的阅读,这里是 Lucifer三思而后行,欢迎点赞+关注,我会持续分享数据库知识、运维技巧。