暂无图片
Oracle truncate如果不做对象级检查点会有什么影响呢?
我来答
分享
郑楼
2021-03-23
Oracle truncate如果不做对象级检查点会有什么影响呢?

Oracle在执行drop或truncate操作时,会触发object checkpoint,如果在IO较差的情况下,truncate操作也会很慢,如果内部不做检查点,直接更新一些内部表,会有什么影响吗?

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
你好我是李白

检查点完成与否其实是dbwr是否把脏块写到了检查点发生时刻的RBA以及SCN,写到了检查点就完成了,没写到就没完成。

可通过设置参数log_checkpoints_to_alert=true在alert观测增量检查点跟thread检查点完成情况。

增量检查点跟对象检查点都是为了促进dbwr能在按照检查点队列LRBA时,顺序、不断增进、阶段性渐进式写出。
另外,dbwr除了按照检查点队列写出,还会按照LRUW写出。

所以理论上,我个人认为(仅代表我个人想法,不一定正确):
这次不做,下次做呗,下次检查点,dbwr就需要多写点了,另外,truncate只修改segment header以及一些位图块修改,I/O较差,理论上不会造成truncate太慢。

truncate原理可参考:
TRUNCATE TABLE恢复系列一:深层剖析内部原理
https://www.modb.pro/db/13856

checkpoint详细原理可参考eygle大佬书籍,控制文件一章节:
《深入解析Oracle : DBA入门、进阶与诊断案例》
https://www.modb.pro/download/2633

暂无图片 评论
暂无图片 有用 0
打赏 0
郑楼

我是真实遇到了,在测试环境,IO性能较差,truncate一个1000w的表要90s左右,如果是这个表刚加载到内存,脏块还没有刷到磁盘,truncate就需要把对象级的脏块全部刷到磁盘,如果这个checkpoints不做是不是有其他危害?

暂无图片 评论
暂无图片 有用 0
打赏 0
lastwinner

任何DDL语句在执行前和执行完成后,都会做一个commit动作,知道了这一点,就好理解了。

暂无图片 评论
暂无图片 有用 0
打赏 0
郑楼

commit动作也只是触发日志从log buffer刷到log file的动作,不一定需要刷内存数据脏块吧?

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
Oracle dataguard license怎么收费有人知道吗?
回答 1
如果是ADG列表价在这里:https://www.modb.pro/doc/5494如果是普通DG,不激活可以不额外付费。
windows上Oracle数据库频繁记录ora-1092并且会宕机,这是什么原因?
回答 3
换成linux操作系统
Oracle 容量升怎么转换成千克?
回答 1
密度乘以体积等于质量
复制表
回答 5
创建对象时会在该用户的默认永久表空间中创建一个临时段你是可以查到的,这个阶段归档量会增大要注意空间问题。
Oracle导数据
回答 1
已采纳
vimpar.pardirectoryDPDIRdumpfilet1t2t3.dmptablest1,t2,t3queryt1:"WHERECREATEDTS>TODATE(&x27;
linux怎么彻底卸载oracle
回答 2
已采纳
好办。先吧数据库实例和监听都停了。用命令停止。然后你就删除目录rmrf/u01/app/oracle类似这样的目录以及home目录下的oracle。
Oracle 中想要恢复控制文件,在nomount状态使用show parmeter control file命令去查询控制文件位置。提示Sp2-0158错误
回答 3
SP20158:unknownSHOWoption
学习oracle 11g的grid、asm、分区的,有书籍推荐吗?
回答 2
已采纳
这三本可以瞧瞧《大话OracleGrid:云时代的RAC》《OracleRAC11g实战指南》《OracleRAC核心技术详解》
物化视图可以定时刷新吗?
回答 1
你可以在以下篇文章中查看有关创建物化视图时指定刷新参数的各个细粒度解释,这应该可以解答你的问题,链接见下:https://docs.oracle.com/cd/E1188201/server.112/
ORACLE 11G 双节点 RAC1和RAC2 时间不同步
回答 4
2节点时间相差这么大,按理应该会有一个节点被剔除出集群才对。应首先关闭2节点数据库,向后调整修改系统时间。检查数据库及集群日志情况,看看CTSS服务是否有异常了。