Oracle物理备份详解

物理备份

1. RMAN Advisor

# 恢复指导需要全备和归档才能使用,归档是必须的

list failure——列出故障原因

advise failure——恢复建议

repair failure——按advice来恢复

change failure——改变故障状态

# 步骤
1. list failure
#例如删除数据文件后,list failure(要有相关备份)
rm -f test1.dbf

RMAN> list failure;


2. advise failure
RMAN> advise failure;

3. repair failure
#如果产生了automatic repairs,就可以使用repair failure恢复

#恢复预览
RMAN> repair failure preview;

#恢复
RMAN> repair failure;

SQL> select open_mode from v$database;

2. 归档模式

# 检查服务器是否为归档模式
SQL> SELECT log_mode FROM v$database;

# 查看归档信息
SQL> archive log list;

# 设置归档模式步骤
# 设置参数,修改日志地址(首先创建文件夹) 
alter system set log_archive_dest_1='location=/home/oracle/log_archive/arch01';
alter system set log_archive_dest_2='location=/home/oracle/log_archive/arch02';

# 设置状态
SQL> shutdown immediate; //立即关闭数据库
SQL> startup mount //启动实例并加载数据库,但不打开
SQL> alter database archivelog; //更改数据库为归档模式
SQL> alter database open; //打开数据库
# 查看归档信息
SQL> archive log list;

# 其他
SQL> alter system archive log start; //启用自动归档
SQL> alter system switch logfile; //手动切换一下日志文件存档,使修改生效
SQL> alter system archive log current; //手动归档

3. 备份操作

1. 参数配置

# 事先创建备份文件所在文件夹并授权
mkdir /orabackup
chown -R oracle.oinstall /orabackup

# 查看默认备份参数
SQL> show parameter recover 

# 修改备份参数
# 先修改备份空间大小(快速恢复区 fast_recovery_area,闪回恢复区 flash recovery area)
SQL> alter system set db_recovery_file_dest_size=10G; 

# 修改备份空间(快速恢复区 fast_recovery_area,闪回恢复区 flash recovery area)
SQL> alter system set db_recovery_file_dest='/home/oracle/fast_recovery_area' scope=both;

# 查看备份保留时间
SQL> show parameter control_file_record_keep_time;  

# 修改备份保留时间
RMAN> configure retention policy to recovery window of 7 days;

# RMAN操作
# 查看配置
RMAN> show all;

# 打开控制文件与服务器参数文件的自动备份
RMAN> configure controlfile autobackup on;

# 设置控制文件与服务器参数文件自动备份的文件格式
RMAN> configure controlfile autobackup format for device type disk to '/home/oracle/oracle_bak/ctl_%F'; 

# 设置备份的并行级别,通道数1,内容为备份集(backupset)
RMAN> configure device type disk parallelism 1 BACKUP TYPE TO BACKUPSET;
# 设置备份内容为copy(与上一条命令对应)
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO COPY;
主:back up as copy制作数据库文件的简单副本(与Linux cp命令相同),而backupset则是将片段备份为数据文件的表空间的逻辑实体.备份片段采用RMAN特定的二进制格式.



# 设置默认的备份设备为磁盘(或'SBT_TAPE')
RMAN> configure default device type to disk;

# 设置备份的文件格式,只适用于磁盘设备 (设置前要创建文件夹,channel参数可选)
RMAN> configure channel 1 device type disk format '/home/oracle/oracle_bak/bakup_%U'; 

# 备份整个数据库并指定名称位置
RMAN> backup database format '/orabackup/ora_%d_%U.bak';



# 参数一:
备份保留策略
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; # 备份保留天数
CONFIGURE RETENTION POLICY TO REDUNDANCY 3; # 备份冗余数
CONFIGURE RETENTION POLICY TO NONE;
Note:
可以按时间策略进行保留,设置7天的窗口,7天后就会被标记为obsolete。
可以按冗余数进行保留,设置3份,超过3份就会被标记为obsolete。
report obsolete; 可以查看

# 参数二:
备份优化器开关
CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE BACKUP OPTIMIZATION OFF;

Note:rman自动采用优化算法进行备份,判断哪些需要备份,哪些可以跳过,防止备份冗余,节省空间。

# 参数三:
默认的备份设备类型
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE DEFAULT DEVICE TYPE TO SBT_TAPE;
Note:
指定默认备份的设备类型,可以是磁盘或者磁带,可以是第三方的SBT库。
Oracle自带SBT库位置SBT_LIBRARY=oracle.disksbt。

# 参数四:
控制文件自动备份开关
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

CONFIGURE CONTROLFILE AUTOBACKUP ON;

Note:
当数据库发起备份,或者数据库结构发生变化,将会自动备份控制文件。
12c之后默认为开启状态。

