查看: 11492|回复: 53

【话题讨论】讨论数据库备份问题 总结备份中的疑难杂症

[复制链接]
论坛徽章:
24
技术图书徽章
日期:2013-08-16 14:31:52问答徽章
日期:2013-11-04 08:53:14目光如炬
日期:2013-12-23 06:00:11目光如炬
日期:2013-12-30 06:00:11明星写手
日期:2014-02-22 06:00:12马上有钱
日期:2014-03-31 14:09:05沸羊羊
日期:2015-05-20 12:42:59秀才
日期:2015-06-24 13:05:36秀才
日期:2015-07-13 09:48:14
跳转到指定楼层
1#
发表于 2013-7-11 09:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
目前数据为王的时代,数据库作为企业信息系统的核心担当着重要的角色。尤其在一些对数据可靠性要求很高的行业如银行、证券、电信等,如果发生意外停机或数据丢失其损失会十分惨重,例如前段时间的6.23事件。为此数据库管理员应针对具体的业务要求制定详细的数据库备份与灾难恢复策略,并通过模拟故障对每种可能的情况进行严格测试,只有这样才能保证数据的高可用性。

同时数据库的备份是一个长期的过程,而恢复只在发生事故后进行,恢复可以看作是备份的逆过程,恢复的程度的好坏很大程度上依赖于备份的情况。此外,数据库管理员在恢复时采取的步骤正确与否也直接影响最终的恢复结果。

今天我们就来讨论一些相关的话题:
1,数据库备份有很多种方法,你们一般使用哪种备份方式?
2,怎么才能确保自己的数据库在发生状况时迅速的进行备份恢复?
3,大家平时在工作总遇见过那些比较棘手的数据库备份恢复问题,请分享出来方便会员以后查找。


讨论时间:2013.7.11——2013.7.25

活动奖励:活动结束后将会抽取三名会员赠送《循序渐进 Oracle 数据库管理优化与备份恢复》一本。



hello_warjun   ses19828   wzz123snow
2#
发表于 2013-7-11 09:59 | 只看该作者
占沙发。。。。。。。。。。。。。。。。。。

使用道具 举报

回复
论坛徽章:
2
复活蛋
日期:2013-07-22 15:47:50ITPUB社区千里马徽章
日期:2013-08-22 09:58:03
3#
发表于 2013-7-11 11:11 | 只看该作者
1,数据库备份有很多种方法,你们一般使用哪种备份方式?
知道有冷备热备之分,但是数据库方面应用不是很多,备份仅限于exp导出备份dmp文件(complete、incremental)
2,怎么才能确保自己的数据库在发生状况时迅速的进行备份恢复?
自己还没遇到过这样的情况,基本就是导入之前的备份来恢复吧。
发生状况后个人以为应该先分析下原因,如果真的是数据库坏掉了,能备份就先备份(热备和冷备),有riad的话,可能会换到没问题的数据库。
如果没有raid,那就用之前最近的备份恢复下,但是这样数据会丢失。。。所以做raid或者集群是重要系统数据的好选择。
学习中,希望听下大家好的方法。
3,大家平时在工作中遇见过那些比较棘手的数据库备份恢复问题,请分享出来方便会员以后查找。
都说了没有了,这个是不是可以略过?
遇到的都是简单的问题,比如数据库版本不一致的导入导出,这个问题较简单,不赘述。
我们有个系统用的是oracle8的库,前段时间(貌似很久了,有半年多)不知道什么原因数据库挂了,当时没负责那个系统,
什么原因也不太清楚,据说版本太低,找了专家也好久才整好。

来此学习,希望看到大家好的方法。

使用道具 举报

回复
论坛徽章:
24
技术图书徽章
日期:2013-08-16 14:31:52问答徽章
日期:2013-11-04 08:53:14目光如炬
日期:2013-12-23 06:00:11目光如炬
日期:2013-12-30 06:00:11明星写手
日期:2014-02-22 06:00:12马上有钱
日期:2014-03-31 14:09:05沸羊羊
日期:2015-05-20 12:42:59秀才
日期:2015-06-24 13:05:36秀才
日期:2015-07-13 09:48:14
4#
 楼主| 发表于 2013-7-11 11:22 | 只看该作者
hello_warjun 发表于 2013-7-11 11:11
1,数据库备份有很多种方法,你们一般使用哪种备份方式?
知道有冷备热备之分,但是数据库方面应用不是很多 ...

欢迎欢迎

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
3
ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB社区12周年站庆徽章
日期:2013-08-09 11:22:32ITPUB社区12周年站庆徽章
日期:2013-10-17 13:56:59
5#
发表于 2013-7-11 11:22 | 只看该作者
本帖最后由 Aminiy 于 2013-7-11 11:25 编辑

一般用rman 和数据泵进行备份

使用道具 举报

回复
论坛徽章:
2
复活蛋
日期:2013-07-22 15:47:50ITPUB社区千里马徽章
日期:2013-08-22 09:58:03
6#
发表于 2013-7-11 11:54 | 只看该作者
arron刘 发表于 2013-7-11 11:22
欢迎欢迎

刚加入itpub,一直是游客,最近终于注册了
望多关照

使用道具 举报

回复
论坛徽章:
24
技术图书徽章
日期:2013-08-16 14:31:52问答徽章
日期:2013-11-04 08:53:14目光如炬
日期:2013-12-23 06:00:11目光如炬
日期:2013-12-30 06:00:11明星写手
日期:2014-02-22 06:00:12马上有钱
日期:2014-03-31 14:09:05沸羊羊
日期:2015-05-20 12:42:59秀才
日期:2015-06-24 13:05:36秀才
日期:2015-07-13 09:48:14
7#
 楼主| 发表于 2013-7-11 12:25 | 只看该作者
hello_warjun 发表于 2013-7-11 11:54
刚加入itpub,一直是游客,最近终于注册了
望多关照

大家一起学习,嘿嘿

使用道具 举报

回复
论坛徽章:
0
8#
发表于 2013-7-11 13:11 | 只看该作者
一般都是用完全备份它可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象。但它需要花费更多的时间和空间,所以,一般推荐一周做一次完全备份。

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
6
ITPUB 11周年纪念徽章
日期:2012-10-09 18:14:48茶鸡蛋
日期:2013-01-10 11:06:072013年新春福章
日期:2013-02-25 14:51:24法拉利
日期:2014-02-02 10:56:512014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08
9#
发表于 2013-7-11 13:35 | 只看该作者
数据库数据量小的话采取定时逻辑备份;大的话使用rman备份,具体备份策略需要根据实际情况来制定。

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
21
itpub2007年荐股参与纪念徽章
日期:2008-04-03 16:54:14itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50复活蛋
日期:2014-12-01 15:10:24蓝锆石
日期:2015-02-03 13:52:432015年新春福章
日期:2015-03-04 14:51:122015年新春福章
日期:2015-03-06 11:57:31知识
日期:2015-05-27 16:53:28itpub13周年纪念徽章
日期:2014-09-28 10:55:55
10#
发表于 2013-7-11 17:49 | 只看该作者
1,数据库备份有很多种方法,你们一般使用哪种备份方式?
我们生产环境中目前采用RMAN来进行完全备份和增量备份。
星期日采用全备策略,其他时段为增量备份。
备份完成后,用BE拷贝到磁带库中。开启邮件提醒功能,如果有失败,解决故障后补备份。
每天盘点下备份情况,定期进行核心数据库的恢复演练。有效性验证下。

贴个我以前的学习笔记内容把

  1. --==================================
  2. 物理备份
  3. 1.完全脱机备份(冷备份)(noarchivelog|archivelog)
  4. a.os copy  操作系统的拷贝,如果开始数据文件创建的很大,而实际里面数据不多的时候,需要时间久。
  5. b.shutdown
  6. 2.部分脱机备份(tablespace offline)
  7. a.os copy  不可以备份有效的块。
  8. b. (system , undo)  不可以offline
  9. 3.部分联机备份(begin)
  10. 4.rman(recovery manager)
  11. a.nocatalog
  12. b.catelog
  13. --==================================
  14. target db   用nocatalog方式备份的时候要保证target db的控制文件没有损坏
  15. catalog db
  16. 最好是放在不在同一台服务器上的不同的库。
  17. c:\rman target sys/system@abc nocatalog
  18. 或者c:\rman     RMAN>connect target sys/system@abc  默认也是nocatalog方式
  19. backup database;
  20. 使用的targe db的控制文件
  21. 通过第三方软件可以备份到磁带上。
  22. --===================
  23. -======================
  24. backupset 逻辑概念  
  25. backup piece 物理概念
  26. 环境变量 nls_data_format 值 yyyy/mm/dd hh24:mi:ss
  27. list backup
  28. --===========
  29. 1.database (datafile,control,spfile)
  30. 2.tablespace
  31. 3.database
  32. 4.controlfile
  33. 5.spfile
  34. 6.archivelog
  35. select * from V$database 可以查询控制文件类型 字段controlfile_type =current

  36. backup tablespace sysaux
  37. backup datafile 9,3;   备份9 和3 号数据文件
  38. backup current controlfile;  备份控制文件
  39. backup spfile;
  40. backup archivelog all;  [all,from ,high,like,logseq,low,scn,sequence,time,until]
  41. --=================
  42. rman恢复的时候,可以把以前的数据文件移动一个临时目录里,防止回复不成功
  43. RMAN>startup mount
  44. RMAN>list buckupset  显示的信息都是来源于控制文件,如果控制文件坏了,是无法显示的。
  45. 分2个阶段
  46. restore
  47. recover
  48. RMAN>list backup of database;  显示所有的数据文件的备份
  49. RMAN>restore preview database;  预览
  50. RMAN>restore database;
  51. select file#,checkpoint_change# from v$datafile;
  52. select file#,checkpoint_change# from v$datafile_header;
  53. recover database;
  54. alter database open;
  55. --==========================
  56. --========================================
  57. 1.datafile
  58. select * from dba_data_files
  59. 2.controlfile
  60. select * from v$controlfile
  61. 3.redo
  62. select * from v$logfile
  63. select * from v$log
  64. drop tablespace undotbs3 including contents and datafile;
  65. scn:system change number
  66. 内部的一个逻辑时钟。 3秒钟变化一次。
  67. select dbms_flashback.get_system_change_number from dual;
  68. select * from v$datafile ;其中 一号文件 system  字段CREATION_CHANGE# 这个是我们可以看见的最小的SCN 值5
  69. select * from dba_data_files;
  70. select current_scn from v$database;
  71. 实验:
  72. create table t(id int,scn number) tablespace users;
  73. insert into t values (1,dbms_flashback.get_system_change_number);
  74. commit;
  75. alter system switch logfile;
  76. select *from v$log;字段FIRST_CHANGE# 就是开始时的最小SCN
  77. insert into t values (2,dbms_flashback.get_system_change_number);
  78. commit;
  79. select file#,checkpoint_change# from v$datafile;  控制文件
  80. select file#,checkpoint_change# from v$datafile_header;
  81. select sequence#,first_change#,first_time,next_change#,next_time from v$archived_log
  82. where first_change# <=2006082 and next_change# >= 2006082 ;
  83. 归档日志必须连续,如果中间有断,那只可以回复到断前的归档日志。
  84. recover database;
  85. recover database until cancel;   属于不完全恢复,要恢复到哪个点,ORACLE不清楚。

  86. alter tablespace users offline;
  87. alter tablespace users online;
  88. recover datafile 4;   AUTO   
  89. 在线备份表空间(部分联机备份) 记录数据文件头SCN固定的,但是每个块的SCN,有可能被修改。因为是热备份。
  90. alter tablespace system begin backup; 处于热备份下,如果有进程操作这个数据文件的数据块时候,oracle把这个块备份一下,以日志的形式备份。
  91. 这种情况下产生的日志比平常模式下  多很多
  92. select * from v$backup;    查询可以看到1号文件system已经激活了  SCN号发生了变化。
  93. alter tablespace system end backup
  94. alter database begin backup; 然后把所有的数据文件全部拷贝出去
  95. alter database end backup;
  96. select distinct sid from V$mystat
  97. select * from V$mystat=152  and statistic#=134;
复制代码


2,怎么才能确保自己的数据库在发生状况时迅速的进行备份恢复?
我习惯使用RMAN来快速的备份恢复,依据数据文件损坏,控制文件损坏,日志文件问题等等分不同的方式来通过备份的数据文件来实现快速恢复。
当然如果开启了flashback功能,可以采用这种新技术,来更快速的恢复数据库。原理也是类似于RMAN的不完全恢复。把数据库回退到某个时点的状态。
flashback优点在于,比RMAN更快速,更高效。但是不能解决所有的问题
flashback闪回总结了下:
1.不能解决Media Failure问题。
2.控制文件如果是备份中恢复出来的,或是重建的。也不可以用FLASHBACK闪回数据库
3.只能恢复到最早的SCN,取决于flashback log的最早日志的SCN
4.如果删除了数据文件,或者用了shrink缩小了数据文件。也不可以用闪回技术。



3,大家平时在工作总遇见过那些比较棘手的数据库备份恢复问题,请分享出来方便会员以后查找。

上周末,数据库用冷备份的方式迁移后,备份数据库的时候失败案例分享下吧

在备份的时候发现了以下的错误信息:

启动 backup 于 09-7月 -13
当前日志已存档
使用通道 ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: backup 命令 (在 07/09/2013 12:53:48 上) 失败
RMAN-06059: 没有找到预期的归档日志, 归档日志的丢失将影响可恢复性
ORA-19625: 识别文件D:\ARCHIVELOG\ARC0000128051_0741627030.0001时出错
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 3) 系统找不到指定的路径。
--=============================================

出现RMAN-06059,ORA-19625此种情况是因为归档日志已被删,但RMAN备份的时候仍然需要,备份无法

进行下去,  

执行change archivelog all crosscheck ;检查归档日志命令  

RMAN> change archivelog all crosscheck ;  

发现有很多过期的归档,运行以下命令进行删除过期的归档   

RMAN> delete expired archivelog all;  

删除过期的归档,现在再执行一次备份



使用道具 举报

回复

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

本版积分规则 发表回复

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