Oracle 11g Rman备份恢复及闪回
文章标签Oracle Rman增量备份及flashback闪回
一、1 备份前的准备配置
(一)归档模式
RMAN联机备份需要数据库处于归档模式,关闭数据库,启动到mount状态,修改数据为归档模式
SQL> alter database archivelog;
Database altered.
SQL> alter database open;
Database altered.
(二)1.2 恢复目录
恢复目录是RMAN专用的备份信息存储地,没有恢复目录时,RMAN相关的备份信息,比如归档文件路径、备份集路径等均存储在目标数据库的控制文件中,考虑到控制文件并不能无限增长,而且控制文件也不仅仅是用来存储与备份相关的信息,当待备份的数据库注册到恢复目录之后,RMAN相关的信息除了保存在控制文件中外(控制文件实际上只保存一部分),更加详细的信息就都被存储在恢复目录中。
恢复目录创建过程,管理员账户登录到数据库
1.创建表空间
SQL>create tablespace rman_ts datafile ‘/data/oracle/data/rman_ts1.dbf’
size 2G
autoextend on next 500M
maxsize 6G;
2.创建rman用户
SQL>create user rman_reuser identified by 123456
default tablespace rman_ts
temporary tablespace temp;
3.授权
SQL>grant connect, resource, recovery_catalog_owner to rman_reuser;
4.创建完表空间与用户之后,登录到RMAN模式下创建恢复目录rman_ts,注意名字与表空间一样
rman catalog rman_reuser/123456
RMAN>create catalog tablespace rman_ts;
5.连接目标
RMAN> connect target /
6.注册数据库
RMAN>register database;
7.设置备份文件保存路劲:/databack/rmandata
RMAN> configure channel device type disk format ‘/databack/rmandata/data_%d_%M_%U’;
old RMAN configuration parameters:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ‘/databack/rmandata/%d_%M_%D’;
new RMAN configuration parameters:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ‘/databack/rmandata/data_%d_%M_%U’;
new RMAN configuration parameters are successfully stored
starting full resync of recovery catalog
full resync complete
8.设置控制文件默认的存放位置
RMAN> configure controlfile autobackup format for device type disk to ‘/databack/rmandata/ctl_%d_%M_%F’;
new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘/databack/rmandata/ctl_%d_%M_%F’;
new RMAN configuration parameters are successfully stored
starting full resync of recovery catalog
full resync complete
到此联机备份准备工作完成。
二、rman0级全库备份脚本
Vi /databack/rmandata/backup_level_0.sh
#!/bin/bash
source ~/.bash_profile
DATE=date +%F
rman target rman_reuser/123456 msglog /databack/rmandata/rlog_KaTeX parse error: Expected 'EOF', got '#' at position 581: …kup_level_0.sh #̲!/bin/bash sour…DATE append <<EOF
run
{
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
backup incremental level 1 database format ‘/databack/rmandata/Data_%d_%M_%U’
plus archivelog format ‘/databack/rmandata/log_%d_%M_%U’;
backup current controlfile format ‘/databack/rmandata/ctl_%d_%M_%U’;
backup spfile format ‘/databack/rmandata/spf_%d_%M_%U’;
release channel ch1;
release channel ch2;
}
report obsolete;
delete noprompt obsolete;
crosscheck backup;
delete noprompt expired backup;
list backup summary;
EOF
说明:
0级备份代表全量备份,1级备份代表增量备份
四、添加定时任务
Su – oracle
Crontab -e
0 0 7 * * /bin/sh /databack/rmandata/backup_level_0.sh
0 0 1-6 * * /bin/sh /databack/rmandata/backup_level_1.sh
说明:
周日0级全库备份,周一到周六1级增量备份
五、全库恢复恢复丢失或损坏的数据文件
(一)演示
先把表空间文件删除
rm -rf /data/oracle/data/hfcrm01.dbf
(二)注意事项
使用rman备份之前一定要先查看dbid,恢复之前一定要设置dbid,否则恢复不成功
(三)查看和设置dbid
SQL>select dbid from v$database ;
1616216467
RMAN>set dbid=1616216467;
(四)启动到nomount
su – oracle
sqlplus / as sysdba
SQL>shutdown immediate #先关闭数据库
SQL>startup nomount #启动到nomount状态
(五)恢复控制文件
rman target rman_reuser/123456
RMAN>restore controlfile from ‘/databack/rmandata/ctl_HFCRM_12_430fo4q8_1_1’;
(六)再alter到mount状态
SQL>alter database mount;
(七)恢复数据库文件
RMAN> restore database;
RMAN> recover database;
说明:
restore 是转储 也是还原被损坏文件
recover 是恢复 通过redo log & archive log恢复
六、误操作闪回恢复
(一)设置闪回路径和大小
alter system set db_recovery_file_dest_size=10G scope=both;
alter system set db_recovery_file_dest=‘/databack/db_recovery_file’;
(二)修改闪回时间
alter system set db_flashback_retention_target=43200;
#说明:43200代表1天1440分钟*30天确认闪回状态
(三)确认闪回时间
(四)开启闪回
alter database flashback on;
(五)确认闪回状态
(六)删除一条数据
(七)表启用横移模式
alter table Csong enable row movement;
(八)执行闪回
1.按时间戳闪回
flashback table Csong to timestamp to_timestamp(‘02-DEC-21 17:07:33’,‘dd-mon-yy hh24:mi:ss’);
说明:02-DEC-21为时间格式,代表21年12月2号
2.闪回drop删除的表
1 先查看回收站
SQL> show recyclebin;
2 闪回到另一张表
SQL> create table Csong_new as select * from “BIN$0jQBhjMrIpXgVQAAAAAAAQ==$0”;
3 按scn进行闪回
1.先增加一行
2 查看当前数据库的scn,需要dba权限
SQL> select current_scn from v$database;
3 执行闪回
SQL> flashback table Csong to scn 1140449;