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

下载本文档

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

文档简介

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

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

3、,就truncate table t_xxx,结果后来又证明那张表还有需要的数据,但后悔已经来不及了二二. 备份和容灾概况备份和容灾概况我们有哪些方式避免各种自然灾害、人为失误及应用程序故障?我们有哪些方式避免各种自然灾害、人为失误及应用程序故障?Oracle为我们提供了多种备份和容灾方式:为我们提供了多种备份和容灾方式: 1.冷备份(操作系统copy数据文件) 2.Rman物理备份 3.逻辑备份(exp/expdp) 4.rac 5.数据卫士(Dataguard) 6.Goldengate其他厂商提供的备份和容灾方式:其他厂商提供的备份和容灾方式: IBM的FlashCopy EMC的SRD

4、F等存储复制技术2.1 区分物理备份和逻辑备份区分物理备份和逻辑备份物理备份就是转储ORACLE物理文件(如数据文件、控制文件、归档日志文件等),一旦数据库发生故障,可以利用这些文件进行还原; 逻辑备份就是对数据库对象(如用户、表、存储过程等)利用EXPORT等工具进行导出工作,可以利用IMPORT等工具把逻辑备份文件导入到数据库。特点:特点:物理备份备份的是数据文件、归档日志等底层文件,是真正适用于生产环境的备份,强烈推荐生产库采用物理备份逻辑备份是按一定的格式导出业务数据,适合特定场合,两种备份都不能直接查看数据,需要用相应的工具导入或还原才能读取数据2.2.1 什么是冷备份?什么是冷备份

5、?数据库没有打开的情况下,使用操作系统命令或数据库没有打开的情况下,使用操作系统命令或rman进行备份,由于数据库没有进行备份,由于数据库没有打开,数据库的数据是干净一致的,不存在活动事务。打开,数据库的数据是干净一致的,不存在活动事务。方式:使用操作系统命令直接复制数据文件到另外一个目录即可,windows下直接复制粘贴,其他平台如linux下:cp oracledb10g datafile$ pwd/u01/oradata/ORCL/datafileoracledb10g datafile$ cp *.dbf *.ctl *.log /backup/特点:需要将数据库关闭才能做冷备,这样就

6、影响了业务使用,因此在实际生产环境不具实际使用价值2.2 区分冷备份和热备份区分冷备份和热备份2.2.2 什么是热备份?什么是热备份?数据库在数据库在open状态,事务还在活动,此时备份就是热备份,状态,事务还在活动,此时备份就是热备份,oracle数据库支持热数据库支持热备份,最常用最实用的是用备份,最常用最实用的是用rman进行热备份进行热备份三三. rman物理备份物理备份Rman是是oracle数据库的一个组件,功能强大,既能备份也能恢复数据库的一个组件,功能强大,既能备份也能恢复rman可以备份可以备份这些文件:这些文件: 数据文件 归档日志文件 参数文件 控制文件三三. rman物

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

8、abledArchive destination /u01/app/oracle/admin/orcl/archivelog或者:SQL select log_mode from v$database; LOG_MODE-ARCHIVELOGoracledb $ rman target / -使用使用rman登录数据库登录数据库connected to target database: TESTDB (DBID=2592324560)RMAN backup database format /backup/fullbak_%U;Starting backup at 2013/09/05 09:2

9、3:00using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: sid=145 devtype=DISKchannel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/u01/app/oracle/oradata/test

10、db/system.dbfinput datafile fno=00003 name=/u01/app/oracle/oradata/testdb/sysaux.dbfinput datafile fno=00004 name=/u01/app/oracle/oradata/testdb/users.dbf channel ORA_DISK_1: starting piece 1 at 2013/09/05 09:23:01channel ORA_DISK_1: finished piece 1 at 2013/09/05 09:24:07piece handle=/backup/fullba

11、k_05oj2uvl_1_1 tag=TAG20130905T092301 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:01:06channel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetincluding current control file in backupsetincluding current SPFILE in backupset

12、channel ORA_DISK_1: starting piece 1 at 2013/09/05 09:24:10channel ORA_DISK_1: finished piece 1 at 2013/09/05 09:24:11piece handle=/backup/fullbak_06oj2v1n_1_1 tag=TAG20130905T092301 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:04Finished backup at 2013/09/05 09:24:113.1

13、备份过程示例:备份过程示例:可以看出备份全库时包括两部分:一个数据文件的备份集,其中包括了所有的数据文件,一个控制文件+spfile的备份集,包括了控制文件和spfile rootdb backup# ls -lhtotal 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_13.2 rman备份恢复场景示例:备份恢复场景示例:现在已经做了全备,即基点备份,如果我们需要恢复数据库,我们就可以使用

14、这个全备的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 (3,dba);1 row created.SQL commit;1.在mc

15、l用户下新建一张表,并插入数据SQL select * from t;ID NAME- - 1 mcl 2 admin 3 dbaSQL alter system switch logfile;System altered.2.假设此时磁盘发生损坏,并强制关闭了数据库-强制关闭数据库强制关闭数据库SQL shutdown abortORACLE instance shut down.-删除数据文件删除数据文件oracledb testdb$ lscurrent.269.808996433 goldengate.dbf redo03.dbf TESTDB undotbs2.dbfcurrent.

16、269.808996433.bak redo01.dbf sysaux.dbf ts_bbed.dbf undotbs3.dbfcurrent.bak redo02.dbf system.dbf ts_mcl.dbf users.dbforacledb testdb$ rm -rf *-启动数据库启动数据库SQL startup ORACLE instance started.Total System Global Area 331350016 bytesFixed Size 2083720 bytesVariable Size 117441656 bytesDatabase Buffers

17、205520896 bytesRedo Buffers 6303744 bytesORA-00205: error in identifying control file, check alert log for more infoSQL select instance_name,status from v$Instance;INSTANCE_NAME STATUS- -testdb STARTED3.恢复控制文件RMAN restore controlfile from /backup/fullbak_06oj2v1n_1_1;Starting restore at 2013/09/05 1

18、0:46:47using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: sid=156 devtype=DISKchannel ORA_DISK_1: restoring control filechannel ORA_DISK_1: restore complete, elapsed time: 00:00:03output filename=/u01/app/oracle/oradata/testdb/current.269.8

19、08996433Finished 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 MOUNTED4.恢复数据文件包括两步:restore、recoverRMAN restore database;Starting restore at 2013/09/05 12:42:18using channel ORA_DISK_

20、1channel ORA_DISK_1: starting datafile backupset restorechannel ORA_DISK_1: specifying datafile(s) to restore from backup setrestoring datafile 00001 to /u01/app/oracle/oradata/testdb/system.dbfrestoring datafile 00002 to /u01/app/oracle/oradata/testdb/ts_mcl.dbfrestoring datafile 00003 to /u01/app/

21、oracle/oradata/testdb/sysaux.dbfrestoring datafile 00004 to /u01/app/oracle/oradata/testdb/users.dbfrestoring datafile 00005 to /u01/app/oracle/oradata/testdb/ts_bbed.dbfrestoring datafile 00006 to /u01/app/oracle/oradata/testdb/goldengate.dbfrestoring datafile 00007 to /u01/app/oracle/oradata/testd

22、b/undotbs2.dbfrestoring datafile 00008 to /u01/app/oracle/oradata/testdb/undotbs3.dbfchannel ORA_DISK_1: reading from backup piece /backup/fullbak_05oj2uvl_1_1channel ORA_DISK_1: restored backup piece 1piece handle=/backup/fullbak_05oj2uvl_1_1 tag=TAG20130905T092301channel ORA_DISK_1: restore comple

23、te, elapsed time: 00:00:55Finished restore at 2013/09/05 12:43:13Restore其实就是把备份还原出来,但此时还是备份时的数据状态,也就是建mcl.t表之前的状态,数据文件目录的文件现在都回来了,但注意此时数据并没有mcl.t表oracledb backup$ ls -lh /u01/app/oracle/oradata/testdb/total 1.2G-rw-r- 1 oracle oinstall 15M Sep 5 12:45 current.269.808996433-rw-r- 1 oracle oinstall 21

