楼主: fxyj2008

关于对ORACLE工作机制的一点疑问

[复制链接]
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:06:13
11#
 楼主| 发表于 2006-9-7 09:18 | 只看该作者
哦,是不是这样的,虽然我select 的时候没有产生scn号,但系统有一个全局的SCN,当我select开始时只要记录下该SCN号,然后比较的时候只要根据这个SCN号和已经提交的SCN号比较就可?

使用道具 举报

回复
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:06:13
12#
 楼主| 发表于 2006-9-7 09:24 | 只看该作者
感谢 SONGHEFEI   和 rollingpig  老兄
当然还有帮助过我的所有老兄

使用道具 举报

回复
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:06:13
13#
 楼主| 发表于 2006-9-7 11:20 | 只看该作者
还有一个问题:
我做update 或者 delete  等更新操作,但还没有commit 的时候也会产生scn号吗?
如果有的话,下面一种情况怎么办:

设想:每个更改都会有SCN,是在上一个SCN+1,按这种理解的话SCN应该是一个全局变量,由DBMS维护,并且自动加1.现在我开了三个会话,分别是 A,B,C,每个会话都做更新操作,按上面的理解我三个会话都会有SCN号,假设A,B,C的三个SCN号分别为1000,1001,1002,过了一段时间,会话B做了一个rollback操作,并关闭B会话,因此SCN为1001也就不存在了,现在会话C做了一个COMMIT操作,因此会话C的剩余redo log和SCN将写入到log file里面去,我想问一下,会话C写到log file 中去的SCN号是否就是1002呢?如果是这样的话,当会话C提交后,会话A也做了COMMIT操作,因此会话A的剩余redo log 和SCN 1000也写入log file 中,现在log file 文件应该看起来是这样的:
.......
.......
会话C所做的一些操作
会话C的SCN号,1002
会话A所做的一些操作
会话A的SCN号:1000

如果是这样的话,也就是说log file 里面的SCN 号并不是递增写的了?

不知scn号是如何维护的,如果我现在做了关机操作,内存中的信息将会消失了,那么开机以后ORACLE是如何找到上一次的SCN号的呢?
如果是根据log file 去找的话,那么我上面的一种情况显然会有问题的

使用道具 举报

回复
论坛徽章:
1
数据库板块每日发贴之星
日期:2006-09-12 01:03:20
14#
发表于 2006-9-7 14:12 | 只看该作者
不应该是这样的吧:
.......
会话C所做的一些操作
会话C的SCN号,1002
会话A所做的一些操作
会话A的SCN号:1000

我想应该是这样的:
.......
会话A的SCN号:1000
会话B的SCN号:1001
会话C的SCN号,1002
……
会话B所做的一些操作
会话B的rollback的SCN号,比如1050
会话C所做的一些操作
……
会话C的commit的SCN,比如1080
会话A所做的一些操作
……
会话A的commit的SCN,比如1100
……
redo不是undo,每个事务都写入到redo里,不会因为rollback回退的。

使用道具 举报

回复
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:06:13
15#
 楼主| 发表于 2006-9-7 14:52 | 只看该作者
to: glm1999
多谢你的回复,我觉得redo log  里面应该是这样的:
会话a的操作
会话c的操作
.....................
会话c提交时产生的SCN 号
会话a的操作
会话a提交时产生的SCN号

由于会话B做了rollback操作,我现在还不清楚是否会从redo log 中删除,望指正

使用道具 举报

回复
论坛徽章:
131
2006年度最佳技术回答
日期:2007-01-24 12:58:48福特
日期:2013-10-24 13:57:422014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142013年新春福章
日期:2013-02-25 14:51:24
16#
发表于 2006-9-7 15:22 | 只看该作者
不会删除,rollback 只是告诉你rollback , 没必要全都抹去……

使用道具 举报

回复
论坛徽章:
1
数据库板块每日发贴之星
日期:2006-09-12 01:03:20
17#
发表于 2006-9-7 15:23 | 只看该作者
不会从redo删除的。

使用道具 举报

回复
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:06:13
18#
 楼主| 发表于 2006-9-7 20:21 | 只看该作者
哦,看了各位的回复,让我想起了更多的问题,等我回去想一想再贴出来!
对了,我上面有一个问题,为什么一直没人回答呢?再贴一遍问题如下:
还有一个问题:
我做update 或者 delete 等更新操作,但还没有commit 的时候也会产生scn号吗?
如果有的话,下面一种情况怎么办:

设想:每个更改都会有SCN,是在上一个SCN+1,按这种理解的话SCN应该是一个全局变量,由DBMS维护,并且自动加1.现在我开了三个会话,分别是 A,B,C,每个会话都做更新操作,按上面的理解我三个会话都会有SCN号,假设A,B,C的三个SCN号分别为1000,1001,1002,过了一段时间,会话B做了一个rollback操作,并关闭B会话,因此SCN为1001也就不存在了,现在会话C做了一个COMMIT操作,因此会话C的剩余redo log和SCN将写入到log file里面去,我想问一下,会话C写到log file 中去的SCN号是否就是1002呢?如果是这样的话,当会话C提交后,会话A也做了COMMIT操作,因此会话A的剩余redo log 和SCN 1000也写入log file 中,现在log file 文件应该看起来是这样的:
.......
.......
会话C所做的一些操作
会话C的SCN号,1002
会话A所做的一些操作
会话A的SCN号:1000

如果是这样的话,也就是说log file 里面的SCN 号并不是递增写的了?

不知scn号是如何维护的,如果我现在做了关机操作,内存中的信息将会消失了,那么开机以后ORACLE是如何找到上一次的SCN号的呢?
如果是根据log file 去找的话,那么我上面的一种情况显然会有问题的

上面的老兄虽然回答了一些,但主要的还没有答复哦

先谢了

使用道具 举报

回复
论坛徽章:
131
2006年度最佳技术回答
日期:2007-01-24 12:58:48福特
日期:2013-10-24 13:57:422014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142013年新春福章
日期:2013-02-25 14:51:24
19#
发表于 2006-9-8 09:03 | 只看该作者
当然不可能是完全线性的了……

并发系统,那可能要求完全线性……

使用道具 举报

回复
论坛徽章:
131
2006年度最佳技术回答
日期:2007-01-24 12:58:48福特
日期:2013-10-24 13:57:422014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142013年新春福章
日期:2013-02-25 14:51:24
20#
发表于 2006-9-8 09:05 | 只看该作者
如何去找,有CKPT程序,定期纪录最后写到磁盘的SCN 到controlfile 里

使用道具 举报

回复

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

本版积分规则 发表回复

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