- 最后登录
- 2017-10-17
- 在线时间
- 93 小时
- 威望
- 157
- 金钱
- 2803
- 注册时间
- 2012-5-18
- 阅读权限
- 50
- 帖子
- 98
- 精华
- 3
- 积分
- 157
- UID
- 437
|
10#
发表于 2013-8-8 09:42:30
本帖最后由 clevernby 于 2013-8-8 10:03 编辑
有其它同学因掉电发生了crash,地址如下
http://t.askmaclean.com/thread-2811-1-1.html
据此就本问题进一步展开如下讨论,下面是ORA-ALLSTARS Exadata用户组QQ群讨论的部分内容(有删减)
- 上海-神奇宝贝(156658196) 9:14:06
- 这个问题(指上述因掉电发生的crash), 应该就是Oracle采用非严格物理redo引发的
- 上海-神奇宝贝(156658196) 9:14:30
- 掉电后数据库就容易坏掉
- 上海-神奇宝贝(156658196) 9:16:45
- mysql innodb 采用double write解决这个问题; 达梦7采用纯物理redo解决这个问题; Oracle采用鸵鸟政策解决这个问题
- 上海-神奇宝贝(156658196) 9:18:54
- 呵呵, Oracle如何解决这个问题我一直很困惑, 以前在这里也咨询过
- 上海-clevernby(313834644) 9:20:29
- 之前曾提供类似的疑问
- http://t.askmaclean.com/thread-2484-1-1.html
- 神奇宝贝来看看
- 上海-神奇宝贝(156658196) 9:21:38
- 这个问题有个名词,叫“页断裂"
- 上海-clevernby(313834644) 9:21:56
- 似乎当时我的假设是正确的,对于这类不一致,instance recovery是不能恢复的
- 上海-神奇宝贝(156658196) 9:22:19
- 如果页断裂发生在普通的数据块, 也许丢点数据, 标记为坏块,还能混过去
- 上海-clevernby(313834644) 9:22:46
- 和redo的格式有关,Physio-Logical
- 上海-神奇宝贝(156658196) 9:23:41
- 纯物理 redo就没有这个问题了
- 上海-神奇宝贝(156658196) 9:23:59
- 但是纯物理的缺点就是redo比较占空间
- 上海-Anderson Ling(153936828) 9:24:00
- 代价呢
- 上海-clevernby(313834644) 9:24:08
- 但纯物理也会引入其它问题吧,比如redo的量?
- 北京-龚佶敏(5409230) 9:24:12
- 原理都是一样的
- 计算机里面就这些东西
- 上海-神奇宝贝(156658196) 9:25:03
- 其实打开归档, 崩溃后从上一个完整地备份开始用归档,也可以规避这个页断裂问题
- 上海-clevernby(313834644) 9:25:40
- 是的
- 上海-神奇宝贝(156658196) 9:26:56
- 杀进程, 或者oracle 挂掉, 也不太会出现页断裂;
- 上海-神奇宝贝(156658196) 9:27:17
- 只有真正的掉电才有可能
- 北京-龚佶敏(5409230) 9:27:40
- 数据是按页提交给系统底层的,操作系统会确保页的完整性,除非断电
- 上海-clevernby(313834644) 9:29:57
- DM使用Physical Log,log记录的内容会很多,占用很大空间。
- 如B-Tree的分裂操作,要记录约一个完整Page的内容
- 上海-clevernby(313834644) 9:30:23
- 是这样吗?
- 北京-龚佶敏(5409230) 9:30:22
- log的内容不会因为是物理的还是逻辑的,有很大的空间需求差异吧
- 如果有的话,那会成为严重的性能问题
- 上海-神奇宝贝(156658196) 9:31:05
- 空间稍微大一点, 大得不多
- 北京-龚佶敏(5409230) 9:31:29
- 空间需求是数据结构设计导致的,不会因为是物理的还是逻辑的就不一样
- 上海-clevernby(313834644) 9:35:53
- 比如对一个B-Tree的页内插入一条记录,物理上来说要修改Page Header的内容,如页内的记录数要加1,要插入一行数据到某个位置,要修改相邻记录里的链表指针,要修改ITL等的属性。从逻辑上来说,就是在这个页内插入了一行记录。因此逻辑日志只记录:"这是一个插入操作"和"这行数据的内容"。大小就区别在这里
- 上海-神奇宝贝(156658196) 9:37:52
- 正确!逻辑日志的前提是, 这个数据页是合法的, 如果断裂了就全乱了
- 上海-神奇宝贝(156658196) 9:50:20
- 下次和Oracle PK, 就找两台破PC, 跑TPCC, 然后拔电源, 看谁先重起不了
- 上海-clevernby(313834644) 9:53:02
- 无论是使用哪种格式日志,没有好坏之分,有的只是厂商的取舍,Oracle使用半物理半逻辑的格式,也是有其意义的
- 上海-clevernby(313834644) 9:55:26
- 毕竟掉电这种事在重要的生产服务器是不应该发生的,因以预防为主
- 北京Lunar-dm01cel01(5163721) 9:56:25
- 毕竟掉电这种事在重要的生产服务器是不应该发生的,因以预防为主----------》我替thomas说下: 没有完善的备份和灾备还强调自己系统重要,就是耍流氓
- 上海-clevernby(313834644) 9:57:09
- Oracle一定是认为这种事情发生的概率极低,没有必要为此使用纯物理日志进而或大或小地牺牲IO性能。
- 北京Lunar-dm01cel01(5163721) 9:57:21
- 否
- 北京Lunar-dm01cel01(5163721) 9:57:35
- 我认为O觉得重要的系统都应该有完善的规划
- 上海-clevernby(313834644) 9:58:26
- 我说的这种事情就是指“重要系统+没有备份+没有灾备+没有备用电源+其它也没有”
- 上海-clevernby(313834644) 9:58:57
- 显然上述1有N没有的概率是很低的,Oracle是以此作为前提来设计数据库的
- 北京Lunar-dm01cel01(5163721) 10:00:26
- 我个人感觉,O只是从应该怎么做去考虑的,并提供了各种可能的方案: bbed,dul,patch bootstrap$ ,and so on...
复制代码 |
|