`
sjk2013
  • 浏览: 2190321 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

提问者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 的占用率很高這個是由應用所決定的﹐那你多提交看能否降低它的使用率。不過這個并不影響你數據庫的使用。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics