123
返回列表 发新帖
楼主: solearn

请问undo segment entry记录在哪里?

[复制链接]
论坛徽章:
0
21#
发表于 2006-6-29 09:27 | 只看该作者
谢谢

使用道具 举报

回复
论坛徽章:
0
22#
发表于 2006-6-29 22:52 | 只看该作者
instance recovery刚开始的时候先从当前日志开始,如果没问题,则继续下步,即检查各个数据文件是否和控制文件一致,根据这个来判断是否要恢复。

这个看实例启动的时候就知道了

使用道具 举报

回复
论坛徽章:
22
2010新春纪念徽章
日期:2010-03-01 11:08:33马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:08:092012新春纪念徽章
日期:2012-02-13 15:08:092012新春纪念徽章
日期:2012-02-13 15:08:092012新春纪念徽章
日期:2012-02-13 15:08:092012新春纪念徽章
日期:2012-02-13 15:08:09
23#
发表于 2006-6-30 10:58 | 只看该作者

Re: 再问"undo segment entry记录在哪里?"

最初由 tiger_zhangyz 发布
[B]insert /*+ append / nologging 模式下 没有redo log,如何恢复?
因为我可以rollback [/B]


我的印象是.

在insert  /*+ append /的情况下, Oracle并不是直接在原来的segment上进行扩展, 而是先分配一个临时的segment来存放这些数据, 在整个命令成功之后, 再将这个临时的segment加到insert的对象上去..

如果需要回滚, 系统也会直接将这个临时的segment再摘除..(通过recusive sql 直接修改seg$等相关表).

这也是为什么 insert /*+ append /之后, 我们不能对这个表进行操作的原因, 因为如果我们可以进行正常的insert/update就可能导致临时segment嫁接过来的那些extent出现异常, 导致数据库的不一致..

使用道具 举报

回复
论坛徽章:
1
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
24#
发表于 2006-6-30 17:51 | 只看该作者

Re: Re: 再问"undo segment entry记录在哪里?"

最初由 jametong 发布
[B]

我的印象是.

在insert  /*+ append /的情况下, Oracle并不是直接在原来的segment上进行扩展, 而是先分配一个临时的segment来存放这些数据, 在整个命令成功之后, 再将这个临时的segment加到insert的对象上去..

如果需要回滚, 系统也会直接将这个临时的segment再摘除..(通过recusive sql 直接修改seg$等相关表).

这也是为什么 insert /*+ append /之后, 我们不能对这个表进行操作的原因, 因为如果我们可以进行正常的insert/update就可能导致临时segment嫁接过来的那些extent出现异常, 导致数据库的不一致.. [/B]

如果按照这个观点,那岂不是分配新的extent?
而众所周知,insert /*+ append */ 是从hwm 之上进行分配空间,并不是分配新的extent ! 我认为如果需要扩展,还是在segment 上直接进行extent 分配!!

使用道具 举报

回复
论坛徽章:
0
25#
发表于 2006-7-6 16:41 | 只看该作者
我的印象是.

在insert /*+ append /的情况下, Oracle并不是直接在原来的segment上进行扩展, 而是先分配一个临时的segment来存放这些数据, 在整个命令成功之后, 再将这个临时的segment加到insert的对象上去..

如果需要回滚, 系统也会直接将这个临时的segment再摘除..(通过recusive sql 直接修改seg$等相关表).

这也是为什么 insert /*+ append /之后, 我们不能对这个表进行操作的原因, 因为如果我们可以进行正常的insert/update就可能导致临时segment嫁接过来的那些extent出现异常, 导致数据库的不一

%%%%%%%%%%%%%%%%%


直接插入分窜行和并行,窜行通常就是我们所说的加APPEND,而并行则通常是指定enable paraller dml,无论窜行并行都是有分区表和非分区表的说法,窜行直接插,对分区和非分区表,都是直接在高水位上面进行插入,而并行直接插,对分区表是直接在高水位上进行插入,而对非分区表则是要分配一个临时的段进行插入,提交后在合并段

显然,楼上说的是最后一种情况,并行插入非分区表,未提交之前我们不能对这些直接插入的表进行DML甚至查询(同一会话),是因为在直接插的过程中,这些数据都是不可见的,也就是说未知的,这是为了保证数据的一致性。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表