undo系列学习之pub兄弟帖子的整理

长平狐 发布于 2012/09/19 13:56
阅读 75
收藏 0

MySQL连接为什么挂死了?别踩坑!>>>

    提问者xmas171688

    提问时间:2005-1-13 14:45:18

    问题:

在下列2个表中
V$ROLLNAME,V$ROLLSTAT 
谁能帮我解释下 V$ROLLSTAT 的列 每列是干吗的。恳请帮忙!

主要是想知道 哪列是 回滚段大小 !


    整理:

    每列是干什么的,我想,官网给得很明了:http://docs.oracle.com/cd/B28359_01/server.111/b28320/dynviews_2143.htm#REFRN30210

    V$ROLLSTAT中的常用列:

    1)usn:回滚段标识符

    2)rssize:回滚段默认大小

    3)xacts:活动事务数

    在一段时间内增量用到的列:
    WRITES:回滚段写入数(单位:bytes)
    SHRINKS:回滚段收缩次数
    EXTENDS:回滚段扩展次数
    WRAPS:回滚段翻转(wrap)次数
    GETS:获取回滚段头次数
    WAITS:回滚段头等待次数

    通过usn,我们可以将v$rollname和v$rollstat连接起来,来查看更有意义的回滚段的统计信息。如:

SELECT n.name, s.extents, s.rssize, s.optsize, s.hwmsize, s.xacts, s.status
FROM v$rollname n, v$rollstat s
WHERE n.usn = s.usn;

   

    注意:
通过花费时间除以翻转次数,你可以得到一次回滚段翻转(wrap)的平均用时。此方法常用于在长查询中指定合适的回滚段大小以避免'Snapshot Too Old'错误。同时,通过查看extends和shrinks列可以看出optimal是否需要增加。

 

    提问者一路随行

    提问时间:2010-5-7 10:57:32

    问题:

各位大侠,我想请教一下,那些操作可以回滚?commit后还可以回滚?那些操作会自动提交啊?


    整理:

    dml可以回滚
    commit后不能回滚
    ddl、dcl会自动提交

 

    提问者jvkojvko

    提问时间:2011-6-28 11:06:48

    问题:

insert 数据了15个小时以后没有成功,然后手工停止了,然后现在回滚了一天一夜还没有好, 表还是被锁着,有好的解决办法没?


insert的数据量大概3000W


    整理:

    首先,我们须从这个问题中得到经验教训:大批量的数据插入,切记要每隔一段时间提交,控制事务的长度!否则,只能only wait。

 

    提问者lyxing

    提问时间:2009-1-18 08:54:51

    问题:

服务器是红帽LINUX企业4,oracle9204,发现有一个数据库的回滚空间一直在增长,都用了98.63%了,不过也没有见有什么异常情况。会是哪里的问题呢?原来是1G的回滚,后来扩到2G,现在又快满了

    整理:

    原因:
    1. 你存在大的事务需要回滚;
    2. show parameter undo_retention ; --这种情况下减小undo_retention的值
    3. 回滚段中内容说明一下:
    insert 只记录rowid
    update 只记录更新字段的旧值(前镜像)。--update太多
    delete 产生最多的回滚,记录整行记录。 --delete太多

    提问者lmin_432930

    提问时间:2008-5-19 16:29:46

    问题:

有关oracle回滚的问题不解,请帮忙回答

数据库为非归档模式,设其中一个表空间test包含了tt表;
步骤:
1、修改tt表内容,但是没有提交
2、将test表空间offline normal
3、switch logfile几次直到修改tt表的日志覆盖
4、执行rollback
5、switch logfile几次直到当前日志覆盖
6、将test表空间online
7、查询tt内容正常

问题:
1、将test表空间offline后,checkpoint将修改数据保存到数据文件;然后rollback,并switch清除日志,再将test表空间online后正常运行。
那么系统如何获知数据修改是否commit或rollback,有什么机制,或是我理解有问题?多谢! 


    整理:

    1、修改tt表内容,但是没有提交
    2、将test表空间offline normal

    offline 做了隐式 提交了

 

    提问者:susuusus

    提问时间:2004-11-23 09:30:35

    问题:

我的系统是WINDOWS2000 数据库是ORACLE8.1.7 现在有这样一个问题: RBS表空间是2G 建4个回滚段,
现在的情况是每次开机启动ORACLE后RBS表空间占用率是99% 并且四个回滚段状态确是OFFLINE .每次都要手工ONLINE ,
我不明白为什么这样 并且想知道如何解决


    整理:

    1﹑建成公有段,在 init.ora 文件中 加入 rollback_segments = (r01, r02, r03, r04)

    2﹑至于你的 rbs tablespace 有2G﹐我想可以建多些 rollback segment ﹐而 rollback segment 的占用率很高這個是由應用所決定的﹐那你多提交看能否降低它的使用率。不過這個并不影響你數據庫的使用。

 

 

 

 

 

 


原文链接:http://blog.csdn.net/linwaterbin/article/details/7836658
加载中
返回顶部
顶部