当前位置: 首页 > YashanDB, 工具 > 正文

我们的文章会在微信公众号 IT民工的龙马人生 和博客网站 ( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!

由于博客中有大量代码,通过页面浏览效果更佳。

日常运维里,查会话、看表空间、翻一条 SQL 的执行计划,往往要分别登录客户端、打开个人脚本目录、再 SSH 到主机跑 iostat。故障出现时更被动:业务已经受影响,排查步骤你心里清楚——先看谁在等、有没有锁、主机资源是否正常——但手上还在拼连接串、找脚本文件、确认远端有没有装对应的 CLI。没有统一工具时,这些动作散落在多个窗口和笔记里,每换一步都要重新对齐环境。

ytop 是一个单二进制的终端运维工具:把连库、跑诊断 SQL、在目标机上执行常用主机小工具、以及(YashanDB 场景下)oratop 式实时监控,收进同一套命令里。

以 YashanDB 为核心(脚本最全、监控模式完整),同时通过 -d 支持 Oracle、MySQL、PostgreSQL、SQL Server、达梦 等库的内置脚本与客户端执行路径。系列文档与场景地图仍以 YashanDB 为主线;其它库按各自脚本目录使用。

一句话定位

终端里的多库运维工具箱:内置数百条按场景整理好的 SQL / 主机脚本,加上 YashanDB 实时看板与两种「进库壳」方式(-e 真客户端、-E 本机 JDBC 壳)。不是 Web 监控平台,也不是备份/迁移/安装器。

核心价值

  • 日常运维规范化:按场景地图和脚本名走固定路径(如锁、空间、SQL),巡检与变更前检查有章可循。
  • 团队工作标准:统一命令、脚本与输出含义,交接和复盘可复现同一条 ytop -f …
  • 经验可传承:内置脚本承载一线做法,新人用 ytop -S 和场景地图即可上手。
  • 版本一致:脚本随二进制分发,全组共用同一基线,避免「每人一份旧脚本」。
  • 跨库习惯延续-d 切换库类型时工作流不变,利于 Oracle→Yashan 等迁移与多库并存。
  • 缩短故障处置:少花在找工具、拼连接上的时间,更快进入看结果、做决策。
  • 对外好协作:报脚本名与 ytop 版本即可对齐复现,不必来回贴大段私有 SQL。

多数据库支持(-d

-d / --db-type 切换脚本目录与默认 CLI(简写见括号):

类型 简写示例 内置 SQL 脚本规模(约) 说明
YashanDB yasyashandb 168 默认;监控模式、ASH/AWR、SQLMAP 等最全
Oracle oora 260+ 脚本量最大,多从 Oracle 运维实践沉淀
PostgreSQL ppg 40+ 锁、归档、版本等
MySQL mmy 18 锁、复制、InnoDB 等
SQL Server sms 17 含 Windows 主机侧 .ps1 配合
达梦 ddm 少量 目录在持续扩充

另有 30+ 条 OS 级脚本(与库类型无关,-S 里类型为 os):在目标主机上跑 iostatpidstat、bpftrace 跟踪、YashanDB 备份/集群状态等。ytop -S 列出当前 -d 下的 SQL + OS;例如 ytop -d o -S 可见 Oracle SQL 与全部 OS 条目。

切换库类型示例:

ytop -d o --login-cmd 'sqlplus / as sysdba' -f we.sql
ytop -d m --login-cmd 'mysql -uroot -p"***" mydb' -f we.sql
ytop -d p -C "dbname=mydb user=postgres" -f lock.sql

内置能力地图(不止实时监控)

实时看板(仅 YashanDB)

不带 -f / -q / -e / -E 直接 ytop,进入交互监控gv$sysstat 按秒变化、TOP 等待事件、可排序活跃会话、快捷键翻详情与 ad-hoc SQL。其它 -d 类型若误进默认监控,会提示仅 YashanDB 支持——查 Oracle/MySQL 等请用 -f / -q / -e

脚本库与主机工具包(-f / -q / -S

能力 典型入口 能回答什么
会话 / 等待 ytop -f we.sql 谁在等、跑什么 SQL、多久
锁与阻塞 ytop -f lock.sql 持锁/等锁、阻塞链
SQL / 执行计划 ytop -f plan_by_sqlid.sql 按 sql_id 看计划与统计
AWR / ASH ytop -f awr_snapshot.sql 快照、历史 TOP SQL、等待趋势
空间与库状态 ytop -f tablespace.sql 表空间、数据文件、库开关状态
对象 / DDL ytop -f ddl_table.sql 拉表/索引等 DDL
统计信息 ytop -f stats_table.sql 收集或清理统计信息
归档 / 备库 ytop -f arch_list.sql 归档列表、备库状态
高危运维 ytop -f kill_sess_by_where.sql 按条件杀会话(执行前看清风险)
SQL 采集与回放 ytop -f sql_collect.sh JDBC 采集 gv$sql 报告、HTZ 回放(目标需 Java)
SQLMAP ytop -E\sqlmap 或相关脚本 绑定 SQL 映射与改写(YashanDB)
主机 IO / CPU ytop -f iostat.shpidstat.py 数据库主机资源快照
跟踪与火焰图 ytop -f perf_flamegraph.sh perf / bpftrace 类排障
YashanDB 集群/备份 ytop -f yasboot_process.py 进程状态、yasrman 备份管理等

-f 还支持在目标机编译运行 C解释运行 Python,以及 -m 按秒输出指标差分。脚本检索:ytop -S 'lock'

会话统计子命令

ytop stat -S 40,50 -n "CPU%,parse%"
ytop event -e "db file%"

面向 gv$sesstat / gv$session_event 视图族(YashanDB 体系),按 SID 或 TOP N 做间隔采样。

SSH 与配置

  • ytop ssh -t host -u user -p pass:一次性配置免密(等价 ssh-copy-id 流程)
  • ytop -c config.ini:多环境连接集中管理

两种「进库壳」:-e-E

很多人把这两个 flag 混在一起;它们互斥,用途不同:

ytop -e--enter ytop -E--jdbc-enter
本质 在 PTY 里启动真实 DB 客户端(yasql / sqlplus / mysql / psql …) 控制端本机 JDBC 交互壳(yjdbc),sqlplus 常用子集
连接路径 本机 Unix,或 SSH 到库主机 再起客户端 仅控制端直连 JDBC 端口,不走 SSH、不上传 yasql
典型场景 习惯原生客户端、要用客户端专有命令 本机没装 yasql、要 DEFINE/@ 批处理、SQLMAP(\sqlmap
-f 互斥 允许 ytop -E -f script.sql(仅 .sql,经 JDBC 执行)
平台 Unix 本机/SSH;Windows 不支持 -e 控制端有 Java 即可
默认连接 -d-C--login-cmd -E可省略参数:本机出口 IP、端口 1688、用户 sys 等 lab 默认;生产务必显式 -t -P -u -p
ytop -t 10.10.10.x -u yashan -e
ytop -E -t 10.10.10.x -P 1688 -u sys -p '***'
ytop -E -f we.sql -t 10.10.10.x -P 1688 -u sys -p '***'

-E-e-q-r--copy-S-m 不能同开;变量替换用 --define(仅 -E)。

几种工作方式怎么选

  1. YashanDB 长时间盯盘 → 默认 ytop
  2. 任何支持的库:跑清单里的诊断ytop [-d …] -f script.sql-q "..."
  3. 要在真 sqlplus/yasql 里手工敲ytop -e(或 SSH 远程 -t … -e
  4. 本机 JDBC、批处理、SQLMAPytop -E(可选 -f
  5. 不知道跑哪个脚本ytop -S '关键字'
  6. 主机层 IO/网络/跟踪ytop -t dbhost -f iostat.sh 等 OS 脚本

周期性采样:在命令后加间隔秒数与次数,例如 ytop -f we.sql 5 10

能力边界(它不是什么)

  • 不是 图形化运维台、告警中心、自动巡检调度器
  • 不是 数据库安装/升级工具(yasboot 相关脚本只是查看/辅助,不负责装库)
  • 监控模式当前仅 YashanDB;其它库用脚本模式与子命令
  • -E 面向 YashanDB JDBC-e 才按 -d 进各库原生 CLI
  • 高危脚本(杀会话、flush cache、删归档等)不会替你二次确认
  • OS 脚本在目标机执行,生产环境先看清脚本用途与副作用

常见坑

  • -e-E 选错:远程主机上有 yasql 用 -e;控制端纯 JDBC、要 @ 脚本或 SQLMAP 用 -E
  • 非 YashanDB 跑默认监控:会报错退出;改 -f / -q / -e
  • 连不上就停:检查客户端是否在 PATH、-C / --login-cmd、SSH 用户权限。
  • 集群-I 选实例(0 为全部);脚本可能有 we / we_single 等变体。
  • 版本-V 参与脚本名解析(如 we_23.5);-E 不自动探测版本,需显式 -V
  • Windows-e 不可用;SQL Server 场景注意 sqlcmd.ps1 脚本的平台限制。

ytop 系列:认识 ytop——终端里的多库运维工具箱:等您坐沙发呢!

发表评论

gravatar

? razz sad evil ! smile oops grin eek shock ??? cool lol mad twisted roll wink idea arrow neutral cry mrgreen

快捷键:Ctrl+Enter