设为首页 收藏本站
查看: 381|回复: 0

[经验分享] 关于 truncate table 的一点学习札记

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-7-31 09:41:07 | 显示全部楼层 |阅读模式
truncate table后,oracle会回收表和其表中所在的索引到initial 大小,也就是初始分配的segments大小
truncate和drop一样都是ddl语句, 操作立即生效,原数据不放到rollback segment中,不能回滚
truncate table执行很慢可能有以下几个原因:
首先要明白truncate table是DDL操作,会重置HWM。
1.查看是不是DML操作锁定了某些记录
2.segment header竞争

truncate 表慢可能跟extent的数量有关系
比如说,你一个表 size 100M,每个10M ,10个extent
而又一个表 size 50M ,每个8K,6400个extent
那么,第二个表的truncate就会比第一个慢上好多

通常来说是由于extent 太多,truncate时在做回收extent的动作
这也是 local management比 dictionary management好的其中一点。
如果担心下次碰到同样问题
可以考虑使用
truncate table test reuse STORAGE 的语句,可以避免hung在回收extent上。
就要用到 分次回收 的方式了
比如说,100M的表,每次回收 20M,在感觉上可能好点。
truncate table t4 reuse STORAGE ;
alter table test_tun deallocate unused keep 80M;
alter table test_tun deallocate unused keep 60M;
alter table test_tun deallocate unused keep 40M;
alter table test_tun deallocate unused keep 20M;
truncate table test_tun  drop storage;

如果truncate table 非常慢 ,可以按照以下方法来诊断:
1.请查询 相应的session 在 v$session_wait 视图中的等待事件
2.可以用oradebug hanganalyze分析系统挂起的原因
3.如果为了试验目的,更可以做个10046 level 8的event


###################
### BUG lists
###################
truncate的时候,dbwr占用cpu高不高?可以试一下下面文档中的workround (alter system flush buffer_cache; 后再truncate),如果生效应该就是了,你可以升到10.2.0.4.3
是不是这个bug不好说,如果日志的大小不足导致日志切换hang住,引起dbwr的等待,出现不少free buffer busy的等待,而truncate又要做checkpoint,所以这时候前台进程也要等待dbwr,导致enqueue RO的wait变长
---------------------------------------------
Bug 8544896  Waits for "enq: RO - fast object reuse" with high DBWR CPU
This note gives a brief overview of bug 8544896.
The content was last updated on: 08-JAN-2010
Click here for details of each of the sections below.
Affects:
Product (Component) Oracle Server (Rdbms)
Range of versions believed to be affected Versions >= 10.2.0.4  
Versions confirmed as being affected 10.2.0.4
Platforms affected Generic (all / most platforms affected)
It is believed to be a regression in default behaviour thus:
    Regression introduced in 10.2.0.4
Fixed:
This issue is fixed in 10.2.0.4.3 (Patch Set Update)

Symptoms: Related To:
Performance Affected (General)
Performance Of Certain Operations Affected
Waits for "enq: RO - fast object reuse"
Truncate
_DB_FAST_OBJ_TRUNCATE

Description
This problem is introduced in 10.2.0.4.
Sessions can wait on "enq: RO - fast object reuse" while DBWR consumes
lots of CPU when performing truncate type operations.
Workaround
Flush the buffer cache before truncating
OR
set _db_fast_obj_truncate = FALSE.
Please note: The above is a summary description only. Actual symptoms can vary. Matching to any symptoms here does not confirm that you are encountering this problem. Always consult with Oracle Support for advice.
References
Bug:8544896 (This link will only work for PUBLISHED bugs)
Note:245840.1 Information on the sections in this article

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-23003-1-1.html 上篇帖子: one command 一键收集 oracle 巡检信息(包含dbhc,awr reports) 下篇帖子: Win8.1OS64位oracle11安装配置及PL/SQL Developer如何连接64位oracle
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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