oracle中的事务回滚,ORACLE 死事务的回滚

死事务出现在异常关闭数据库或者事务进程不正常结束,比如KILL -9,shutdown abort的情况下。

当前数据库里的死事务可以通过查询内部表x$ktuxe来获得。

select ADDR,KTUXEUSN,KTUXESLT,KTUXESQN,KTUXESIZ from x$ktuxe where KTUXECFL='DEAD';

ADDR               KTUXEUSN   KTUXESLT   KTUXESQN   KTUXESIZ

---------------- ---------- ---------- ---------- ----------

00002B92FF5D5F68         15         12     314961      43611

KTUXESIZ代表需要回滚的回滚块数。

死事务的回滚进程数可以通过参数fast_start_parallel_rollback来设置。

show parameter fast

NAME                                 TYPE                   VALUE

------------------------------------ ---------------------- ------------------------------

fast_start_io_target                 integer                0

fast_start_mttr_target               integer                120

fast_start_parallel_rollback         string                 LOW

low的设置,会使当产生死事务的时候启用2*CPU数个并行回滚。

我们来模拟一个事务被kill掉的情况,在delete的过程中,把这个事务的进程kill掉:

delete from test;

ERROR:

ORA-03114: not connected to ORACLE

delete from test

*

ERROR at line 1:

ORA-12152: TNS:unable to send break message

然后观察数据库后台的等待事件,发现启动了很多的回滚进程。

SID SPID       EVENT                                P1         P2         P3 SQL_ID             SECON

------- ---------- ------------------------- ------------- ---------- ---------- ------------------ -----

1707 2323       SQL*Net message to client    1650815232          1          0 3t37hp1cnkuux      0

762 2312       read by other session                 3     298397         36                    0

1327 2286       read by other session                 3     298367         36                    0

382 2308       wait for a undo record                0          0          0                    0

384 2274       wait for a undo record                0          0          0                    0

573 2276       wait for a undo record                0          0          0                    0

574 2310       wait for a undo record                0          0          0                    0

762 2312       wait for a undo record                0          0          0                    0

763 2278       wait for a undo record                0          0          0                    0

950 2280       wait for a undo record                0          0          0                    0

951 2314       wait for a undo record                0          0          0                    0

1139 2282       wait for a undo record                0          0          0                    0

1141 2316       wait for a undo record                0          0          0                    0

1516 2320       wait for a undo record                0          0          0                    0

1517 2284       wait for a undo record                0          0          0                    0

1518 2318       wait for a undo record                0          0          0                    0

1519 2288       wait for a undo record                0          0          0                    0

1705 2290       wait for a undo record                0          0          0                    0

191 2306       wait for a undo record                0          0          0                    0

1892 2258       wait for a undo record                0          0          0                    0

2 2270       wait for a undo record                0          0          0                    0

4 2304       wait for a undo record                0          0          0                    0

top - 21:47:42 up 16 days,  3:30,  2 users,  load average: 3.44, 1.94, 1.35

Tasks: 295 total,   1 running, 294 sleeping,   0 stopped,   0 zombie

Cpu(s):  2.6%us,  1.2%sy,  0.0%ni, 79.6%id, 16.3%wa,  0.0%hi,  0.2%si,  0.0%st

Mem:  24679196k total, 20316832k used,  4362364k free,   666864k buffers

Swap: 20482864k total,     3004k used, 20479860k free,  6074052k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

23773 oracle    16   0 1680m 100m  45m D 11.6  0.4   0:05.95 ora_arc0_xdbsb

2258 oracle    16   0 1600m  17m  14m S  6.0  0.1   0:01.56 ora_p000_xdbsb

15652 root      10  -5     0    0    0 D  4.6  0.0   0:10.26 [kjournald]

23642 oracle    15   0 1605m  31m  25m S  2.7  0.1   0:03.51 ora_smon_xdbsb

