|
1,数据库备份有很多种方法,你们一般使用哪种备份方式?
我们生产环境中目前采用RMAN来进行完全备份和增量备份。
星期日采用全备策略,其他时段为增量备份。
备份完成后,用BE拷贝到磁带库中。开启邮件提醒功能,如果有失败,解决故障后补备份。
每天盘点下备份情况,定期进行核心数据库的恢复演练。有效性验证下。
贴个我以前的学习笔记内容把
- --==================================
- 物理备份
- 1.完全脱机备份(冷备份)(noarchivelog|archivelog)
- a.os copy 操作系统的拷贝,如果开始数据文件创建的很大,而实际里面数据不多的时候,需要时间久。
- b.shutdown
- 2.部分脱机备份(tablespace offline)
- a.os copy 不可以备份有效的块。
- b. (system , undo) 不可以offline
- 3.部分联机备份(begin)
- 4.rman(recovery manager)
- a.nocatalog
- b.catelog
- --==================================
- target db 用nocatalog方式备份的时候要保证target db的控制文件没有损坏
- catalog db
- 最好是放在不在同一台服务器上的不同的库。
- c:\rman target sys/system@abc nocatalog
- 或者c:\rman RMAN>connect target sys/system@abc 默认也是nocatalog方式
- backup database;
- 使用的targe db的控制文件
- 通过第三方软件可以备份到磁带上。
- --===================
- -======================
- backupset 逻辑概念
- backup piece 物理概念
- 环境变量 nls_data_format 值 yyyy/mm/dd hh24:mi:ss
- list backup
- --===========
- 1.database (datafile,control,spfile)
- 2.tablespace
- 3.database
- 4.controlfile
- 5.spfile
- 6.archivelog
- select * from V$database 可以查询控制文件类型 字段controlfile_type =current
- backup tablespace sysaux
- backup datafile 9,3; 备份9 和3 号数据文件
- backup current controlfile; 备份控制文件
- backup spfile;
- backup archivelog all; [all,from ,high,like,logseq,low,scn,sequence,time,until]
- --=================
- rman恢复的时候,可以把以前的数据文件移动一个临时目录里,防止回复不成功
- RMAN>startup mount
- RMAN>list buckupset 显示的信息都是来源于控制文件,如果控制文件坏了,是无法显示的。
- 分2个阶段
- restore
- recover
- RMAN>list backup of database; 显示所有的数据文件的备份
- RMAN>restore preview database; 预览
- RMAN>restore database;
- select file#,checkpoint_change# from v$datafile;
- select file#,checkpoint_change# from v$datafile_header;
- recover database;
- alter database open;
- --==========================
- --========================================
- 1.datafile
- select * from dba_data_files
- 2.controlfile
- select * from v$controlfile
- 3.redo
- select * from v$logfile
- select * from v$log
- drop tablespace undotbs3 including contents and datafile;
- scn:system change number
- 内部的一个逻辑时钟。 3秒钟变化一次。
- select dbms_flashback.get_system_change_number from dual;
- select * from v$datafile ;其中 一号文件 system 字段CREATION_CHANGE# 这个是我们可以看见的最小的SCN 值5
- select * from dba_data_files;
- select current_scn from v$database;
- 实验:
- create table t(id int,scn number) tablespace users;
- insert into t values (1,dbms_flashback.get_system_change_number);
- commit;
- alter system switch logfile;
- select *from v$log;字段FIRST_CHANGE# 就是开始时的最小SCN
- insert into t values (2,dbms_flashback.get_system_change_number);
- commit;
- select file#,checkpoint_change# from v$datafile; 控制文件
- select file#,checkpoint_change# from v$datafile_header;
- select sequence#,first_change#,first_time,next_change#,next_time from v$archived_log
- where first_change# <=2006082 and next_change# >= 2006082 ;
- 归档日志必须连续,如果中间有断,那只可以回复到断前的归档日志。
- recover database;
- recover database until cancel; 属于不完全恢复,要恢复到哪个点,ORACLE不清楚。
- alter tablespace users offline;
- alter tablespace users online;
- recover datafile 4; AUTO
- 在线备份表空间(部分联机备份) 记录数据文件头SCN固定的,但是每个块的SCN,有可能被修改。因为是热备份。
- alter tablespace system begin backup; 处于热备份下,如果有进程操作这个数据文件的数据块时候,oracle把这个块备份一下,以日志的形式备份。
- 这种情况下产生的日志比平常模式下 多很多
- select * from v$backup; 查询可以看到1号文件system已经激活了 SCN号发生了变化。
- alter tablespace system end backup
- alter database begin backup; 然后把所有的数据文件全部拷贝出去
- alter database end backup;
- select distinct sid from V$mystat
- 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;
删除过期的归档,现在再执行一次备份
|
|