前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >运维,诊断,健康检查,优化定制工具ora使用说明

运维,诊断,健康检查,优化定制工具ora使用说明

作者头像
老虎刘
发布2022-06-27 13:56:15
1.1K0
发布2022-06-27 13:56:15
举报

使用工具的目的是为了提高工作效率, 先有思路和方法,然后再借助工具,方能达到事半功倍的效果.

ora工具使用说明

ora是bash shell脚本写的oracle数据库 优化/诊断/健康检查 工具包, linux一般默认使用bash shell; 其他操作系统(AIX/HP-UX/Solaris)如果没有安装bash shell,需要安装. 不能在windows操作系统下使用.

原型来自ora官方同名工具,仅保留了其中少量几个命令(方法), 大部分方法都是新增的,都是在大量的现场实战中总结出来的,同时也借鉴和整合了一些专家的方法.

使用方法:

ftp oraxxx (xxx是版本号)到 linux/unix 数据库服务器, mv oraxxx ora ; chmod +x ora , 然后用oracle用户执行 ./ora ,该命令显示当前ora支持的所有子命令.

可以把ora放到已有的PATH中或增加当前路径到PATH,避免每次在命令前增加./

ora 默认使用数据库sys用户权限连接数据库(部分命令需要sysdba权限,比如查隐含参数等) ;

脚本中配置了DBUSER="/ as SYSDBA" , 如果需要其他用户如system连接, 或通过客户端连接,或连接到某个pdb,需要修改这个配置. 比如 DBUSER="system/oracle@orcl"

命令语法:

ora 命令 [可选参数] <必选参数> 部分命令区分RAC节点,需要在命令前使用 -i 节点号, 如 ora -i 节点号 命令 (默认i=1)

举例:

ora 4031 诊断当前实例ora-4031问题

ora load 或 ora load 24 或 ora load <bid> <eid> 批量显示数据库的load profile变化情况,默认显示最近48个snap

ora sql <sql_id> 显示指定sql的详细信息,包括历史执行情况,执行计划,涉及的表等信息

ora pc 显示n天以来(默认8天)执行计划发生重大改变的TOP 50 SQL

ora pc2 显示n天以来(默认8天)执行计划发生重大改变的TOP 50 SQL,并显示当前执行计划是不是最好的执行计划

ora sqlhc <sqlid1> [sqlid2] ... 收集一个或多个sqlid的sqlhc信息(需要ora_sqlhc.sql文件在当前目录)

ora table <tab_name> [owner] 采集某个table的详细信息, schema名可以在命令行输入,也可以在下一步做交互选择

ora -i 2 ashcnt 20 显示节点2最近20分钟每秒活动会话数统计

全部命令说明:

命令名称后面的竖线|代表别名; 其他|代表各可选项

编号

命令名称

命令说明

补充说明

1

4031

诊断4031问题(官方脚本) , 只显示当前实例信息, 不支持 -i (保持官方脚本原样)

v$改成gv$,可以查其他节点

2

alert [2]

显示最近2天(默认) alert.log (v$diag_alert_ext)里面包含 ORA- / Checkpoint not complete / ALTER等关键字的信息

可改脚本,增加自定义关键字

3

ashcnt [30]

coung(*) group by sample_time gv$active_session_history 最近 30分钟(默认)

分节点; -a 显示按分钟统计

4

ashdump [1]

dump ash(v$active_session_history) records into trc file,default value is 1 minutes

5

ashevent 10 2

显示最近10分钟ASH 各采样点的top 2 event(group by inst_id,sample_time,events)

分节点;

6

ashsql "14:15" 20 | dashsql

ash(gv$active_session_history)和 DASH( dba_hist_active_sess_history),group by sql_id and event

7

ashtop|topash [10]

4个维度显示ash top 10信息(sql/session/activity/event),默认最近10分钟 (括号后表示别名)

分节点;

8

asm

显示 asm 磁盘组空间 / 剩余空间

9

awr [bid] [eid]

收集bid和eid间隔的AWR报告(RAC所有节点和Global),采集top 60 sql;可交互选择输入bid和eid(默认是最近两次)

10

awrsnap [3]

显示3天(默认)内的awr snapshot信息

11

awr_baseline [bid] [eid]

指定 bid eid ,创建awr baseline (可交互选择输入 bid / eid)

12

13

batch_sqlhc <bid><eid><r1><r2><r3> y

选定 bid和eid,批量生成top sql的sqlhc信息;r1=cpu r2=read r3=time 各维度top sql个数; 获取top sql后,会询问是否要编辑刚刚生成的ora_sql_id.log (参考ora_sql_detail.log,类似sql可以删除),编辑后回车(输入n或N退出),开始批量生成 ; 参数可以在命令行写全,也可以交互输入

14

batch_osstat [48]|<bid><eid>

批量显示awr osstat信息(类似 AWR osstat部分),默认最近48个snap ; 或指定bid和eid

15

batch_event [48]|<bid><eid>

批量显示awr top 5 等待事件,默认最近48个snap ; 或指定bid和eid

16

batch_load | load [48]|<bid><eid>

批量显示awr load profile 信息,默认最近48个snap ; 或指定bid和eid

17

batch_iostat [48]|<bid> <eid>

批量显示awr top 5 reads tablespace信息 (awr: Tablespace IO Stats) 12.1及以下 ,默认最近48个snap ; 或指定bid和eid

18

19

bc [10]

显示v$bh (buffer cache) Top 10 对象

20

big [20]

显示整个数据库中, 单表/索引 或 单分区/分区索引 最大的20个对象

21

big_by_tbs <tbs_name> [20]

按表空间显示最大对象

22

bind <sql_id>

显示指定sql_id的当前(gv\$sql_bind_capture)和历史(dba_hist_sqlbind) 绑定变量信息

23

24

col <owner><tab_name><col_name>

显示指定字段的详细信息:

25

check

健康检查: unusable/invisible/invalid/bitmap/FK/rman/degree/px sessions/增加你的定制脚本

26

cputime

按天/按snap 统计 CPUtime top 10

27

cursor_summary

关于(un)pinned cursor的统计 : x$kglcursor

28

29

dashcnt "yyyy/mm/dd hh24:mi" [30]

默认30分钟范围 : dba_hist_active_sess_history group by sample_time

30

dashevent "yyyy/mm/dd hh24:mi" 20 2

20默认20分钟,top 2 events,group by inst_id,sample_time,events (DASH)

31

dashsql

ashsql 别名

32

dbtime

按天/按snap 统计 DBtime top 10

33

ddl <name> <owner> <type>

DDL info : dbms_metadata.get_ddl (不分大小写); name/owner/type可交互输入,提供name后,其他内容会提示默认值

34

degree ( parallel )

显示带并行度属性的表或索引 ; 正在执行的 parallel processes ;

35

dir

显示当前数据库创建的 directory 信息

36

drop patch|profile|baseline <name>

删除 sql patch/sql profile/sql plan baseline

37

dpr_risk [100]

一天超过100(默认)次的大表全表扫描 (blocks > 0.8*_small_table_threshold )

38

dup_index <owner>

显示指定用户的重复索引信息

39

dg | dg_info

show data guard info (contributed by Albert Liang)

40

event

gv$session 'ACTIVE' ; not IDLE; group by event

分节点;

41

event2sqlid <event_name> <bid> <eid>

根据等待事件名, 在指定时间段 , 找到生成该事件的sqlid (dash); 显示top 5

42

event_set

显示当前系统设置的event,如 alter system set events '60025 trace name context forever'; 10046等;

session级看不到

43

expdash "2020/05/27 10:33:40" 30

12.2+ 以上版本支持; expdp导出dba_hist_active_sess_history指定时间段记录; 使用默认directory; 导出后会显示

44

45

feature

数据库使用的功能:db link/trigger/partition/compress/temporary/sqlpatch/profile/baseline/..

46

file | files

列出文件名: spfile/control_file/datafile/tempfile

47

fulltext <sql_id>

显示长sql(不超过 32767)的完整SQL text ; v$sql.sql_text 只有varchar2(1000) ; >32767 fulltext_long.sql

48

gather <owner> <table_name>

收集表的统计信息dbms_gather_table_stats(cascade=>true,no_invalidate=>false)

49

50

histogram <owner><tab_name><col_name>

得到字段直方图信息(各值对应的记录数比例)

51

highparse [500]

查找硬解析高的SQL(默认>500) 显示 top 50 (save_highparse.sql 定期抓取,保存到表);highparse2 : 按资源消耗统计

52

highcost 50

gv$sql_plan cost最大的top 50(默认) sql

分节点

53

high_version [100]

显示游标个数超过100(默认)的sqlid 列表; 游标不能共享的原因汇总 ; 单个sql原因使用ora sharing <sqlid>

54

hintname|hint <keyword>

根据部分关键字,显示相关 hint (v$sql_hint)

55

hangdump

hanganalyze 3 + systemdump 10 , 已屏蔽 , 必要时可以打开, 收集诊断信息

56

idx2sqlid <index_name>

显示索引被哪些sql使用,全部列出 (dba_hist_sql_plan / gv$sql_plan)

57

idxinfo <index_name>

显示指定索引相关信息 (没有用户名参数)

58

index <table_name>

显示指定表的索引信息

59

job

显示job列表

60

kill <sid> <serial> [inst_id]

kill session immediate ; 默认 节点号=1

61

