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

[精华] update的机制问题

[复制链接]
论坛徽章:
3
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2006-09-11 15:36:37
21#
发表于 2003-6-5 18:50 | 只看该作者

Re: o

最初由 biti_rainy 发布
[B]1:update的变化前数据写入日志文件,是为了  恢复的时候 写入回滚段的
[/B]


這是你所說的恢復 是指 用戶 Rollback 當前操作 得以恢復數據嗎﹖

還是指 數據庫 的介質恢復 過程 有要用到這個機制.

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2006-09-11 15:36:37
22#
发表于 2003-6-6 11:20 | 只看该作者

Re: o

最初由 biti_rainy 发布
[B]1: 是的,data  buffer 中有回滚段块
[/B]


請教﹕ Data buffer 中的回滾段塊 與 我在設立的表空間的回滾段
是一個什么樣的關系。
     
      這個回滾段塊是僅用于小量數據的更新嗎﹖

       我們在修改數據塊的時候﹐是先將原數據 放在 data buffer  中 的 回滾段塊 而后再寫往 回滾段 表空間嗎﹖如是這樣﹐是出于什么目的。

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2006-09-11 15:36:37
23#
发表于 2003-6-6 11:21 | 只看该作者

Re: o

最初由 biti_rainy 发布
[B]1: 是的,data  buffer 中有回滚段块
[/B]


請教﹕ Data buffer 中的回滾段塊 與 我在設立的表空間的回滾段
是一個什么樣的關系。
     
      這個回滾段塊是僅用于小量數據的更新嗎﹖

       我們在修改數據塊的時候﹐是先將原數據 放在 data buffer  中 的 回滾段塊 而后再寫往 回滾段 表空間嗎﹖如是這樣﹐是出于什么目的。

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2006-09-11 15:36:37
24#
发表于 2003-6-6 11:37 | 只看该作者

Re: Re: Re: 其他数据库跟oracle可能不同

最初由 biti_rainy 发布
[B]

整个物理行全部迁移到块的最上面(不一定是pctfree部分)紧贴最上面一条记录(不管块的中间是否有空隙) [/B]


更新 時 為什么一定要將 這個物理行移到最上面 ﹖

請問當 塊的 中間沒 有 空隙時 在這 個塊內所進行的 物理行的 移動(可以說位置的交換嗎) 我想一定是要借助于第三方的數據塊 ---- 是臨時段 數據塊嗎﹖

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2006-09-11 15:36:37
25#
发表于 2003-6-6 12:35 | 只看该作者
謝謝 BT!!
真要仔細看 一下你的文章了﹐以前你亦有提到要我讀﹐可是一直沒有很好的理解。
看過后 再向你請教。

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2006-09-11 15:36:37
26#
发表于 2003-6-6 12:46 | 只看该作者
在 日志文件中存放 數據修改前與修改后 的 兩種 數據 ﹐那么在 進行介質 恢復時
Oracle 是如 何進行 區分 是 更新前 或是更新后的 數據呢﹖ 根據 SCN ﹖

恢復時  Oracle  是怎么 將 更新 前與 更新 后的數據 分流到 回滾段 與數據文件中的
它是否 是﹕ 將 日志文件  的 更新 前﹑后的兩種 數據  分別存放在 回滾段 與數據
文件中 ﹐而當 這個事件 沒有提交成功時 則利用 存在 回滾段的 數據 來寫入 數據文件
中 ﹖﹖

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2006-09-11 15:36:37
27#
发表于 2003-6-6 16:25 | 只看该作者

Re: Re: Re: o

最初由 biti_rainy 发布
[B]

写在文件是为了保证数据不丢失
而放在内存 是为了 读取  快啊

回滚段在data  buffer 中占的数量可能很大
但到底里面的规则是怎样,不清楚 [/B]


不好意思﹐BT ,還想請教 一下﹕
  那當更新 的數據 沒有提交時﹐更新前的數據 是存放在
data buffer 中的回滾段塊 還是 回滾段文件中呢﹖還是說﹕
先通過 存放在 data buffer 回滾段塊﹐而后通過 dbwr來寫到回滾段
數據文件嗎﹖

我一直以為 非 當前會話來保持讀一致性的來源數據是從回滾段
文件中讀取出來的。如是這樣﹐"放在内存 是为了 读取  快啊 "
請問這是供給誰來讀取的(當沒commit時﹐來提高其它會話的命中率嗎﹖)。如 是你所講﹐當一個批量的更新時
那么data buffer 几乎亦會全部給回滾段塊所占據。

  而"快照太舊"這個錯誤 又是由哪 一個 觸發的呢﹖按照
﹐"放在内存 是为了 读取  快啊 " 來講 ﹐這個也會引發這個
經典錯誤喲﹖

謝謝﹗﹗﹗

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2006-09-11 15:36:37
28#
发表于 2003-6-6 21:20 | 只看该作者
請教 回滾段存放 數據的原則是什么 ﹕
是存放在 修改前的 數據  ﹖還是存 恢復 到修改前的數據的指令。
  
  如是前者﹐那數據 回滾時 是怎么進行處理。
  如是后者﹐那當數據沒有提交時﹐非當前會話所取的數據 怎么來﹐是對這條指令
  進行分析﹐而后擷取其數據。謝謝﹗﹗﹗

使用道具 举报

回复
论坛徽章:
3
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2006-09-11 15:36:37
29#
发表于 2003-6-7 13:06 | 只看该作者
謝謝B T
  
  I  服了  YOU (精神 AND 技朮)!!!

使用道具 举报

回复
论坛徽章:
0
30#
发表于 2012-7-24 11:32 | 只看该作者
受教了

使用道具 举报

回复

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

本版积分规则 发表回复

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