Oracle性能优化:droptable与dbcache

 我来答
大沈他次苹0B
2022-11-22 · TA获得超过7336个赞
知道大有可为答主
回答量:3059
采纳率:100%
帮助的人:179万
展开全部

  们都知道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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式