longops

显示 gv$session_longops 正在执行的长时间SQL (剩余时间经常不准)

62

lock | blocker

显示锁及阻塞关系

63

lob

显示lob segment占用空间最多的top 50 (>=10M)

64

lobfree <owner> <lobsegname>

显示securefile类型的lob segment剩余空间(basicfile类型不适合) ; segment_name结尾的两个$, 需要转义\$\$

65

66

mvsnap

显示 all_snapshots (mview) 状态

67

montop [20]

保存当前monitor 列表内执行时间最长的 top 20(默认) sql monitor files

68

monlist [50]

列出 top 50 (def=50) monitor 监控队列(按sql_exec_start desc排序)

69

monsave <sqlid> [active]|text <exec_id>

保存指定sql_id的sql monitor文件,默认active格式(text格式需指定),保存到当前目录 <sql_id>_ACTIVE.html

70

mon_bind <sql_id>

从v$sql_monitor中获得指定sql_id的绑定变量信息 (适合做批量比较); (可以进一步xml分解)

71

monsavehis <sqlid> [active]|text

12c ; 最后一个rid ; sql monitor report from dba_hist_reports

72

mon_index_create

监控索引创建进度(segment_type='TEMPORARY'阶段; 不是全表扫描阶段)

73

mon_unzip <12cSQLMON>

12c sql monitor做了压缩和base64 编码; 解压成普通文本文件: unzip_<file_name>

74

75

obj <part of obj info> [owner]

例子: ora obj dba_hist% / ora obj %v\$sql% public / ora obj %plan

76

open_cursor [100]

打开游标数超过100(默认) 的session id , 显示top 30

分节点

77

outline <profile|patch> <name>

显示指定sql profile|sql patch 的outline data信息,(不包含sql_plan_baseline)

78

79

params [<pattern>]

查看初始化参数,包括隐含参数: ora params unnest (不需要使用%)

仅当前节点

80

parameter [<pattern>] [2]

dba_hist_parameter last snap / gv$parameter ; 查看参数在最近2(默认)个snapshot内,是否发生了改变

分节点

81

pc [8]

8天(默认)内执行计划发生改变的sql;

不分节点

82

pc2 [8]

8天(默认)内执行计划发生改变的sql; 当前sql使用的执行计划是不是最好的

不分节点

83

pga [50]

显示按PGA_USED_MEM 排序的top 50(默认) process 信息

分节点

84

pga_detail <os_pid> | -mem <size_M>

显示某个指定pid的pga详细使用情况 : ora pga_detail <ospid>显示所有超过阀值<size_mb>的process pga使用详细信息(慎用!,建议先执行ora pga) : ora pga_detail -mem 100

不建议普通DBA使用

85

86

pid <pid>

单行显示指定pid详细信息 (gv$process 与 gv$session 关联)

分节点

87

print_table <sql_text>

示例: ora print_table "select * from v\$session where username=''FRED'' and rownum<=1"

适合多字段显示

88

process <pid>

用print_table的竖列显示模式,显示process详细信息

89

process_dump <pid> <level>

debug用

90

processes [<min_mb>]

与pga命令类似,只显示PGA_MAX_MEM 操作指定阀值(单位M)的process信息

分节点

91

purge <sql_id>

调用SYS.DBMS_SHARED_POOL.PURGE

92

93

raw <date|varchar2|number> <value>

将字段上统计信息low/high_value的raw格式转换成可读格式: ora raw date 7878051410260B => 2020-05-20 15:37:10

94

realmon

类似oratop,只执行一次; 可以用repeat 重复多次执行: ora repeat 5 100 realmon (5秒一次,执行100次)

95

redo

显示redo信息 : redo log按小时统计生成频率; online redo log信息

96

recover_state | recover

gv$fast_start_transactions : 显示smon实例恢复进度

97

resize

显示数据文件能够resize的最小大小

98

99

repeat <interval><count|forever><ora_command>

重复执行命令 ,如 ora repeat 5 100 temp : 每5秒执行一次 temp 命令,执行100次

100

101

rman

显示rman 状态 和 RECOVERY_FILE_DEST 信息

102

103

seq

显示设置可能不合理的sequence (order_flag='Y' or cache_size<=20)

104

seg <object_name>

显示指定对象的segment 信息 (不用加owner)

105

session <sid>

用print_table的方式显示指定session id详细信息

分节点

106

sessions

ora sessions [active]|all (active: 不包括 BACKGROUD)

107

session_event [all]|<noidle>|<px>

默认: group by EVENT; noidle : 不包含idle event ; px : 显示并行进程及等待时间;

108

sh

执行一个命令 ,如: ora repeat 2 5 sh 'ps -edf | grep DESC'

109

sharing <sql_id>

