ITPub博客

首页 > 数据库 > Oracle > 热备份

热备份

原创 Oracle 作者:diashad 时间:2014-09-26 08:16:10 0 删除 编辑
热备份

	数据库需要打开归档模式
	
	参数文件无所谓冷备份热备份
	
	备份控制文件热备份
		alter database backup controlfile to '/home/oracle/hotbk/ctl.bk';
	模拟控制文件丢失
		select name from v$controlfile;
		host rm -fr /u01/app/oracle/oradata/huayd/*.ctl
		
		startup force nomount
		还原controlfile
		cp /home/oracle/hotbk/ctl.bk /u01/app/oracle/oradata/huayd/control01.ctl

		恢复controlfile
		recover database using backup controlfile [until cancel];
		

	备份表空间
		SQL> alter tablespace system begin backup;
		alter tablespace system begin backup
		*
		ERROR at line 1:
		ORA-01123: cannot start online backup; media recovery not enabled
		在noarchive模式下不能做alter tablespace XXX begin backup,联机备份只有在数据库位于archivelog模式中才能进行。

		select file_name from dba_data_files where tablespace_name='USERS';

		alter tablespace users begin backup;
		ho cp -v /u1/oracle/oradata/madrid/users01.dbf /home/oracle/hotbk
		alter tablespace users end backup;
		
		思考:begin backup 做了什么?
			当数据文件置于backup模式时,oracle会去锁定数据文件头,这时候数据库发生检查点的话将不会修改文件头的checkpoint scn,而只是增加checkpoint cnt,所以不管执行cp的时候操作系统块的拷贝顺序是如何,oracle总会从文件头的scn开始恢复,这样的话也就避免了数据丢失和数据块corruption.如果大家用的是rman来备份,那么就不会有这个问题,因为rman备份的时候rman会去对比数据块的头尾标志,如果发现不一致,那么它将会再去读这个块,直到读到一致的块才往备份集里写。 
			'block split',当数据文件在备份cp时,因为oracle数据块和操作系统块的差异,一个数据块可能由16个操作系统块组成(8k 数据块,512bytes 系统块),这样的话可能出现一个数据块包含了几个不同版本的操作系统块,会导致数据块的不一致,所以在备份模式下如果有语句对备份块产生更新,那么oracle会先把当前块复制一份到redo,当恢复的时候如果碰到数据块不一致就从redo把这个镜像拷贝回去,然后在这个一致性的镜像开始恢复。 如果使用rman来备份可以避免产生过多的块,就像上面所说的,rman会去建议块的一致性,所以不用复制镜像块到日志。	
	恢复表空间
		system / undo表空间
			startup mount;
			cp  
			recover datafile 1
			alter database open
		
		普通表空间
				
			SYS>alter database datafile 4 offline;
			SYS>select * from v$recover_file;			# 查看需作恢复的datafile
			SYS>ho cp '/tmp/bk/users01.dbf' '/u01/app/oracle/oradata/10gdb/users01.dbf'
			SYS>select * from v$recovery_log		# 查看恢复需用到的日志文件
			SYS>recover datafile 4
			SYS>alter tablespace users online;
	
	全库备份
		生成备份所有数据文件的脚本:
		select 'alter tablespace '||tablespace_name||' begin backup;'||chr(10)||
		'ho cp -v '||file_name||' /home/oracle/hotbk/'||chr(10)||
		'alter tablespace '||tablespace_name||' end backup;'
		from dba_data_files;
		
		
		
		
		

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/203348/viewspace-1281239/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 冷备份
请登录后发表评论 登录
全部评论

注册时间:2011-08-08

  • 博文量
    86
  • 访问量
    472942