TPT 脚本 TPT scripts in GitHub 使用说明。

有幸在一运营商驻场期间接触了 TPT 脚本,下载地址在: TPT scripts in GitHub ,这里简单记录其使用说明,并借助 ai,将其 help 翻译成了中文,并生成了表格的格式方便查看。

由于此脚本非常庞大,脚本名称缩写有时候不知道是什么含义,其实本脚本提供了一个 help.sql ,可以通过@help进行查看。

使用说明:下载 TPT 脚本

1
wget https://github.com/tanelpoder/tpt-oracle/archive/master.zip

解压缩 unzip master.zip 之后会生成 tpt-oracle-master 文件夹,脚本都在此目录下。

可以直接进入 此目录,然后进入sqlplus / as sysdba 就可以直接通过 @ 进行执行了。

也可以通过 export SQLPATH=~/tpt-oracle-master 来指定。这样即使sqlplus 不在 tpt-oracle-master 目录下也可以直接通过 @ 来执行脚本。

使用方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[oracle@ydora02 ~]$ export SQLPATH=~/tpt-oracle-master
[oracle@ydora02 ~]$ s

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Nov 7 09:42:34 2025
Version 19.19.0.0.0

Copyright (c) 1982, 2023, Oracle. All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.19.0.0.0

SQL> @kill
Enter value for 1: username='SYS'
old 4: where &1
new 4: where username='SYS'

COMMANDS_TO_VERIFY_AND_RUN
--------------------------------------------------------------------------------
alter system kill session '6,35465' -- SYS@ydora02 (oracle@ydora02 (OFSD));

SQL>

查看help

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SQL>  @help kill
NAME
-------------------------
DESCRIPTION
------------------------------------------------------------
USAGE
--------------------------------------------------------------------------------
kill.sql
Generate command to for killing user session
@kill <filter_expression>
@kill sid=284
@kill username='SYSTEM'
@kill "username='APP' AND program LIKE 'sqlplus%'"


SQL>

查看 object信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SQL> @o sys.dba_objects
old 15: WHEN INSTR('&1','.') > 0 THEN
new 15: WHEN INSTR('%sys.dba_objects%','.') > 0 THEN
old 16: SUBSTR('&1',INSTR('&1','.')+1)
new 16: SUBSTR('%sys.dba_objects%',INSTR('%sys.dba_objects%','.')+1)
old 18: '&1'
new 18: '%sys.dba_objects%'
old 22: CASE WHEN INSTR('&1','.') > 0 THEN
new 22: CASE WHEN INSTR('%sys.dba_objects%','.') > 0 THEN
old 23: UPPER(SUBSTR('&1',1,INSTR('&1','.')-1))
new 23: UPPER(SUBSTR('%sys.dba_objects%',1,INSTR('%sys.dba_objects%','.')-1))

owner object_name object_type status OID D_OID CREATED LAST_DDL_TIM
------------------------- ------------------------------ -------------------- --------- ---------- ---------- ------------ ------------
SYS DBA_OBJECTS VIEW VALID 4660 26-JUN-24 26-JUN-24
SYS DBA_OBJECTS_AE VIEW VALID 4661 26-JUN-24 26-JUN-24
SYS DBA_OBJECTS_CE VIEW VALID 19253 26-JUN-24 26-JUN-24

SQL>

查看索引信息

1
2
3
4
5
6
7
8
9
10
@ind sys.aud$
INDEX_OWNER TABLE_NAME INDEX_NAME IDXTYPE UNIQ STATUS PART TEMP H LFBLKS NDK NUM_ROWS CLUF LAST_ANALYZE DEGREE VISIBILITY
-------------------- ------------------------------ ------------------------------ ---------- ---- ---------------- ---- ---- -- ---------- ------------- ---------- ---------- ------------ ------ ------------------
AUDSYS AUD$UNIFIED SYS_IL0000019125C00030$$ LOB YES N/A YES N 0 VISIBLE
AUD$UNIFIED SYS_IL0000019125C00031$$ LOB YES N/A YES N 0 VISIBLE
AUD$UNIFIED SYS_IL0000019125C00097$$ LOB YES N/A YES N 0 VISIBLE
SYS AUD$ SYS_IL0000000599C00040$$ LOB YES VALID NO N 0 VISIBLE
AUD$ SYS_IL0000000599C00041$$ LOB YES VALID NO N 0 VISIBLE
AUD$ SYS_IL0000000599C00043$$ LOB YES VALID NO N 0 VISIBLE
SQL>

附录:help 翻译(有ai生成,没有经过检验,以英文原版为准),我看了下 help.sql 文本竟然在 3周前更新过,其他脚本大部分是几年前甚至七八年前。

