![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
Oracle性能优化:droptable与dbcache
们都知道drop table truncate table时都会先做一次checkpoint 将被删除对象的脏块写入磁盘
客户有一套系统 Oracle 需要做数据迁移 由于种种原因 采用的是逻辑迁移的方式 由于库比较大 超过了 T 而停机时间又有限 因此在正式迁移之前需要做大量的测试 测试的目的 一方面是看迁移流程上是否存在问题 另一方面是看迁移的时候 哪个地方会存在性能瓶颈 并进行优化 同时估算实施迁移时间
第一次测试后 需要把测试产生的大量用户及其对象全部删除 删除用的是drop user username cascade 不幸的是这种方式删除得相当地慢 一个 多个表的用户 删除了 个半小时才删除了 多个表 为什么这么慢?有没有办法提高速度?
drop table既然要做checkpoint 那么在db cache非常大的情况下 这需要消耗的时间是比较长的 如果能够减少这个时间无疑将大幅提高速度 首先尝试做一次checkpoint 将buffer cache全部刷新出去
view plaincopy to clipboardprint?
alter system checkpoint;
alter session set events immediate trace name flush_cache level ;
alter system checkpoint;
alter session set events immediate trace name flush_cache level ;
发现没什么效果
由于db_cache_size有 GB左右 db_keep_cache_size有 G左右 重新设置参数 将db_keep_cache_size设为 将db_cache_size设为 M 重启一下数据库 重新执行删除用户的操作 操作很快完成
lishixinzhi/Article/program/Oracle/201311/17079