备份恢复

Posted 夜月色下

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了备份恢复相关的知识,希望对你有一定的参考价值。

配置可恢复性

控制文件

SQL> show parameter control_files

SQL> select * from v$controlfile;

1,修改路径:

$ cd $ORACLE_HOME/dbs

$ cp spfileorcl.ora spfileorcl.ora.bak

SQL> alter system set control_files=\'/u01/app/oracle/oradata/orcl/control01.ctl\', \'/home/oracle/control02.ctl\' scope=spfile;

SQL> shutdown immediate

$ mv /u01/app/oracle/fast_recovery_area/orcl/control02.ctl /home/oracle/control02.ctl

SQL> startup

SQL> show parameter control_files

SQL> select * from v$controlfile;

2,增加镜像:

SQL> alter system set control_files=\'/u01/app/oracle/oradata/orcl/control01.ctl\', \'/home/oracle/control02.ctl\', \'/home/oracle/control03.ctl\' scope=spfile;

SQL> shutdown immediate

$ cp /home/oracle/control02.ctl /home/oracle/control03.ctl

SQL> startup

SQL> show parameter control_files

SQL> select * from v$controlfile;

 

日志文件:

增加成员和日志组:

SQL> select GROUP#, SEQUENCE#, STATUS, MEMBERS from v$log;

SQL> select GROUP#, MEMBER from v$logfile;

SQL> alter database add logfile member \'/home/oracle/redo01b.log\' to group 1;

SQL> alter database add logfile member \'/home/oracle/redo02b.log\' to group 2;

SQL> alter database add logfile member \'/home/oracle/redo03b.log\' to group 3;

