---下面整理笔记来之 itpub 的各位前辈的语录。这里做了一个汇总。仅供学习。

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

关于 truncate table 的一点学习札记的更多相关文章

  1. MySQL学习笔记:delete from与truncate table的区别

    在Mysql数据库的使用过程中,删除表数据可以通过以下2种方式: delete from table_name truncate table table_name (1)delete from语句可以 ...

  2. MySQL DELETE语句和TRUNCATE TABLE语句的区别

    MySQL DELETE语句和TRUNCATE TABLE语句的区别 2010-10-08 16:05 佚名 互联网 字号:T | T 在MySQL数据库中,DELETE语句和TRUNCATE TAB ...

  3. SQL菜鸟学习札记(二)

    五月份一直在写SQL,之后写了一个期末大作业的项目,现在才有时间把之前遇到的各种奇怪的问题整理出来.下一部分札记应该是大作业中使用到的SQL的整理. 一.UPDATE SET语句后面可以并列赋值. 之 ...

  4. [20180630]truncate table的另类恢复2.txt

    [20180630]truncate table的另类恢复2.txt --//上个星期做了truncate table的另类恢复,通过修改数据块的段号,再通过rowid定位收集数据,达到修复的目的.- ...

  5. [20180627]truncate table的另类恢复.txt

    [20180627]truncate table的另类恢复.txt --//前几天看链接http://www.xifenfei.com/2018/06/truncate-table-recovery. ...

  6. mysql 删除表记录 delete和truncate table区别

    MySQL中删除表记录delete from和truncate table的用法区别: mysql中有两种删除表中记录的方法: (1)delete from语句, (2)truncate table语 ...

  7. SQL Server 2008 R2——TRUNCATE TABLE 无法截断表 该表正由 FOREIGN KEY 约束引用

    =================================版权声明================================= 版权声明:原创文章 禁止转载  请通过右侧公告中的“联系邮 ...

  8. SQLite - TRUNCATE TABLE

    https://www.tutorialspoint.com/sqlite/sqlite_truncate_table.htm Unfortunately, no TRUNCATE TABLE in ...

  9. TRUNCATE TABLE (Transact-SQL)

    删除表中的所有行,而不记录单个行删除操作. TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似:但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源 ...

随机推荐

  1. 【LeetCode】Game of Life(生命游戏)

    这道题是LeetCode里的第289道题. 题目描述: 根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机. 给定一个包含 m × n 个格子的面板,每一个格 ...

  2. Leetcode 335.路径交叉

    路径交叉 给定一个含有 n 个正数的数组 x.从点 (0,0) 开始,先向北移动 x[0] 米,然后向西移动 x[1] 米,向南移动 x[2] 米,向东移动 x[3] 米,持续移动.也就是说,每次移动 ...

  3. 九度oj 题目1100:最短路径

    题目描述: N个城市,标号从0到N-1,M条道路,第K条道路(K从0开始)的长度为2^K,求编号为0的城市到其他城市的最短距离 输入: 第一行两个正整数N(2<=N<=100)M(M< ...

  4. 【bzoj4826】[Hnoi2017]影魔 单调栈+可持久化线段树

    题目描述 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实上,他吞噬的诗人灵魂早已成千上万.千百年来,他收集了各式各样的灵魂,包括诗人.牧师.帝王.乞丐.奴隶.罪人,当然,还有英雄.每一个灵魂,都有着自己 ...

  5. 【字符串】BNUOJ 52781 Book Borders

    https://www.bnuoj.com/v3/problem_show.php?pid=52781 [AC] #include<bits/stdc++.h> using namespa ...

  6. rest-assured 将log()中的信息打印到log日志中去的方法

    rest-assured 将log()中的信息打印到log日志中去的方法: ============方法1============== PrintStream fileOutPutStream = n ...

  7. 关于代码调试de那些事

    原文出处:http://www.wklken.me/posts/2014/11/23/how-to-debug.html 关于代码调试de那些事 1.你得明白你在做什么, 保持清醒 2.想清楚了再写代 ...

  8. spring data jpa 查询部分字段列名无效问题

    spring data jpa原生sql查询问题,我只要表其中的几个字段的值,本以为写个原生sql,拿实体类对象去接没问题 结果列名无效,测试了一下,把返回值类型改成List<Object> ...

  9. Linux下使用curl进行http请求(转)

    curl在Linux下默认已经安装,Windows需要自行安装. 下载地址:https://curl.haxx.se/download.html Windows离线版本:链接:http://pan.b ...

  10. Maven生成项目文档

    Maven项目可以通过maven-site-plugin插件生成项目文档,无论什么项目都可以生成. 执行命令: mvn site 生成完成的输出目录在${basedir}/target/site文件夹 ...