2264 oracle    15   0 1600m  17m  14m S  1.7  0.1   0:00.32 ora_p003_xdbsb

2266 oracle    15   0 1600m  17m  14m S  1.7  0.1   0:00.31 ora_p004_xdbsb

2306 oracle    16   0 1600m  17m  14m S  1.7  0.1   0:00.33 ora_p024_xdbsb

2262 oracle    15   0 1600m  17m  14m S  1.3  0.1   0:00.31 ora_p002_xdbsb

2268 oracle    15   0 1600m  17m  14m S  1.3  0.1   0:00.31 ora_p005_xdbsb

2270 oracle    15   0 1600m  17m  14m S  1.3  0.1   0:00.31 ora_p006_xdbsb

2274 oracle    15   0 1600m  17m  14m S  1.3  0.1   0:00.31 ora_p008_xdbsb

2280 oracle    15   0 1600m  17m  14m S  1.3  0.1   0:00.31 ora_p011_xdbsb

2282 oracle    15   0 1600m  17m  14m S  1.3  0.1   0:00.31 ora_p012_xdbsb

2286 oracle    15   0 1600m  17m  14m S  1.3  0.1   0:00.31 ora_p014_xdbsb

2292 oracle    15   0 1600m  17m  14m S  1.3  0.1   0:00.31 ora_p017_xdbsb

2298 oracle    15   0 1600m  17m  14m S  1.3  0.1   0:00.32 ora_p020_xdbsb

2310 oracle    15   0 1600m  17m  14m S  1.3  0.1   0:00.32 ora_p026_xdbsb

2312 oracle    16   0 1600m  17m  14m S  1.3  0.1   0:00.31 ora_p027_xdbsb

2314 oracle    15   0 1600m  17m  14m S  1.3  0.1   0:00.32 ora_p028_xdbsb

2318 oracle    15   0 1600m  17m  14m S  1.3  0.1   0:00.30 ora_p030_xdbsb

2320 oracle    15   0 1600m  17m  14m S  1.3  0.1   0:00.32 ora_p031_xdbsb

2260 oracle    15   0 1600m  17m  14m S  1.0  0.1   0:00.28 ora_p001_xdbsb

2272 oracle    15   0 1600m  17m  14m S  1.0  0.1   0:00.30 ora_p007_xdbsb

2276 oracle    15   0 1600m  17m  14m S  1.0  0.1   0:00.31 ora_p009_xdbsb

2278 oracle    15   0 1600m  17m  14m S  1.0  0.1   0:00.30 ora_p010_xdbsb

2284 oracle    15   0 1600m  17m  14m S  1.0  0.1   0:00.30 ora_p013_xdbsb

2288 oracle    15   0 1600m  17m  14m S  1.0  0.1   0:00.33 ora_p015_xdbsb

2290 oracle    15   0 1600m  17m  14m S  1.0  0.1   0:00.29 ora_p016_xdbsb

2294 oracle    15   0 1600m  17m  14m S  1.0  0.1   0:00.33 ora_p018_xdbsb

2296 oracle    15   0 1600m  17m  14m S  1.0  0.1   0:00.31 ora_p019_xdbsb

2300 oracle    16   0 1600m  17m  14m S  1.0  0.1   0:00.33 ora_p021_xdbsb

2302 oracle    16   0 1600m  17m  14m S  1.0  0.1   0:00.32 ora_p022_xdbsb

2304 oracle    15   0 1600m  17m  14m S  1.0  0.1   0:00.30 ora_p023_xdbsb

2308 oracle    16   0 1600m  17m  14m S  1.0  0.1   0:00.31 ora_p025_xdbsb

2316 oracle    15   0 1600m  17m  14m S  1.0  0.1   0:00.31 ora_p029_xdbsb

23634 oracle    15   0 1609m  29m  17m S  0.7  0.1   0:06.28 ora_dbw0_xdbsb