image-20251107174921166

脚本名称 功能用途 使用方法
ash_wait_chains.sql 显示 ASH 等待链(多会话等待特征,一个会话等待另一个会话等) @ash/ash_wait_chains <分组列> <过滤条件> <开始时间> <结束时间> 示例: @ash/ash_wait_chains username||’-‘||program2 “wait_class=’Application’” sysdate-1/24 sysdate
ash_index_helper.sql 圣诞老人的小索引助手 BETA @ash/ash_index_helper [<所有者>.]<表名> <开始时间> <结束时间> 示例: @ash/ash_index_helper 8zz6y2yzdqjp0 %.% sysdate-1/24 sysdate
ashtop.sql 通过分组 ASH 列显示热点活动 @ash/ashtop <分组列> <过滤条件> <开始时间> <结束时间> 示例: @ash/ashtop username,sql_opname,event2 1=1 sysdate-1/24 sysdate
asqlmon.sql 报告 SQL 监控风格的执行计划时间消耗钻取分析(基于 ASH) @ash/asqlmon <子游标#> <开始时间> <结束时间> 示例: @ash/asqlmon 7q729nhdgtsqq 0 sysdate-1/24 sysdate
aw.sql 显示最近一分钟的数据库活动 @aw <过滤表达式> 示例: @aw 1=1
awr_sqlid.sql 从 AWR 显示 SQL 文本 @awr/awr_sqlid 示例: @awr/awr_sqlid 7q729nhdgtsqq
awr_sqlstats.sql 从 AWR 显示 SQL 统计信息 @awr/awr_sqlstats <计划哈希值> <开始时间> <结束时间> 示例: @awr/awr_sqlstats 0sh0fn7r21020 1541789278 sysdate-7 sysdate
awr_sqlstats_per_exec.sql 从 AWR 显示每次执行的 SQL 统计信息 @awr/awr_sqlstats_per_exec <计划哈希值> <开始时间> <结束时间> 示例: @awr/awr_sqlstats_per_exec 0sh0fn7r21020 1541789278 sysdate-7 sysdate
awr_sqlstats_unstable.sql 从 AWR 显示不稳定的 SQL 执行计划 @awr/awr_sqlstats_unstable <分组表达式1> <分组表达式2> <开始时间> <结束时间> 示例: @awr/awr_sqlstats_unstable force_matching_signature plan_hash_value sysdate-7 sysdate
bg.sql 显示后台进程 @bg <进程名|进程描述> 示例: @bg dbw 或 @bg writer
bhobjects.sql 显示缓冲区缓存中的热点对象 @bhobjects
bhobjects2.sql 显示缓冲区缓存统计信息 @bhobjects2
cancel.sql 生成取消选定 SQL 的命令 @cancel <过滤表达式> 示例: @cancel sid=150 或 @cancel username=’SYSTEM’
col.sql 显示列 @col <列名> 示例: @col open_mode
colusage.sql 显示列使用情况 @colusage [<所有者>.]<表名> 示例: @colusage soe.orders
create_sql_baseline.sql 从现有的”好”游标创建 SQL 计划基线 @create_sql_baseline <好的sqlid> <好的计划哈希值> <目标坏的sqlid> 示例: @create_sql_baseline g5tuxh82pk3qf 2966233522 d7khnbh6c9qas
create_sql_patch.sql 创建 SQL 补丁 @create_sql_patch <提示> 示例: @create_sql_patch g4pkmrqrgxg3b GATHER_PLAN_STATISTICS
d.sql 显示数据字典视图和 x$ 表 @d <对象名> 示例: @d sql 或 @d %
dash_wait_chains.sql 显示 ASH(基于 DBA_HIST)等待链(多会话等待特征,一个会话等待另一个会话等) @ash/dash_wait_chains <分组列> <过滤条件> <开始时间> <结束时间> 示例: @ash/dash_wait_chains username||’-‘||program2 “wait_class=’Application’” sysdate-1/24 sysdate
dashtop.sql 通过分组 ASH 列显示热点活动(基于 DBA_HIST) @ash/dashtop <分组列> <过滤条件> <开始时间> <结束时间> 示例: @ash/dashtop username,sql_opname,event2 1=1 sysdate-1/24 sysdate
dasqlmon.sql 报告 SQL 监控风格的执行计划时间消耗钻取分析(基于 AWR) @ash/dasqlmon <计划哈希值> <开始时间> <结束时间> 示例: @ash/dasqlmon 7q729nhdgtsqq 0 “timestamp’2019-10-07 07:00:00’” “timestamp’2019-10-07 07:00:00’”
date.sql 显示当前日期 @date
ddl.sql 提取指定对象的 DDL 语句 @ddl [<所有者>.]<对象名> 示例: @ddl sys.dba_users
desc.sql 描述对象 @desc <对象名> 示例: @desc dba_tables
devent_hist.sql 从 AWR 显示等待次数的直方图(毫秒) @ash/devent_hist.sql <事件> <过滤表达式> <开始时间> <结束时间> 示例: @ash/devent_hist.sql log_file 1=1 sysdate-1/24 sysdate
df.sql 显示表空间使用情况(GB) @df
dfm.sql 显示表空间使用情况(MB) @dfm
dirs.sql 显示数据库目录 @dirs
drop_sql_patch.sql 删除 SQL 补丁 @drop_sql_patch <补丁名> 示例: @drop_sql_patch SQL_PATCH_g4pkmrqrgxg3b
drop_sql_baseline.sql 删除 SQL 计划基线 @drop_sql_baseline 示例: @drop_sql_baseline SQL_52cb74b7097edbbd
ev.sql 设置会话事件 @ev <事件> <级别> 示例: @ev 10046 12
event_hist.sql 从 ASH 显示等待次数的直方图(毫秒) @ash/event_hist.sql <事件> <过滤表达式> <开始时间> <结束时间> 示例: @ash/event_hist.sql log.file 1=1 sysdate-1/24 sysdate
event_hist_micro.sql 从 ASH 显示等待次数的直方图(微秒) @ash/event_hist_micro <事件> <过滤表达式> <开始时间> <结束时间> 示例: @ash/event_hist_micro log.file 1=1 sysdate-1/24 sysdate
evh.sql 显示等待次数的直方图 @evh <事件> 示例: @evh log.file
evo.sql 禁用会话事件 @evo <事件> 示例: @evo 10046
f.sql 搜索固定视图(V$ 视图)文本 @f <文本> 示例: @f sql_shared
fix.sql 显示修复控制描述 @fix <bug编号|描述|optimizer_feature_enable|sql_feature> 示例: @fix 13836796 或 @fix adaptive
grp.sql 分组函数包装器 @grp <列名> <表名> 示例: @grp owner dba_tables
help.sql 显示 TPT 脚本帮助 @help <搜索表达式> 示例: @help explain 或 @help lock|latch.*hold
hash.sql 显示会话中最后一条 SQL 的哈希值、sql_id 和子游标号 @hash
hint.sql 显示所有可用的提示 @hint <名称> 示例: @hint full
hintclass.sql 显示所有可用的提示及提示类信息 @hintclass <提示名> 示例: @hintclass merge
hintfeature.sql 显示所有可用的提示及 SQL 特性信息 @hintfeature <特性名> 示例: @hintfeature transformation
hinth.sql 显示提示层次结构 @hinth <提示名> 示例: @hinth merge
ind.sql 显示索引 @ind [<所有者>.]<索引名|表名> 示例: @ind orders 或 @ind soe.ord_customer_ix
indf.sql 显示基于函数的索引表达式 @indf [<所有者>.]<索引名|表名> 示例: @indf orders
kill.sql 生成杀死用户会话的命令 @kill <过滤表达式> 示例: @kill sid=284 或 @kill username=’SYSTEM’
latchprof.sql 分析热点闩锁持有者(V$ 版本) @latchprof <分组列> <闩锁名> <采样数> 示例: @latchprof name,sqlid 123 % 10000
latchprofx.sql 分析热点闩锁持有者扩展版(X$ 版本) @latchprofx <分组列> <闩锁名> <采样数> 示例: @latchprofx sid,name 123 % 10000
lock.sql 显示当前锁 @lock <过滤表达式> 示例: @lock 1=1 或 @lock type=’TM’
log.sql 显示重做日志布局 @log
long.sql 显示会话长操作 @long <过滤表达式> 示例: @long 1=1 或 @long username=’SOE’
ls.sql 显示表空间 @ls <表空间名> 示例: @ls system
lt.sql 显示锁类型信息 @lt <锁名> 示例: @lt TM
mem.sql 显示动态 SGA 组件信息 @mem
memres.sql 显示最近完成的内存调整操作信息 @memres
nonshared.sql 从 v$shared_cursor 显示子游标不共享的原因 @nonshared 示例: @nonshared 7q729nhdgtsqq
nls.sql 显示会话级别的 NLS 参数 @nls
o.sql 基于对象所有者和名称显示数据库对象 @o [<所有者>.]<对象名> 示例: @o sys.dba_users
oda.sql 显示 oradebug doc 事件动作 @oda <动作> 示例: @oda latch
oddc.sql 显示 oradebug doc 组件 @oddc <组件> 示例: @oddc optimizer
oerr.sql 显示 Oracle 错误描述 @oerr <错误号> 示例: @oerr 7445
oi.sql 显示无效对象 @oi
oid.sql 基于对象 ID 显示数据库对象 @oid <对象id> 示例: @oid 10 或 @oid 10,20
ostackprofw.sql 采样 Oracle 进程调用堆栈并显示分析结果(Windows sqlplus) @ostackprofw <休眠时间> <采样数> 示例: @ostackprofw 123 0.1 100
ostackprofu.sql 采样 Oracle 进程调用堆栈并显示分析结果(Unix/Linux/Mac sqlplus) @ostackprofu <休眠时间> <采样数> 示例: @ostackprofu 123 0.1 100
otherxml.sql 从库缓存显示大纲提示 @otherxml <子游标#> 示例: @otherxml 1fbwxvngasv1f 1
p.sql 显示参数名称和值 @p <参数名> 示例: @p optimizer
partkeys.sql 显示表分区键 @partkeys [<所有者>.]<表名> 示例: @partkeys soe.orders
pd.sql 显示参数名称、描述和值 @pd <参数描述> 示例: @pd optimizer
pga.sql 显示 PGA 内存使用统计 @pga
pmem.sql 显示进程内存使用情况 @pmem 示例: @pmem 1000
proc.sql 显示函数和过程 @proc <对象名> <过程名> 示例: @proc dbms_stats table
procid.sql 显示函数和过程 @procid <对象id> <子程序id> 示例: @procid 13615 84
pv.sql 基于当前值显示参数 @pv <值> 示例: @pv MANUAL
pvalid.sql 显示有效的参数值 @pvalid <参数名> 示例: @pvalid optimizer
rowid.sql 从 rowid 显示文件号、块号、行号 @rowid 示例: @rowid AAAR51AAMAAAACGAAB
s.sql 显示当前会话等待和 SQL_ID 信息(10g+) @s 示例: @s 52,110,225
sdr.sql 控制串行直接读取(_serial_direct_read) @sdr <TRUE|FALSE> 示例: @sdr TRUE
se.sql 显示会话事件 @se 示例: @se 10
sed.sql 显示等待事件描述 @sed <事件> 示例: @sed log_file 或 @sed “enq: TX”
seg.sql 显示段信息 @seg [<所有者>.]<段名> 示例: @seg soe.customers
segcached.sql 显示段的缓冲块数量 @segcached [<所有者>.]<对象名> 示例: @segcached soe.orders
seq.sql 显示序列信息 @seq [<所有者>.]<序列名> 示例: @seq sys.jobseq
ses.sql 显示给定会话的会话统计信息,按统计名称过滤 @ses <统计名> 示例: @ses 10 % 或 @ses 10 parse
ses2.sql 显示给定会话的会话统计信息,按统计名称过滤并仅显示值 > 0 的统计 @ses2 <统计名> 示例: @ses2 10 %
settings.sql 显示 AWR 配置 @awr/settings
sga.sql 从 v$memory_dynamic_components 显示实例内存使用明细 @sga
sgai.sql 从 v$sgainfo 显示实例内存使用明细 @sgai
sgares.sql 从 v$sga_resize_ops 显示最近完成的 SGA 调整操作信息 @sgares
sgastat.sql 从 v$sgastat 显示 SGA 的详细信息 @sgastat <名称|池> 示例: @sgastat % 或 @sgastat result
sgastatx.sql 从 X$KSMSS 按子池显示共享池统计 @sgastatx <统计名> 示例: @sgastatx “free memory”
sqlmem.sql 显示 SQL 语句的共享池内存使用情况 @sqlmem 示例: @sqlmem 7q729nhdgtsqq
sqlmemh.sql 显示 SQL 语句的共享池内存使用情况 @sqlmemh <哈希值> 示例: @sqlmemh 900835192
sys.sql 显示系统统计信息 @sys <统计名> 示例: @sys redo
uu.sql 显示用户会话 @uu <用户名> 示例: @uu % 或 @uu username
us.sql 从 dba_users 显示数据库用户名 @us <用户名> 示例: @us username
usid.sql 显示用户会话和进程信息 @usid 示例: @usid 1234
sl.sql 设置统计级别 @sl <统计级别> 示例: @sl all
smem.sql 显示进程内存使用情况 @smem 示例: @smem 1000
sqlbinds.sql 显示捕获的 SQL 绑定变量值 @sqlbinds <子游标号> <绑定变量名> 示例: @sqlbinds 2swu3tn1ujzq7 0 %
sqlid.sql 显示 SQL:文本、子游标和执行统计 @sqlid <子游标号> 示例: @sqlid 7q729nhdgtsqq 0
sqlf.sql 从内存显示完整的 SQL 文本 @sqlf 示例: @sqlf 7q729nhdgtsqq
sqlfn.sql 显示 SQL 函数 @sqlfn <名称> 示例: @sqlfn date
sqlmon.sql 运行 SQL 监控报告 @sqlmon 示例: @sqlmon 1019
swc.sql 从 GV$SESSION 显示当前等待链(多会话等待特征,一个会话等待另一个会话等) @swc <分组列> <过滤条件> 示例: @swc program2||event2 1=1
syn.sql 显示同义词信息 @syn [<所有者>.]<同义词名> 示例: @syn system.tab
t.sql 显示默认跟踪文件 @t
tab.sql 显示表信息 @tab [<所有者>.]<表名> 示例: @tab soe.orders
tabhist.sql 显示列直方图 @tabhist [<所有者>.]<表名> <列名> 示例: @tabhist soe.orders order_mode
tabhisthybrid.sql 显示等值过滤器的混合直方图基数估算 @tabhisthybrid [<所有者>.]<表名> <列名> 示例: @tabhisthybrid soe.customers account_mgr_id
tabpart.sql 显示表分区 @tabpart [<所有者>.]<表名> 示例: @tabpart soe.orders
tabsubpart 显示表子分区 @tabsubpart [<所有者>.]<表名> 示例: @tabsubpart soe.orders
ti.sql 强制生成新的跟踪文件 @ti
tlc.sql 显示顶级调用名称 @tlc <调用名> 示例: @tlc commit
topseg.sql 按表空间显示热点空间使用者 @topseg <表空间名> 示例: @topseg soe
topsegstat.sql 显示热点段级统计信息 @topsegstat <统计名> 示例: @topsegstat reads
trace.sql 启用跟踪 @trace <过滤表达式> 示例: @trace sid=123
traceme.sql 为当前会话启用跟踪 @traceme
traceoff.sql 禁用跟踪 @traceoff <过滤表达式> 示例: @traceoff sid=123
trans.sql 从 v$transaction 显示活动事务 @trans <过滤表达式> 示例: @trans sid=123
trig.sql 显示触发器信息 @trig [<所有者>.]<触发器名> 示例: @trig sys.delete_entries
ts.sql 显示表空间 @ts <表空间名> 示例: @ts soe
uds.sql 显示撤销统计信息 @uds
wrka.sql 显示 PGA 和 TEMP 使用情况 @wrka <过滤表达式> 示例: @wrka 1=1 或 @wrka sid=1000
wrkasum.sql 按操作类型分组显示 SQL 工作区摘要(PGA 和 TEMP) @wrkasum <过滤表达式> 示例: @wrkasum sql_id=’7q729nhdgtsqq’
x.sql 显示最后一条 SQL 语句的执行计划 @x
xa.sql 显示最后一条 SQL 语句的执行计划 - 别名 @xa
xall.sql 显示最后一条 SQL 语句的执行计划 - 高级 @xall
xawr.sql 从 AWR 显示 SQL 执行计划 @xawr <计划哈希值> 示例: @xawr 0sh0fn7r21020 1541789278
xb.sql 直接从库缓存解释 SQL 语句的执行计划及执行概要 - 用于当前会话执行的最后一条 SQL @xb
xbi.sql 直接从库缓存解释 SQL 语句的执行计划及执行概要 - 通过 SQL ID 查找 @xbi <sql子游标号> 示例: @xbi a5ks9fhw2v9s1 0
xi.sql 从库缓存显示 SQL 执行计划 @xi <子游标#> 示例: @xi 7q729nhdgtsqq 0
xia.sql 从库缓存显示 SQL 执行计划:高级 @xia 示例: @xia 7q729nhdgtsqq
xp.sql 为会话运行 DBMS_SQLTUNE.REPORT_SQL_MONITOR(文本模式) @xp <会话id> 示例: @xp 47
xprof.sql 为会话运行 DBMS_SQLTUNE.REPORT_SQL_MONITOR @xprof <报告级别> <类型> <sql_id|会话id> <sql_id|sid> 示例: @xprof ALL ACTIVE % %
xplto.sql 显示执行计划操作 @xplto <名称> 示例: @xplto full

原文作者: liups.com

原文链接: http://liups.com/posts/8189296c/

许可协议: 知识共享署名-非商业性使用 4.0 国际许可协议