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

3330

积分

0

好友

444

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

打造YashanDB的ora工具-yat 是我们一直在打磨的一款 运维工具 。随着版本迭代,目前已经集成了10个实用功能,覆盖了日常 DBA 工作中最常见的数据收集、诊断与分析场景。接下来,我们逐个看看这些命令都能做什么。

1. 收集表的统计信息

yat table <table_name> 可以快速查看表的基本信息、列信息、索引信息,并自动触发统计信息收集。当存在多个同名表(不同 schema)时,工具会给出列表让你选择。

[yashan@yashandb1 yashango]$ ./yat table t1

============================================================
                  YashanDB Table Info: T1
============================================================

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

Target: BENCHMARK.T1

Table Basic Info:
TABLE_NAME                TABLESPACE_NAME    TOTAL_MB              NUM_ROWS                BLOCKS LAST_ANALYZED        
------------------------- --------------- ----------- --------------------- --------------------- -------------------- 
T1                        USERS                 .0625                    1                    1 2026-04-30 17:13:00 

Table Columns info:
COLUMN_NAME               NDV        NUL NUM_NULLS  DATA_TYPE          LAST_ANALYZED        HISTOGRAM  
------------------------- ---------- --- ---------- ------------------ -------------------- ---------- 
ID                        1          N   0          INTEGER            2026-04-30 17:13:00  FREQUENCE 
NAME                      1          Y   0          VARCHAR(20)        2026-04-30 17:13:00  FREQUENCE 

Table Index info:
INDEX_NAME                     INDEX_TYPE      COLUMNS                                              
------------------------------ --------------- ------------------------------------------------------------ 
SYS_C_49                       PRIMARY         ID                                                  

Analysis Finished.

2. 一键生成 AWR 报告

yat awr 自动获取最近 7 天的快照列表,交互式选择起止快照 ID,几秒钟即可生成 HTML 格式的 AWR 报告。

[yashan@yashandb1 yashango]$ ./yat awr

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

[1/3] Fetching snapshots from last 7 days...
    SNAP_ID BEGIN_TIME           END_TIME             DB TIME (MINS) 
----------- -------------------- -------------------- -------------- 
        509 2026-04-23 18:12:01  2026-04-23 18:42:02                 
        510 2026-04-23 18:42:02  2026-04-23 19:12:03              .6
        ... (省略中间大量快照) ...
        795 2026-04-30 16:27:10  2026-04-30 16:57:11             .44
        796 2026-04-30 16:57:11  2026-04-30 17:27:12             .44

Enter BEGIN Snapshot ID: 795   
Enter END   Snapshot ID: 796

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

3. 查询阻塞锁

yat block 会直接展示当前会话阻塞树,根节点是锁持有者,子节点是被阻塞的会话,一条链清晰直观。

[yashan@yashandb1 yashango]$ ./yat block

================================================================================
                         YashanDB Session Blocking Tree
================================================================================
    INST_ID      SID                 LEVEL PATH                           
----------- -------- --------------------- ------------------------------ 
          1       41                     1 ->41                          
          1       42                     2 ->41->42                      

Total sessions in blocking chain: 2

Note: LEVEL=1 is the root blocker (holder), LEVEL>1 are blocked sessions.
      PATH shows the blocking chain, e.g. ->123->456 means SID 123 blocks SID 456.

4. 查询等待事件

yat event 汇总当前所有活跃会话的等待事件,并给出产生该等待的顶级 SQL 和用户,帮助快速定位性能瓶颈。

[yashan@yashandb1 yashango]$ ./yat event

================================================================================
                      YashanDB Active Session Wait Events
================================================================================
    INST_ID WAIT_EVENT                          MAX_SQL_ID     MAX_USER_NAME         SUM_ELAP_S           SESSION_CNT 
----------- ----------------------------------- -------------- -------------------- ----------- --------------------- 
          1 row xact wait                       30ntpmyapvr37  SYS                         6522                    1

Total wait event types: 1

Note: SESSION_CNT shows the number of active sessions per wait event.
      SUM_ELAP_S shows total elapsed seconds across all sessions in that event.

5. 杀前台会话

yat kill 列出所有活跃会话,输入 SID 即可自动识别 SERIAL# 并执行 ALTER SYSTEM KILL SESSION。操作后会再次验证会话状态。

[yashan@yashandb1 yashango]$ ./yat kill

