暂无图片
oracle 怎么看已经执行过的sql的执行计划?在sql的执行过程中,每一步所花费的时间呢?
我来答
分享
Y
YanLang
2024-02-03
oracle 怎么看已经执行过的sql的执行计划?在sql的执行过程中,每一步所花费的时间呢?

oracle 怎么看已经执行过的sql的执行计划?在sql的执行过程中,每一步所花费的时间呢?

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
广州_老虎刘

楼上回答的第一句话是错误的. explain plan for不是用来查看已经执行过的SQL的执行计划,而是用来预估SQL的执行计划,SQL并没有执行.

已经执行过的SQL, 如果还在内存, 可以用select * from table(dbms_xplan.display_cursor())命令查看;  

如果保存到了awr,可以用select * from table(dbms_xplan.display_awr())命令查看; 

如果SQL被sql monitor捕获,也可以用select DBMS_SQLTUNE.REPORT_SQL_MONITOR() from dual;得到sql monitor显示形式的执行计划.

默认情况下, 执行计划显示的时间都是估算的,不能说完全不可信,大部分情况与实际相差较大. 

如果要调试SQL, 一般要先alter session set statistics_level=all,或者在sql 中使用 /*+ gather_plan_statistics */的hint, 再配合dbms_xplan.display_cursor方法,得到真实的每一步所花费的时间.

暂无图片 评论
暂无图片 有用 9
打赏 0
暂无图片
风行

在Oracle中,可以使用EXPLAIN PLAN FOR语句来查询已经执行过的SQL的执行计划。
在SQL执行过程中,每一步所花费的时间可以通过Oracle提供的执行计划来查看。执行计划是数据库优化器为SQL语句生成的一系列执行操作的顺序。通过查看执行计划,可以了解SQL语句的执行步骤、每个步骤的执行顺序以及每个步骤所花费的时间。

在Oracle中,可以使用EXPLAIN PLAN FOR语句来查看SQL语句的执行计划。执行计划会显示一系列的操作符,每个操作符表示一个执行步骤,并显示该步骤的名称、行数估算、成本等信息。通过分析这些信息,可以了解每个步骤所花费的时间,从而优化SQL语句的执行效率。

暂无图片 评论
暂无图片 有用 9
打赏 0
Thomas

第一次听说select * from table(dbms_xplan.display_awr())这样还能看执行计划。刘老师所言,都是干货和精华。

暂无图片 评论
暂无图片 有用 0
打赏 0
刘晓华
2024-02-06
本来就可以呀
回答交流
Markdown


请输入正文
提交
相关推荐
oracle 的dg是物理复制还是逻辑复制?
回答 2
已采纳
两种模式都有,通常布署DG都是物理复制模式,如果想逻辑复制,还不如布署OGG。
求:oracle 10g升级至oracle 19.3.0.0.0版本操作手册,详情见问题描述
回答 5
我觉得还是用OGG升级,版本差别太大。而且跨平台。不知道你有没有停机时间。我们以前做过一个最后用停机exp这种做的。没有问题。10到12
Oracle执行计划中的A-Rows列的M怎么换算?
回答 2
简单理解就是(除开OMem,1Mem,UsedMem):  K表示10^3,比如150K就是150000  M表示10^6,150M就是150000000当然,
11g启动gsd服务报错
回答 2
暂无文字回复
通过sql文件能看出是哪个版本的mysql导出的吗?
回答 1
可以的,mysqldump导出的文件开头有记录版本信息,比如表示mysqldump版本10.13(对应mysql5.7.33)server(数据库)版本:5.7.38log
用户的user$.exptime有值,而dba_users.expiry_date字段是null。
回答 2
已采纳
这种情况可能是因为用户在创建时设置了密码永不过期,而在查询dbausers表时,没有获取到该用户的过期时间。这种情况下,user$.exptime字段有值,而dbausers.expirydate字段
Oracle11g数据库数据量有50T,每天增量50g左右,该如何制定备份方案,如何验证备份的有效性?
回答 4
已采纳
对于50T的Oracle我们之前的策略是每周六发起全备,每周日0级增备,每天晚上1级增备,归档如果比较频繁,空间过小的话可以每6小时一备。至于备份有效性的验证只能去恢复咯。但是这么大的库要恢复验证备份
sql server是不是没有像oracle一样的模式?
回答 1
已采纳
有啊,默认的模式就是dbo,当然可以自己建;只是说Oracle的user和schema通常创建在一起而已
Oracle的自动段空间管理怎么关闭?
回答 1
已采纳
Oracle主要的空间管理方式有两种,一种是Oracle8i以前的字典管理表空间(DMT)技术,CREATETABLESPACEtablespacenameDATAFILE&x27;datafilep
ORA-01460: unimplemented or unreasonable conversion requested、 ORA-01704: string literal too long
回答 1
建议不要这么长的参数,性能较差,也容易触发bug,可以将对象进行分组,减少参数个数如果实在要改写,就把where条件改写成or