23636 oracle    15   0 1607m  26m  15m S  0.7  0.1   0:05.99 ora_dbw1_xdbsb

2321 oracle    15   0 12872 1252  816 R  0.3  0.0   0:00.07 top

由于我的服务器上的CPU数较多,ORACLE启动了2*CPU数个回滚进程,这些ora_pxxx_xdbsb都是后台启动的并行回滚的进程。经常会发现回滚的进程间会产生资源的争用,例如buffer busy waits等待事件。导致回滚的速度非常慢,我们可以通过调整参数  fast_start_parallel_rollback 为false,这样回滚的进程就只会有一个,速度有时候反而比并行回滚还快。而且也会解决回滚进程数太多,导致回滚进程占用了太多的系统资源。大事务运行过程中被异常kill掉是一件比较严重的事情,死事务的回滚可能会占用掉你很多的系统资源。

回滚过程中,我们通过观察x$ktuxe.ktuxesiz减少的速度来评估回滚的速度。可以根据以下算法来粗略的估算回滚需要的时间,这里是小时:

declare

l_start number;

l_end   number;

begin

select ktuxesiz

into l_start

from x$ktuxe

where KTUXEUSN = 10

and KTUXESLT = 39; ---------这里根据实际数字来填写

dbms_lock.sleep(60);  ---------可以缩小这个时间,但是太小,可能会导致误差较大

select ktuxesiz

into l_end

from x$ktuxe

where KTUXEUSN = 10

and KTUXESLT = 39; ---------这里根据实际数字来填写

dbms_output.put_line('time cost Day:' ||

round(l_end / (l_start - l_end) / 60, 2));

end;

/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据数据可视化设计原则_数据可视化设计的8顶帽子

大数据数据可视化设计原则8 hats of data visualization are basically the important persons and their roles that are basically required to carry out data visualization are as follows: 数据可视化有8个基本要素,而进行数据可视化所需的基本角色如下&#…

debian8.8安装谷歌浏览器

第一步:下载: wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb //32位 wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb //64位第二步:安装dpkg -i google-chrome*.deb…

MB_LEN_MAX常数,带C ++示例

C MB_LEN_MAX宏常量 (C MB_LEN_MAX macro constant) MB_LEN_MAX constant is a macro constant which is defied in climits header, it is used to get the maximum number of bytes in a multibyte character, for any locale, it returns maximum number of bytes that a m…

php谷歌收录接口,php实现查询百度google收录情况(示例代码)