SQL> alter database add logfile group 4 (\'/u01/app/oracle/oradata/orcl/redo04.log\', \'/home/oracle/redo04b.log\') size 50M;

 

FRA:

SQL> show parameter db_recovery

 

backupset: 10GB,  archived log: 5GB

 

10+5, 10G

数据文件:

开启归档模式:

SQL> archive log list 检查当前设置

SQL> shutdown immediate

SQL> startup mount

SQL> alter database archivelog;打开 noarchivelog关闭

SQL> alter database open;

SQL> archive log list

SQL> show parameter log_archive_dest

SQL> select group#, sequence#, status, archived from v$log;

SQL> alter system switch logfile;

SQL> select group#, sequence#, status, archived from v$log;

SQL> select NAME, SEQUENCE#, STATUS from v$archived_log;

$ ls /u01/app/oracle/fast_recovery_area/ORCL

 

RMAN配置

 

$ rman target / 或rman target sys/password@orcl

RMAN> show all; 查看目标数据库备份设置

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP On;

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP clear;

RMAN> backup tablespace users;

RMAN> list backup;

SQL> desc v$backup_set 浏览器中也可以查看

 

RMAN备份

不归档 归档

online offline online offline

完全  部分  完全  部分     完全  部分  完全  部分

 

shutdown nomount mount open

 

备份数据文件:

SQL> select file_id, file_name from dba_data_files;

RMAN> backup datafile 4;

RMAN> backup datafile 4, 5;

RMAN> backup datafile \'/u01/app/oracle/oradata/orcl/users01.dbf\';

RMAN> backup tablespace users;表空间对应一个或多个数据文件

RMAN> backup tablespace users, example;

RMAN> backup database;

RMAN> list backup;

desc v$backup_set,浏览器查看备份

 

增量备份:

RMAN> backup incremental level 0 tablespace users;

RMAN> list backup of tablespace users;

SQL> create table t1(x int) tablespace users;

SQL> insert into t1 values (1);

SQL> commit;

RMAN> backup incremental level 1 tablespace users;

RMAN> backup incremental level 1 tablespace users;

SQL> create table t2(x int) tablespace users;

SQL> insert into t2 values (1);

SQL> commit;

RMAN> backup incremental level 1 cumulative tablespace users;

RMAN> list backup of tablespace users;

 

开启块跟踪:减少数据块扫描时间

SQL> alter database enable block change tracking using file \'/home/oracle/blk_trk.chg\';

需要重新连接会话

SQL> select * from v$block_change_tracking;

SQL> select DATAFILE_BLOCKS, BLOCKS_READ, BLOCKS, USED_CHANGE_TRACKING from v$backup_datafile where INCREMENTAL_LEVEL>0;

SQL> create table t3(x int) tablespace users;

SQL> insert into t3 values (1);

SQL> commit;

RMAN> backup incremental level 1 tablespace users;

SQL> select DATAFILE_BLOCKS, BLOCKS_READ, BLOCKS, USED_CHANGE_TRACKING from v$backup_datafile where INCREMENTAL_LEVEL>0;

SQL> alter database disable block change tracking; 关闭

 

增量更新:只备份数据变化

SQL> create table t1(x int) tablespace users;

SQL> insert into t1 values (1);

SQL> commit;

RMAN> backup incremental level 1 for recover of copy with tag \'update_copy\' tablespace users; 第一次创建的是0级备份

RMAN> list copy; 记录time和scn

SQL> insert into t1 values (2);

SQL> commit;

RMAN> backup incremental level 1 for recover of copy with tag \'update_copy\' tablespace users; 第2次创建的是1级备份

RMAN> list backup; backupset格式

RMAN> recover copy of tablespace users with tag \'update_copy\';

RMAN> list copy; time和scn更新

 

脚本形式:

RMAN> run {

backup incremental level 1 for recover of copy with tag \'update_copy\' tablespace users;

recover copy of tablespace users with tag \'update_copy\';

}

 

备份归档日志:

RMAN> list archivelog all;

RMAN> backup archivelog all delete all input;

RMAN> list archivelog all;

RMAN> list backup;

 

备份的维护:

查看:

RMAN> list backup; 备份集

RMAN> list copy; 镜像拷贝

RMAN> list backup of tablespace users; 查看表空间备份集

RMAN> list backup of datafile 4;

RMAN> list archivelog all;

检查备份:

RMAN> delete backup; 删除备份

RMAN> delete copy;

RMAN> list backup; list copy;

RMAN> report need backup; 根据策略检查

RMAN> backup tablespace users;

RMAN> report need backup REDUNDANCY 5;

RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 2;

RMAN> report need backup;

RMAN> CONFIGURE RETENTION POLICY clear;

RMAN> report obsolete;超过冗余度的备份

删除备份:

RMAN> delete backupset of tablespace users;

RMAN> delete backupset 1234;

RMAN> backup tablespace users;

RMAN> backup tablespace users;

RMAN> show all;

RMAN> delete obsolete;删除超过冗余度的备份

crosscheck: 交叉检查 看控制文件能跟备份文件对上么

RMAN> delete backup;

RMAN> backup tablespace users;

RMAN> list backup of tablespace users;

 

$ mv /u01/app/oracle/fast_recovery_area/ORCL/backupset/…  改名

RMAN> restore datafile 4; 恢复 报错

RMAN> crosscheck backup;

RMAN> list backup of tablespace users; 报废状态

RMAN> list expired backup;

 

$ mv /u01/app/oracle/fast_recovery_area/ORCL/backupset/… 恢复原名

RMAN> crosscheck backup;

RMAN> list backup of tablespace users; 可用状态

RMAN> delete expired backup;

 

catalog:恢复到控制文件

$ cp /u01/app/oracle/fast_recovery_area/ORCL/backupset/…  复制

RMAN> delete backup;

RMAN> list backup; backupset消失

$ mv /u01/app/oracle/fast_recovery_area/ORCL/backupset/… 恢复原名

RMAN> catalog recovery area noprompt;扫描备份文件加到控制文件里

RMAN> list backup; backupset恢复

 

以上是关于备份恢复的主要内容,如果未能解决你的问题,请参考以下文章

数据备份与恢复系统备份与恢复

JENKINS备份与恢复

数据库备份与恢复--02---mysql命令恢复数据---(逻辑备份)

Gitlab的备份与恢复

Mysql 备份恢复与 xtrabackup备份

如何Oracle 数据库备份与恢复