24、M 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 1.1M Sep 5 12:42 ts_mcl.dbf-rw-r- 1 oracle oinstall 51M Sep 5 12:42 undotbs2.dbf-rw-r- 1 or

25、acle oinstall 51M Sep 5 12:42 undotbs3.dbf-rw-r- 1 oracle oinstall 213M Sep 5 12:42 users.dbfRMAN recover database;Starting recover at 2013/09/05 12:53:46using channel ORA_DISK_1starting media recoveryarchive log filename=/u01/app/oracle/arch/1_17_823348175.dbf thread=1 sequence=17archive log filena

26、me=/u01/app/oracle/arch/1_17_823348175.dbf thread=1 sequence=18RMAN-00571: =RMAN-00569: = ERROR MESSAGE STACK FOLLOWS =RMAN-00571: =RMAN-03002: failure of recover command at 09/05/2013 12:53:53RMAN-11003: failure during parse/execution of SQL statement: alter database recover logfile /u01/app/oracle

27、/arch/1_17_823348175.dbfORA-00310: archived log contains sequence 17; sequence 18 requiredORA-00334: archived log: /u01/app/oracle/arch/1_17_823348175.dbf5.恢复数据文件 continue包括两步:restore、recoverSQL archive log listDatabase log mode Archive ModeAutomatic archival EnabledArchive destination /u01/app/orac

28、le/archOldest online log sequence 15Next log sequence to archive 17Current log sequence 176.打开数据库 由于数据库的当前联机日志已经被删除,因此需要resetlogs方式重建redolog,并打开数据库SQL alter database open resetlogs;Database altered.7.验证数据 SQL select * from mcl.t;ID NAME- - 1 mcl 2 admin 3 dba总结:备份不是目的,恢复才是目的。恢复时需要一个基点备份(restore出来),然

29、后在此基础上重演归档日志和在线日志(recover过程),恢复到故障发生的那一刻3.3 生产环境下备份作业(适合小数据量)生产环境下备份作业(适合小数据量)1.准备一个空间足够的备份盘,并mount到/backup目录2.创建相关备份目录mkdir -p /backup/oracle/testdb/archbackupmkdir -p /backup/oracle/testdb/fullbackupmkdir -p /backup/oracle/testdb/ctlbackupmkdir -p /backup/oracle/testdb/scriptmkdir -p /backup/oracl

30、e/testdb/logmkdir -p /backup/oracle/testdb/otherchown -R oracle:oinstall /backup/chmod -R 775 /backup/3.上传备份脚本到/backup/oracle/testdb/script/4.制定任务计划定时执行备份:crontab -e0 2 * * * /backup/oracle/testdb/script/startrman.sh3.4 生产环境下增量备份作业(适合大数据量)生产环境下增量备份作业(适合大数据量)增量备份的级别:增量备份的级别:增量备份可以有 n 多个级别,从0级、1级、2级这样

31、顺序排列直到 n 级( n 为小于等于4的正整数)。增量备份分类:增量备份分类: 差异增量备份(备份同级和小于同级的变化数据) 累计增量备份(备份小于同级的变化数据)差异增量备份差异增量备份周日:周日:全库备份周一:周一:只备份level0之后有变化的数据块周二:周二:只备份周一以来所有变化的数据块周三:周三:只备份周二以来所有变化的数据块累计累计增量备份增量备份周日:周日:全库备份周一:周一:备份周日level0之后有变化的数据块周二:周二:备份周日以来所有变化的数据块周三:周三:备份周日以来所有变化的数据块差异增量备份特点:只备份小于同级的数据变化,但恢复时需要读取更多的备份集,因此备份时

32、间短,恢复时间长。累计增量备份特点:只备份小于等于同级的数据变化,但恢复时可以读取更少的备份集,因此备份时间长,恢复时间短。实际生产环境备份示例:实际生产环境备份示例:1.创建备份磁盘及目录,建立相关目录(参考上节)部署备份作业步骤:部署备份作业步骤:2. 上传备份脚本到/backup/oracle/testdb/script目录3. 开启备份的block change trace功能(非必须)SQL alter database enable block change tracking;SQL select * from v$block_change_tracking;STATUS FILE