# 参数五:
控制文件自动备份的路径和格式
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO%F’; # default

Note:
配置控制文件自动备份的位置和格式,可以是磁盘或者磁带。

# 参数六:
配置备份通道的并行度
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

CONFIGURE DEVICE TYPE DISK PARALLELISM 2;

Note:
配置默认的通道数量,可以是磁盘的通道或者磁带的通道。

# 参数七:
备份副本数
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

# 参数八:
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK clear;

Note:
数据文件和归档的默认备份副本数。

# 参数九:
备份集的最大限制
CONFIGURE MAXSETSIZE TO UNLIMITED; # default

Note:
默认是无限制大小。

# 参数十:
备份加密开关
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

# 参数十一:
备份加密的算法
CONFIGURE ENCRYPTION ALGORITHM ‘AES128’; # default

Note:
对备份集进行加密,当然进行还原备份集的时候,需要解密。
可以通过v$rman_encryption_algorithms查看加密算法种类,
加密算法有AES128、AES192、AES256

设置口令:
set encryption on identified by ‘oracle’ only;
解密:
set decryption identified by ‘oracle’;
关闭:
set encryption off;

# 参数十二:
备份集压缩算法
CONFIGURE COMPRESSION ALGORITHM ‘BASIC’ AS OF RELEASEDEFAULTOPTIMIZE FOR LOAD TRUE ; # default

CONFIGURE COMPRESSION ALGORITHM 'MEDIUM';

Note:
配置默认的压缩算法。
自带4种压缩算法:
BASIC:基本的压缩算法,
LOW:对备份吞吐量的影响最小,适用于CPU资源是限制因素的环境
MEDIUM:适用大部分环境,压缩比和速度最优组合
HIGH:最高压缩,适合网络慢的场景
V$RMAN_COMPRESSION_ALGORITHM视图有详细描述。

# 参数十三:
归档删数策略
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;

Note:
配置归档可自动删除的策略,可以配置备库应用完自动删除。
还有被备份的次数等。
需要归档存在在FRA区域才能自动删除。

# 参数十四:
控制文件的快照保存位置和格式
CONFIGURE SNAPSHOT CONTROLFILE NAME TO/u01/app/oracle/product/11.2.0.4/dbhome_1/dbs/snapcf_pretty.f’; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+DATA/WLDB/snapcf_wldb.f';

Note:
配置控制文件快照的保存位置,RAC需要配置在ASM磁盘组上。
快照控制文件是为了保障控制文件的一致性,
每次备份会刷新快照文件。

# 参数十五:
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
RMAN输出结果的保留天数。
V$RMAN_OUTPUT视图的记录内容。

2. 备份命令

# 备份整个数据库并指定名称位置
RMAN> backup database format '/orabackup/ora_%d_%U.bak';


# 备份数据库
RMAN> backup database plus archivelog;  # 备份所有数据文件、UNDO文件,包括归档日志文件,临时文件不备份,另外RMAN会自动备份Control File and SPFILE 

# 备份整个数据库并压缩备份集
RMAN> backup as compressed backupset database format '/u01/app/oracle/rmanbak/whole_%d_%U';  

# 备份数据文件
select FILE# from v$datafile; //使用文件号备份可以先查看
RMAN> backup datafile 8,10,11;
RMAN> backup as copy datafile 8,10,11;
RMAN> backup as compressed backupset datafile 8,10,11; //备份时压缩
RMAN> backup datafile '/oracle/oradata/orcl/users01.dbf','/oracle/oradata/orcl/tbs4.dbf';

# 备份参数文件
RMAN> backup spfile;

# 备份控制文件
RMAN> backup current controlfile;

# 备份表空间
RMAN> backup tablespace tbs1;
RMAN> backup tablespace tbs1,tbs2;

# 备份归档日志文件
RMAN> backup format '/u01/app/oracle/rmanbak/lf_%d_%U' archivelog all delete input;   
--delete input 删除所有已经备份过的归档日志

RMAN>  backup archivelog sequence between 50 and 120 thread 1 delete input;

RMAN> backup archivelog from time "sysdate-15" until time "sysdate-7";


# 备份在备份操作期间产生的新的归档日志
RMAN> backup database plus archivelog format  '/u01/app/oracle/rmanbak/lg_%d_%U' delete input;

# 备份闪回区
RMAN> backup recovery area;

# 检查备份操作
RMAN> report obsolete; //报告过期备份
RMAN> delete obsolete; //删除过期备份
RMAN> list backup;  //列出所有备份
RMAN> list backupset;  //列出所有备份
RMAN> report need backup; //查看所需要的备份文件
RMAN> list expired backup;  //列出无效备份
RMAN> list expired backupset; 列出无效backupset

