今儿个,咱来聊聊 flashbackup 这玩意儿。我也不知道这是个就知道好像跟备份有关。后来一查,,原来是 Oracle 数据库里头的一个快速恢复功能。既然碰上,那就鼓捣鼓捣。
准备工作
咱得有个 Oracle 数据库不是?我这儿用的是虚拟机,装个 Oracle 11g。装数据库的过程就不细说,网上教程一大堆,照着来就行。装好之后,先别急着玩 flashbackup,咱还得做点准备工作。
第一步,得把数据库给折腾到归档模式(ARCHIVELOG)。这就像给数据库开个“后悔药”功能,万一数据丢,还能找回来。咋弄?
- 连接数据库:用 sqlplus 以 sysdba 身份连上数据库。
- 查看当前模式:敲个命令
archive log list
,看看现在是不是归档模式。 - 如果不是:
- 先关库:
shutdown immediate
- 再启动到 mount 状态:
startup mount
- 开启归档:
alter database archivelog;
- 打开数据库:
alter database open;
- 先关库:
搞定归档模式,咱得配置一个叫“快速恢复区”的地儿。这地儿就是用来放备份文件的,Oracle 会自动管理里面的东西,满还会自己清理。
- 设置恢复区大小:
alter system set db_recovery_file_dest_size=10G;
(我这儿给 10G,你们自己看着办) - 设置恢复区位置:
alter system set db_recovery_file_dest='/u01/app/oracle/flash_recovery_area';
(路径你们也自己定)
开始折腾
准备工作做好,咱就可以开始玩 flashbackup 。我这儿用 RMAN(Recovery Manager)来操作,这玩意儿是 Oracle 自带的备份恢复工具,挺好使的。
咱得连上 RMAN:
rman target /
然后,咱就可以开始备份。最简单的,来个全库备份:
backup as compressed backupset database plus archivelog;
这条命令会把整个数据库,还有归档日志,都给备份。备份的时候,RMAN 会自动用上 flashbackup 技术,速度那是杠杠的。我这儿一个几百兆的数据库,几秒钟就搞定。备份完,RMAN 会告诉你备份文件在哪儿,长啥样。
光备份还不行,咱还得试试恢复。万一哪天数据库真挂,咱还得靠备份来救命。
先模拟一下数据库挂掉的情况。我这儿简单粗暴点,直接把数据库文件给删。
- 查看数据文件
- 连接数据库:用 sqlplus 以 sysdba 身份连上数据库。
- 查看数据文件路径与文件名:
select name from v$datafile;
- 关闭数据库实例:
shutdown abort;
- 删除数据文件
- 使用rm命令:切换到查看到的数据文件目录,使用
rm -f
命令加需要删除的数据文件名,这里需要注意对应好系统的数据文件
- 使用rm命令:切换到查看到的数据文件目录,使用
然后,咱再用 RMAN 来恢复:
- 启动实例到nomount状态:
startup nomount;
- 连接RMAN工具:
rman target /
- 恢复控制文件:
restore controlfile from autobackup;
- 启动到mount状态:
alter database mount;
- 恢复数据库:
restore database;
- 打开数据库重置日志:
recover database;
- 打开数据库:
alter database open resetlogs;
等着 RMAN 跑完,数据库就回来。看看,是不是挺简单的?
一点心得
flashbackup 这玩意儿,确实挺好使的,备份恢复速度快,操作也简单。不过这只是 Oracle 众多备份恢复方法中的一种,具体用哪种,还得看实际情况。比如,如果你的数据库特别大,全库备份可能就不太合适,得考虑增量备份或者表空间备份。备份恢复这事儿,得多琢磨,多实践,才能找到最适合自己的方法。