================================================================================
                             YashanDB Kill Session
================================================================================

Current Active Sessions (v$session):
     SID      SERIAL# USERNAME             STATUS     WAIT_EVENT                     PROGRAM                        
-------- ------------ -------------------- ---------- ------------------------------ ------------------------------ 
      41          430 SYS                  INACTIVE   SQL*Net message from client    /u01/yashan/app/23.4.7.103/bin
      42          854 SYS                  ACTIVE     row xact wait                  /u01/yashan/app/23.4.7.103/bin
      43          160 SYS                  INACTIVE   SQL*Net message from client    /u01/yashan/app/23.4.7.103/bin
      44         1595 SYS                  INACTIVE   SQL*Net message from client    C:\Program Files\YashanDB\Yash
      45          307 SYS                  INACTIVE   SQL*Net message from client    C:\Program Files\YashanDB\Yash
      47          114 SYS                  INACTIVE   SQL*Net message from client    /u01/yashan/app/23.4.7.103/bin

Enter SID: 45

Session info for SID=45:
     SID      SERIAL# USERNAME             STATUS     WAIT_EVENT                     PROGRAM                        
-------- ------------ -------------------- ---------- ------------------------------ ------------------------------ 
      45          307 SYS                  INACTIVE   SQL*Net message from client    C:\Program Files\YashanDB\Yash

Auto-detected SERIAL#=307 for SID=45

Are you sure to kill session SID=45, SERIAL#=307? [y/N]: y

Executing: ALTER SYSTEM KILL SESSION '45,307';
Succeed.

Verifying session status...
     SID      SERIAL# STATUS    USERNAME                                                      
-------- ------------ --------- ---------------------------------------------------------------- 
      45          307 KILLED    SYS                                                          
[Info] Session may still exist (marked KILLED, will be cleaned up shortly).

6. 分析 SQL 性能

yat sql <sql_id> 会从历史性能仓库中提取该 SQL 的执行统计、历史执行计划、当前游标计划以及涉及的表信息。它是诊断单条 SQL 问题的利器。

[yashan@yashandb1 yashango]$ ./yat sql 30ntpmyapvr37

================================================================================
                 YashanDB SQL Performance Report: 30ntpmyapvr37
================================================================================

DBA_HIST_SQLSTAT detail(recent 15 days):
    SNAP_ID SNAP_DATE               INST         PHV       CPU_S       EXECS      BUF_PE      ROW_PE       MS_PE      DISK_R        IO_S 
----------- ---------------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- 
        796 20260430 16:57             1   605450030          0          0          0          0        1.8          0          0
        795 20260430 16:27             1   605450030          0          0          0          0        1.8          0          0
        794 20260430 15:57             1   605450030          0          0          9          0        1.4          1          0

Historical Plans Summary(from WRH$_SQLSTAT):
        PHV AVG_ETIME_S   AVG_CPU_S AVG_BUFFERS       EXECS  FIRST_SNAP   LAST_SNAP 
----------- ----------- ----------- ----------- ----------- ----------- ----------- 
  605450030        .002        .002          3          0        794        796

SQL Text (from V$SQLAREA):
update t1 set name='a'  where id=1                              

Current SQL plans in Cursor (V$SQL_PLAN):
          ID PLAN_TABLE_OUTPUT                                                OBJECT_NAME                           COST                   ROWS 
------------ ---------------------------------------------------------------- -------------------- --------------------- --------------------- 
           0 UPDATE STATEMENT                                                                                                                         
           1   UPDATE                                                         T1                                                                      
           2     TABLE ACCESS FULL                                             T1                                       1                      

Tables involved (Stats from DBA_TABLES):
TABLE_OWNER          TABLE_NAME                                  NUM_ROWS LAST_ANALYZED              SIZE_M 
-------------------- ------------------------------ --------------------- --------------------- ----------- 
SYS                  T1                                                    2 2026-04-30 17:20:13            0

Analysis Finished.

7. 查看表信息

与第 1 个功能“收集表统计信息”使用的是同一个核心逻辑,它完整呈现表结构、列统计、索引等元数据。

[yashan@yashandb1 yashango]$  ./yat table t1
============================================================
                  YashanDB Table Info: T1
