新版本 toad 软件中, 比较有用的菜单 (toad10.6 版本)
下边菜单, 在日常工作中出现过的, 显示为 粉色 , 蓝色 表示次一级的重要
session 菜单 new session, end session, session Information, DBMS flashback
Session Information: 显示当前session的用户的情况, 比如权限, 授权等
Database 菜单 (很多功能都是重复的)
administrator: 审计, 参数, redo, tablespace , prameters 等, 这里关于 redo 的内容十分好用.
monitor: 监控 可以与statspack 联系使用.
~ database browser : database 的全部内容, 包括参数, 表空间, 数据文件等
~ database monitor : 动态监视, 包括 logical I/O, session, sga, physical IO, call rates, shared pool, waitevent 等等. (实时, 可能不用)
~ database probe : 也是用来实时监控系统运行情况 (实时, 不用)
注: database monitor, database probe 都是实时监控系统运行, 本身也很耗费资源, 个人感觉还是用快照的方式, 然后生成report, 分析report 比较好一定, 毕竟谁也不能在pc前一动不动的实时监测. 就算是临时发现了问题, 也可以用快速的两次快照, 找到问题的原因.
~ server statistics: 数据库运行的统计信息, waits, latches, sessions 等等
~ Index Monitoring : 监控索引的使用情况
~ session browser : 可以用来 kill session, 另外还有针对 session 的 wait event 等.
~ SGA Trace : 针对 SGA 的使用情况, 详细列出了所有的 sql list.
~ statspack Browser : statspack 的信息浏览
~ SQL Tracker : 打开这个, 你在toad中的所有操作, 都会有对应的SQL语句被输出.
~ top session finder : 最耗费资源的 session
diagnose:
~ Alert log viewer: 查看 alert file 日志
~ CodeXpert : 看来只针对 pl/sql, 加载进来一个对象(procedure, function, package, trigger, view), 进行优化(自动).
~ Extents : 可以看到每个对象(例如 table)的存储情况.
~ DB Health Check: DB健康检查, 默认是所有项目都要运行, 运行需要很多时间.
~ Identify Space Deficits: 查看赤字的存储空间.
~ Log Miner : 可以查看到日志文件中, redo log file 的具体 SQL 语句.
~ Log switch Frequency Map: 可以查看发生 Log switch 的时间点, 根据这个时间间隔判断 redo log file 大小是否合适 (如果redo log file 大小不合适, 因为redo log 是循环工作, 很有可能发生等待)
~ Tablespace Map: 可以看到每个 block 存储哪些内容.
optimize:
~ analyze all objects : 类似 SYS.DBMS_STATS.GATHER_TABLE_STATS 的作用.
~ Estimate Index Size : 估计索引所占存储空间大小.
~ Estimate Table Size : 估计table所占存储空间大小.
~ Explain plan : 执行计划, 一般是先选择一个SQL语句, 然后点工具栏上的小救护车(其实就是这项), 就可以只执行plan.
~ Optimize Current SQL: 输入一个SQL语句, 然后运行, 会出现 Explain Plan 和 Execution Statistics.
~ Pinned Code : 可以查看共享池 shared pool 中的对象(主要是 procedure, function, package, sequence). 貌似用处不大
~ Rebuild Multiple Objects : 重建对象, 比如重建索引, 重建表 等.
~ Rebulid table : 重建表, 很详细的设置
knowledge xpert for pl/sql (有专题, 例如 best practice)
CodeXpert (在pl/sql编辑版的下半部分) 可以对pl/sql语句进行有效的优化提示
1. 系统监控用户设置
做系统级的监控只能用 sys 和 system 用户, 在 toad 中使用 sys 要将中间部分的 sysdba, 用system用户, 中间部分选择 normal. sys 用户只能用来做管理, system本质上是一个普通用户, 被赋予了管理权限.
2. 创建新的连接方式
在 toad 登陆接界面, 点中下部的 TNSNames Editor 按钮, 在弹出的窗口的上边工具栏找到 Add Service按钮, 根据提示, 添加新的连接
注: 虽然手动在 tnsnames.ora中添加也是可以的, 但是用这种方式添加更加稳妥, 添加完后, 你会看到添加后的代码.
3. 使用 toad 紧急恢复数据(闪回)
用例: 在10分钟前(注意这个时间, 因为闪回技术主要依赖于在undo表空间里的数据镜像, undo表空间里的数据如果想不被覆盖, 是有一个时间限制的, 有个参数, 一般是15分钟, 所以这个用例使用的是10分钟前, 如果是1年前, 那么你还想闪回么?) 某操作员不小心对表t的某列做了修改, 现在如何恢复10分钟前的数据
解答:
如果未提交, 则直接 rollback, 如果已经提交了, 则按下面步骤进行恢复
(1) create table t_temp as select * from t as of timestamp sysdate – 1/144; -- 创建一个临时表, 保存了包含10分钟前被修改前的数据
(2) select * from t-1/144; -- 这个没看出来有什么用, 个人感觉应该是 select * from t_temp 确认是否包括需要返回的数据
(3) merge into t as t using t_temp as tt on (t.primarykey = tt.primarykey) when matched then update set t.name = tt.name
4. Excel 文件导出
Excel File 与 Excel Instance 不同, 用 Excel File 导出时, 不同的查询结果都导出到不同的Excel文件中, 而 Excel Instance 导出时, 不同查询结果会导出到同一个 Excel 中的不同页签.
若导出的数据要导入到不同类型的数据库, 则需要再下拉框中选中 Insert Statement, (在想选择excel的地方), 这里注意, 如下图:
5. 使用 toad 监控会话实时情况
查看最耗用资源的session ( database->monitor->Top Session Finder 路径可能不同, 不过 Top Session Finder 找这个就可以了 ), 点执行(播放按钮)
单击饼状图, 会出现session信息, 这些信息里比较重要的是( sid, oracle user, os user, machine )
根据 sid, 在 Editor 窗口中输入: select * from v$session where sid = ‘3232’ 执行, ( 这个sid就是刚刚查出来的那个sid), 通过这里, 可以查看这个session是什么时间登陆的, 如果登陆了很久, 那很可能是死进程, 这里也可以查到 process(进程号), ps-ef|grep 1232 查看该进程
6. 使用 toad 监控索引
database->monitor->index monitoring(路径可能不一样)
补充: 索引的特点是, 方便数据查询, 不方便数据更新, 因此, 索引不能随便建.
经验: 一个索引若三个月没有用到, 就可以删除.
这里的监控索引, 主要是看索引是否被使用.
7. 使用 toad 查看sql执行计划
将要执行的sql粘贴到 sql editor中, 然后点工具栏中的小救护车图标, 注意: 不用执行 sql, 只需要执行计划.
执行计划中的 table access Full 要关注 ( 全表扫描 )
cost 值越大表示耗用资源越多
还要关注最上层的 Cost 值, 在这里有个经验, 以 10000 为界限, 超过 10000 就要予以关注
oracle规则是: 当查询出的数据占记录数的 60% 的时候就不会走索引.
8. 使用 toad 查看各个对象
在 schema browser 中查看.
表空间, 应该关注的是表空间的使用率, 这里也有一个经验值, 当表空间超过 80% 的时候就应该予以关注.
9. 使用 toad 数据库健康检查
database->diagnose->DB Health Check( 路径可能不对 )
10. 使用 toad 对比表结构
database->compare->schemas ( 路径可能不对 )
这个可能很有用, 比如你想重新建立一个数据库而使用以前的数据库时, 可以使用这个功能将原数据库的结构导出来, 再用exp之类的将数据导入.
另外, 可以在页签中使用同步脚本, 点开各个对象后, 可以看到详细脚本
11. toad 秘密
如何知道 toad 在执行某项操作时, 执行了哪些 sql 语句
(1) 打开相应工具
也可以用以下方法打开工具:
(2) 选中 toad
(3) 执行某项操作
在上图的工具中, 就会显示刚刚执行的操作的后台的sql语句