忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
楼主: tony_trh

[数据库] 再没有比ORACLE 还垃圾的数据库了 [复制链接]

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
发表于 2013-02-26 09:35 |显示全部楼层
回复 12# mike79


    兄弟,这样说就是你的不对了。

  首先,备库不是实时的,是基于COMMIT提交和SWITCH LOG日志切换的。也就是说,木有提交的,日志木有切换之前,
主库的更新是不会在备库更新的。这个时差,要看你的数据量大小和日志文件大小。

  其次,DG本来就是个异地容灾,不更新吧,你又叫嚷嚷说什么破东西,半天不更新。更新吧,你又叫嚷嚷说我删除错了,谁让它更新这么快。
再说了,删除错了,有日志记录可以回滚,还有闪回可以恢复。

  话说,数据库根本就不会去防范你个人的失误操作,它怎么知道你是正常命令还是低级错误呢,DBA不是随便当的,自己的错误不要怪系统。

论坛徽章:
0
发表于 2013-02-26 16:09 |显示全部楼层
对 我也觉得 有时候安装本来oracle弄个脚本文件就把很多默认参数就改了 但是他非要让你自己弄,这确实很烦人

论坛徽章:
12
丑牛
日期:2014-05-10 16:11:3315-16赛季CBA联赛之同曦
日期:2016-02-01 20:28:25IT运维版块每日发帖之星
日期:2015-11-10 06:20:00操作系统版块每日发帖之星
日期:2015-10-28 06:20:002015亚冠之塔什干棉农
日期:2015-06-04 11:41:56技术图书徽章
日期:2013-09-23 13:25:58CU大牛徽章
日期:2013-09-18 15:21:17CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:20:58CU大牛徽章
日期:2013-09-18 15:20:48数据库技术版块每日发帖之星
日期:2016-02-08 06:20:00
发表于 2013-02-26 18:11 |显示全部楼层
本帖最后由 mike79 于 2013-02-26 18:14 编辑
flutter 发表于 2013-02-26 09:35
回复 12# mike79
首先,备库不是实时的,是基于COMMIT提交和SWITCH LOG日志切换的。也就是说,木有提交的,日志木有切换之前,
主库的更新是不会在备库更新的。这个时差,要看你的数据量大小和日志文件大小。

Oracle DG支持在主库写入重做日志时,就将重做纪录传输到备库并apply。所以首先,你这个首先就错了。
其次,Oracle DG的容灾方案支持一主多备模式,所以没必要嚷嚷的。一个备库做realtime apply,令一个备库做delay apply。主库宕了需要立即恢复业务?OK,起realtime apply的备库。开发人员误删除了数据需要尽快恢复?OK,从delay apply的备库上找回。日志纪录回滚?靠,已经commit的操作怎么回滚?难道要靠logminor慢慢找?数据库闪回?阿,我这个是9i老数据库,没这个功能。什么,这是开发人员的问题,和DBA没关系?靠,你不知道DBA的一个工作任务就是给开发人员擦屁股么?
最后,数据库是不防范个人失误,比如开发人员误删除数据,所以才要配置DBA阿。要是什么都OK,要归档干吗?要DG干吗?要RAID干吗?要备份干吗?要容灾干吗?要DBA干吗?不就是为了那个万一么?

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
发表于 2013-02-27 10:40 |显示全部楼层
本帖最后由 flutter 于 2013-02-27 10:42 编辑

回复 23# mike79


    我这个首先,是不是正确的,你可以在主库删除一条记录,然后在备库再看看就知道结果了。

  其次,你真的很厉害,给开发人员在生产库上折腾,我是从来不给他们这个机会的。

论坛徽章:
12
丑牛
日期:2014-05-10 16:11:3315-16赛季CBA联赛之同曦
日期:2016-02-01 20:28:25IT运维版块每日发帖之星
日期:2015-11-10 06:20:00操作系统版块每日发帖之星
日期:2015-10-28 06:20:002015亚冠之塔什干棉农
日期:2015-06-04 11:41:56技术图书徽章
日期:2013-09-23 13:25:58CU大牛徽章
日期:2013-09-18 15:21:17CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:20:58CU大牛徽章
日期:2013-09-18 15:20:48数据库技术版块每日发帖之星
日期:2016-02-08 06:20:00
发表于 2013-02-27 17:23 |显示全部楼层
本帖最后由 mike79 于 2013-02-27 17:24 编辑
flutter 发表于 2013-02-27 10:40
我这个首先,是不是正确的,你可以在主库删除一条记录,然后在备库再看看就知道结果了

用这个方法来检测?呵呵,说你什么好呢。基本概念不清?

你用删除做例子,我就用插入做例子好了。先不考虑DG,你在数据库上插入一条纪录,不提交,然后新开个会话,你认为新会话能看到这条纪录么?如果主库上的新会话也看不到,那备库上也看不到又能说明什么呢?能够说明redo没有apply?

再回去说DG,redo被apply到备库,不代表在备库上就能看到相应的更改,这要到主库的事务提交才能看到。(不过按照你先前所说的,你可能认为switch logfile之后就能看到,哪怕主库上事务没有提交。但这个想法是错误的。)那怎么证明realtime apply?可以利用Oracle11g的active standby dataguard。老版本数据库也行,不过就是稍微麻烦点。
你把DG配置成max availablity+realtime apply,然后在主库上跑个大事务,插入很多纪录,比如要一个小时,但是控制不发生logfile switch,commit之后就到备库上去看。按照你的说法,如果redo要等到commit才apply的话(因为没有logfile switch,那就不考虑你认为的另一个apply条件了),那么在备库上看到这些新纪录大概也要一个小时这样的数量级。但其实根本不用,几乎是瞬时就能看到了。

最后问下,你能控制开发人员不直接登录数据库,但是你能控制他们不写错代码么?你能控制在应用发布前开发人员写的所有的代码,所有的边界条件都测过么?

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
发表于 2013-02-28 11:24 |显示全部楼层
回复 25# mike79


    呵呵,我所说的检测,当然是提交后的更新,没有提交看个神马东东。

论坛徽章:
0
发表于 2013-02-28 12:06 |显示全部楼层
回复 22# moweiraul


    因为Linux/Unix里面很多配置文件不一样,必须人工单独编写。

论坛徽章:
0
发表于 2013-03-06 09:51 |显示全部楼层
回复 22# moweiraul


    11g以后,只要能上网,系统参数的修改ORACLE也基本给你搞定了。只要装个包就可以了。

论坛徽章:
0
发表于 2013-03-18 09:36 |显示全部楼层
楼猪的智商不行哦!

论坛徽章:
0
发表于 2013-04-02 16:44 |显示全部楼层
lollol
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP