Oracle备份与容灾详解_第1页
Oracle备份与容灾详解_第2页
Oracle备份与容灾详解_第3页
Oracle备份与容灾详解_第4页
Oracle备份与容灾详解_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Oracle 数据安全,01,02,04,03,备份与容灾的重要性,备份与容灾概况,逻辑备份,物理备份,05,容灾,一. 为什么要进行备份和容灾?,1.1. 数据库系统故障 案例1:如某客户的IT设备机房突然停电,造成存储磁盘损坏,数据文件也因此损坏,来电后数据库无法启动,如果没有备份,则数据库恢复工作将非常艰难. 案例2:某客户的oracle数据库系统采用aix小机做硬件平台,但由于此小机购买年份较早,早过了维保期,某天突然宕机,操作系统无法启动,由于没有专业的小机维护人员,小机始终无法启动,业务也因此无法运行,幸好有异机备份,在短时间内恢复了数据。 案例3:某客户要新装一套rac数据库,但

2、由于安装过程报错,需要删除软件并重新安装,但不小心连到了生产数据库,删除了生产库的数据库软件,类似误删除操作还有很多惨痛的案例,一.为什么要进行备份和容灾?,1.2. 应用程序故障 案例:某客户的软件系统在试运行期间,由于需要上新的功能模块,开发人员添加一个栏目时发现添加有问题,需要删掉此栏目,结果删除的时候把上级目录也删掉了,导致整个目录的其他栏目都删掉了,此问题是软件的一个bug,而此时undo回滚表空间的内容也已经冲掉了,如果没有备份,数据将很难找回来。 1.3. 人为失误 案例:某客户维护一张表时,认为数据不再需要了,就truncate table t_xxx,结果后来又证明那张表还有

3、需要的数据,但后悔已经来不及了,二. 备份和容灾概况,我们有哪些方式避免各种自然灾害、人为失误及应用程序故障? Oracle为我们提供了多种备份和容灾方式: 1.冷备份(操作系统copy数据文件) 2.Rman物理备份 3.逻辑备份(exp/expdp) 4.rac 5.数据卫士(Dataguard) 6.Goldengate 其他厂商提供的备份和容灾方式: IBM的FlashCopy EMC的SRDF等存储复制技术,2.1 区分物理备份和逻辑备份,物理备份就是转储ORACLE物理文件(如数据文件、控制文件、归档日志文件等),一旦数据库发生故障,可以利用这些文件进行还原; 逻辑备份就是对数据库

4、对象(如用户、表、存储过程等)利用EXPORT等工具进行导出工作,可以利用IMPORT等工具把逻辑备份文件导入到数据库。,特点: 物理备份备份的是数据文件、归档日志等底层文件,是真正适用于生产环境的备份,强烈推荐生产库采用物理备份 逻辑备份是按一定的格式导出业务数据,适合特定场合,两种备份都不能直接查看数据,需要用相应的工具导入或还原才能读取数据,2.2.1 什么是冷备份? 数据库没有打开的情况下,使用操作系统命令或rman进行备份,由于数据库没有打开,数据库的数据是干净一致的,不存在活动事务。 方式: 使用操作系统命令直接复制数据文件到另外一个目录即可,windows下直接复制粘贴,其他平台

5、 如linux下:cp,oracledb10g datafile$ pwd /u01/oradata/ORCL/datafile oracledb10g datafile$ cp *.dbf *.ctl *.log /backup/,特点:需要将数据库关闭才能做冷备,这样就影响了业务使用,因此在实际生产环境不具实际使用价值,2.2 区分冷备份和热备份,2.2.2 什么是热备份? 数据库在open状态,事务还在活动,此时备份就是热备份,oracle数据库支持热备份,最常用最实用的是用rman进行热备份,三. rman物理备份,Rman是oracle数据库的一个组件,功能强大,既能备份也能恢复,r

6、man可以备份 这些文件: 数据文件 归档日志文件 参数文件 控制文件,三. rman物理备份,恢复原理:基础整库备份+归档日志(+日志重演) 恢复到想要恢复的时间点 因此必须开启归档模式,让数据库的在线重做日志保存到归档日志目录里,这样才能利用基点备份+归档日志重演数据库到指定时间 而如果使用非归档模式,则数据库不会保存在线重做日志,数据丢失后将不能利用基点备份重演日志,通常用rman做物理备份。 查看归档是否开启:,使用sys或system用户用sqlplus登录数据库: SYSorclarchive log list Database log mode Archive Mode Auto

7、matic archival Enabled Archive destination /u01/app/oracle/admin/orcl/archivelog,或者: SQL select log_mode from v$database; LOG_MODE - ARCHIVELOG,oracledb $ rman target / -使用rman登录数据库 connected to target database: TESTDB (DBID=2592324560) RMAN backup database format /backup/fullbak_%U; Starting backup

8、 at 2013/09/05 09:23:00 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=145 devtype=DISK channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset input datafile fno=00001 name=/u0

9、1/app/oracle/oradata/testdb/system.dbf input datafile fno=00003 name=/u01/app/oracle/oradata/testdb/sysaux.dbf input datafile fno=00004 name=/u01/app/oracle/oradata/testdb/users.dbf channel ORA_DISK_1: starting piece 1 at 2013/09/05 09:23:01 channel ORA_DISK_1: finished piece 1 at 2013/09/05 09:24:0

10、7 piece handle=/backup/fullbak_05oj2uvl_1_1 tag=TAG20130905T092301 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:01:06 channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset including current control file in backupset inc

11、luding current SPFILE in backupset channel ORA_DISK_1: starting piece 1 at 2013/09/05 09:24:10 channel ORA_DISK_1: finished piece 1 at 2013/09/05 09:24:11 piece handle=/backup/fullbak_06oj2v1n_1_1 tag=TAG20130905T092301 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:04 Fin

12、ished backup at 2013/09/05 09:24:11,3.1 备份过程示例:,可以看出备份全库时包括两部分:一个数据文件的备份集,其中包括了所有的数据文件,一个控制文件+spfile的备份集,包括了控制文件和spfile,rootdb backup# ls -lh total 811M -rw-r- 1 oracle oinstall 795M Sep 5 09:23 fullbak_05oj2uvl_1_1 -rw-r- 1 oracle oinstall 15M Sep 5 09:24 fullbak_06oj2v1n_1_1,3.2 rman备份恢复场景示例: 现在已经

