0%

RMAN基础知识

RMAN参数

CONFIGURE RETENTION POLICY

保留7天的备份,超过7天标记为obsolete

1
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS

保留最近的五份备份,超过五份最老的备份将标记为redundancy

1
CONFIGURE RETENTION POLICY TO REDUNDANCY 5

不需要保留策略

1
CONFIGURE RETENTION POLICY TO NONE

CONFIGUER DEFAULT DEVICE TYPE

指定设备类型为DISK

1
Configure default device type to disk

指定设备类型为磁带

1
CONFIGURE DEFAULT DEVICE TYPE TO SBT

CONFIGURE CONTROLFILE AUTOBACKUP

启用控制文件自动备份

1
CONFIGURE CONTROLFILE AUTOBACKUP ON

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT

配置控制文件的备份路径和备份格式

1
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/backup/%bak_%U'

CONFIGURE DEVICE TYPE DISK PARALLELISM

设置设备类型的并行度

1
CONFIGURE DEVICE TYPE DISK PARALLELISM 5

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT

设置备份文件的备份路径和格式

1
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u01/backup/%bak_%U'

CONFIGURE BACKUP OPTIMIZATION

开启备份优化,通常针对只读表空间或OFFLINE状态的表空间,对于未修改过的文件或者已经备份过的归档再次备份时会跳过

1
configure backup optimization on;

CONFIGURE ARCHIVELOG DELETETION POLICY

设置归档文件删除策略,配置为APPLIED ON STANDBY时如果standby库还需要的日志在通过附加的DELETE INPUT时删除归档时会报RMAN-08137错误

1
CONFIGURE ARCHIVELOG DELETETION POLICY TO APPLIED ON STANDBY;

RMAN基础命令

连接RMAN

本地连接

1
rman target /

远程连接

1
rman target user/password@tns

执行SQL
RMAN还可以直接启动关闭数据库,但无法执行SELECT查询,因为RMAN不会返回查询结果

1
RMAN >SQL 'ALTER SYSTEM ARCHIVE LOG ALL';

LIST命令

列出所有备份

1
RMAN >list backup [OF] [CONTROLFILE|DATAFILE|ARCHIVELOG|TABLESPACE];

列出所有归档文件

1
RMAN >list archivelog all;

列出无效备份

1
RMAN >list expired backup;

DELETE命令

删除过期备份

1
RMAN >DELETE EXPIRED BACKUP;

删除无效备份

1
RMAN >DELETE OBSOLETE;

删除指定备份集

1
RMAN >DELETE BACKUPSET 19;

备份归档后删除

1
RMAN >BACKUP ARCHIVELOG ALL DELETE INPUT;

REPORT命令

查看需要备份的文件

1
RMAN >report need backup;

查看指定表空间是否需要备份

1
RMAN >REPORT NEED BACKUP TABLESPACE USERS;

CROSSCHECK命令

检查所有归档日志

1
RMAN >CROSSCHECK ARCHIVELOG LIST;

检查所有备份集

1
RMAN >CROSSCHECK BACKUP;

CHANGE命令

修改备份集为无效

1
RMAN >CHANGE BACKUPSET n UNAVAILABLE;

修改归档日志为无效

1
RMAN >CHANGE ARCHIVELOG LOGSEQ=n UNAVAILABLE;

检查数据库坏块

检查数据库坏块

1
RMAN >BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;

查看坏块信息

1
SQL >SELECT * FROM v$database_block_corruption;

备份压缩

执行BACKUP时指定AS COMPRESSED BACKUPSET子句对备份进行压缩,压缩会较小备份集的大小,但是会增加备份和恢复时的速度

1
BACKUP AS COMPRESSED BACKUPSET TABLESPACE SYSTEM;

备份加密

ORACLE 10gR2开始支持对备份集进行加密,在恢复时需要指定密钥。RMAN提供三种加密方式:透明加密、密码模式、双重模式。透明加密,需要先启用ENCRYPTION WALLET

1
RMAN >CONFIGURE ENCRYPTION FOR DATABASE ON;

密码模式,作用于当前会话,明文指定加密密码