============================================================
Multiple owners found, please select:
[1] BENCHMARK
[2] SYS
Enter selection (default 1): 
Target: BENCHMARK.T1
Table Basic Info:
TABLE_NAME                TABLESPACE_NAME    TOTAL_MB              NUM_ROWS                BLOCKS LAST_ANALYZED        
------------------------- --------------- ----------- --------------------- --------------------- -------------------- 
T1                        USERS                 .0625                    1                    1 2026-04-30 17:13:00 
Table Columns info:
COLUMN_NAME               NDV        NUL NUM_NULLS  DATA_TYPE          LAST_ANALYZED        HISTOGRAM  
------------------------- ---------- --- ---------- ------------------ -------------------- ---------- 
ID                        1          N   0          INTEGER            2026-04-30 17:13:00  FREQUENCE 
NAME                      1          Y   0          VARCHAR(20)        2026-04-30 17:13:00  FREQUENCE 
Table Index info:
INDEX_NAME                     INDEX_TYPE      COLUMNS                                              
------------------------------ --------------- ------------------------------------------------------------ 
SYS_C_49                       PRIMARY         ID                                                  
Analysis Finished.

8. 查看表空间

yat tbs 一次性列出所有表空间的使用情况,并给出百分比和最大可分配空间,方便容量规划。

[yashan@yashandb1 yashango]$ ./yat tbs
================================================================================
                           YashanDB Tablespace Usage
================================================================================
TBSNAME                       USED_MB USED_PERCENT    TOTAL_MB MAX_ALLOCATE_MB   REAL_FREE 
------------------------- ----------- ------------ ----------- --------------- ----------- 
USERS                         3281.13          .63        3328          524288   521006.87
UNDO                           114.15          .17         768           65536    65421.85
SYSAUX                          76.31          .01         128          524288   524211.69
SYSTEM                          59.38          .01          64          524288   524228.62
TEMP                                5            0          64          524288      524283
SWAP                                1            0        1280          524288      524287
Summary:
--------
Total tablespaces: 6
Note: USED_PERCENT shows actual usage vs maximum allocatable space

9. 查看数据库用户信息

yat user 展示所有用户的默认表空间、账户状态、创建时间等信息。

[yashan@yashandb1 yashango]$ ./yat user
====================================================================================================
                                     YashanDB User Information
====================================================================================================
USERNAME                  DEFAULT_TABLESPACE   ACCOUNT_STATUS       TEMPORARY_TABLESPACE CREATED              PROFILE              
------------------------- -------------------- -------------------- -------------------- -------------------- -------------------- 
AUDITOR                   USERS                EXPIRED              TEMP                 2026-04-08           DEFAULT             
BENCHMARK                 USERS                OPEN                 TEMP                 2026-04-08           DEFAULT             
MDSYS                     USERS                LOCKED               TEMP                 2026-04-08           DEFAULT             
SECURITOR                 USERS                EXPIRED              TEMP                 2026-04-08           DEFAULT             
SYS                       SYSTEM               OPEN                 TEMP                 2026-04-08           DEFAULT             
XA_SYS                    USERS                LOCKED               TEMP                 2026-04-08           DEFAULT             
YASOM                     USERS                OPEN                 TEMP                 2026-04-08           DEFAULT             
Summary:
--------
Total users: 7

10. 查看版本信息

简单的 yat version 可输出当前工具版本及适配的 YashanDB 版本。

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

除此之外,yat 还提供了一个统一的入口,直接运行 ./yat 就会列出所有可用命令及其简短说明:

[yashan@yashandb1 yashango]$ ./yat
Usage:
  yat ana <table_name> [degree]   Analyze table statistics
  yat awr                         Generate AWR report
  yat block                       Show session blocking tree
  yat event                       Show session wait events
  yat kill <sid> <serial#>        Kill a session
  yat sql <sql_id>                Show SQL performance and plan history
  yat table <table_name>          Show table details
  yat tbs                         Show tablespace usage
  yat user                        Show user information
  yat version                     Show version info

Analyze options:
  degree  - Degree of parallelism (default: 4, max: 32)

这套工具大幅简化了 YashanDB 的日常运维操作,我们将继续完善功能。有需要的同学可以关注后续更新。




上一篇:中国公司债及企业债信用分析周报:本周发行超754亿 高等级品种占主导 城投及产业债评级透视
下一篇:谷歌股价看至400美元:算力受限是借口还是下一个爆发点?
您需要登录后才可以回帖 登录 | 立即注册

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

GMT+8, 2026-5-1 23:28 , Processed in 0.620716 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

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