33、NAME BYTES- - -ENABLED +DATADG/urpdb/changetracking/ctf.303.823879167 12681216crontab -e0 2 * * * /backup/oracle/testdb/script/startrman.sh4. 制定备份自动注意:以上脚本需要根据实际数据库名做修改注意:以上脚本需要根据实际数据库名做修改四四. 逻辑备份逻辑备份逻辑备份包括逻辑备份包括exp/expdp:其中exp是oracle比较古老的数据导出工具了,oracle10g及以后建议使用expdp导数据,因为后者速度更快,使用更加灵活,两者之间最大的区别在于:

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

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

36、edb backup$ exp mcl/mcl tables=mcl.t file=/backup/mcl_t.dmpExport: Release .0 - Production on Thu Sep 5 16:23:44 2013Copyright (c) 1982, 2007, Oracle. All rights reserved.Connected to: Oracle Database 10g Enterprise Edition Release .0 - 64bit ProductionWith the Partitioning, OLAP, Da

37、ta Mining and Real Application Testing optionsExport done in AL32UTF8 character set and AL16UTF16 NCHAR character setAbout to export specified tables via Conventional Path . . exporting table T 3 rows exportedExport terminated successfully without warnings.oracledb backup$ mkdir -p /backup/dir_dump/

38、SQL create 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.logExport: Release .0 - 64bit Production on Thursday, 05 September,

39、2013 16:44:30Copyright (c) 2003, 2007, Oracle. All rights reserved.Connected to: Oracle Database 10g Enterprise Edition Release .0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsStarting MCL.SYS_EXPORT_TABLE_01: mcl/* directory=dir_dump tables=

40、mcl.t dumpfile=mcl_t_expdp.dmp logfile=expdp_mcl_t.log Estimate in progress using BLOCKS method.Processing object type TABLE_EXPORT/TABLE/TABLE_DATATotal estimation using BLOCKS method: 64 KBProcessing object type TABLE_EXPORT/TABLE/TABLEProcessing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STA

41、TISTICS. . exported MCL.T 5.242 KB 3 rowsMaster 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.dmpJob MCL.SYS_EXPORT_TABLE_01 successfully completed at 16:44:524.3 一个实际生产环境逻辑备份示例:一个实际生产环境逻辑备份示例:生产库环境: rac数

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

43、效支持更多的用户 ,RAC可以让多个节点的多个实例同时访问同一个数据库。这样,系统就可以把一个大的任务分为几个子任务,给不同的节点去执行,从而横向扩展服务器内存、cpu压力。Rac的的优点优点: 多个数据库服务器担任实例,同时能对外提供服务,可以提供负载均衡和故障切换,任何一台数据库服务器发生故障,业务均不会受到影响,对服务器单点故障能起到很好的保护作用.Rac的的缺点缺点:在共享存储上只有1份数据,如果存储发生故障,数据可能会丢失,RTO时间也比较长,从性能角度上讲,如果软件本身的性能比较差(如sql比较低效),扩容成rac也不能解决性能问题,另外如果硬件比较差,如存储读写慢、内网速度慢,r

44、ac本身就是性能瓶颈;部署要求部署要求:两台相同硬件架构(甚至型号)的数据库服务器,每台数据库服务器至少两块网卡,一台共享存储,至少一台光纤交换机;5.1 rac5.2 dataguarddataguard包含一个生产数据库(单机或者rac)和一个或更多备份数据库(也可以是单机或 rac)。在 Data Guard 配置中的数据库可以通过oracle Net 连接并可以分布在不同地理位置, 通过冗余数据来提供数据保护。 dataguard 通过日志同步机制保证冗余数据和主数据之间的同步,这种同步可以是实时、延时、同步、异步多种形式。数据库所处位置是没有限制的,只要它们能互相通信,特点如下: p Data Guard 采用捕获主库归档日志或在线重做日志的方式,把所有主库的数据改变传递到备库进行重演,以此保证低延迟、一致性的多份数据。 p 10g版本的dataguard的备库只能处于

温馨提示

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

评论

0/150

提交评论