13、做了全备,即基点备份,如果我们需要恢复数据库,我们就可以使用这个全备的rman备份做基点,加上归档日志来恢复,如创建一个表并插入数据,如果此时突然发生磁盘磁盘损坏,导致数据文件损坏及数据库异常终止,可以按如下方法恢复:,SQL create table t (id number,name varchar2(30); Table created. SQL insert into t values (1,mcl); 1 row created. SQL insert into t values (2,admin); 1 row created. SQL insert into t values (

14、3,dba); 1 row created. SQL commit;,1.在mcl用户下新建一张表,并插入数据,SQL select * from t; ID NAME - - 1 mcl 2 admin 3 dba SQL alter system switch logfile; System altered.,2.假设此时磁盘发生损坏,并强制关闭了数据库,-强制关闭数据库 SQL shutdown abort ORACLE instance shut down. -删除数据文件 oracledb testdb$ ls current.269.808996433 goldengate.dbf

15、 redo03.dbf TESTDB undotbs2.dbf current.269.808996433.bak redo01.dbf sysaux.dbf ts_bbed.dbf undotbs3.dbf current.bak redo02.dbf system.dbf ts_mcl.dbf users.dbf oracledb testdb$ rm -rf * -启动数据库 SQL startup ORACLE instance started. Total System Global Area 331350016 bytes Fixed Size 2083720 bytes Vari

16、able Size 117441656 bytes Database Buffers 205520896 bytes Redo Buffers 6303744 bytes ORA-00205: error in identifying control file, check alert log for more info SQL select instance_name,status from v$Instance; INSTANCE_NAME STATUS - - testdb STARTED,3.恢复控制文件,RMAN restore controlfile from /backup/fu

17、llbak_06oj2v1n_1_1; Starting restore at 2013/09/05 10:46:47 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=156 devtype=DISK channel ORA_DISK_1: restoring control file channel ORA_DISK_1: restore complete, elapsed time: 00:00:03 ou

18、tput filename=/u01/app/oracle/oradata/testdb/current.269.808996433 Finished restore at 2013/09/05 10:46:51 -mount控制文件 SQL alter database mount; Database altered. SQL select instance_name,status from v$Instance; INSTANCE_NAME STATUS - - testdb MOUNTED,4.恢复数据文件 包括两步:restore、recover,RMAN restore databa

19、se; Starting restore at 2013/09/05 12:42:18 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile backupset restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set restoring datafile 00001 to /u01/app/oracle/oradata/testdb/system.dbf restoring datafile 00002 to /u01/ap

20、p/oracle/oradata/testdb/ts_mcl.dbf restoring datafile 00003 to /u01/app/oracle/oradata/testdb/sysaux.dbf restoring datafile 00004 to /u01/app/oracle/oradata/testdb/users.dbf restoring datafile 00005 to /u01/app/oracle/oradata/testdb/ts_bbed.dbf restoring datafile 00006 to /u01/app/oracle/oradata/tes

21、tdb/goldengate.dbf restoring datafile 00007 to /u01/app/oracle/oradata/testdb/undotbs2.dbf restoring datafile 00008 to /u01/app/oracle/oradata/testdb/undotbs3.dbf channel ORA_DISK_1: reading from backup piece /backup/fullbak_05oj2uvl_1_1 channel ORA_DISK_1: restored backup piece 1 piece handle=/back

22、up/fullbak_05oj2uvl_1_1 tag=TAG20130905T092301 channel ORA_DISK_1: restore complete, elapsed time: 00:00:55 Finished restore at 2013/09/05 12:43:13,Restore其实就是把备份还原出来,但此时还是备份时的数据状态,也就是建mcl.t表之前的状态,数据文件目录的文件现在都回来了,但注意此时数据并没有mcl.t表,oracledb backup$ ls -lh /u01/app/oracle/oradata/testdb/ total 1.2G -rw

23、-r- 1 oracle oinstall 15M Sep 5 12:45 current.269.808996433 -rw-r- 1 oracle oinstall 21M Sep 5 12:42 goldengate.dbf -rw-r- 1 oracle oinstall 301M Sep 5 12:42 sysaux.dbf -rw-r- 1 oracle oinstall 521M Sep 5 12:43 system.dbf -rw-r- 1 oracle oinstall 11M Sep 5 12:42 ts_bbed.dbf -rw-r- 1 oracle oinstall

24、1.1M Sep 5 12:42 ts_mcl.dbf -rw-r- 1 oracle oinstall 51M Sep 5 12:42 undotbs2.dbf -rw-r- 1 oracle oinstall 51M Sep 5 12:42 undotbs3.dbf -rw-r- 1 oracle oinstall 213M Sep 5 12:42 users.dbf,RMAN recover database; Starting recover at 2013/09/05 12:53:46 using channel ORA_DISK_1 starting media recovery

25、archive log filename=/u01/app/oracle/arch/1_17_823348175.dbf thread=1 sequence=17 archive log filename=/u01/app/oracle/arch/1_17_823348175.dbf thread=1 sequence=18 RMAN-00571: = RMAN-00569: = ERROR MESSAGE STACK FOLLOWS = RMAN-00571: = RMAN-03002: failure of recover command at 09/05/2013 12:53:53 RM

26、AN-11003: failure during parse/execution of SQL statement: alter database recover logfile /u01/app/oracle/arch/1_17_823348175.dbf ORA-00310: archived log contains sequence 17; sequence 18 required ORA-00334: archived log: /u01/app/oracle/arch/1_17_823348175.dbf,5.恢复数据文件 continue 包括两步:restore、recover

27、,SQL archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination /u01/app/oracle/arch Oldest online log sequence 15 Next log sequence to archive 17 Current log sequence 17,6.打开数据库,由于数据库的当前联机日志已经被删除,因此需要resetlogs方式重建redolog,并打开数据库,SQL alter database open resetlogs;

28、Database altered.,7.验证数据,SQL select * from mcl.t; ID NAME - - 1 mcl 2 admin 3 dba,总结:备份不是目的,恢复才是目的。恢复时需要一个基点备份(restore出来),然后在此基础上重演归档日志和在线日志(recover过程),恢复到故障发生的那一刻,3.3 生产环境下备份作业(适合小数据量),1.准备一个空间足够的备份盘,并mount到/backup目录,2.创建相关备份目录,mkdir -p /backup/oracle/testdb/archbackup mkdir -p /backup/oracle/testd

29、b/fullbackup mkdir -p /backup/oracle/testdb/ctlbackup mkdir -p /backup/oracle/testdb/script mkdir -p /backup/oracle/testdb/log mkdir -p /backup/oracle/testdb/other chown -R oracle:oinstall /backup/ chmod -R 775 /backup/,3.上传备份脚本到/backup/oracle/testdb/script/,4.制定任务计划定时执行备份:,crontab -e 0 2 * * * /bac

30、kup/oracle/testdb/script/startrman.sh,3.4 生产环境下增量备份作业(适合大数据量),增量备份的级别: 增量备份可以有 n 多个级别,从0级、1级、2级这样顺序排列直到 n 级( n 为小于等于4的正整数)。 增量备份分类: 差异增量备份(备份同级和小于同级的变化数据) 累计增量备份(备份小于同级的变化数据),差异增量备份,周日:全库备份 周一:只备份level0之后有变化的数据块 周二:只备份周一以来所有变化的数据块 周三:只备份周二以来所有变化的数据块 ,累计增量备份,周日:全库备份 周一:备份周日level0之后有变化的数据块 周二:备份周日以来所有

31、变化的数据块 周三:备份周日以来所有变化的数据块 ,差异增量备份特点:只备份小于同级的数据变化,但恢复时需要读取更多的备份集,因此备份时间短,恢复时间长。 累计增量备份特点:只备份小于等于同级的数据变化,但恢复时可以读取更少的备份集,因此备份时间长,恢复时间短。,实际生产环境备份示例:,1.创建备份磁盘及目录,建立相关目录(参考上节),部署备份作业步骤:,2. 上传备份脚本到/backup/oracle/testdb/script目录,3. 开启备份的block change trace功能(非必须),SQL alter database enable block change trackin

32、g; SQL select * from v$block_change_tracking; STATUS FILENAME BYTES - - - ENABLED +DATADG/urpdb/changetracking/ctf.303.823879167 12681216,crontab -e 0 2 * * * /backup/oracle/testdb/script/startrman.sh,4. 制定备份自动,注意:以上脚本需要根据实际数据库名做修改,四. 逻辑备份,逻辑备份包括exp/expdp: 其中exp是oracle比较古老的数据导出工具了,oracle10g及以后建议使用ex

33、pdp导数据,因为后者速度更快,使用更加灵活,两者之间最大的区别在于:exp可以把数据导出到客户端,也可以导出到服务器端,但expdp只能导出到服务器端,逻辑导出的特点: 优点:逻辑导出可以只导出部分对象,方式灵活,导出的dmp文件可以跨平台、跨操作系统、跨数据库版本导入到别的数据库中,因此这种平台无关、版本无关的特性适合数据迁移(1T以下)、数据备份。 缺点:导出那一刻数据就已经固定了,无法利用数据库日志进行重演而恢复到最新的状态,但有时候也不需要这种功能。另外导出速度快,导入速度慢,不适合大数据量的导入,但对于中小型数据库(1T以下)使用场景很多。,exp/expdp分为三种导出模式: 表

34、模式:导出一个表或多个表,在导出时指定tables=xxx.xxx 用户模式:导出一个schema下的所有对象 全库模式:full=y,SQL select userenv(language) from dual; USERENV(LANGUAGE) - AMERICAN_AMERICA.AL32UTF8,4.1 exp示例:,1.查询数据库的字符集,2.设置NLS_LANG环境变量,避免导出时字符集转换,oracledb backup$ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8,3.exp导出数据,oracledb backup$ exp mcl/m

35、cl tables=mcl.t file=/backup/mcl_t.dmp Export: Release 10.2.0.4.0 - Production on Thu Sep 5 16:23:44 2013 Copyright (c) 1982, 2007, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Rea

36、l Application Testing options Export done in AL32UTF8 character set and AL16UTF16 NCHAR character set About to export specified tables via Conventional Path . . . exporting table T 3 rows exported Export terminated successfully without warnings.,oracledb backup$ mkdir -p /backup/dir_dump/ SQL create

37、 directory dir_dump as /backup/dir_dump; Directory created.,4.2 expdp示例:,1.建目录及目录对象:,2.导出数据:,oracledb backup$ expdp mcl/mcl directory=dir_dump tables=mcl.t dumpfile=mcl_t_expdp.dmp logfile=expdp_mcl_t.log Export: Release 10.2.0.4.0 - 64bit Production on Thursday, 05 September, 2013 16:44:30 Copyrigh

38、t (c) 2003, 2007, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options Starting MCL.SYS_EXPORT_TABLE_01: mcl/* directory=dir_dump tables=mcl.t dumpfile=mcl

39、_t_expdp.dmp logfile=expdp_mcl_t.log Estimate in progress using BLOCKS method. Processing object type TABLE_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 64 KB Processing object type TABLE_EXPORT/TABLE/TABLE Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS . . ex

40、ported MCL.T 5.242 KB 3 rows Master table MCL.SYS_EXPORT_TABLE_01 successfully loaded/unloaded * Dump file set for MCL.SYS_EXPORT_TABLE_01 is: /backup/dir_dump/mcl_t_expdp.dmp Job MCL.SYS_EXPORT_TABLE_01 successfully completed at 16:44:52,4.3 一个实际生产环境逻辑备份示例:,生产库环境:10.2.0.5 rac数据库 操作系统平台:HUPX11.31 备份

41、库环境:10.2.0.1 单机数据库 操作系统平台:AIX 5.3,逻辑备份需求: 主库有rman物理备份,但为了加固数据安全,防止因存储控制器损坏等问题造成数据全部丢失,利旧AIX 小机做逻辑备份,数据文件总大小为196G,expdp导出并压缩后的实际数据为 5G,业务用户约50个,每天夜里备份完所有的业务用户数据后,使用scp复制到备库,并在主库保留7天数据,备库上保留14天。,5. 其他灾备,5.1 rac,RAC是为了满足人们对系统的高可靠性、高速性以及VLDB(大规模数据库)的需求而开发设计的一项集群处理技术。另外,它还能提高系统的吞吐量,并有效支持更多的用户 ,RAC可以让多个节点

42、的多个实例同时访问同一个数据库。这样,系统就可以把一个大的任务分为几个子任务,给不同的节点去执行,从而横向扩展服务器内存、cpu压力。,Rac的优点: 多个数据库服务器担任实例,同时能对外提供服务,可以提供负载均衡和故障切换,任何一台数据库服务器发生故障,业务均不会受到影响,对服务器单点故障能起到很好的保护作用. Rac的缺点: 在共享存储上只有1份数据,如果存储发生故障,数据可能会丢失,RTO时间也比较长,从性能角度上讲,如果软件本身的性能比较差(如sql比较低效),扩容成rac也不能解决性能问题,另外如果硬件比较差,如存储读写慢、内网速度慢,rac本身就是性能瓶颈; 部署要求: 两台相同硬件架构(甚至型号)的数据库服务器,每台数据库服务器至少两块网卡,一台共享存储,至少一台光纤交换机;,5.1 rac,5.2 dataguard,dataguard包含一个生产数据库(单机或者rac)和一个或更多备份数据库(也可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论