1
RMAN >SET ENCRYPTION ON IDENTIFIED BY password ONLY;
FORMAT格式化参数
参数 含义
%a ORACLE数据库的RESETLOG_ID
%c 备份片段的复制数
%d Oracle数据库名称
%D 当前时间的日,格式为DD
%e 归档序号
%f 绝对文件编号
%F 基于DBID+时间组合的唯一名称
%h 归档日志线程号
%I 数据库DBID
%M 当前时间中的月份
%N 表空间名称
%n 数据库名称,并在右侧填充x至8位
%P 备份集中备份片的编号
%s 备份集号
%t 备份集时间戳
%T 当前时间的年月日格式,YYYYMMDD
%u 由备份集编号和建立时间压缩后组成的8个字符
%U 默认是%u_%p_%c的简写形式
%Y 当前时间中的年,YYYY

备份

备份数据库

1
RMAN >BACKUP DATABASE FORMAT '/u01/backup/db/bak_%U';

备份表空间

1
RMAN >BACKUP TABLESPACE USERS;

备份数据文件

1
RMAN >BACKUP DATAFILE '/u01/app/oradata/orcl/system.dbf';   ---也可以直接采用file_id

备份控制文件

1
RMAN >BACKUP CURRENT CONTROLFILE;

注:当CONFIGURE CONTROLFILE AUTOBACKUP为ON是每次备份会自动备份控制文件,我们也可以在执行BACKUP时指定INCLUDE CURRENT CONTROLFILE子句同时备份控制文件

备份归档日志

1
RMAN >BACKUP ARCHIVELOG ALL;

注:除ALL外,也可以指定UNTIL/SCN/TIME/SEQUENCE等参数指定备份区间。也可以在执行BACKUP时指定PLUS ARCHIVELOG子句同时备份归档文件

增量备份

增量备份用于在全量备份的基础上进行增量数据的备份,减少备份时间和备份数据量。在进行增量备份前需要先进行0级备份,相当于数据库的完整备份,但是0级备和BACKUP DATABASE并不相同。

增量备份分为两种备份类型:DIFFERENTIAL(差异)和CUMULATIVE(累积),默认为DIFFERENTIAL方式。差异增量备份会只备份上次增量备份以来所有变化的数据,累积增量备份总是备份自0级备份以来所有变化的数据。

0级备份

1
RMAN >backup incremental level 0 database;

1级增量备份

1
RMAN >backup incremental level 1 database;

1级累积增量备份

1
backup incremental level 1 cumulative database;

块跟踪

在增量备份时需要扫描整个数据文件来确认变化的数据,为了避免这种情况进行快速增量备份,Oracle可以开启块跟踪特性,将变化的数据单独记录到跟踪文件中。启用块跟踪后会通过后台进程CTWR负责将变化数据写入块跟踪文件。

查看是否开启

1
select filename,status,bytes/1024/1024 from v$block_change_tracking;

开启块跟踪

1
alter database enable/disable block change tracking using file '';

更改块跟踪文件位置

1
alter database rename file 'old_path' to 'new_path';

恢复

恢复参数文件

设置DBID

1
RMAN> set DBID = 1405321685

注:DBID可从v$database、备份日志、string *.dbf | grep MAXVALUE等手段获取

启动数据库到nomount并恢复参数文件

1
2
RMAN> startup nomount
RMAN> restore spfie from autobackup;

恢复控制文件

1
RMAN> restore controlfile from autobackup;

恢复数据库

还原数据库

1
RMAN> restore database;

恢复数据库

1
RMAN> recover database;

打开数据库

1
RMAN> alter database open;

注:可以指定until time选项恢复到指定时间点

还原表空间

表空间脱机

1
RMAN> sql 'alter tablespace users offline immediate';

恢复表空间

1
2
RMAN> restore tablespace users;
RMAN> recover tablespace users;

表空间联机

1
RMAN> sql 'alter tablespace users online';

Recovery Catalog

RMAN Recovery Catalog(恢复目录)用于存储RMAN备份恢复相关信息的数据库,当没有恢复目录时,RMAN的备份信息,例如归档文件路径、备份集路径等信息保存在控制文件中

创建管理用户

1
CREATE USER RMAN_ADMIN IDENTIFIED BY rman%123;

添加管理权限

1
grant connect,resource,recovery_catalog_owner to rman_admin;

连接catalog库

1
rman catalog rman_admin/rman%123@tns

创建恢复目录

1
create catalog;

注册数据库

1
2
rman catalog rman_admin/rman%123@tns target system/oracle@tns
RMAN >register database;

同步恢复目录

1
RMAN >resync catalog;

取消注册

1
RMAN >UNREGISTER DATABASE;