首页 > 其他分享 >SMON: Parallel transaction recovery tried

SMON: Parallel transaction recovery tried

时间:2023-09-13 10:00:48浏览次数:52  
标签:回滚 used recovery 并行 fast start SMON Oracle tried

这个一般是在 具有在跑大数据量的 transaction的时候 kill 掉了进程而导致 smon 去清理回滚段时导致的。这个在业务高峰期的时候,如果发现这个,有可能导致SMON 占用了 100% cpu 而导致 系统hang在那边。即使你shutdown immediate,Oracle也会等待 smon 清理完毕才能关机,而这个等待过程也许是漫长的。如果你shutdown abort,那么oracle 会马上 shutdown ,但是,当你 startup的时候,可能就会很慢,因为 smon 会接着清理 undo,这个等待过程也许是很漫长的:
这一次回滚由前一天上午11持续到隔天到早上6点
当Oracle处于open 状态,当Oracle回滚事务的时候,可以从used_urec,used_ublk数值可以初步估计Oracle回滚事务的速度。

SQL> select a.sid, a.username, b.xidusn, b.used_urec, b.used_ublk where a.saddr=b.ses_addr;

当Oracle非正常关闭(如shutdown abort)时,再次open时v$transaction重置。或处于业务繁忙期,smon进程事务回滚,查询视图V$FAST_START_TRANSACTIONS中字段UNDOBLOCKSDONE,UNDOBLOCKSTOTAL估算smon恢复进度。
查看UNDO段使用情况:

SELECT r.NAME 回滚段名,s.sid SID,s.serial# Serial,
       s.username 用户名,s.machine 机器名,
       t.start_time 开始时间,t.status 状态,
       t.used_ublk 撤消块,USED_UREC 撤消记录,
       t.cr_get 一致性取,t.cr_change 一致性变化,
       t.log_io "逻辑I/O",t.phy_io "物理I/O",
       t.noundo NoUndo,g.extents Extents,substr(s.program, 1, 50) 操作程序
  FROM v$session s, v$transaction t, v$rollname r,v$rollstat g
 WHERE t.addr = s.taddr
   AND t.xidusn = r.usn
   AND r.usn = g.usn
 ORDER BY t.used_ublk desc;

UNDO段分配情况:

SELECT r.status "Status",
       r.segment_name "Name",
       r.tablespace_name "Tablespace",
       s.extents "Extents",
       TO_CHAR((s.bytes / 1024 / 1024), '99999990.000') "Size"
  FROM sys.dba_rollback_segs r, sys.dba_segments s
 WHERE r.segment_name = s.segment_name
   AND s.segment_type IN ('ROLLBACK', 'TYPE2 UNDO')
  ORDER BY 5 DESC;

可以通过下面命令,查看事务回滚估算时间

方法一:
SQL> select  undoblockstotal "Total", undoblocksdone "Done", undoblockstotal-undoblocksdone  "ToDo",decode(cputime,0,'unknown',to_char(sysdate+(((undoblockstotal-undoblocksdone) 
     / (undoblocksdone / cputime)) / 86400),'yyyy-mm-dd hh24:mi:ss'))     "Estimated time to complete",to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')    from  v$fast_start_transactions;
方法2:
select ktuxeusn, to_char(sysdate,'DD-MON-YYYY HH24:MI:SS') "Time", ktuxesiz, ktuxesta from x$ktuxe where ktuxecfl = 'DEAD'; 
直接显示结束时间

回滚并行参数
涉及参数FAST_START_PARALLEL_ROLLBACK,由于是动态参数,可以立即生效

alter system set fast_start_parallel_rollback=false;

共三个参数可以设置

false:关掉并行

low:低并行(默认) 2 * CPU_COUNT

high:高并行 4 * CPU_COUNT

需要注意的是Oracle在回滚大事务并行回滚,但是在实践中可以发现当fast_start_parallel_rollback= Low/High,即启用并行回滚时常有并行进程因为各种资源互相阻塞导致回滚工作停滞的例子,当遭遇到这种问题时将fast_start_parallel_rollback设置为FALSE一般可以保证恢复工作以串行形式在较长时间内完成。

CPU相关可以查看

SMON: Parallel transaction recovery tried_kill


cpu_count 表示oracle可以使用逻辑cpu数量

parallel 表示线程(大于1,代表可以超线程)

第一个参数的cpu个数,在linux下 cat /proc/cpuinfo processor等几个命令可以查看

windows下 cmd 输入wmic 输入cpu get

可以通过查看视图v$fast_start_servers中字段STATE ,如果只有一进程处于RECOVERING,其他进程处于IDLE,则可考虑将FAST_START_PARALLEL_ROLLBACK设置为false,关闭并行恢复。如果所有进程都处于RECOVERING状态,则可以考虑加大恢复进程,将其设置为high。

