Oracle备份与容灾详解
可以看出备份全库时包括两部分:一个数据文件的备份集,其中包括了所有的 数据文件,一个控制文件+spfile的备份集,包括了控制文件和spfile
[root@db 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
二. 备份和容灾概况
我们有哪些方式避免各种自然灾害、人为失误及应用程序故障? Oracle为我们提供了多种备份和容灾方式:
1.冷备份(操作系统copy数据文件)
2.Rman物理备份 3.逻辑备份(exp/expdp)
4.rac
5.数据卫士(Dataguard) 6.Goldengate
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; SQL> select * from t; ID NAME ---------- -----------------------------1 mcl 2 admin 3 dba SQL> alter system switch logfile; System altered.
Oracle 数据安全
01
备份与容灾的重要性
02
备份与容灾概况
03
物理备份
04
逻辑备份
05
容灾
一. 为什么要进行备份和容灾?
1.1. 数据库系统故障 案例1:如某客户的IT设备机房突然停电,造成存储磁盘损坏,数据文 件也因此损坏,来电后数据库无法启动,如果没有备份,则数据库恢复 工作将非常艰难. 案例2:某客户的oracle数据库系统采用aix小机做硬件平台,但由于此 小机购买年份较早,早过了维保期,某天突然宕机,操作系统无法启动, 由于没有专业的小机维护人员,小机始终无法启动,业务也因此无法运 行,幸好有异机备份,在短时间内恢复了数据。 案例3:某客户要新装一套rac数据库,但由于安装过程报错,需要删除 软件并重新安装,但不小心连到了生产数据库,删除了生产库的数据库 软件,类似误删除操作还有很多惨痛的案例…
其他厂商提供的备份和容灾方式:
IBM的FlashCopy EMC的SRDF等存储复制技术
2.1 区分物理备份和逻辑备份
物理备份就是转储ORACLE物理文件(如数据文件、控制文件、归档日志文
件等),一旦数据库发生故障,可以利用这些文件进行还原; 逻辑备份就是对数据库对象(如用户、表、存储过程等)利用EXPORT等工具 进行导出工作,可以利用IMPORT等工具把逻辑备份文件导入到数据库。
3.2 rman备份恢复场景示例: 现在已经做了全备,即基点备份,如果我们需要恢复数据库,我们就可以使用 这个全备的rman备份做基点,加上归档日志来恢复,如创建一个表并插入数 据,如果此时突然发生磁盘磁盘损坏,导致数据文件损坏及数据库异常终止, 可以按如下方法恢复: 1.Biblioteka mcl用户下新建一张表,并插入数据
3.恢复控制文件
RMAN> restore controlfile from '/backup/fullbak_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 output 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
特点:
物理备份备份的是数据文件、归档日志等底层文件,是真正适用于生产环境 的备份,强烈推荐生产库采用物理备份 逻辑备份是按一定的格式导出业务数据,适合特定场合,两种备份都不能直 接查看数据,需要用相应的工具导入或还原才能读取数据
2.2 区分冷备份和热备份
2.2.1 什么是冷备份? 数据库没有打开的情况下,使用操作系统命令或rman进行备份,由于数据库没有 打开,数据库的数据是干净一致的,不存在活动事务。 方式: 使用操作系统命令直接复制数据文件到另外一个目录即可,windows下直接复制粘 贴,其他平台 如linux下:cp
--启动数据库 SQL> startup ORACLE instance started. Total System Global Area 331350016 bytes Fixed Size 2083720 bytes Variable 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
[oracle@db10g datafile]$ pwd /u01/oradata/ORCL/datafile [oracle@db10g datafile]$ cp *.dbf *.ctl *.log /backup/
特点:需要将数据库关闭才能做冷备,这样就影响了业务使用,因此在实际生 产环境不具实际使用价值 2.2.2 什么是热备份? 数据库在open状态,事务还在活动,此时备份就是热备份,oracle数据库支持热 备份,最常用最实用的是用rman进行热备份
LOG_MODE -----------ARCHIVELOG
恢复到
3.1 备份过程示例:
[oracle@db ~]$ rman target / --使用rman登录数据库 connected to target database: TESTDB (DBID=2592324560) RMAN> backup database format '/backup/fullbak_%U'; Starting backup 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=/u01/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:07 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 including 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 Finished backup at 2013/09/05 09:24:11