sql version count高,显示各种原因汇总 ; (ora high_version [100] 显示所有sql以及全部的汇总)

分节点

110

sga

显示sga使用情况(gv$sgastat / gv$sga_dynamic_components)

分节点

111

sga_stats | sga_detail

(gv$sga_current_resize_ops / gv$sga_dynamic_components)

112

snap | snapshot

生成一个snapshot (exec dbms_workload_repository.create_snapshot)

113

sparse_index

找出稀疏索引

114

sparse_table

找出稀疏表

115

sql <sqlid> [typical]|<adv>

显示 sql 详细信息: sql_text/sql执行历史/相同signature 10个/相同phv 10个(-s不显示)/ash event/awr 执行计划/当前执行计划/历史执行情况汇总/当前执行情况汇总/相关表的大小行数等信息

116

sql_baseline <sqlid> <sqlid> <PHV>

对指定sql生成baseline

117

sql_check

大表少索引/低效索引/filter多子操作/hash join结果集小 (gv$sql_plan)

118

sql_check_his

大表少索引/低效索引/filter多子操作/hash join结果集小 ( sys.WRH$_SQL_PLAN )

119

sql_patch <sqlid> <hint>

12.2 之前复杂; 12.2之后简单 (bind_aware/monitor/opt_param/parallel等)

120

sql_profile <sqlid> <sqlid> <PHV>

使用sql profile固定执行计划,两种情况

121

sqlhc <sqlid1> [sqlid2] [sqlid3] ...

收集一个或多个sql的sqlhc (需调用oracle官方脚本sqlhc.sql, 将sqlhc.sql放到当前目录,改名为ora_sqlhc.sql)

122

stats

显示当前系统统计信息相关情况

123

sysmetric "yyyy/mm/dd hh24:mi" [30]

DBA_HIST_SYSMETRIC_HISTORY (60秒粒度), 默认 30 分钟

124

125

table <tab_name> [owner]

显示表的相关信息:字段,分区,索引,统计信息等

126

tabidx <table_name>

只显示表的索引信息 (没有owner)

127

tbs_last

从 dba_hist_tbspc_space_usage 快速获取表空间使用情况

128

tbs_usage

从 DBA_TABLESPACE_USAGE_METRICS 快速获取表空间使用情况

129

tbs_frag

tablespace 碎片情况 <=1M / 1M ~ 5M / >5M 3档

130

tbs

显示表空间详细信息

131

tbsinc

显示全部表空间每天增长情况

132

temp

temp tablespace使用情况 (4部分)

133

topash [5]

同 ashtop

134

135

toparea

gv$sqlarea的top sql,分3个维度 : 5 cpu/5 reads/5 elap

136

toparea_by_sig cpu|time|read <50>

v#sqlarea group by force_matching_signature ; top 50 (默认)

137

topsql_by_plan cpu|time|read <50>

v#sql group by phv ; top 50 (默认)

138

139

tophis cpu|read|time <bid><eid>

dba_hist_sqlstat得到top sql: ora tophis cpu <bid> <eid>

分节点

140

tophis_byplan cpu|read|time <bid><eid>

按照plan hash value 统计sql性能指标

分节点

141

tophis_bysig cpu|read|time <bid><eid>

按照signature 统计sql性能指标

分节点

142

toppid [5]

先选操作系统pid的top10, 再过滤关键字为 LOCAL 后的 top 5(默认值)( 用户连接)

143

topseg [bid] [eid]

显示类似awr top segment 信息: AWR Segments by 'logical Reads' and 'physical Reads'

144

top_level <sql_id>

根据 top_level sql_id,找到对应的子 sql_id (dba_hist_active_sess_history)

145

text2sqlid <text_piece>

根据关键字,查找对应的sqlid (建议调试sql 通过注释/* tag001 */方式增加可识别度)

146

tran

显示 gv$transaction (没有commit的dml操作)

147

trc

得到trace 文件所在路径

148

149

undo

显示undo使用情况

150

user | users

列出所有user信息

151

version

显示database version

152

xp <sql_id>

display_cursor ; advanced allstats last

153

xpo <sql_id> [child_number]

xplan.display_cursor ,显示执行计划先后执行顺序; adv mode

154

x <sql_id>

display_awr ; adv mode

155

xo <sql_id> [phv]

xplan.display_awr ,显示执行计划先后执行顺序,adv mode

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老虎刘谈oracle性能优化 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库专家服务
数据库专家服务(Database Expert Service,DBexpert)为您提供专业化的数据库服务。仅需提交您的具体问题和需求,即可获得腾讯云数据库专家的专业支持,助您解决各类专业化问题。腾讯云数据库专家服务团队均有10年以上的 DBA 经验,拥有亿级用户产品的数据库管理经验,以及丰富的服务经验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档