生成达梦数据库巡检报告的 HTML 版本可以通过多个步骤实现,下面为你详细介绍,涵盖数据收集、脚本编写和 HTML 模板生成等方面:
1. 数据收集
数据库基本信息
-- 数据库版本
SELECT VERSION();
-- 数据库实例名
SELECT INSTANCE_NAME FROM V$INSTANCE;
表空间信息
SELECT TABLESPACE_NAME, FILE_NAME, BYTES / 1024 / 1024 AS SIZE_MB, MAXBYTES / 1024 / 1024 AS MAX_SIZE_MB
FROM DBA_DATA_FILES;
会话信息
SELECT SID, USERNAME, PROGRAM, STATUS
FROM V$SESSION;
日志信息
SELECT GROUP#, THREAD#, SEQUENCE#, ARCHIVED, STATUS
FROM V$LOG;
2. 编写脚本收集数据
import dmPython
# 连接数据库
conn = dmPython.connect(user='username', password='password', server='localhost', port=5236)
cursor = conn.cursor()
# 执行 SQL 查询
queries = [
"SELECT VERSION();",
"SELECT INSTANCE_NAME FROM V$INSTANCE;",
# 其他 SQL 查询语句
]
results = []
for query in queries:
cursor.execute(query)
rows = cursor.fetchall()
results.append(rows)
# 关闭连接
cursor.close()
conn.close()
3. 生成 HTML 模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>达梦数据库巡检报告</title>
<style>
table {
border-collapse: collapse;
width: 100%;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
</style>
</head>
<body>
<h1>达梦数据库巡检报告</h1>
<!-- 在这里插入数据 -->
{% for result in results %}
<table>
<thead>
<!-- 表头信息,需要根据具体查询结果动态生成 -->
<tr>
{% for column in result[0].keys() %}
<th>{{ column }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for row in result %}
<tr>
{% for value in row.values() %}
<td>{{ value }}</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
{% endfor %}
</body>
</html>
4. 填充数据到 HTML 模板
from jinja2 import Environment, FileSystemLoader
# 加载 HTML 模板
env = Environment(loader=FileSystemLoader('.'))
template = env.get_template('report_template.html')
# 渲染模板并生成 HTML 报告
html_content = template.render(results=results)
# 保存 HTML 报告
with open('dm_database_inspection_report.html', 'w', encoding='utf-8') as f:
f.write(html_content)
5. 执行脚本并查看报告
注意事项
- 要保证 Python 环境中已经安装了
dmPython
和Jinja2
库,可以使用pip install dmPython Jinja2
进行安装。 - 要根据实际情况修改数据库连接信息(如用户名、密码、服务器地址和端口)以及 SQL 查询语句。