当前位置: 首页 > news >正文

oracle 大事务的并行恢复导致数据库性能下降--cpu使用率较高处理思路

oracle 大事务的并行恢复导致数据库性能下降--cpu使用率较高处理思路

大型事务的回滚 大型事务的回滚产生非常大的代价,不仅锁定需要的资源

,并且消耗的CPU和IO,尤其是IO将极为密集。这个时候,希望降低回滚所产生

的影响。停止是不可能的,为了保持数据库的一致性,回滚必须完成,所以只

能降低影响。参数fast_start_parallel_rollback可以实现这个调剂,缺省值

为low,表示启动2倍CPU数量的并行进程进行回滚。另外还有high和false两个

值,high表示以4倍CPU数量的并行进程进行回滚。该参数可以动态设置,但是

动态设置可能无法中断并行恢复,重新设置启动为最好的方法,设置

fast_start_parallel_rollback=false之后重新启动数据库即可。
在数据库重新启动之后,v$TRANSACTION视图中将不存在事务信息,
但是V$fast_start_transactions视图可以查找回滚完成了多少。


在大型数据库中,一个大型操作的失败代价是比较高的,严重时甚至会引起数

据库挂起。尤其在KILL大型事务之前检查事务究竟有多大可能是必要的,同时

我们也需要知道回滚已经进行了多少程度。 V$transaction,v$session关联得

到事务大小。 Select t.used_ublk from v$transaction t v$session s

Where t.ses_addr=s.saddr and s.sid=&sid
在事务失败或者kill session之后,持续的监控该语句结果来估计回滚进度。

如果观察到used_ublk几乎不动或者回滚非常慢,可以确定以下是否由于并行恢

复引起(并行恢复有时会引起数据库恢复挂起)。在并行恢复情况下,Smon将

会抓住TX lock,同时应该存在某些PS lock PX进程占用大量的CPU资源。V

$fast_start_servers和v$fast_start_transaction两张视图表示是否执行了并

行恢复。如果发现并行恢复很慢,可以尝试把并行恢复关掉看看是否可以加快

rollback。alter system set fast_start_parallel_rollback = false 该语

句关掉并行rollback 改用串行化。 同样如果是串行化ROLLBACK,同时CPU资源

尚可的话,可以采用并行恢复的方式来加快回滚。如果整体系统已经基本显示

挂住,可以shutdown数据库起用并行rollback。并行恢复可以在$session_wait

中看到很多PX进程等待,Smon进程作为协调进程同时在等待PX进程完成。 数据

库关闭或者kill shadow process之后,在v$transaction中将不能发现事务信

息。这时候在v$fast_start_transaction中有事务信息。如果是8i以前版本,

只能持续监控uet$和fet$表格来查看是否进行rollback,同时Smon应该经常抓

住ST lock。

碰到数据库性能下降,首先要做的事情:
1.首先查找os方面的信息:
top ---查看那个进程占据系统资源最多---这里一般也可以看出是那个进程占

用资源最多。
mem---的使用情况,是否存在大量换页。
系统---i/o是否正常。

2.AWR ---》top 5 user event


这里针对大事务的并行恢复案例做一个简单的分析

1.在awr报告中看到wait for a undo record

----查看历史信息
2.select event,count(*) from dba_hist_active_sess_history
where sample_time < to_timestamp

('20130923093000','yyyymmddhh24mis')
and sample_time > to_timestamp('20130923093000','yyyymmddhh24mis')
and instance_number=1
group by event
order by 2;

---查看那些进程出现了 wait for a undo record
SQL> select sample_time time, session_id sid,

event,p1,p2,program,sql_id
2 from dba_hist_active_sess_history
3 where event = 'wait for a undo record'
4 order by sample_time;

问题解决:
找到smon 进程:
SQL> select pid,program from v$process where program like '%SMON%';

PID PROGRAM
---------- ------------------------------------------------
8 oracle@localhost.localdomain (SMON)

关闭smon的事务恢复功能:
oradebug setorapid 8

oradebug event 10513 trace name context forever ,level 2;

关闭并行事务回滚:
alter system set fast_start_parallel_rollback=false;

重新打开smon事务恢复功能:
oradebug setorapid 8

oradebug event 10513 trace name context off;

确定事务恢复情况:
select * from V$fast_start_transactions;

相关文章:

  • Linux shell编程 3 ---- shell中的判断
  • 未来五到十年PC发展之我所见
  • 关于linux tty命令学习
  • android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序
  • linux stty命令学习
  • SICP习题 (1.12)解题总结
  • 黑马程序员_Set,TreeSet
  • ios开发之你真的了解了KVC吗?
  • 快速排序算法
  • C# 网络编程之webBrowser乱码问题及解决知识
  • Python 入门教程 8 ---- Python Lists and Dictionaries
  • linux上安装RAC时不使用asmlib的多路径配置
  • HDOJ, 杭电1219, ACme简单字符串题
  • Java RandomAccessFile
  • Sass的准备工作有哪些
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • extjs4学习之配置
  • flask接收请求并推入栈
  • IDEA 插件开发入门教程
  • JavaScript创建对象的四种方式
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Objective-C 中关联引用的概念
  • python3 使用 asyncio 代替线程
  • storm drpc实例
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 解析 Webpack中import、require、按需加载的执行过程
  • 前端存储 - localStorage
  • 前嗅ForeSpider采集配置界面介绍
  • 使用agvtool更改app version/build
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 转载:[译] 内容加速黑科技趣谈
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • ionic入门之数据绑定显示-1
  • ###C语言程序设计-----C语言学习(6)#
  • $.ajax,axios,fetch三种ajax请求的区别
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (1)常见O(n^2)排序算法解析
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (九十四)函数和二维数组
  • (一) storm的集群安装与配置
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)Mysql的优化设置
  • (转)ORM
  • (转)原始图像数据和PDF中的图像数据
  • .bashrc在哪里,alias妙用
  • .net core 控制台应用程序读取配置文件app.config
  • .Net Core与存储过程(一)
  • .NET Core中的去虚