找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4801

积分

0

好友

671

主题
发表于 1 小时前 | 查看: 1| 回复: 0

老虎刘老师的ora工具想必很多Oracle DBA都非常熟悉,堪称数据库运维的利器。受到启发,我也尝试利用Go语言,为YashanDB打造一款属于它自己的运维工具箱,暂时取名为 yat。目前它还处于非常早期的阶段,只实现了两个核心功能,所以源代码暂时不公开了。我打算利用业余时间,像搭积木一样,逐步为它添加更多DBA日常所需的功能。这篇文章,就带大家抢先体验一下 yat 的初代模样。

yat 基本用法

安装后,直接执行 ./yat 即可看到当前版本支持的所有命令和简要说明:

[yashan@yashandb1 scripts]$ ./yat
Usage:
  yat table <table_name>    Show table details
  yat awr                   Generate AWR report
  yat version               Show version info
[yashan@yashandb1 scripts]$ ./yat version
YashanDB Tool (yat) v1.0 for YashanDB v23.4

从帮助信息可以看出,当前版本主要提供了查看表详情、生成AWR报告和查看自身版本三个功能。

打印 yat 版本信息

查看工具版本是最简单的操作,可以快速确认工具与数据库版本的适配情况。

[yashan@yashandb1 scripts]$ ./yat version
YashanDB Tool (yat) v1.0 for YashanDB v23.4

打印表详细信息

yat table 命令是日常诊断中查看表元数据的利器。目前它会打印出三部分关键信息,结构清晰:

  • 表基本信息:包括表名、所属表空间、大小、行数、块数以及最后分析时间。
  • 表列信息:展示每一列的列名、唯一值数量(NDV)、是否允许为空、空值数量、数据类型、高低值以及直方图信息。
  • 索引信息:列出表上的所有索引,包括索引名、类型以及构成索引的列。

下面是一个查看表 t1 的完整示例。当存在多个同名表(不同属主)时,工具会贴心地提供交互式选择:

[yashan@yashandb1 scripts]$ ./yat table t1
============================================================
               YashanDB Table Info: T1
============================================================

Multiple owners found, please select:
[1] BENCHMARK
[2] BENCHMARK2
Enter selection (default 1): 

Target: BENCHMARK.T1

Table Basic Info:
TABLE_NAME                TABLESPACE_NAME    TOTAL_MB              NUM_ROWS                BLOCKS LAST_ANALYZED        
------------------------- --------------- ----------- --------------------- --------------------- -------------------- 
T1                        USERS                 .0625                    3                    8 2026-03-29 14:24:39 

Table Columns info:
COLUMN_NAME                NDV        NUL NUM_NULLS  DATA_TYPE          LOW_VAL_25                HIGH_VAL_25                LAST_ANALYZED        HISTOGRAM  
------------------------- ---------- --- ---------- ------------------ ------------------------- ------------------------- -------------------- ---------- 
ID                        3           N   0          INTEGER            01000000                  04000000                  2026-03-29 14:24:39  FREQUENCE 
NAME                      3           Y   0          VARCHAR(10)        a                         d                        2026-03-29 14:24:39  FREQUENCE 

Table Index info:
INDEX_NAME                     INDEX_TYPE      COLUMNS                                                           
------------------------------ --------------- ------------------------------------------------------------ 
UK_T1                          UNIQUE          ID,NAME                                                         
SYS_C_32                       PRIMARY         ID                                                                
IDX_T1_NAME                    NORMAL          NAME                                                             

Analysis Finished.

这个输出对于快速了解表结构、数据分布和索引设计非常有帮助,尤其是在进行SQL优化或排查问题时。

生成 AWR 性能报告

AWR(Automatic Workload Repository)报告是进行数据库性能分析的重量级工具。yat awr 命令简化了报告生成流程。默认情况下,它会先列出最近7天的所有快照及其DB Time信息,然后引导用户选择起止快照ID来生成报告。

[yashan@yashandb1 scripts]$ ./yat awr

============================================================
             YashanDB AWR Report Generator
============================================================

[1/3] Fetching snapshots last 7 days...
    SNAP_ID BEGIN_TIME           END_TIME             DB TIME (MINS) 
----------- -------------------- -------------------- -------------- 
          1 2026-03-23 10:14:46  2026-03-23 10:15:00                
          2 2026-03-23 10:15:00  2026-03-23 11:15:01             .01
          3 2026-03-23 11:15:01  2026-03-23 11:40:58            -.32
...
        157 2026-03-29 17:26:35  2026-03-29 18:26:36            1.44

Enter BEGIN Snapshot ID: 156
Enter END   Snapshot ID: 157

[2/3] Generating AWR report...
[3/3] Success! Report created: awr_1495968044_1_156_157.html

命令执行成功后,会在当前目录生成一个HTML格式的AWR报告文件(如 awr_1495968044_1_156_157.html),用浏览器打开即可进行详细的性能分析。


以上就是 yat 工具第一个版本的初步体验。它由 Go 语言编写,目前实现了两个DBA高频使用的核心功能,旨在提升YashanDB的运维效率。项目还在萌芽期,未来会加入更多实用的模块。

Enjoy it!

- 声明 -

本文系个人实践的技术总结,难免有考虑不周全的地方~ 如果您发现错误、有更优解法,或者有相关疑问,欢迎在云栈社区等技术论坛留言讨论,一起交流学习、共同进步!




上一篇:手把手部署23.9k Star的Jitsi Meet开源视频会议系统
下一篇:Windows Server 一键巡检:PowerShell脚本自动生成全面健康报告
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-31 06:03 , Processed in 0.674065 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表