PHP$SEOdetail array();$domain !empty($_GET[q]) ? $_GET[q] : www.mycodes.net;baidudetail($domain);googledetail($domain);var_dump($SEOdetail);function baidudetail($domain) {$baidu_site http://www.baidu.com/baidu?wordsite%3A . $domain;$baidu_link http:/…

Linux学习第三步(Centos7安装mysql5.7数据库)

版本:mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar 前言:在linux下安装mysql不如windows下面那么简单,但是也不是很难。本文向大家讲解了如何在Centos7下如何安装mysql5.7版本,如果有什么问题和错误的地方,欢迎大家指出。 注释&…

linux oracle删除恢复数据恢复,Linux下Oracle误删除数据文件恢复操作

检查数据文件的位置如下:SQL> select name from v$datafile;NAME--------------------------------------------------------------------------------/u01/app/Oracle/oradata/marven/system01.dbf/u01/app/oracle/oradata/marven/undotbs1.dbf/u01/app/oracle/…

数据库如何处理数据库太大_网络数据库中的数据处理

数据库如何处理数据库太大Before learning the data manipulation in a network model, we are discussing data manipulation language, so what is the data manipulation language? 在学习网络模型中的数据操作之前,我们正在讨论数据操作语言,那么什…

oracle12537错误,ORA-12537:TNS:connection closed错误处理方法

1.ORA-12537:TNS:connection closed错误处理过程检查监听正常,Oracle服务也是正常启动的,但是登录不进去。2.解决方案1. cd $ORACLE_HOME/bin/ 进入bin目录2. ll oracle-rwxrwxrwx. 1 ora12 dba 323762222 6?. 14 19:12 oracle3.chmod 6571 oracle 更改…

操作系统中的死锁_操作系统中的死锁介绍

操作系统中的死锁1.1究竟什么是僵局? (1.1 What exactly is a deadlock?) In a multiprogramming environment, there may be several processes with a finite number of resources. A process may request another resource while still holding some of the oth…

《云数据管理:挑战与机遇》2.3 数据库系统

本节书摘来自华章出版社《云数据管理》一书中的第2章,第3节,作者迪卫艾肯特阿格拉沃尔,更多章节内容可以访问云栖社区“华章计算机”公众号查看本节中,我们将为数据库系统中的一些主要概念提供一个相当抽象、简洁和高层次的描述。…

sql server与oracle的分页,详解SQLServer和Oracle的分页查询

不管是DRP中的分页查询代码的实现还是面试题中看到的关于分页查询的考察,都给我一个提示:分页查询是重要的。当数据量大的时候是必须考虑的。之前一直没有花时间停下来好好总结这里。现在又将Oracle视频中关于分页查询的内容看了一遍,发现很容…

java treemap_Java TreeMap lastEntry()方法与示例

java treemapTreeMap类的lastEntry()方法 (TreeMap Class lastEntry() method) lastEntry() method is available in java.util package. lastEntry()方法在java.util包中可用。 lastEntry() method is used to return the entry (key-value pairs) that exists with the large…

LeetCode OJ 之 Valid Anagram

题目: Given two strings s and t, write a function to determine if t is an anagram of s. For example,s "anagram", t "nagaram", return true.s "rat", t "car", return false. Note: You may assume the string…

oracle光标位置无效,解决在Form表单中光标移动不了问题

apply p8727236_10123 for Developer Suite 10.1.2.3 in Linux首先到oracle的技术支持下载所需补丁,然后1先打补丁7121788,把p7121788_10123_LINUX.zip解压到/home/oracledev目录下(ORACLE_HOME为/u01/app/oracledev/OraHome_dev)$cd /home/oracledev/7121788$expo…

java treemap_Java TreeMap HigherKey()方法与示例

java treemapTreeMap类HigherKey()方法 (TreeMap Class higherKey() method) higherKey() method is available in java.util package. HigherKey()方法在java.util包中可用。 higherKey() method is used to return the lowest key value element higher than the given key e…

centos配置ipv6地址

首先打开网站注册一个账号:http://www.tunnelbroker.net创建一个ipv6的地址:把下面的命令在linux上执行一遍,这个方式是临时生效,重启网卡和重启系统自动失效。把上面的命令保存到一个配置文件中:vi /etc/sysconfig/ne…

php oracle 需要libmysql.dll么_,Windows7环境下Apache+PHP+MySQL完美配置

写作此篇文章的目的在于记录Windows 7环境下成功配置WAMP环境, 初学者在不使用整合好的WAMPServer和XAMPP的情况下徒手配置整合环境貌似有很多意想不到的问题. 这将是我们需要讨论的.我将重现几个经典的问题, 并一一排除. 希望对各位看官有点借鉴作用.一. Apache在整合PHP后无法…

stringreader_Java StringReader skip()方法与示例

stringreaderStringReader类skip()方法 (StringReader Class skip() method) skip() method is available in java.io package. skip()方法在java.io包中可用。 skip() method is used to skip the given number of characters in the stream. skip()方法用于跳过流中给定数量的…

NFS部署及优化(一)

NFS部署及优化(一)一、NFS的基本概念NFS network file system 网络文件系统必然通过网络通信来实现文件的访问和写入,所以做这个实验的话最好有两台虚拟机配置:A:一个192.169.50.201为server端B:一个192.169.50.200为…