参考文档

https://blog.csdn.net/vic_qxz/article/details/52723598

http://blog.itpub.net/23850820/viewspace-2122654/

http://blog.sina.com.cn/s/blog_14d5a51a90102vsk4.html

标签:回滚,used,recovery,并行,fast,start,SMON,Oracle,tried
From: https://blog.51cto.com/u_13482808/7451999

相关文章

  • easyrecovery 2023年最好用的数据恢复软件
    EasyRecovery是一款操作简单、功能强大数据恢复软件,通过easyrecovery可以从硬盘、光盘、U盘、数码相机、手机等各种设备中恢复被删除或丢失的文件、图片、音频、视频等数据文件。easyrecovery数据恢复软件,是国内顶尖工作室的技术杰作。它是一个硬盘数据恢复工具,能够帮你恢复丢失的......
  • Recovery下显示本地化文字分析
    在本文中我们主要分析google在recovery中根据地区信息(locale)的不同,来显示国际化文字的机制。在recovery下进行升级时,不论是ota升级还是sideload升级方式,如果当前系统区域设置为中文,在进度条上面就会看到“正在安装系统更新…”这几个字,如果改变系统的区域,在这种情况下会看到下......
  • Android Recovery UI浅析1——概览
    最近在作一个在recovery中显示文字的工作,所以对这块研究较多,现在把研究的一点新的结果分享出来,如果有什么错误也欢迎大家在下面评论。 Android的Recovery中,利用 boottable/recovery下的minui库作为基础,采用的是直接存取framebuffer的方式,来完成recovery中所需的各种UI的绘制。......
  • event 10513将禁止smon进程进行事务回滚
    Oracle参数之event10513发布时间:[2012-4-10]    来源:    作者:    点击:我们设置Oracle参数event10513将禁止smon进程进行事务回滚。在进行troubleshooting时,如shutdownabort后设置该速度可以加快数据库的open速度,注意加快速度的同时,也可能带来数据库一致性问......
  • ThinkPad -- 升级至 Vista 前需要先卸载Rescue and Recovery
    http://www.91bjb.com/bbs/redirect.php?fid=30&tid=39791&goto=nextoldsetX61/T61/X200/T400/T500/W500/W700使用XP安装盘安装系统及驱动全攻略(视频)ThinkPad--升级至Vista前需要先卸载RescueandRecoveryThinkPad--升级至Vista故障现象较旧版本的RescueandRe......
  • mongodb从库无法启动一例(replication_recovery.cpp)
    环境:OS:centos7mongodb:4.4.22背景:1主1从1仲裁的环境,修改从库的集群ip后,执行如下操作后发现无法启动myrepl:PRIMARY>rs.remove("192.168.1.104:29001")myrepl:PRIMARY>conf=rs.conf()myrepl:PRIMARY>conf.members[1].host="192.168.1.107:29001"myrepl:PRIMARY>rs.r......
  • 62.Oracle的实例恢复(instance recovery)和介质恢复(media recovery)
    Oracle数据库中的SCN说明:4种SCN:系统检查点(SystemCheckpoint)SCN数据文件检查点(DatafileCheckpoint)SCN结束SCN(StopSCN)开始SCN(StartSCN)1)systemcheckpointscn --当checkpoing完成后,oracle将systemCheckpointScn号存放在控制文件中,可以通......
  • Scala连接Hbase集群出现异常tried to access method com.google.common.base.Stopwatc
    总结/朱季谦在新项目上创建以下Scala代码去连接Hbase集群,用来判断Hbase是否存在某张表。//离线Hbasevalconf:Configuration=HBaseConfiguration.create()conf.set("hbase.zookeeper.quorum","192.168.1.200")conf.set("hbase.zookeeper.property.clientPort","2181&......
  • 编译运行Secure Value Recovery Service v2
    下载项目gitclonehttps://github.com/signalapp/SecureValueRecovery2.git 编译makedockersh报错 修改DockerfileARGPROTOC_GEN_GO_GITREV=6875c3d7242d1a3db910ce8a504f124cb840c23aRUNgoenv-wGOPROXY=https://goproxy.cn,directRUNgoinstallgoogle.......
  • Ubuntu正常启动黑屏,但可以使用recovery resume启动
    硬件:huaweimatebookEi712代iT问题:安装Ubuntu系统grub正常工作,直接启动黑屏,需强制关机。尝试:grub使用recoveryresume启动成功,但分辨率、刷新率不可调整。分析:显卡兼容问题处理方法:百度解决决方案:首先recoveryresume启动,进入终端方案一:直接修改grub.cfgsudoge......