「YashanDB个人版体验」YashanDB巡检脚本思路分享
- 一、概述
- 二、巡检思路分享
- 三、巡检脚本下载及执行
- 四、体验总结
一、概述
数据库巡检是数据库管理的重要环节,可以有效地保障数据库的安全性和正常运行。
数据库巡检可以检测出数据库中可能存在的安全漏洞,及时发现并修复漏洞,防止数据外泄、数据丢失或被恶意篡改,有效确保数据库的安全性。此外,数据库巡检还可以及时发现数据库中可能存在的性能问题,从而及时优化数据库,提高数据库的性能,确保数据库的正常运行。
本文主要是基于Oracle的运维经验去开发YashanDB的巡检脚本,提供一个交付客户的巡检报告思路。同时在脚本的编写过程中对比YashanDB与Oracle系统视图的异同点,寻找国产数据库YashanDB的可优化点。
二、巡检思路分享
2.1 修改记录、审阅、分发
一份交付客户类的巡检报告,建议包含修改记录、审阅、分发这块的内容。
2.2 数据库总体概况
针对巡检报告得出的结果进行总结,对数据库各模块健康程度进行评价,同时给出巡检建议。
2.3 基本配置
2.3.1 数据库基本配置
针对数据库的基本情况进行巡检,包括实例名、字符集、数据块大小、内存配置情况、数据库版本等内容。
2.4 资源管理
2.4.1 数据库资源
针对数据库的会话情况和线程情况进行巡检。
Oracle的多线程结构,YashanDB是单进程多线程结构。
目前YashanDB暂未找到关于统计历史最大会话数和线程数的视图。
2.4.2 数据库负载
针对当前数据库的活跃和非活跃会话情况进行统计,记录巡检时DB会话负载情况。
2.5 空间管理
2.5.1 数据库
针对数据库建库时间、归档模式、大小情况进行巡检。
2.5.2 表空间
针对数据库表空间的情况进行巡检,主要关注表空间使用情况以及是否有OFFLINE情况。
2.5.3 数据文件
针对数据文件情况进行巡检,包括数据文件大小、是否自动扩展、OFFLINE情况等。
2.5.4 日志文件
针对日志文件的数量、大小、使用情况等进行巡检。
2.5.5 归档文件
针对数据库近7天的归档切换情况进行巡检。
2.5.6 临时表空间配置
针对临时表空间使用情况进行巡检。
2.5.7 回滚段空间配置
undo表空间使用详情及其参数配置巡检。
2.6 对象管理
2.6.1 大型表格
针对大型表格对象进行巡检。
2.6.2 大型索引
针对大型索引对象进行巡检。
2.6.3 SYSTEM表空间的业务数据
针对SYSTEM表空间的业务数据进行巡检。
2.6.4 近1个月失效对象
针对近1个月失效对象进行巡检。
2.6.5 回收站内对象
针对回收站内对象进行统计。
2.7 安全管理
2.7.1 近3个月新增用户
针对近期新增用户进行统计。
2.7.2 缺省表空间指向SYSTEM的非系统用户
针对近期新增用户进行统计。
2.7.3 权限管理
针对具备DBA和ANY权限的用户进行统计。
2.8 性能管理
YashanDB在性能相关视图方面的投入力度还不够,同时,HIST视图的缺失对历史事件的回溯难度较大。希望这块能够增强。
由于没有较好的内容收集,故引导用户获取AWR报告进而分析。
2.9 备份管理
2.9.1 物理备份
2.9.2 逻辑备份
2.10 数据库ERROR
针对数据库错误日志进行分析。如遇到YAS-ERROR,请参考YAS-ERROR代码进行对应分析处理。
https://doc.yashandb.com/yashandb/23.1/zh/%E5%BC%80%E5%8F%91%E6%89%8B%E5%86%8C/JDBC%E9%A9%B1%E5%8A%A8/JDBC%E5%BC%82%E5%B8%B8%E8%AF%B4%E6%98%8E/YashanDB%E9%94%99%E8%AF%AF%E7%A0%81%E4%B8%8EJDBC%E5%BC%82%E5%B8%B8%E7%9A%84%E5%AF%B9%E5%BA%94%E5%85%B3%E7%B3%BB.html
三、巡检脚本下载及执行
下载链接: https://www.modb.pro/doc/122042
由于篇幅有限,下面仅展示部分内容供参考,具体内容请转到上边墨天伦文档中心下载!
执行巡检脚本: yasql / as sysdba -f yashandb_healthcheck_20231204.sql > yashandb_healthcheck_20231204.html
-- ##############################################################
-- Author: Rae
-- Date: 2023-12-01
-- Version: 0.1
-- 原创不易,转载请注明文章出处
-- ##############################################################
-- Set enviroment
set heading off;
set timing off;
set feedback off;
select '<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta name="generator"><style type="text/css">body {font:10pt Arial,Helvetica,sans-serif; color:black; background:White;} p {font:10pt Arial,Helvetica,sans-serif; color:black; background:White;} table,tr,td {font:10pt Arial,Helvetica,sans-serif; color:Black; background:#f7f7e7; padding:0px 0px 0px 0px; margin:0px 0px 0px 0px;} th {font:bold 10pt Arial,Helvetica,sans-serif; color:#336699; background:#cccc99; padding:0px 0px 0px 0px;} h1 {font:16pt Arial,Helvetica,Geneva,sans-serif; color:#336699; background-color:White; border-bottom:1px solid #cccc99; margin-top:0pt; margin-bottom:0pt; padding:0px 0px 0px 0px;}h2 {font:bold 10pt Arial,Helvetica,Geneva,sans-serif; color:#336699; background-color:White; margin-top:4pt; margin-bottom:0pt;} a {font:9pt Arial,Helvetica,sans-serif; color:#663300; background:#ffffff; margin-top:0pt; margin-bottom:0pt; vertical-align:top;}.STYLE3 {font-size: x-large}</style><title>YashanDB Report</title></head><body>' from dual;
select '<h1 align="left">修改记录</h1><table width="500" border="1"><td>日期</td><td>作者</td><td>版本</td><td>修改记录</td></tr><tr><td>2023-12-01</td><td></td><td> </td><td></td></tr></tr><tr><td>-</td><td> </td><td> </td><td> </td></tr><tr><td>-</td><td> </td><td> </td><td> </td></tr></table>' from dual;
select '<h1 align="left">审阅</h1><table width="500" border="1"><tr><td>NO.</td><td>姓名</td><td>职位</td></tr><tr><td>1</td><td> </td><td> </td></tr></tr><tr><td>2</td><td> </td><td> </td></tr></tr><tr><td>3</td><td> </td><td> </td></tr></table>' from dual;
select '<h1 align="left">分发</h1><table width="500" border="1"><tr><td>NO.</td><td>姓名</td><td>单位</td></tr><tr><td>1</td><td> </td><td> </td></tr></tr><tr><td>2</td><td> </td><td> </td></tr></tr><tr><td>3</td><td> </td><td> </td></tr></table>' from dual;
select '<p><br></p><h1>数据库总体概况</h1><p><span>本次数据库常规检查的数据收集主要集中在'||to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss')||'。我们尽可能把重要的信息收集起来进行分析,此次常规检查主要是针对数据库的基本信息、空间管理、TOP SQL语句、安全管理、对象管理、备份管理等进行了统计和数据收集。</span></p><p><span style="font-weight:bold;">以下是本次数据库级别检查的总结:</span></p><table border="1" width="800" align="center" summary="Script output"><tr><th scope="col" width="100">检查项</th><th scope="col" width="100">总体评价</th><th scope="col" width="600">建议及说明</th></tr><tr><td>空间管理</td><td> </td><td> </td></tr></tr><tr><td>对象管理</td><td> </td><td> </td></tr></tr><tr><td>安全管理</td><td> </td><td> </td></tr></tr><tr><td>备份管理</td><td> </td><td> </td></tr></tr><tr><td>性能管理</td><td> </td><td> </td></tr></table><p><br></p></div>' from dual;
-- 一、基本配置
select '<div id="db_base"><h1>一、基本配置</h1><div id="base_config"><h2>1.1)数据库基本配置</h2> ' from dual
union all
select '<table border=1><tr><th>节点</th><th>参数名</th><th>参数值</th></tr>' from dual
union all
select '<tr><td>'||inst_id||'</td><td>'||name||'</td><td>'||value||'</td></tr>' from (
select to_char(inst_id) as inst_id, name, value from gv$parameter where name in ('INSTANCE_NAME', 'ENABLE_DISKCACHE', 'DB_BLOCK_SIZE','CHARACTER_SET','RECYCLEBIN_ENABLED')
union all
select '-' as inst_id, name, round(size/1024/1024,2) ||'M' as value from v$sga
union all
select '-' as inst_id, banner as name, version_number as value from v$version
)
union all
select '</table><p><br></p></div></div>' from dual;
四、体验总结
针对YashanDB数据库进行数据库巡检脚本编写过程中,体验如下:
- 大部分视图与Oracle保持一致,但是视图还是不够丰富,尤其针对历史内容的视图及其缺乏。Oracle 11g关于dba_hist_开头的视图有111个,YashanDB目前只有1个;Oracle 11g关于WRH$开头的视图有125个,YashanDB只有7个。
- AWR的内容还比较单一,建议同时完善关于性能方面的内容。