3. 增量备份

# 0级增量
# 开启块跟踪 
mkdir /home/oracle/tracking
chown -R oracle.oinstall /home/oracle/tracking
SQL> ALTER DATABASE enable block change tracking using file '/home/oracle/tracking/orcl.trc';

# 增量与差异备份
RMAN> backup incremental level 0 database; 0级增量
RMAN> backup incremental level 1 database; 差异备份
RMAN> backup incremental level 1 cumulative database; 累积备份

4. 数据恢复

数据文件datafile

Restore 使用备份的数据进行还原
Recover 使用日志进行恢复

1. 非关键型数据文件损坏的服务器离线处理方法
SQL> startup mount
SQL> alter database datafile 16 offline;
SQL> alter database open;
RMAN> restore datafile 16;
RMAN> recover datafile 16;
SQL> alter database datafile 16 online;


2. 非关键型数据文件损坏的服务器在线处理方法
SQL> alter database datafile 16 offline;
RMAN> restore datafile 16;
RMAN> recover datafile 16;
SQL> alter database datafile 16 online;

--或

RMAN> run {
sql 'alter database datafile 16 offline';
restore datafile 16;
recover datafile 16;
sql 'alter database datafile 16 online';
}

3.临时文件不备份
# 破环临时文件
rm -f /oracle/oradata/orcl/temp01.dbf
rm -f /oracle/oradata/orcl/temp1.dbf

# 修复
1.添加新临时文件
alter tablespace temp add tempfile '/oracle/oradata/orcl/temp001.dbf' size 100M autoextend on;
2 .删除旧新临时文件
alter tablespace temp drop tempfile '/oracle/oradata/orcl/temp1.dbf';

控制文件controlfile

# 破坏控制文件
rm -f /oracle/oradata/orcl/control01.ctl
rm -f /oracle/oradata/orcl/control03.ctl

# 启动
SQL> shutdown abort;

SQL> startup
提示:
ORACLE instance started.

Total System Global Area  943718400 bytes
Fixed Size		    8627440 bytes
Variable Size		  805309200 bytes
Database Buffers	  121634816 bytes
Redo Buffers		    8146944 bytes
ORA-00205: error in identifying control file, check alert log for more info

SQL> alter system set control_files='/oracle/flash_recovery_area/orcl/control02.ctl' scope=spfile;

System altered.

SQL> shutdown abort

SQL> startup

日志文件组

# 破坏
rm -f /oracle/oradata/orcl/redo01.log  
rm -f /oracle/oradata/orcl/redo02.log  
rm -f /oracle/oradata/orcl/redo03a.log 
SQL> select a.GROUP#,a.SEQUENCE#,b.MEMBER,a.STATUS from v$log a, v$logfile b where a.GROUP#=b.GROUP# order by 1;

    GROUP#  SEQUENCE# MEMBER				  STATUS
---------- ---------- ----------------------------------- ----------------
	 1	   19 /oracle/oradata/orcl/redo01.log	  INACTIVE
	 1	   19 /oracle/oradata/orcl/redo01a.log	  INACTIVE
	 2	   20 /oracle/oradata/orcl/redo02a.log	  INACTIVE
	 2	   20 /oracle/oradata/orcl/redo02.log	  INACTIVE
	 3	   21 /oracle/oradata/orcl/redo03a.log	  CURRENT
	 3	   21 /oracle/oradata/orcl/redo03.log	  CURRENT

# 修复方法:从库中清除损坏的文件
alter database drop logfile member '/oracle/oradata/orcl/redo01.log';
alter database drop logfile member '/oracle/oradata/orcl/redo02.log';
alter database drop logfile member '/oracle/oradata/orcl/redo03a.log';
如果该文件为current 切换日志 alter system switch logfile; 再清除


5.2 一组成员都损坏 ---数据库不完全恢复 重置日志 
    查看归档日志 sequence 26
	基于sequence 不完全恢复
	
run {
startup mount;
set until sequence=27;
restore database;
recover database;
alter database open resetlogs;
}


# 一旦发生重置日志 立刻备份
RMAN> backup incremental level 0 database;

参数文件spfile

# 平时收集信息 
SQL> select dbid from v$database;

# 模拟
mv spfileorcl.ora /tmp

关机状态
RMAN> startup nomount
RMAN> set DBID=1469582717    
RMAN> restore spfile from '/oracle/flash_recovery_area/ORCL/autobackup/2022_09_04/o1_mf_s_1114527962_kk8mltyd_.bkp'; 此处为最新的控制文件自动备份 控制文件自动备份里含有参数文件的数据


SQL> startup force  重启服务器
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值