RMAN在数据库服务器的帮助下实现数据库文件、控制文件、数据库文件与控制文件的映像副本、归档日志文件、数据库服务器参数文件的备份。

  RMAN的特点:

(1) 支持增量备份:传统的exp与expdp备份工具,只能实现一个完整备份而不能增量备份,RMAN采用备份级别实现增量备份,在一个完整的备份基础上采用增量备份可以大大减少备份的数量;

(2) 自动管理备份文件:RMAN备份的数据是RMAN自动管理的,包括文件名字,备份文件存储目录等;

(3) 自动化备份与恢复:在备份与恢复操作时,使用简单的指令就可以实现备份与恢复,执行过程完全有RMAN维护。

(4) 不产生重做信息: RMAN联机备份不产生重做信息。

(5) 支持映像复制: 使用RMAN可以实现映像复制,映像以操作系统的文件格式存在,这种复制类似于用户管理的脱机备份方式。

(6) 备份的数据文件压缩处理: RMAN提供一个参数,说明是否对备份文件进行压缩,压缩的备份文件以二进制文件格式存在,可以减少备份文件的存储空间。

(7) 备份文件有效性检查功能: 可以在备份之后恢复检测备份文件是否可用,避免无效恢复操作。

1 RMAN 脱机备份与还原

1.1 使用RMAN命令连接到数据库

[oracle@oracledb ~]$ rman target/

Recovery Manager: Release 11.2.0.1.0 - Production on Tue May 30 14:33:04 2017

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

connected to target database: ORCL (DBID=1452257309)

1.2 脱机备份之前确定数据库处于非归档模式下,使用管理员账号登录到数据库查看

SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 1
Current log sequence

1.3 脱机备份时数据必须处于mount状态下,关机启动数据库到mount状态下

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 450953216 bytes
Fixed Size 2214256 bytes
Variable Size 339740304 bytes
Database Buffers 104857600 bytes
Redo Buffers 4141056 bytes
Database mounted.

1.4 RMAN模式下输入脱机备份命令,系统会自动备份整个数据库到默认的目录下

RMAN> backup as compressed backupset database;

Starting backup at 30-MAY-17
using channel ORA_DISK_1
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00005 name=/usr/oracle/app/oradata/orcl/CTRR_DATA.dbf
input datafile file number=00007 name=/home/oracle/data/CTRR_DATA_1.dbf
channel ORA_DISK_1: starting piece 1 at 30-MAY-17
channel ORA_DISK_1: finished piece 1 at 30-MAY-17
piece handle=/usr/oracle/app/flash_recovery_area/ORCL/backupset/2017_05_30/o1_mf_nnndf_TAG20170530T105100_dlsqjoft_.bkp tag=TAG20170530T105100 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:26
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00009 name=/home/oracle/data/rman_ts1.dbf
input datafile file number=00006 name=/usr/oracle/app/oradata/orcl/APSALU3_DATA.dbf
channel ORA_DISK_1: starting piece 1 at 30-MAY-17
channel ORA_DISK_1: finished piece 1 at 30-MAY-17
piece handle=/usr/oracle/app/flash_recovery_area/ORCL/backupset/2017_05_30/o1_mf_nnndf_TAG20170530T105100_dlsqmdbx_.bkp tag=TAG20170530T105100 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00001 name=/usr/oracle/app/oradata/orcl/system01.dbf
input datafile file number=00004 name=/usr/oracle/app/oradata/orcl/users01.dbf
input datafile file number=00008 name=/home/oracle/data/default_tablespace.dbf
input datafile file number=00003 name=/usr/oracle/app/oradata/orcl/undotbs01.dbf
input datafile file number=00002 name=/usr/oracle/app/oradata/orcl/sysaux01.dbf
channel ORA_DISK_1: starting piece 1 at 30-MAY-17
channel ORA_DISK_1: finished piece 1 at 30-MAY-17
piece handle=/usr/oracle/app/flash_recovery_area/ORCL/backupset/2017_05_30/o1_mf_nnndf_TAG20170530T105100_dlsqmfgv_.bkp tag=TAG20170530T105100 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:26
Finished backup at 30-MAY-17

Starting Control File and SPFILE Autobackup at 30-MAY-17
piece handle=/usr/oracle/app/flash_recovery_area/ORCL/autobackup/2017_05_30/o1_mf_s_945338539_dlsqp4yv_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 30-MAY-17

以上备份信息可以看出,RMAN将数据文件备份在目录/usr/oracle/app/flash_recovery_area/ORCL/backupset/下,将控制文件与服务器参数文件备份在/usr/oracle/app/flash_recovery_area/ORCL/autobackup/下。这里需要注意如果想要RMAN在整库备份时自动备份控制文件与服务器参数文件,需要设置参数

configure controlfile autobackup的值为on: configure controlfile autobackup on;

RMAN> configure controlfile autobackup on;

new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP ON;
new RMAN configuration parameters are successfully stored

此时使用RMAN完成了整个数据库的脱机备份。

备份完成之后用scott用户创建一个测试表,插入一条数据,等恢复完成之后看这个表是否还存在。

create table t_test1(id number, name varchar2(50));

insert into t_test1(id, name)
values(1,'latiny1');

commit;

非归档模式下实现脱机备份恢复

为了测试利用脱机备份文件完全恢复数据库,我们删除部分数据文件、全部控制文件模拟数据库文件丢失,然后进行恢复。

[root@oracledb orcl]# ls -l
total 4867456
-rw-r----- 1 oracle oinstall 524296192 May 30 12:12 APSALU3_DATA.dbf
-rw-r----- 1 oracle oinstall 9748480 May 30 14:48 control01.ctl
-rw-r----- 1 oracle oinstall 2147491840 May 30 12:12 CTRR_DATA.dbf
-rwxrwxr-x 1 oracle oinstall 52429312 May 30 14:48 redo01.log
-rwxrwxr-x 1 oracle oinstall 52429312 May 30 12:12 redo02.log
-rwxrwxr-x 1 oracle oinstall 52429312 May 30 12:12 redo03.log
-rwxrwxr-x 1 oracle oinstall 660611072 May 30 14:48 sysaux01.dbf
-rwxrwxr-x 1 oracle oinstall 754982912 May 30 14:48 system01.dbf
-rw-r----- 1 oracle oinstall 20979712 Mar 23 10:52 temp01.dbf
-rwxrwxr-x 1 oracle oinstall 723525632 May 30 14:48 undotbs01.dbf
-rw-r----- 1 oracle oinstall 5251072 May 30 12:12 users01.dbf

 首先关闭数据库,然后删除users01.dbf、CTRR_DATA.dbf、control01.ctl、APSALU3_DATA.dbf,然后启动数据库:

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 450953216 bytes
Fixed Size 2214256 bytes
Variable Size 339740304 bytes
Database Buffers 104857600 bytes
Redo Buffers 4141056 bytes
ORA-00205: error in identifying control file, check alert log for more info

由于控制文件丢失,数据库无法启动到mount状态,先恢复控制文件再启动,恢复控制文件需要指定控制文件对应的备份文件路劲,之前的备份信息里可以获取得到:

RMAN> restore controlfile from '/usr/oracle/app/flash_recovery_area/ORCL/autobackup/2017_05_30/o1_mf_s_945338539_dlsqp4yv_.bkp';

Starting restore at 30-MAY-17
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=20 device type=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/usr/oracle/app/oradata/orcl/control01.ctl
output file name=/usr/oracle/app/flash_recovery_area/orcl/control02.ctl
Finished restore at 30-MAY-17

控制文件恢复成功之后启动数据库到mount状态:

SQL> alter database mount;

Database altered.

启动到mount状态之后,在RMAN模式下恢复数据文件:

RMAN> restore database;

Starting restore at 30-MAY-17
released channel: ORA_DISK_1
Starting implicit crosscheck backup at 30-MAY-17
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=20 device type=DISK
Crosschecked 11 objects
Finished implicit crosscheck backup at 30-MAY-17

Starting implicit crosscheck copy at 30-MAY-17
using channel ORA_DISK_1
Finished implicit crosscheck copy at 30-MAY-17

searching for all files in the recovery area
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: /usr/oracle/app/flash_recovery_area/ORCL/autobackup/2017_05_30/o1_mf_s_945338539_dlsqp4yv_.bkp

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00005 to /usr/oracle/app/oradata/orcl/CTRR_DATA.dbf
channel ORA_DISK_1: restoring datafile 00007 to /home/oracle/data/CTRR_DATA_1.dbf
channel ORA_DISK_1: reading from backup piece /usr/oracle/app/flash_recovery_area/ORCL/backupset/2017_05_30/o1_mf_nnndf_TAG20170530T105100_dlsqjoft_.bkp
channel ORA_DISK_1: ORA-19870: error while restoring backup piece /usr/oracle/app/flash_recovery_area/ORCL/backupset/2017_05_30/o1_mf_nnndf_TAG20170530T105100_dlsqjoft_.bkp
ORA-19502: write error on file "/usr/oracle/app/oradata/orcl/CTRR_DATA.dbf", block number 216192 (block size=8192)
ORA-27072: File I/O error
Linux-x86_64 Error: 25: Inappropriate ioctl for device
Additional information: 4
Additional information: 216192
Additional information: 6963
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00006 to /usr/oracle/app/oradata/orcl/APSALU3_DATA.dbf
channel ORA_DISK_1: restoring datafile 00009 to /home/oracle/data/rman_ts1.dbf
channel ORA_DISK_1: reading from backup piece /usr/oracle/app/flash_recovery_area/ORCL/backupset/2017_05_30/o1_mf_nnndf_TAG20170530T105100_dlsqmdbx_.bkp
channel ORA_DISK_1: piece handle=/usr/oracle/app/flash_recovery_area/ORCL/backupset/2017_05_30/o1_mf_nnndf_TAG20170530T105100_dlsqmdbx_.bkp tag=TAG20170530T105100
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:01:25
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /usr/oracle/app/oradata/orcl/system01.dbf
channel ORA_DISK_1: restoring datafile 00002 to /usr/oracle/app/oradata/orcl/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00003 to /usr/oracle/app/oradata/orcl/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00004 to /usr/oracle/app/oradata/orcl/users01.dbf
channel ORA_DISK_1: restoring datafile 00008 to /home/oracle/data/default_tablespace.dbf
channel ORA_DISK_1: reading from backup piece /usr/oracle/app/flash_recovery_area/ORCL/backupset/2017_05_30/o1_mf_nnndf_TAG20170530T105100_dlsqmfgv_.bkp
channel ORA_DISK_1: piece handle=/usr/oracle/app/flash_recovery_area/ORCL/backupset/2017_05_30/o1_mf_nnndf_TAG20170530T105100_dlsqmfgv_.bkp tag=TAG20170530T105100
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:02:25
failover to previous backup

creating datafile file number=5 name=/usr/oracle/app/oradata/orcl/CTRR_DATA.dbf
Finished restore at 30-MAY-17

   其他文件正常恢复,CTRR_DATA.dbf数据文件时遇到错误:

ORA-19502: write error on file "/usr/oracle/app/oradata/orcl/CTRR_DATA.dbf", block number 216192 (block size=8192)
ORA-27072: File I/O error
Linux-x86_64 Error: 25: Inappropriate ioctl for device

查了一下错误原因,发现因为此数据文件较大恢复时导致磁盘空间不足引起的,于是删除一些文件释放磁盘重新执行命令恢复成功:

RMAN> restore database;

Starting restore at 30-MAY-17
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=20 device type=DISK

skipping datafile 1; already restored to file /usr/oracle/app/oradata/orcl/system01.dbf
skipping datafile 2; already restored to file /usr/oracle/app/oradata/orcl/sysaux01.dbf
skipping datafile 3; already restored to file /usr/oracle/app/oradata/orcl/undotbs01.dbf
skipping datafile 4; already restored to file /usr/oracle/app/oradata/orcl/users01.dbf
skipping datafile 8; already restored to file /home/oracle/data/default_tablespace.dbf
skipping datafile 7; already restored to file /home/oracle/data/CTRR_DATA_1.dbf
skipping datafile 6; already restored to file /usr/oracle/app/oradata/orcl/APSALU3_DATA.dbf
skipping datafile 9; already restored to file /home/oracle/data/rman_ts1.dbf
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00005 to /usr/oracle/app/oradata/orcl/CTRR_DATA.dbf
channel ORA_DISK_1: reading from backup piece /usr/oracle/app/flash_recovery_area/ORCL/backupset/2017_05_30/o1_mf_nnndf_TAG20170530T105100_dlsqjoft_.bkp
channel ORA_DISK_1: piece handle=/usr/oracle/app/flash_recovery_area/ORCL/backupset/2017_05_30/o1_mf_nnndf_TAG20170530T105100_dlsqjoft_.bkp tag=TAG20170530T105100
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:02:26
Finished restore at 30-MAY-17

  然后去之前存放数据文件、控制文件的目录下看一下文件是否都恢复成功:

[root@oracledb orcl]# ls -l
total 4867456
-rw-r----- 1 oracle oinstall 524296192 May 30 12:12 APSALU3_DATA.dbf
-rw-r----- 1 oracle oinstall 9748480 May 30 14:48 control01.ctl
-rw-r----- 1 oracle oinstall 2147491840 May 30 12:12 CTRR_DATA.dbf
-rwxrwxr-x 1 oracle oinstall 52429312 May 30 14:48 redo01.log
-rwxrwxr-x 1 oracle oinstall 52429312 May 30 12:12 redo02.log
-rwxrwxr-x 1 oracle oinstall 52429312 May 30 12:12 redo03.log
-rwxrwxr-x 1 oracle oinstall 660611072 May 30 14:48 sysaux01.dbf
-rwxrwxr-x 1 oracle oinstall 754982912 May 30 14:48 system01.dbf
-rw-r----- 1 oracle oinstall 20979712 Mar 23 10:52 temp01.dbf
-rwxrwxr-x 1 oracle oinstall 723525632 May 30 14:48 undotbs01.dbf
-rw-r----- 1 oracle oinstall 5251072 May 30 12:12 users01.dbf

  使用recover 命令恢复数据库,由于是脱机备份恢复不使用重做日志恢复模式:

RMAN> recover database noredo;

Starting recover at 30-MAY-17
using channel ORA_DISK_1

Finished recover at 30-MAY-17

  然后打开数据库到open状态:

SQL> alter database open resetlogs;

Database altered.

查看备份之后scott用户创建的表,已经不存在了,自备份之后的数据全部丢失。

2 脱机备份之后,对于RMAN备份有了初步的了解,相对于传统的用户手动管理备份文件,RMAN备份操作起来相对要简单方便的多,但是联机备份相对脱机备份操作要复杂,需要掌握的地方稍微多些。

2.1 RMAN 的配置参数

RMAN> show all;

using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name ORCL are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/usr/oracle/app/product/11.2.0/dbhome_1/dbs/snapcf_orcl.f'; # default

CONFIGURE RETENTION POLICY TO REDUNDANCY 1: 该参数说明保留备份文件的副本数量,如果每天都备份一个数据文件,参数1说明只保留一个该数据文件的副本,并且保留最新的副本。

CONFIGURE DEFAULT DEVICE TYPE TO DISK: 该配置参数说明备份的数据文件默认备份到数据库服务器的磁盘上,该参数可以更改为备份到磁带上。 

CONFIGURE BACKUP OPTIMIZATION OFF:默认值为关闭,如果打开,rman将对备份的数据文件及归档等文件进行一种优化的算法。

CONFIGURE CONTROLFILE AUTOBACKUP ON:默认值为关闭,强制数据库在备份文件或者执行改变数据库结构的命令之后将控制文件自动备份。

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET: 配置数据库设备类型的并行度,并行的数目决定了开启通道的个数。

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F':配置控制文件的备份片的路径和格式,比如:configure controlfile autobackup format for device type disk to 'e:\backupcontrol\%F';

2.2 快闪恢复区

使用RMAN联机备份前,必须先设置快闪恢复区,将DB_RECOVERY_FILE_DEST参数指定的目录作为归档重做日志备份的默认路劲,并且快闪恢复区的尺寸设置足够大。

SQL> show parameter db_recovery_file_dest;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /usr/oracle/app/flash_recovery
_area
db_recovery_file_dest_size big integer 3882M

2.3 归档模式

RMAN联机备份需要数据库处于归档模式,关闭数据库,启动到mount状态,修改数据为归档模式

SQL> alter database archivelog;

Database altered.

SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 1
Next log sequence to archive 1
Current log sequence 1
SQL> alter database open;

Database altered.

SQL>

2.4 恢复目录

恢复目录是RMAN专用的备份信息存储地,没有恢复目录时,RMAN相关的备份信息,比如归档文件路径、备份集路径等均存储在目标数据库的控制文件中,考虑到控制文件并不能无限增长,而且控制文件也不仅仅是用来存储与备份相关的信息,当待备份的数据库注册到恢复目录之后,RMAN相关的信息除了保存在控制文件中外(控制文件实际上只保存一部分),更加详细的信息就都被存储在恢复目录中。

(1) 恢复目录创建过程,管理员账户登录到数据库

create tablespace rman_ts datafile '/home/oracle/data/rman_ts1.dbf'
size 2G
autoextend on next 500M
maxsize 6G;

create user rman_reuser identified by 123456
default tablespace rman_ts
temporary tablespace temp02;

grant connect, resource, recovery_catalog_owner to rman_reuser;

创建完表空间与用户之后,登录到RMAN模式下创建恢复目录rman_ts,注意名字与表空间一样

RMAN>create catalog tablespace rman_ts;

注册数据库

RMAN>register database;

备份信息是否记入CATALOG取决于执行RMAN操作时是否连接到了CATALOG,也就是说,即使目标数据库已经注册到恢复目录中,但连接时没有以CATALOG模式连接,则备份信息仍然是只存入目标端数据库的控制文件,相当于NOCATALOG模式。

使用CATALOG模式连接RMAN:

[oracle@oracledb ~]$ rman target/ catalog rman_reuser/XXXXXX;

Recovery Manager: Release 11.2.0.1.0 - Production on Tue May 30 17:53:46 2017

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

connected to target database: ORCL (DBID=1452257309)
connected to recovery catalog database

设置备份文件保存路劲:/home/oracle/oradata/backup

RMAN> configure channel device type disk format '/home/oracle/oradata/backup/data_%d_%M_%U';

old RMAN configuration parameters:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/home/oracle/oradata/backup/%d_%M_%D';
new RMAN configuration parameters:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/home/oracle/oradata/backup/data_%d_%M_%U';
new RMAN configuration parameters are successfully stored
starting full resync of recovery catalog
full resync complete

设置控制文件默认的存放位置:/home/oracle/oradata/backup/

RMAN> configure controlfile autobackup format for device type disk to '/home/oracle/oradata/backup/ctl_%d_%M_%F';

new RMAN configuration parameters:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/oradata/backup/ctl_%d_%M_%F';
new RMAN configuration parameters are successfully stored
starting full resync of recovery catalog
full resync complete

到此联机备份准备工作完成。

3 联机备份与恢复

   3.1 联机备份整个数据库

  默认备份,不显示指定任何参数

RMAN> backup as compressed backupset database plus archivelog delete all input;

Starting backup at 30-MAY-17
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=45 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=41 device type=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: SID=44 device type=DISK
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=1 RECID=7 STAMP=945368451
channel ORA_DISK_1: starting piece 1 at 30-MAY-17
channel ORA_DISK_1: finished piece 1 at 30-MAY-17
piece handle=/home/oracle/oradata/backup/0es5ibcf_1_1_ORCL tag=TAG20170530T182102 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
channel ORA_DISK_1: deleting archived log(s)
archived log file name=/usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_05_30/o1_mf_1_1_dltktmly_.arc RECID=7 STAMP=945368451
Finished backup at 30-MAY-17

Starting backup at 30-MAY-17
using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3
channel ORA_DISK_1: starting compressed full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00005 name=/usr/oracle/app/oradata/orcl/CTRR_DATA.dbf
input datafile file number=00007 name=/home/oracle/data/CTRR_DATA_1.dbf
channel ORA_DISK_1: starting piece 1 at 30-MAY-17
channel ORA_DISK_2: starting compressed full datafile backup set
channel ORA_DISK_2: specifying datafile(s) in backup set
input datafile file number=00009 name=/home/oracle/data/rman_ts1.dbf
input datafile file number=00003 name=/usr/oracle/app/oradata/orcl/undotbs01.dbf
input datafile file number=00002 name=/usr/oracle/app/oradata/orcl/sysaux01.dbf
channel ORA_DISK_2: starting piece 1 at 30-MAY-17
channel ORA_DISK_3: starting compressed full datafile backup set
channel ORA_DISK_3: specifying datafile(s) in backup set
input datafile file number=00001 name=/usr/oracle/app/oradata/orcl/system01.dbf
input datafile file number=00004 name=/usr/oracle/app/oradata/orcl/users01.dbf
input datafile file number=00008 name=/home/oracle/data/default_tablespace.dbf
channel ORA_DISK_3: starting piece 1 at 30-MAY-17
channel ORA_DISK_2: finished piece 1 at 30-MAY-17
piece handle=/home/oracle/oradata/backup/0gs5ibde_1_1_ORCL tag=TAG20170530T182130 comment=NONE
channel ORA_DISK_2: backup set complete, elapsed time: 00:06:28
channel ORA_DISK_2: starting compressed full datafile backup set
channel ORA_DISK_2: specifying datafile(s) in backup set
input datafile file number=00006 name=/usr/oracle/app/oradata/orcl/APSALU3_DATA.dbf
channel ORA_DISK_2: starting piece 1 at 30-MAY-17
channel ORA_DISK_2: finished piece 1 at 30-MAY-17
piece handle=/home/oracle/oradata/backup/0is5ibpk_1_1_ORCL tag=TAG20170530T182130 comment=NONE
channel ORA_DISK_2: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_3: finished piece 1 at 30-MAY-17
piece handle=/home/oracle/oradata/backup/0hs5ibde_1_1_ORCL tag=TAG20170530T182130 comment=NONE
channel ORA_DISK_3: backup set complete, elapsed time: 00:06:55
channel ORA_DISK_1: finished piece 1 at 30-MAY-17
piece handle=/home/oracle/oradata/backup/0fs5ibde_1_1_ORCL tag=TAG20170530T182130 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:07:37
Finished backup at 30-MAY-17

Starting backup at 30-MAY-17
current log archived
using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3
channel ORA_DISK_1: starting compressed archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=2 RECID=8 STAMP=945368952
channel ORA_DISK_1: starting piece 1 at 30-MAY-17
channel ORA_DISK_1: finished piece 1 at 30-MAY-17
piece handle=/home/oracle/oradata/backup/0js5ibrs_1_1_ORCL tag=TAG20170530T182916 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: deleting archived log(s)
archived log file name=/usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_05_30/o1_mf_1_2_dltlcr44_.arc RECID=8 STAMP=945368952
Finished backup at 30-MAY-17

Starting Control File and SPFILE Autobackup at 30-MAY-17
piece handle=/usr/oracle/app/flash_recovery_area/ORCL/autobackup/2017_05_30/o1_mf_s_945368958_dltlcyvy_.bkp comment=NONE
Finished Control File and SPFILE Autobackup at 30-MAY-17

  以上备份信息得出两个结论:数据文件备份到了RMAN 配置参数 configure channel device type disk format '/home/oracle/oradata/backup/%U_%d' 配置的路劲下,

  控制文件,归档日志文件备份到了参数db_recovery_file_dest 对应的闪回区/usr/oracle/app/flash_recovery_area/ORCL下。

  使用更细节的配置命令,将数据文件,控制文件,归档日志备份到同一指定的目录下: 

run
{

allocate channel ch1 device type disk;

allocate channel ch2 device type disk;

backup database format '/home/oracle/oradata/backup/Data_%d_%M_%U'

plus archivelog format '/home/oracle/oradata/backup/log_%d_%M_%U';

release channel ch1;

release channel ch2;
}

allocated channel: ch1
channel ch1: SID=39 device type=DISK

allocated channel: ch2
channel ch2: SID=40 device type=DISK


Starting backup at 30-MAY-17
current log archived
channel ch1: starting archived log backup set
channel ch1: specifying archived log(s) in backup set
input archived log thread=1 sequence=3 RECID=9 STAMP=945378795
input archived log thread=1 sequence=4 RECID=10 STAMP=945381016
input archived log thread=1 sequence=5 RECID=11 STAMP=945381246
channel ch1: starting piece 1 at 30-MAY-17
channel ch2: starting archived log backup set
channel ch2: specifying archived log(s) in backup set
input archived log thread=1 sequence=6 RECID=12 STAMP=945382431
channel ch2: starting piece 1 at 30-MAY-17
channel ch1: finished piece 1 at 30-MAY-17
piece handle=/home/oracle/oradata/backup/log_ORCL_05_12s5ir4g_1_1 tag=TAG20170530T224952 comment=NONE
channel ch1: backup set complete, elapsed time: 00:00:08
channel ch1: starting archived log backup set
channel ch1: specifying archived log(s) in backup set
input archived log thread=1 sequence=7 RECID=13 STAMP=945384591
channel ch1: starting piece 1 at 30-MAY-17
channel ch2: finished piece 1 at 30-MAY-17
piece handle=/home/oracle/oradata/backup/log_ORCL_05_13s5ir4g_1_1 tag=TAG20170530T224952 comment=NONE
channel ch2: backup set complete, elapsed time: 00:00:07
channel ch1: finished piece 1 at 30-MAY-17
piece handle=/home/oracle/oradata/backup/log_ORCL_05_14s5ir4o_1_1 tag=TAG20170530T224952 comment=NONE
channel ch1: backup set complete, elapsed time: 00:00:01
Finished backup at 30-MAY-17

Starting backup at 30-MAY-17
channel ch1: starting full datafile backup set
channel ch1: specifying datafile(s) in backup set
input datafile file number=00005 name=/usr/oracle/app/oradata/orcl/CTRR_DATA.dbf
input datafile file number=00007 name=/home/oracle/data/CTRR_DATA_1.dbf
channel ch1: starting piece 1 at 30-MAY-17
channel ch2: starting full datafile backup set
channel ch2: specifying datafile(s) in backup set
input datafile file number=00009 name=/home/oracle/data/rman_ts1.dbf
input datafile file number=00006 name=/usr/oracle/app/oradata/orcl/APSALU3_DATA.dbf
channel ch2: starting piece 1 at 30-MAY-17
channel ch2: finished piece 1 at 30-MAY-17
piece handle=/home/oracle/oradata/backup/data_ORCL_05_16s5ir4q_1_1 tag=TAG20170530T225001 comment=NONE
channel ch2: backup set complete, elapsed time: 00:00:07
channel ch2: starting full datafile backup set
channel ch2: specifying datafile(s) in backup set
input datafile file number=00001 name=/usr/oracle/app/oradata/orcl/system01.dbf
input datafile file number=00004 name=/usr/oracle/app/oradata/orcl/users01.dbf
input datafile file number=00008 name=/home/oracle/data/default_tablespace.dbf
input datafile file number=00003 name=/usr/oracle/app/oradata/orcl/undotbs01.dbf
input datafile file number=00002 name=/usr/oracle/app/oradata/orcl/sysaux01.dbf
channel ch2: starting piece 1 at 30-MAY-17
channel ch2: finished piece 1 at 30-MAY-17
piece handle=/home/oracle/oradata/backup/data_ORCL_05_17s5ir51_1_1 tag=TAG20170530T225001 comment=NONE
channel ch2: backup set complete, elapsed time: 00:05:19
channel ch1: finished piece 1 at 30-MAY-17
piece handle=/home/oracle/oradata/backup/data_ORCL_05_15s5ir4q_1_1 tag=TAG20170530T225001 comment=NONE
channel ch1: backup set complete, elapsed time: 00:05:56
Finished backup at 30-MAY-17

Starting backup at 30-MAY-17
current log archived
channel ch1: starting archived log backup set
channel ch1: specifying archived log(s) in backup set
input archived log thread=1 sequence=8 RECID=14 STAMP=945384958
channel ch1: starting piece 1 at 30-MAY-17
channel ch1: finished piece 1 at 30-MAY-17
piece handle=/home/oracle/oradata/backup/log_ORCL_05_18s5irg0_1_1 tag=TAG20170530T225600 comment=NONE
channel ch1: backup set complete, elapsed time: 00:00:01
Finished backup at 30-MAY-17

Starting Control File and SPFILE Autobackup at 30-MAY-17
piece handle=/home/oracle/oradata/backup/ctl_ORCL_05_c-1452257309-20170530-04 comment=NONE
Finished Control File and SPFILE Autobackup at 30-MAY-17

released channel: ch1

released channel: ch2

  至此联机备份整个数据库完成,我们可以看一下备份文件目录下是否有备份信息显示的文件

[oracle@oracledb ~]$ cd /home/oracle/oradata/backup
[oracle@oracledb backup]$ ls -l
total 2837192
-rw-r----- 1 oracle oinstall 9830400 May 30 22:56 ctl_ORCL_05_c-1452257309-20170530-04
-rw-r----- 1 oracle oinstall 1678073856 May 30 22:55 data_ORCL_05_15s5ir4q_1_1
-rw-r----- 1 oracle oinstall 6529024 May 30 22:50 data_ORCL_05_16s5ir4q_1_1
-rw-r----- 1 oracle oinstall 1169031168 May 30 22:55 data_ORCL_05_17s5ir51_1_1
-rw-r----- 1 oracle oinstall 13558784 May 30 22:49 log_ORCL_05_12s5ir4g_1_1
-rw-r----- 1 oracle oinstall 25548800 May 30 22:49 log_ORCL_05_13s5ir4g_1_1
-rw-r----- 1 oracle oinstall 2192384 May 30 22:50 log_ORCL_05_14s5ir4o_1_1
-rw-r----- 1 oracle oinstall 503808 May 30 22:56 log_ORCL_05_18s5irg0_1_1

   3.2  非系统表空间数据文件损坏恢复

   (1) 数据库运行在归档模式下,表空间users的数据文件损坏,有完整的备份,当前以及归档的日志完好。

  先做当前数据的变化测试,使用scott用户给测试表添加数据。

insert into t_test1(id, name)
select 2,'latiny2' from dual;

commit;

关闭数据库,删除users01.dbf 数据文件,重启再数据库

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 450953216 bytes
Fixed Size 2214256 bytes
Variable Size 343934608 bytes
Database Buffers 100663296 bytes
Redo Buffers 4141056 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: '/usr/oracle/app/oradata/orcl/users01.dbf'

数据库启动失败,因为users01.dbf 文件已损坏(手动删除),为了启动成功将损坏的数据文件先offline 再打开,此时尝试访问scott.t_test1显示对应的数据文件

无法访问。


SQL> alter database datafile 4 offline;

Database altered.

SQL> alter database open;

Database altered.

  (2) 恢复数据文件

  在rman 模式下恢复损坏的数据文件

RMAN> restore datafile 4;

Starting restore at 06-JUN-17
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=32 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=26 device type=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: SID=40 device type=DISK

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00004 to /usr/oracle/app/oradata/orcl/users01.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/oradata/backup/data_ORCL_05_17s5ir51_1_1
channel ORA_DISK_1: piece handle=/home/oracle/oradata/backup/data_ORCL_05_17s5ir51_1_1 tag=TAG20170530T225001
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
Finished restore at 06-JUN-17

RMAN> recover datafile 4;

Starting recover at 06-JUN-17
using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3

starting media recovery

archived log for thread 1 with sequence 8 is already on disk as file /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_05_30/o1_mf_1_8_dlv1zyxk_.arc
archived log for thread 1 with sequence 9 is already on disk as file /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_02/o1_mf_1_9_dm23lqhh_.arc
archived log for thread 1 with sequence 10 is already on disk as file /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_02/o1_mf_1_10_dm23nl59_.arc
archived log for thread 1 with sequence 11 is already on disk as file /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_06/o1_mf_1_11_dmd9d6b5_.arc
archived log for thread 1 with sequence 12 is already on disk as file /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_06/o1_mf_1_12_dmd9gtql_.arc
archived log file name=/usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_05_30/o1_mf_1_8_dlv1zyxk_.arc thread=1 sequence=8
archived log file name=/usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_02/o1_mf_1_9_dm23lqhh_.arc thread=1 sequence=9
archived log file name=/usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_02/o1_mf_1_10_dm23nl59_.arc thread=1 sequence=10
media recovery complete, elapsed time: 00:00:02
Finished recover at 06-JUN-17

  

  数据文件恢复成功,将数据文件online

SQL> alter database datafile 4 online;

Database altered.

此时可以访问scott.t_test1,之前新增的数据也在其中。

3.3 系统表空间损坏恢复

系统表空间损坏,但是控制文件与日志文件完好

(1)删除系统表空间,实验表空间损坏,关闭数据库删除文件之后重启数据库报错

SQL> shutdown immdiate;
SP2-0717: illegal SHUTDOWN option
SQL> shutdown immediate;
\Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
SP2-0042: unknown command "\startup" - rest of line ignored.
SQL> startup
ORACLE instance started.

Total System Global Area 450953216 bytes
Fixed Size 2214256 bytes
Variable Size 348128912 bytes
Database Buffers 96468992 bytes
Redo Buffers 4141056 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: '/usr/oracle/app/oradata/orcl/system01.dbf'

  (2) 将数据文件offline 然后rman模式下恢复数据文件

SQL> alter database datafile 1 offline;

Database altered.

RMAN> restore datafile 1;

Starting restore at 06-JUN-17
using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /usr/oracle/app/oradata/orcl/system01.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/oradata/backup/data_ORCL_05_17s5ir51_1_1
channel ORA_DISK_1: piece handle=/home/oracle/oradata/backup/data_ORCL_05_17s5ir51_1_1 tag=TAG20170530T225001
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:01:15
Finished restore at 06-JUN-17

RMAN> recover datafile 1;

Starting recover at 06-JUN-17
using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3

starting media recovery

archived log for thread 1 with sequence 8 is already on disk as file /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_05_30/o1_mf_1_8_dlv1zyxk_.arc
archived log for thread 1 with sequence 9 is already on disk as file /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_02/o1_mf_1_9_dm23lqhh_.arc
archived log for thread 1 with sequence 10 is already on disk as file /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_02/o1_mf_1_10_dm23nl59_.arc
archived log for thread 1 with sequence 11 is already on disk as file /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_06/o1_mf_1_11_dmd9d6b5_.arc
archived log for thread 1 with sequence 12 is already on disk as file /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_06/o1_mf_1_12_dmd9gtql_.arc
archived log file name=/usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_05_30/o1_mf_1_8_dlv1zyxk_.arc thread=1 sequence=8
archived log file name=/usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_02/o1_mf_1_9_dm23lqhh_.arc thread=1 sequence=9
archived log file name=/usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_02/o1_mf_1_10_dm23nl59_.arc thread=1 sequence=10
media recovery complete, elapsed time: 00:00:05
Finished recover at 06-JUN-17

SQL> alter database datafile 1 online;

Database altered.

数据库启动成功

SQL> alter database open;

Database altered.

SQL>

3.4 全部数据文件丢失

关闭数据库删除全部文件,重启数据库。

[oracle@oracledb orcl]$ ls -l
total 4877952
-rw-r----- 1 oracle oinstall 524296192 Jun 15 14:54 APSALU3_DATA.dbf
-rw-r----- 1 oracle oinstall 10010624 Jun 15 14:54 control01.ctl
-rw-r----- 1 oracle oinstall 2147491840 Jun 15 14:54 CTRR_DATA.dbf
-rw-r----- 1 oracle oinstall 52429312 Jun 15 14:54 redo01.log
-rw-r----- 1 oracle oinstall 52429312 Jun 15 13:54 redo02.log
-rw-r----- 1 oracle oinstall 52429312 Jun 15 13:55 redo03.log
-rw-r----- 1 oracle oinstall 660611072 Jun 15 14:54 sysaux01.dbf
-rw-r----- 1 oracle oinstall 765468672 Jun 15 14:54 system01.dbf
-rw-r----- 1 oracle oinstall 20979712 Jun 12 21:53 temp01.dbf
-rw-r----- 1 oracle oinstall 723525632 Jun 15 14:54 undotbs01.dbf
-rw-r----- 1 oracle oinstall 5251072 Jun 15 14:54 users01.dbf
[oracle@oracledb orcl]$ rm *;
[oracle@oracledb orcl]$ ls -l
total 0
[oracle@oracledb orcl]$

 数据库只能启动到nomount状态下,启动到mount下报错,因为没有控制文件

SQL> startup nomount;
ORACLE instance started.

Total System Global Area 450953216 bytes
Fixed Size 2214256 bytes
Variable Size 360711824 bytes
Database Buffers 83886080 bytes
Redo Buffers 4141056 bytes
SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-00205: error in identifying control file, check alert log for more info


SQL>

先退出RMAN然后重新登录,登录之后恢复控制文件

[oracle@oracledb ~]$ rman target/

Recovery Manager: Release 11.2.0.1.0 - Production on Thu Jun 15 15:01:13 2017

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

connected to target database: ORCL (not mounted)

RMAN> restore controlfile from '/home/oracle/oradata/backup/control/ctl_ORCL_06_15_c-1452257309-20170615-05';

Starting restore at 15-JUN-17
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=20 device type=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:16
output file name=/usr/oracle/app/oradata/orcl/control01.ctl
output file name=/usr/oracle/app/flash_recovery_area/orcl/control02.ctl
Finished restore at 15-JUN-17

RMAN>

控制文件恢复成功之后,启动数据库到mount状态下

SQL> alter database mount;

Database altered.

SQL>

RMAN下恢复数据库, restore databse;

RMAN> restore database;

Starting restore at 15-JUN-17
released channel: ORA_DISK_1
Starting implicit crosscheck backup at 15-JUN-17
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=20 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=21 device type=DISK
Crosschecked 22 objects
Crosschecked 20 objects
Finished implicit crosscheck backup at 15-JUN-17

Starting implicit crosscheck copy at 15-JUN-17
using channel ORA_DISK_1
using channel ORA_DISK_2
Finished implicit crosscheck copy at 15-JUN-17

searching for all files in the recovery area
cataloging files...
cataloging done

List of Cataloged Files
=======================
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_5_dn4cr5pm_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_6_dn4cr5qn_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_3_dn4cr5m9_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_2_dn4cr7kx_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_9_dn4crbvg_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_1_dn4cr7l6_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_7_dn4cr5mj_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_8_dn4cr8qp_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_4_dn4cr5vc_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog_backup/2017_06_12/o1_mf_1_4_dmwg5bjo_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog_backup/2017_06_12/o1_mf_1_2_dmw48n0t_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog_backup/2017_06_12/o1_mf_1_1_dmw454w6_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog_backup/2017_06_12/o1_mf_1_3_dmwfk7mt_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog_backup/2017_06_12/o1_mf_1_4_dmxdm4cm_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog_backup/2017_06_12/o1_mf_1_3_dmxcfz0q_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog_backup/2017_06_15/o1_mf_1_5_dn43mxcl_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog_backup/2017_06_15/o1_mf_1_1_dn3zoqo8_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog_backup/2017_06_15/o1_mf_1_7_dn4857f0_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog_backup/2017_06_15/o1_mf_1_4_dn42j321_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog_backup/2017_06_15/o1_mf_1_6_dn43t9pc_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog_backup/2017_06_15/o1_mf_1_2_dn3zqofd_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog_backup/2017_06_15/o1_mf_1_8_dn489j4x_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog_backup/2017_06_15/o1_mf_1_3_dn4265mf_.arc
File Name: /usr/oracle/app/flash_recovery_area/ORCL/archivelog_backup/2017_06_15/o1_mf_1_9_dn48c07s_.arc

using channel ORA_DISK_1
using channel ORA_DISK_2

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00006 to /usr/oracle/app/oradata/orcl/APSALU3_DATA.dbf
channel ORA_DISK_1: restoring datafile 00009 to /home/oracle/data/rman_ts1.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/oradata/backup/data/data2_ORCL_06_39s6rt41_1_1
channel ORA_DISK_2: starting datafile backup set restore
channel ORA_DISK_2: specifying datafile(s) to restore from backup set
channel ORA_DISK_2: restoring datafile 00001 to /usr/oracle/app/oradata/orcl/system01.dbf
channel ORA_DISK_2: restoring datafile 00002 to /usr/oracle/app/oradata/orcl/sysaux01.dbf
channel ORA_DISK_2: restoring datafile 00003 to /usr/oracle/app/oradata/orcl/undotbs01.dbf
channel ORA_DISK_2: restoring datafile 00004 to /usr/oracle/app/oradata/orcl/users01.dbf
channel ORA_DISK_2: restoring datafile 00008 to /home/oracle/data/default_tablespace.dbf
channel ORA_DISK_2: reading from backup piece /home/oracle/oradata/backup/data/data2_ORCL_06_3as6rt44_1_1
channel ORA_DISK_1: piece handle=/home/oracle/oradata/backup/data/data2_ORCL_06_39s6rt41_1_1 tag=TAG20170615T123512
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:05:50
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00005 to /usr/oracle/app/oradata/orcl/CTRR_DATA.dbf
channel ORA_DISK_1: restoring datafile 00007 to /home/oracle/data/CTRR_DATA_1.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/oradata/backup/data/data1_ORCL_06_38s6rt40_1_1
channel ORA_DISK_2: piece handle=/home/oracle/oradata/backup/data/data2_ORCL_06_3as6rt44_1_1 tag=TAG20170615T123512
channel ORA_DISK_2: restored backup piece 1
channel ORA_DISK_2: restore complete, elapsed time: 00:07:15
channel ORA_DISK_1: piece handle=/home/oracle/oradata/backup/data/data1_ORCL_06_38s6rt40_1_1 tag=TAG20170615T123512
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:03:36
Finished restore at 15-JUN-17

将放在其他目录下的重做日志复制到默认的目录下,然后查看,如果只有一份重做日志且丢失,那么此步骤可省略,但是会造成服务器宕机之后的部分数据丢失,丢失量取决于未归档的重做日志存储的数据量

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
/usr/oracle/app/oradata/orcl/redo03.log
/usr/oracle/app/oradata/orcl/redo02.log
/usr/oracle/app/oradata/orcl/redo01.log
/home/oracle/data/redo01_a.log

recover database 

RMAN> recover database;

Starting recover at 15-JUN-17
using channel ORA_DISK_1
using channel ORA_DISK_2

starting media recovery

archived log for thread 1 with sequence 6 is already on disk as file /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_6_dn4cr5qn_.arc
archived log for thread 1 with sequence 7 is already on disk as file /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_7_dn4cr5mj_.arc
archived log for thread 1 with sequence 8 is already on disk as file /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_8_dn4cr8qp_.arc
archived log for thread 1 with sequence 9 is already on disk as file /usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_9_dn4crbvg_.arc
archived log for thread 1 with sequence 10 is already on disk as file /home/oracle/data/redo01_a.log
archived log file name=/usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_6_dn4cr5qn_.arc thread=1 sequence=6
archived log file name=/usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_7_dn4cr5mj_.arc thread=1 sequence=7
archived log file name=/usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_8_dn4cr8qp_.arc thread=1 sequence=8
archived log file name=/usr/oracle/app/flash_recovery_area/ORCL/archivelog/2017_06_15/o1_mf_1_9_dn4crbvg_.arc thread=1 sequence=9
archived log file name=/home/oracle/data/redo01_a.log thread=1 sequence=10
media recovery complete, elapsed time: 00:00:21
Finished recover at 15-JUN-17

SQL> alter database open resetlogs;

Database altered.

  至此数据库恢复完成,注意如果重做日志与数据文件,控制文件等一起丢失,没有备份,在其他磁盘上也没有做多个重组日志机制,只用备份的归档日志恢复的话,服务器宕机之后未归档的数据很可能会丢失,做不到100%的恢复。

Oracle推荐的数据库备份和恢复工具是RMAN(恢复管理器,Recovery Manager)。不是必须要使用RMAN,Oracle支持通过使用操作系统实用程序来创建备份和执行恢复,但RMAN有着其它产品无法比拟的功能,以下列举几条采用RMAN备份的优点:

1、恢复过程是智能的,不需要考虑用哪些备份文件来恢复,系统自动选择和管理;

2、支持增量备份,只备份更改的数据块,而不用每次都去做完整备份,可以显著减少备份花费的时间和空间;

3、支持加密备份,保证备份数据的安全性,这对于存储在可移动设备上的数据备份很有必要;

4、支持灵活选择的表空间备份、数据文件备份、控制文件备份及归档日志文件备份等;

5、强大的管理命令和报表功能可以方便的查询和管理备份;

6、RMAN的备份恢复操作与OS无关,是跨平台的。

一、RMAN备份的概念和术语

操作系统命令执行的备份被称为用户管理的备份,而使用RMAN执行的备份则被称为服务器管理的备份。在执行服务器管理的备份前,总体上需要考虑以下三种备份策略:

关闭状态还是打开状态?

全部备份还是局部备份?

完整备份还是增量备份?

关闭状态的备份在数据库关闭期间执行,也称为冷备份、一致备份、脱机备份,打开状态的备份在数据库使用期间执行,也称为热备份、非一致备份、联机备份。打开状态的备份只能在数据库处于归档日志模式下执行。如果数据库处于非归档日志模式,则只能进行关闭状态的备份。在大部分情况下,局部备份也必须在数据库处于归档日志模式下才能进行。增量备份可以是累积增量备份(包括自上一次完整备份以来更改的所有块)或差异增量备份(包括自上一次增量备份以来更改的所有块)。

RMAN可备份的文件类型为:

数据文件

控制文件

服务器初始化参数文件spfile

归档重做日志文件

备份集片

RMAN不能备份的文件包括:

临时文件

联机重做日志文件

口令文件

静态参数文件pfile

Oracle Net配置文件

RMAN可生成三类备份:

备份集(backup set):备份文件的专用格式,一个备份集文件可包含多个数据库文件的备份;

压缩备份集(compressed backup set):与备份集内容相同,但RMAN在写出到备份集时将应用压缩算法;

映像副本(image copy):是与输入文件相同的备份文件,映像副本可与源内容立即交换,与备份集文件相比,还原时不需要从备份集中提取文件。

RMAN备份和还原操作由被称为通道(channel)的服务器进程执行。通道可分为磁盘类型(可访问磁盘上的备份)或SBT_TAPE类型(可访问磁带上的备份)。

RMAN存储库(repository)是有关备份的元数据,存储库一般保存在目标数据库的控制文件中,也可以保存在被称为目录数据库中的一组表中。当进行多个不同数据库的备份时,可单独构建一个目录数据库来存储RMAN备份的元数据。

RMAN操作由RMAN可执行程序启动、监视和控制,可有三种连接数据库的方式:

目标数据库(target):需要备份、还原和恢复的数据库;

目录数据库(catalog):用于备份多个目标数据库;

辅助数据库(auxiliary):通过目标数据库的备份创建的数据库。

二、服务器管理的脱机备份

服务器管理的脱机备份是在数据库关闭后执行的备份,也称为冷备份、一致备份。对于非归档日志模式的数据库,备份时只能采用此模式。

只有数据库处于加载模式时才能执行RMAN一致备份。其原因在于,RMAN需要读取控制文件,以便查找数据文件。如果在加载模式下尝试执行用户管理的操作系统备份,则将无效,因为在加载模式中,当复制控制文件时可能已对控制文件执行了写操作,这样一来副本就变的不一致了,因而失去了作用。RMAN通过获取控制文件的读一致性快照并对其进行备份,避免此问题的发生。

有三种使用RMAN的技术:

交互界面:用于执行即席任务;

脚本接口:通过操作系统的调度程序运行作业;

Enterprise Manager界面:用于生成脚本,定义由Enterprise Manager调度的作业。

典型的脱机-全部-完整备份的脚本如下

run {

shutdown immediate;

startup mount;

allocate channel d1 type disk;

backup as compressed backupset database format 'd:\rman_bak\mes\%d_%u_%c_%T';

alter database open;

}

%d:数据库ID;

%u:产生唯一的文件名称;

%c:第几份备份;

%T:备份时间。

该脚本首先关闭数据库实例并重启到加载模式,之后分配一个磁盘备份的通道(disk表示是磁盘通道,另外还有一种备份通道是磁带sbt_tape),然后启动压缩备份命令完成全库备份(包括数据文件、控制文件和spfile文件的备份),并指定了备份文件的目标位置和文件名格式,备份完毕后打开数据库。

如将其保存为脚本文件offline_full_whole.rman,则可调度如下操作系统命令运行该脚本

rman target sys/hznj2010@mes @offline_full_whole.rman

注意,命令格式中,脚本文件名前面要加上@符号,target表示是连接到目标数据库。

也可以分两步,先用RMAN连接到目标数据库,再执行脚本文件

C:\Users\Administrator>rman target /

RMAN> @d:\offline_full_whole.rman

在目标位置将生成了两个备份集文件,备份集中包含了所有数据文件、控制文件和spfile文件的内容。

三、服务器管理的联机备份

在进行打开状态的备份时,RMAN可能会在DBWn进程写入块时尝试复制文件块,这将导致断裂块。断裂块在备份中可能是无用的,因为在其更新时复制它会导致副本内部不一致。RMAN会检测出现的断裂块,并重试块复制,直至获得一致的版本为止。为获取控制文件的读一致性版本,RMAN创建控制文件的读一致性快照副本,这是实际备份的内容。

在创建备份集时,RMAN不会备份未使用的块,这会节省大量的空间。

典型的联机-全部-完整备份的脚本如下

run {

allocate channel d1 type disk;

backup as compressed backupset database format 'd:\rman_bak\mes\%d_%u_%c_%T';

backup as compressed backupset archivelog all delete all input format 'd:\rman_bak\mes\%d_%u_%c_%T';

}

该脚本命令首先分配一个磁盘写入的通道进程,之后第一个backup命令备份整个数据库(数据文件 、控制文件及spfile文件),第二个backup命令备份所有的归档日志文件,并在备份后将其从磁盘中删除,进而可以释放磁盘空间。结果将生成三个备份集文件,备份集中包含了所有数据文件、控制文件、spfile文件和归档日志文件的内容,并且备份完成后自动删除不必再保留的归档日志文件。

RMAN的有些命令可以是即席的,即可以直接在RMAN命令提示符下执行,而有些命令则只能在RUN脚本块中执行,如allocate channel命令需要放入脚本块中执行。

备份也可以只针对部分内容进行,如一个表空间、一个单独的文件等。

备份一个表空间

RMAN> backup as backupset format 'd:\rman_bak\mes\%d_%u_%c_%T' tablespace cmes;

备份一个数据文件,可以指定文件号或文件名

RMAN> backup as backupset format 'd:\rman_bak\mes\%d_%u_%c_%T' datafile 4;

备份一批归档日志文件,可以使用通配符%

RMAN> backup as backupset format 'd:\rman_bak\mes\%d_%u_%c_%T' archivelog like 'D:\oradata\mes\archivelog\ARC_752D1AF3_1_882311480_1%';

备份控制文件

RMAN> backup current controlfile format 'e:\rman_bak\mes\control_bak\c_%d_%u_%c_%T';

四、增量备份

增量备份分为差异增量备份和累积增量备份。增量备份依赖于包含所有块的起点时称之为增量级别(incremental level)0备份,之后差异增量级别1备份将提取自上一个级别1备份以来更改的所有块,如果没有介于其间的级别1备份,则提取自上一个级别0备份以来更改的所有块。而累积增量备份则始终提取自上一个级别0备份以来更改的所有块,不考虑其间是否存在任何级别1备份。

执行增量级别0备份的RMAN命令如下,备份集将包含所有使用过的块

RMAN> backup as backupset incremental level 0 database;

以下命令执行差异增量级别1备份,该命令提取自上一个级别1备份以来更改的所有块,如果没有运行过级别0备份,则第一次执行级别1的增量备份实际是执行级别0备份

RMAN> backup as backupset incremental level 1 database;

以下命令执行累积增量级别1备份,该命令提取自级别0备份以来更改的所有块

RMAN> backup as backupset incremental level 1 cumulative database;

可以指定大于1的增量级别,但它们没有效果,支持它们只是为了与老版本的RMAN兼容,因此现在可以不必再使用。

在很多情况下,可能希望增量备份能快一些,这可以通过启用块改变跟踪(block change tracking)来实现。

块改变跟踪依赖于启动一个额外的后台进程:CTWR(Change Tracking Writer,改变跟踪写入器)。这个进程在改变跟踪文件中记录每个已更改的块的地址。如果启用了块改变跟踪,RMAN将在执行增量备份时读取改变跟踪文件以确定哪些块需要备份。这比扫描整个数据文件要快的多。

改变跟踪文件默认位置可在初始化参数db_create_file_dest中指定。它的初始大小为10MB,并以10MB的增量增长。改变跟踪文件是位图格式,每位包含32个数据块。启用块改变跟踪会有一个最低的性能开销,经验表明这并不重要。要启用块改变跟踪并指定跟踪文件的名称和位置,可使用以下命令

alter database enable block change tracking using file 'd:\oradata\mes\change_tracking.dbf';

要监视块变更跟踪的有效性,可查询视图v$backup_datafile

col name for a50

col read_radio for a10

select t1.file#, t2.name, t1.datafile_blocks, t1.blocks_read, to_char(round(t1.blocks_read / t1.datafile_blocks, 2) * 100) || '%' read_radio, t1.completion_time

  from v$backup_datafile t1 join v$datafile t2 on (t1.file# = t2.file#) and t1.used_change_tracking = 'YES' and t1.incremental_level > 0 order by file#, completion_time;

     FILE# NAME                                               DATAFILE_BLOCKS BLOCKS_READ READ_RADIO COMPLETION_TIME

---------- -------------------------------------------------- --------------- ----------- ---------- -------------------

         1 D:\ORADATA\MES\SYSTEM01.DBF                                  65280        1895 3%         2016-12-04 14:58:49

         1 D:\ORADATA\MES\SYSTEM01.DBF                                  65280        1135 2%         2016-12-04 20:58:03

         2 D:\ORADATA\MES\UNDOTBS01.DBF                                 10880        1983 18%        2016-12-04 14:58:49

         2 D:\ORADATA\MES\UNDOTBS01.DBF                                 10880         679 6%         2016-12-04 20:58:03

         3 D:\ORADATA\MES\SYSAUX01.DBF                                  38400        5815 15%        2016-12-04 14:58:49

         3 D:\ORADATA\MES\SYSAUX01.DBF                                  38400        3467 9%         2016-12-04 20:58:03

         4 D:\ORADATA\MES\USERS01.DBF                                     640           1 0%         2016-12-04 14:58:48

         4 D:\ORADATA\MES\USERS01.DBF                                     640         255 40%        2016-12-04 20:58:03

         5 D:\ORADATA\MES\CMES01.DBF                                    12800           1 0%         2016-12-04 14:58:48

         5 D:\ORADATA\MES\CMES01.DBF                                    12800           1 0%         2016-12-04 20:58:03

         6 D:\ORADATA\MES\RMES01.DBF                                   131072           9 0%         2016-12-04 14:58:48

         6 D:\ORADATA\MES\RMES01.DBF                                   131072          13 0%         2016-12-04 20:58:03

         7 D:\ORADATA\MES\INDX01.DBF                                   131072           1 0%         2016-12-04 14:58:48

         7 D:\ORADATA\MES\INDX01.DBF                                   131072           1 0%         2016-12-04 20:58:03

         8 D:\ORADATA\MES\HMES01.DBF                                    64000           1 0%         2016-12-04 14:58:48

         8 D:\ORADATA\MES\HMES01.DBF                                    64000           1 0%         2016-12-04 20:58:03

         9 D:\ORADATA\MES\RMES02.DBF                                   131072           1 0%         2016-12-04 14:58:48

         9 D:\ORADATA\MES\RMES02.DBF                                   131072           1 0%         2016-12-04 20:58:03

        10 D:\ORADATA\MES\INDX02.DBF                                   131072           1 0%         2016-12-04 14:58:48

        10 D:\ORADATA\MES\INDX02.DBF                                   131072           1 0%         2016-12-04 20:58:03

其中DATAFILE_BLOCKS反映的是数据文件的大小,BLOCKS_READ和READ_RADIO则显示了每次增量备份读取的块数和读块比率,如果每次备份这个比率在持续增加,则应考虑更频繁的执行增量备份。

要查看是否启用了块改变跟踪,并检查跟踪文件的位置和大小,可查询视图v$block_change_tracking

col filename for a50

select * from v$block_change_tracking;

STATUS     FILENAME                                        BYTES

---------- ----------------------------------------------- ----------

ENABLED    D:\ORADATA\MES\BLOCK_CHANGE_TRACKING.DBF        11599872

确认是否启用了CTWR服务器进程(改变跟踪写入器),可查询视图v$process

select program from v$process where program like '%CTWR%';

PROGRAM

----------------------------------------------------------------

ORACLE.EXE (CTWR)

如果要取消块改变跟踪,则命令为

alter database disable block change tracking;

五、其它备份方式

1、映像副本

文件的映像副本是与数据文件、控制文件或归档日志文件完全相同的副本。结果就好像文件是用操作系统程序复制的,但机制是不同的,RMAN读写Oracle块,而不是操作系统块。映像副本备份方式的优点是还原非常快速,因为不需要从备份集中提取文件。

映像副本可由数据文件、控制文件或归档日志文件组成,但不能由spfile文件组成。

映像副本的备份命令使用关键字copy,如使用以下命令备份整个数据库,在没有更改默认配置的情况下,将启动一个磁盘通道,将所有数据文件和控制文件复制到闪回恢复区(同时还会自动生成一个spfile文件的备份集)

RMAN> backup as copy database;

如要将所有归档日志移入闪回恢复区,则命令为

RMAN> backup as copy archivelog all delete all input;

利用视图v$backup_files可以查询备份情况

SQL> select backup_type, file_type, status, fname, tag, df_tablespace, df_file# from v$backup_files;

BACKUP_TYPE   FILE_TYPE       STATUS       FNAME                                         TAG                   DF_TABLESPACE DF_FILE#

------------- --------------- ------------ --------------------------------------------- --------------------- ------------- --------

COPY          DATAFILE        AVAILABLE    D:\RMAN_BAK\MES\MES_2OQJEQ48_1_20151011       TAG20151011T143448    RMES                 6

COPY          DATAFILE        AVAILABLE    D:\RMAN_BAK\MES\MES_2PQJEQ7I_1_20151011       TAG20151011T143448    RMES                 7

COPY          DATAFILE        AVAILABLE    D:\RMAN_BAK\MES\MES_2QQJEQBP_1_20151011       TAG20151011T143448    SYSTEM               1

COPY          DATAFILE        AVAILABLE    D:\RMAN_BAK\MES\MES_2RQJEQD7_1_20151011       TAG20151011T143448    SYSAUX               2

COPY          DATAFILE        AVAILABLE    D:\RMAN_BAK\MES\MES_2SQJEQEA_1_20151011       TAG20151011T143448    CMES                 5

COPY          DATAFILE        AVAILABLE    D:\RMAN_BAK\MES\MES_2TQJEQEI_1_20151011       TAG20151011T143448    UNDOTBS1             3

COPY          CONTROLFILE     AVAILABLE    D:\RMAN_BAK\MES\MES_2UQJEQEP_1_20151011       TAG20151011T143448                         0

COPY          DATAFILE        AVAILABLE    D:\RMAN_BAK\MES\MES_2VQJEQES_1_20151011       TAG20151011T143448    USERS                4

BACKUP SET    SPFILE                                                                                                        

BACKUP SET    PIECE           AVAILABLE    D:\RMAN_BAK\MES\MES_30QJEQEU_1_20151011       TAG20151011T143448

2、压缩备份

RMAN支持压缩方式的备份,使用compressed关键字,如下命令将完成数据库和归档日志的压缩备份

RMAN> backup as compressed backupset database plus archivelog;

3、保护备份

RMAN支持多重方式的备份,使用关键字copies,如下命令将在默认磁盘目标位置生成数据库及归档日志的两套备份集

RMAN> backup as backupset device type disk copies 2 database plus archivelog;

也可以对备份集进行备份,如用以下命令可以将备份集转移备份到其它目标设备上,并将原来位置的备份删除

RMAN> backup device type disk format 'd:\shift_bak\%d_%u_%c_%T' backupset all delete all input;

4、加密备份

在有些环境下可能希望需要加密的备份,因为这些备份可能存储在DBA几乎无法控制的可移动设备上。

加密有透明加密和口令加密两种方式。

1)透明加密

这是RMAN采用的默认方式,基于钱夹(wallet)的使用。这是一个包含用于加密和解密数据的密钥文件,其本身用口令保护。这种加密方式适合于只在本机上进行加密备份和恢复,只需要配置好钱夹证书。证书文件需要妥善保管不可丢失,否则以后无法恢复。

透明加密备份的操作过程如下:

a)首先在Oracle默认的指定位置创建钱夹目录

%ORACLE_BASE%\admin\<sid>\wallet

b)查看钱夹状态,默认是关闭的

SQL> select * from v$encryption_wallet;

WRL_TYPE   WRL_PARAMETER                  STATUS

---------- ------------------------------ ----------

file       C:\ORACLE\ADMIN\MES\WALLET     CLOSED

c)打开钱夹,并给证书设置口令。系统可能会报ORA-28374错误,这是Oracle的Bug,不用理会

SQL> alter system set encryption key authenticated by "pm1234";

alter system set encryption key authenticated by "pm1234"

*

第 1 行出现错误:

ORA-28374: 在 Wallet 中未找到键入的主键

d)配置RMAN加密备份开启

RMAN> configure encryption for database on;

旧的 RMAN 配置参数:

CONFIGURE ENCRYPTION FOR DATABASE OFF;

新的 RMAN 配置参数:

CONFIGURE ENCRYPTION FOR DATABASE ON;

已成功存储新的 RMAN 配置参数

e)之后可进行正常的备份操作。

f)RMAN恢复操作前需要用正确的口令打开钱夹

SQL> alter system set wallet open identified by "pm1234";

系统已更改。

g)之后可进行正常的恢复操作。如果钱夹未打开,则恢复过程失败。

h)如果要取消加密备份功能,则可将RMAN的加密配置重置为默认值

RMAN> CONFIGURE ENCRYPTION FOR DATABASE clear;

旧的 RMAN 配置参数:

CONFIGURE ENCRYPTION FOR DATABASE ON;

RMAN 配置参数已成功重置为默认值

2)口令加密

这是在备份前设置好算法和密钥,之后进行正常的备份。加密备份的文件在恢复操作前需要提供正确的密钥,否则无法恢复。

通过视图v$rman_encryption_algorithms可以查看RMAN支持的加密算法,默认的加密算法是AES128

SQL> select * from v$rman_encryption_algorithms;

ALGORITHM_ID ALGORITHM_NAME  ALGORITHM_DESCRIPTIO IS_DEFAULT RESTORE_ONLY

------------ --------------- -------------------- ---------- ------------

           1 AES128          AES 128-bit key      YES        NO

           2 AES192          AES 192-bit key      NO         NO

           3 AES256          AES 256-bit key      NO         NO

口令加密备份的操作过程如下:

a)查看RMAN当前加密算法,#default表示该项是RMAN的默认设置

RMAN> show encryption algorithm;

db_unique_name 为 MES 的数据库的 RMAN 配置参数为:

CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

b)若需要更改加密算法,可使用以下命令,如更改为AES256

RMAN> configure encryption algorithm 'aes256';

新的 RMAN 配置参数:

CONFIGURE ENCRYPTION ALGORITHM 'aes256';

已成功存储新的 RMAN 配置参数

c)可查看确认加密算法是否已更改

RMAN> show encryption algorithm;

db_unique_name 为 MES 的数据库的 RMAN 配置参数为:

CONFIGURE ENCRYPTION ALGORITHM 'aes256';

d)如果要恢复为默认的加密算法,可使用关键字clear

RMAN> configure encryption algorithm clear;

旧的 RMAN 配置参数:

CONFIGURE ENCRYPTION ALGORITHM 'aes256';

RMAN 配置参数已成功重置为默认值

e)设置密钥并开启加密

RMAN> set encryption on identified by 'pm1234' only;

正在执行命令: SET encryption

f)之后可开始执行正常的备份操作。

g)恢复操作前,需要提供密钥,否则无法恢复

RMAN> set decryption identified by 'pm1234';

正在执行命令: SET decryption

h)之后便可进行正常的恢复操作。

5、归档备份

在Oracle术语中,归档备份指的是希望长时间或永久保存的备份。通常,创建归档备份只是为了满足有关记录保留的规定。归档备份不理会RMAN配置的保留策略,也不会由delete obsolete命令自动删除。

创建归档备份的语法如下:

backup … keep { forever | until time 'date_expr' } [ restore point rpname ];

其中forever表示永久保存不过期,until time则指定过期的日期,二者选一。日期表达式可以是实际的日期或计算式。如下命令将生成数据库的完整归档备份,因为是归档备份,其中也将包括归档日志

RMAN> backup as compressed backupset database keep until time 'sysdate + 90' restore point quarterly_bak;

六、并行化备份操作

每次使用RMAN时,都至少会对目标数据库启动两个会话,被称为默认会话和轮询会话。默认会话是调用实现RMAN的内核PL/SQL的会话,轮询会话监视RMAN操作的进展。当RMAN读写磁盘或磁带时,它将需要第三个会话:通道。通过启动多个通道来实现备份工作的并行化,可减少备份花费的时间。

RMAN备份时可达到的并行度受通道数和输入文件数的限制。考虑下列脚本

run {

allocate channel t1 type disk;

allocate channel t2 type disk;

allocate channel t3 type disk;

allocate channel t4 type disk;

backup database files per set 8;

}

脚本中启动了四个命名的通道,RMAN计算数据库中的文件数,并将它们分布到备份集中,每个备份集不超过8个文件。如果数据库由100个数据文件外加控制文件构成,那将生成13个备份集,前12个备份集每个包含8个文件,第13个备份集包含剩下的5个文件,并行度为4,并行度受通道数限制。但如果数据库只有20个数据文件,那将只生成3个备份集,并行度为3,有一个通道闲置,此时的并行度受输入文件数的限制。

默认情况下,最大并行度是不会超过输入文件数的,因为默认同一时间内,一个通道只能对应一个文件的读取,但采用多段备份功能后,一个文件可以分段同时被多个通道并行访问。这一应用主要是针对那些单个较大文件的备份进行的。

多段关键字的运用如下脚本

run {

allocate channel t1 type disk;

allocate channel t2 type disk;

allocate channel t3 type disk;

allocate channel t4 type disk;

backup as backupset datafile 16 section size 10g;

}

该脚本启动4个通道,每个通道读取数据文件16的一个10g大小的段,每个通道将生成包含段的备份的片(单独的物理文件)。假定文件大小为200G,则将生成20个备份片文件,一次并行的生成4个。如果没有section size关键字,则并行度将为1,只能用一个通道执行整个操作,而其它三个通道将闲置。

七、配置RMAN备份的默认参数

RMAN备份的默认参数往往并不适合我们的要求,在备份工作开始前可能需要配置好默认的备份参数,一旦这些参数配置好后,备份命令在未指定目标参数情况下将按设定的默认值来进行。

show命令可以查看RMAN当前配置的默认参数,以下是在未对这些参数设置过的情况下系统的默认取值,使用show all命令显示了所有配置参数,每一行配置语句结尾标注的#default表明该参数值是系统的默认取值

RMAN> show all;

使用目标数据库控制文件替代恢复目录

db_unique_name 为 MES 的数据库的 RMAN 配置参数为:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default

CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'C:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\SNCFMES.ORA'; # default

要调整这些参数的默认值,可使用configure命令,如以下一些设置:

更改控制文件的备份配置,设为自动备份,并指定备份的目标路径。这样在数据库结构发生改变或做RMAN备份时会自动备份控制文件,也会备份spfile文件,这里%F格式只对自动备份生效,手动备份时指定该参数是无效的

RMAN> configure controlfile autobackup on;

RMAN> configure controlfile autobackup format for device type disk to 'd:\rman_bak\mes\control_bak\%F';

更改数据文件备份集的目标位置和命名规则

RMAN> configure channel device type disk format 'd:\rman_bak\mes\%d_%u_%c_%T';

更改备份类型由默认的backupset改为copy,使得RMAN的任何备份都不产生备份集,而产生映像副本

RMAN> configure device type disk backup type to copy;

更改默认的备份设备类型由磁盘disk改为磁带sbt

RMAN> configure default device type to sbt;

更改磁盘备份的并行数,以下启动2个通道

RMAN> configure device type disk parallelism 2;

启用备份优化功能,这允许RMAN如果认为有足够的文件副本,就不备份特定文件。优化与保留策略有关。默认的保留策略为1,意味着RMAN将试图至少保存一个副本。备份优化只适用于归档日志和只读或脱机表空间的数据文件。由于联机的可读写的数据文件总是在变化,RMAN将不会认为它有相同的副本

RMAN> configure backup optimization on;

更改备份的保留策略,以下将保留策略的冗余度设置为3,意味着RMAN将试图保存3个副本

RMAN> configure retention policy to redundancy 3;

可以设置两种保留策略,冗余级别指定应保存的文件副本数。另一种策略是设置恢复窗口,以下的备份设置保证可以通过执行时间点恢复回到过去90天中的任意一个时间

RMAN> configure retention policy to recovery window of 90 days;

要将配置的设置恢复为系统默认值,可使用clear命令。如下所示,首先用show命令查看相关配置信息,再用clear命令恢复到系统默认值

RMAN> show device type;

db_unique_name 为 MES 的数据库的 RMAN 配置参数为:

CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;

RMAN> configure device type disk clear;

旧的 RMAN 配置参数:

CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;

RMAN 配置参数已成功重置为默认值

RMAN> show device type;

db_unique_name 为 MES 的数据库的 RMAN 配置参数为:

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

实际上,在这些配置参数中,大多数的默认设置都不需要调整,RMAN就能很好的完成我们期望的备份效果。但要特别留意的是默认备份的目标位置并未体现在这一配置列表中。默认情况下,RMAN磁盘备份的目标位置是闪回恢复区flash_recovery_area,Oracle安装时它的默认选定位置是在Oracle基目录%ORACLE_BASE%中,在Oracle安装时建议调整到其它磁盘位置以提高系统性能。

可以查看初始化参数db_recovery_file_dest和db_recovery_file_dest_size来查看闪回恢复区信息,Oracle 10g中这个区域大小默认是2G,11g中则提升为4G

SQL> show parameter db_recovery_file_dest;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string      c:\oracle\flash_recovery_area

db_recovery_file_dest_size           big integer 2G

如果闪回恢复区容量不够,可以调整其大小

SQL> alter system set db_recovery_file_dest_size=4G;

采用闪回恢复区位置存放备份的好处是RMAN可以自动管理该区域,如果闪回恢复区已满,RMAN将从中自动删除过时的备份。

在完成以上的配置后,可以用以下一条命令完成数据库的联机备份

backup as compressed backupset incremental level 1 database plus archivelog delete all input;

八、管理和监视RMAN备份

一旦生成了一些备份,就需要对这些备份进行管理,如报告已经创建了哪些备份,这些备份包含的内容和状态怎样,哪些还需要备份,哪些备份已经无效或多余可以删除,如何删除之前的备份等。

1、list、validate、restore...validate、restore...preview、report、delete和crosscheck命令

list命令列出已创建的备份。

列出备份汇总信息

RMAN> list backup summary;

列出所有备份集

RMAN> list backupset;

以上也可以使用命令

RMAN> list backup;

查看单个备份集

RMAN> list backupset 5;

列出所有映像副本

RMAN> list copy;

列出所有数据库文件备份集(不包含控制文件、服务器初始化参数文件和归档日志文件)

RMAN> list backup of database;

列出包含控制文件的备份集

RMAN> list backup of controlfile;

列出包含服务器初始化参数文件的备份集

RMAN> list backup of spfile;

列出所有归档日志文件备份集

RMAN> list backup of archivelog all;

列出包含日志切换系列号为1000~1050的归档日志的备份集

RMAN> list backup of archivelog from sequence 1000 until sequence 1050;

列出包含数据文件1的备份集

RMAN> list backup of datafile 1;

列出包含USERS表空间的备份集

RMAN> list backup of tablespace users;

列出所有归档日志文件列表

RMAN> list archivelog all;

要改变list输出信息中的日期时间格式,可在启动RMAN前设置操作系统的环境变量nls_date_format,如在Windows下执行命令

C:\> set nls_date_format=yyyy-mm-dd hh24:mi:ss

validate、restore...validate、restore...preview用于验证备份集的可用性以及验证和查看需要的恢复内容是否在备份集中。

验证备份集的可用性

RMAN> validate backupset 20;

验证表空间是否在备份集中

RMAN> restore tablespace users validate;

验证数据文件是否在备份集中

RMAN> restore datafile 'd:\oradata\mes\system01.dbf' validate;

以上命令也可以使用文件号来表示

RMAN> restore datafile 1 validate;

查看恢复整个数据库的备份是否存在

RMAN> restore database preview;

查看恢复某个表空间所需的备份是否存在

RMAN> restore tablespace users preview;

查看恢复某个数据文件所需的备份是否存在

RMAN> restore datafile 5 preview;

report命令按照设定的保留策略,通过询问目标数据库确定哪些需要备份。

列出构成数据库的数据文件

RMAN> report schema;

应用保留策略,列出至少需要一个备份来满足策略的所有数据文件

RMAN> report need backup;

列出一周未备份的所有对象,使用这一命令将忽略配置的保留策略

RMAN> report need backup days 7;

列出备份数不足2份的数据文件

RMAN> report need backup redundancy 2;

按照保留策略的冗余度,列出所有多余的不再需要而可以删除的备份

RMAN> report obsolete;

该命令之后可以使用delete命令将多余的备份删除

RMAN> delete obsolete;

列出以7天为恢复窗口策略的过期备份

RMAN> report obsolete recovery window of 7 days;

该命令之后可以使用delete命令将多余的备份删除

RMAN> delete obsolete recovery window of 7 days;

列出以冗余度2为冗余策略的过期备份

RMAN> report obsolete redundancy 2;

该命令之后可以使用delete命令将多余的备份删除

RMAN> delete obsolete redundancy 2;

delete命令也可以一次性删除所有的备份或有选择性的删除备份。

删除所有的备份

RMAN> delete backup;

删除所有的映像副本

RMAN> delete copy;

删除所有的数据库文件备份(不包括控制文件、服务器初始化参数文件和归档日志文件)

RMAN> delete backup of database;

删除控制文件备份

RMAN> delete backup of controlfile;

删除初始化参数文件备份

RMAN> delete backup of spfile;

删除所有归档日志文件备份

RMAN> delete backup of archivelog all;

删除指定编号的备份集

RMAN> delete backupset 36;

删除指定标记的备份集

RMAN> delete backupset tag TAG20151006T145256;

删除所有归档日志文件

RMAN> delete archivelog all;

list和report命令读取的是RMAN存储库中的信息,即存储在目标数据库控制文件中的数据。它并不能说明备份文件物理上实际还是否真的存在。要确认备份是否确实存在,需要使用交叉检查crosscheck命令。

交叉检查所有备份是否存在

RMAN> crosscheck backup;

交叉检查数据库文件的备份是否存在

RMAN> crosscheck backup of database;

交叉检查控制文件的备份是否存在

RMAN> crosscheck backup of controlfile;

交叉检查初始化参数文件的备份是否存在

RMAN> crosscheck backup of spfile;

交叉检查所有归档日志文件是否存在

RMAN> crosscheck archivelog all;

交叉检查所有归档日志文件的备份是否存在

RMAN> crosscheck backup of archivelog all;

对于检查结果为不存在的备份,在存储库中将被标记为过期失效的expired,而真实存在的备份则被标记为可用的available。标记为expired的备份信息可以通过delete expired命令将它从RMAN存储库中删除,之后将不再会被显示在list命令结果中。它与delete obsolete命令不同,delete obsolete命令会实际删除文件并更新存储库信息,而delete expired命令仅更新存储库信息,不会从磁盘上真正删除文件。

删除存储库中过期的所有备份信息

RMAN> delete expired backup;

有时因为我们手工删除了归档日志,导致RMAN发现归档缺失而无法执行备份。此时可以应用交叉检查命令首先检查归档日志文件的缺失情况

RMAN> crosscheck archivelog all;

然后从RMAN存储库中删除过期的归档日志记录

RMAN> delete expired archivelog all;

之后便可以执行正常的备份了。

2、关于RMAN备份的动态性能视图

如果要更灵活的查询RMAN备份的信息,开发自己的报告,而不是依赖于RMAN的list命令,可以借助以下一些视图

v$backup_files:

备份文件信息(包括数据文件、控制文件、SPFILE、归档日志文件),未经备份的归档日志也会记录其中,它们没有备份集编号。

col backup_type for a20

col file_type for a20

col fname for a100

col tag for a30

col df_tablespace for a20

select bs_key, backup_type, file_type, status, fname, tag, obsolete, bytes, bs_completion_time, df_tablespace, df_file#, rl_sequence# from v$backup_files;

    BS_KEY BACKUP_TYPE          FILE_TYPE            STATUS           FNAME                                                                                                TAG                            OBSOLETE      BYTES BS_COMPLETION_TIME DF_TABLESPACE          DF_FILE# RL_SEQUENCE#

---------- -------------------- -------------------- ---------------- ---------------------------------------------------------------------------------------------------- ------------------------------ -------- ---------- ------------------ -------------------- ---------- ------------

         1 BACKUP SET           ARCHIVED LOG                                                                                                                                                              YES        11453440 2016/12/3 23:01:40                                          157

         1 BACKUP SET           ARCHIVED LOG                                                                                                                                                              YES         2435072 2016/12/3 23:01:40                                          158

         1 BACKUP SET           PIECE                AVAILABLE        D:\FLASH_RECOVERY_AREA\MES\BACKUPSET\2016_12_03\O1_MF_ANNNN_TAG20161203T230138_D45QLN48_.BKP         TAG20161203T230138             YES         5046272 2016/12/3 23:01:40                                

         2 BACKUP SET           DATAFILE                              D:\ORADATA\MES\INDX01.DBF                                                                                                           NO        657506304 2016/12/3 23:03:03 INDX                          7

         2 BACKUP SET           DATAFILE                              D:\ORADATA\MES\RMES01.DBF                                                                                                           NO        772112384 2016/12/3 23:03:03 RMES                          6

         2 BACKUP SET           DATAFILE                              D:\ORADATA\MES\RMES02.DBF                                                                                                           NO        741302272 2016/12/3 23:03:03 RMES                          9

         2 BACKUP SET           DATAFILE                              D:\ORADATA\MES\SYSTEM01.DBF                                                                                                         NO        410411008 2016/12/3 23:03:03 SYSTEM                        1

         2 BACKUP SET           DATAFILE                              D:\ORADATA\MES\HMES01.DBF                                                                                                           NO           188416 2016/12/3 23:03:03 HMES                          8

         2 BACKUP SET           DATAFILE                              D:\ORADATA\MES\SYSAUX01.DBF                                                                                                         NO        216842240 2016/12/3 23:03:03 SYSAUX                        3

         2 BACKUP SET           DATAFILE                              D:\ORADATA\MES\CMES01.DBF                                                                                                           NO         15392768 2016/12/3 23:03:03 CMES                          5

         2 BACKUP SET           DATAFILE                              D:\ORADATA\MES\UNDOTBS01.DBF                                                                                                        NO         88473600 2016/12/3 23:03:03 UNDOTBS1                      2

         2 BACKUP SET           DATAFILE                              D:\ORADATA\MES\USERS01.DBF                                                                                                          NO           614400 2016/12/3 23:03:03 USERS                         4

         2 BACKUP SET           DATAFILE                              D:\ORADATA\MES\INDX02.DBF                                                                                                           NO        581894144 2016/12/3 23:03:03 INDX                         10

         2 BACKUP SET           PIECE                AVAILABLE        D:\FLASH_RECOVERY_AREA\MES\BACKUPSET\2016_12_03\O1_MF_NNND1_TAG20161203T230141_D45QLOYK_.BKP         TAG20161203T230141             NO        596959232 2016/12/3 23:03:03                                

         3 BACKUP SET           ARCHIVED LOG                                                                                                                                                              NO           609280 2016/12/3 23:03:09                                          159

         3 BACKUP SET           PIECE                AVAILABLE        D:\FLASH_RECOVERY_AREA\MES\BACKUPSET\2016_12_03\O1_MF_ANNNN_TAG20161203T230308_D45QOFDJ_.BKP         TAG20161203T230308             NO           610816 2016/12/3 23:03:09                                

           COPY                 ARCHIVED LOG         AVAILABLE        D:\FLASH_RECOVERY_AREA\MES\ARCHIVELOG\2016_12_04\O1_MF_1_160_D46WLOPT_.ARC                                                          NO          1951232                                                             160

         4 BACKUP SET           SPFILE                                                                                                                                                                    NO                2 2016/12/3 23:03:10                                

         4 BACKUP SET           CONTROLFILE                                                                                                                                                               NO          7045120 2016/12/3 23:03:10                               0

         4 BACKUP SET           PIECE                AVAILABLE        D:\FLASH_RECOVERY_AREA\MES\AUTOBACKUP\2016_12_03\O1_MF_S_929660590_D45QOGRN_.BKP                     TAG20161203T230310             NO          7127040 2016/12/3 23:03:10                                

查看映像副本备份

select backup_type, file_type, status, fname, tag, obsolete, bytes, df_tablespace, df_file# from v$backup_files where backup_type = 'COPY';

BACKUP_TYPE          FILE_TYPE            STATUS           FNAME                                                                                                          TAG                            OBS      BYTES DF_TABLESPACE          DF_FILE#

-------------------- -------------------- ---------------- ---------------------------------------------------------------------------------------------------- ------------------------------ --- ---------- -------------------- ----------

COPY                 DATAFILE             AVAILABLE        E:\FLASH_RECOVERY_AREA\MES\BACKUPSET\MES_06RMUTNJ_1_20161208                                         INC_COPY                       NO   503316480 SYSTEM                        1

COPY                 DATAFILE             AVAILABLE        E:\FLASH_RECOVERY_AREA\MES\BACKUPSET\MES_07RMUTOD_1_20161208                                         INC_COPY                       NO   283115520 SYSAUX                        3

COPY                 DATAFILE             AVAILABLE        E:\FLASH_RECOVERY_AREA\MES\BACKUPSET\MES_08RMUTOS_1_20161208                                         INC_COPY                       NO    26214400 UNDOTBS1                      2

COPY                 DATAFILE             AVAILABLE        E:\FLASH_RECOVERY_AREA\MES\BACKUPSET\MES_09RMUTOV_1_20161208                                         INC_COPY                       NO     5242880 USERS                         4

查询尚未备份的归档日志

col fname for a100

select rl_sequence#, fname, status, completion_time, obsolete from v$backup_files where backup_type = 'COPY' and file_type = 'ARCHIVED LOG';

RL_SEQUENCE# FNAME                                                                                                STATUS           COMPLETION_TIME OBSOLETE

------------ ---------------------------------------------------------------------------------------------------- ---------------- --------------- --------

         160 D:\FLASH_RECOVERY_AREA\MES\ARCHIVELOG\2016_12_04\O1_MF_1_160_D46WLOPT_.ARC                           AVAILABLE        2016/12/4 9:33: NO

根据备份文件名查询其包含的备份信息

col backup_type for a15

col file_type for a15

col fname for a100

col bs_incr_type for a15

col df_tablespace for a15

select backup_type, file_type, fname, tag, completion_time, compressed, obsolete, bs_incr_type, df_file#, df_tablespace from v$backup_files where stamp = (select stamp from v$backup_files where fname like '%O1_MF_NNND1_TAG20161204T145847_D47HO8HL_%');

BACKUP_TYPE     FILE_TYPE       FNAME                                                                                                TAG                              COMPLETION_TIME COMPRESSED OBSOLETE BS_INCR_TYPE      DF_FILE# DF_TABLESPACE

--------------- --------------- ---------------------------------------------------------------------------------------------------- -------------------------------- --------------- ---------- -------- --------------- ---------- ---------------

BACKUP SET      DATAFILE        D:\ORADATA\MES\INDX01.DBF                                                                                                                                        NO       INCR1                    7 INDX

BACKUP SET      DATAFILE        D:\ORADATA\MES\USERS01.DBF                                                                                                                                       NO       INCR1                    4 USERS

BACKUP SET      DATAFILE        D:\ORADATA\MES\RMES01.DBF                                                                                                                                        NO       INCR1                    6 RMES

BACKUP SET      DATAFILE        D:\ORADATA\MES\RMES02.DBF                                                                                                                                        NO       INCR1                    9 RMES

BACKUP SET      DATAFILE        D:\ORADATA\MES\INDX02.DBF                                                                                                                                        NO       INCR1                   10 INDX

BACKUP SET      DATAFILE        D:\ORADATA\MES\HMES01.DBF                                                                                                                                        NO       INCR1                    8 HMES

BACKUP SET      DATAFILE        D:\ORADATA\MES\CMES01.DBF                                                                                                                                        NO       INCR1                    5 CMES

BACKUP SET      PIECE           D:\FLASH_RECOVERY_AREA\MES\BACKUPSET\2016_12_04\O1_MF_NNND1_TAG20161204T145847_D47HO8HL_.BKP         TAG20161204T145847               2016/12/4 14:58 YES        NO       INCR1                     

查询按照保留策略属于已经废弃的备份

col fname for a100

select fname, tag from v$backup_files where file_type='PIECE' and obsolete='YES';

FNAME                                                                                                TAG

---------------------------------------------------------------------------------------------------- ------------------------------

D:\FLASH_RECOVERY_AREA\MES\BACKUPSET\2016_12_03\O1_MF_ANNNN_TAG20161203T230138_D45QLN48_.BKP         TAG20161203T230138

D:\FLASH_RECOVERY_AREA\MES\AUTOBACKUP\2016_12_03\O1_MF_S_929660590_D45QOGRN_.BKP                     TAG20161203T230310

D:\FLASH_RECOVERY_AREA\MES\AUTOBACKUP\2016_12_04\O1_MF_S_929717936_D47HOJO1_.BKP                     TAG20161204T145856

D:\FLASH_RECOVERY_AREA\MES\AUTOBACKUP\2016_12_04\O1_MF_S_929739489_D484Q18P_.BKP                     TAG20161204T205809

D:\FLASH_RECOVERY_AREA\MES\AUTOBACKUP\2016_12_04\O1_MF_S_929743942_D48926C1_.BKP                     TAG20161204T221222

D:\FLASH_RECOVERY_AREA\MES\AUTOBACKUP\2016_12_04\O1_MF_S_929743973_D489355M_.BKP                     TAG20161204T221253

D:\FLASH_RECOVERY_AREA\MES\AUTOBACKUP\2016_12_04\O1_MF_S_929743988_D4893NW7_.BKP                     TAG20161204T221308

v$backup_set:

每个备份集一行信息,可与视图v$backup_files联合查询。

col 备份类型 for a10

col 文件名 for a100

col 标记 for a20

col 文件类型 for a20

col 备份内容 for a20

col 增量类型 for a10

select bf.bs_key               关键字,

       bf.backup_type          备份类型,

       bf.fname                文件名,

       bf.tag                  标记,

       bf.bytes                文件大小,

       bf.status               状态,

       bf.bs_type              备份内容,

       bf.bs_incr_type         增量类型,

       bs.controlfile_included 控制文件,

       bf.compressed           压缩备份,

       bf.obsolete             多余备份,

       --bs.multi_section        多段备份,

       bf.keep                 归档备份,

       bf.keep_options         归档选项,

       bf.keep_until           过期时间,

       bs.start_time           开始时间,

       bs.completion_time      完成时间,

       bs.elapsed_seconds      花费时间

  from v$backup_files bf, v$backup_set bs

 where bf.bs_key = bs.recid

   and bf.file_type = 'PIECE';

关键字         备份类型   文件名                                                                                                标记                 文件大小     状态              备份内容             增量类型   控制文件 压缩备份 多余备份 归档备份 归档选项      过期时间    开始时间    完成时间    花费时间

---------- ---------- ---------------------------------------------------------------------------------------------------- -------------------- ---------- ---------------- -------------------- ---------- -------- -------- -------- -------- ------------- ----------- ----------- ----------- ----------

         1 BACKUP SET D:\FLASH_RECOVERY_AREA\MES\BACKUPSET\2016_12_03\O1_MF_ANNNN_TAG20161203T230138_D45QLN48_.BKP         TAG20161203T230138      5046272 AVAILABLE        ARCHIVED LOG         FULL       NO       YES      YES      NO                                 2016/12/3 2 2016/12/3 2          1

         2 BACKUP SET D:\FLASH_RECOVERY_AREA\MES\BACKUPSET\2016_12_03\O1_MF_NNND1_TAG20161203T230141_D45QLOYK_.BKP         TAG20161203T230141    596959232 AVAILABLE        DATAFILE             INCR1      NO       YES      NO       NO                                 2016/12/3 2 2016/12/3 2         82

         3 BACKUP SET D:\FLASH_RECOVERY_AREA\MES\BACKUPSET\2016_12_03\O1_MF_ANNNN_TAG20161203T230308_D45QOFDJ_.BKP         TAG20161203T230308       610816 AVAILABLE        ARCHIVED LOG         FULL       NO       YES      NO       NO                                 2016/12/3 2 2016/12/3 2          1

         4 BACKUP SET D:\FLASH_RECOVERY_AREA\MES\AUTOBACKUP\2016_12_03\O1_MF_S_929660590_D45QOGRN_.BKP                     TAG20161203T230310      7127040 AVAILABLE        DATAFILE             FULL       YES      NO       NO       NO                                 2016/12/3 2 2016/12/3 2          0

v$backup_piece:

每个备份片一行信息,这里面也包含了已删除的备份。

col handle for a100

select recid, handle, tag, status, start_time, completion_time, elapsed_seconds, deleted, bytes, is_recovery_dest_file, compressed from v$backup_piece;

     RECID HANDLE                                                                                               TAG                              STATUS START_TIME  COMPLETION_TIME ELAPSED_SECONDS DELETED      BYTES IS_RECOVERY_DEST_FILE COMPRESSED

---------- ---------------------------------------------------------------------------------------------------- -------------------------------- ------ ----------- --------------- --------------- ------- ---------- --------------------- ----------

         1 D:\FLASH_RECOVERY_AREA\MES\BACKUPSET\2016_12_03\O1_MF_ANNNN_TAG20161203T230138_D45QLN48_.BKP         TAG20161203T230138               A      2016/12/3 2 2016/12/3 23:01               0 NO         5046272 YES                   YES

         2 D:\FLASH_RECOVERY_AREA\MES\BACKUPSET\2016_12_03\O1_MF_NNND1_TAG20161203T230141_D45QLOYK_.BKP         TAG20161203T230141               A      2016/12/3 2 2016/12/3 23:03              82 NO       596959232 YES                   YES

         3 D:\FLASH_RECOVERY_AREA\MES\BACKUPSET\2016_12_03\O1_MF_ANNNN_TAG20161203T230308_D45QOFDJ_.BKP         TAG20161203T230308               A      2016/12/3 2 2016/12/3 23:03               0 NO          610816 YES                   YES

         4 D:\FLASH_RECOVERY_AREA\MES\AUTOBACKUP\2016_12_03\O1_MF_S_929660590_D45QOGRN_.BKP                     TAG20161203T230310               A      2016/12/3 2 2016/12/3 23:03               0 NO         7127040 YES                   NO

v$backup_piece_details:

备份片详细信息,可以结合v$backup_piece查询。

col handle for a100

col size_bytes_display for a10

select t1.recid,

       t1.handle,

       t1.tag,

       t1.status,

       t1.start_time,

       t1.completion_time,

       t1.elapsed_seconds,

       t1.deleted,

       t1.bytes,

       t1.is_recovery_dest_file,

       t1.compressed,

       t2.size_bytes_display

  from v$backup_piece t1 join v$backup_piece_details t2 on (t1.recid = t2.recid);

     RECID HANDLE                                                                                               TAG                              STATUS START_TIME  COMPLETION_TIME ELAPSED_SECONDS DELETED      BYTES IS_RECOVERY_DEST_FILE COMPRESSED SIZE_BYTES

---------- ---------------------------------------------------------------------------------------------------- -------------------------------- ------ ----------- --------------- --------------- ------- ---------- --------------------- ---------- ----------

         4 D:\FLASH_RECOVERY_AREA\MES\AUTOBACKUP\2016_12_03\O1_MF_S_929660590_D45QOGRN_.BKP                     TAG20161203T230310               A      2016/12/3 2 2016/12/3 23:03               0 NO         7127040 YES                   NO             6.80M

         1 D:\FLASH_RECOVERY_AREA\MES\BACKUPSET\2016_12_03\O1_MF_ANNNN_TAG20161203T230138_D45QLN48_.BKP         TAG20161203T230138               A      2016/12/3 2 2016/12/3 23:01               0 NO         5046272 YES                   YES            4.81M

         2 D:\FLASH_RECOVERY_AREA\MES\BACKUPSET\2016_12_03\O1_MF_NNND1_TAG20161203T230141_D45QLOYK_.BKP         TAG20161203T230141               A      2016/12/3 2 2016/12/3 23:03              82 NO       596959232 YES                   YES          569.30M

         3 D:\FLASH_RECOVERY_AREA\MES\BACKUPSET\2016_12_03\O1_MF_ANNNN_TAG20161203T230308_D45QOFDJ_.BKP         TAG20161203T230308               A      2016/12/3 2 2016/12/3 23:03               0 NO          610816 YES                   YES          596.50K

v$backup_redolog:

归档日志备份信息,可与视图v$backup_files联合查询。

col bs_tag for a20

select t1.sequence#,

       t2.bs_tag,

       t1.resetlogs_change#,

       t1.resetlogs_time,

       t1.first_change#,

       t1.first_time,

       t1.next_change#,

       t1.next_time,

       t2.keep,

       t2.obsolete,

       t2.bs_status,

       t2.bs_bytes,

       t2.bs_compressed

  from v$backup_redolog t1

  join v$backup_files t2 on (t1.sequence# = t2.rl_sequence#);

 SEQUENCE# BS_TAG               RESETLOGS_CHANGE# RESETLOGS_TIME FIRST_CHANGE# FIRST_TIME  NEXT_CHANGE# NEXT_TIME   KEEP OBSOLETE BS_STATUS          BS_BYTES BS_COMPRESSED

---------- -------------------- ----------------- -------------- ------------- ----------- ------------ ----------- ---- -------- ---------------- ---------- -------------

       157 TAG20161203T230138              602121 2016/10/31 22:       3949968 2016/12/3 1      3980863 2016/12/3 2 NO   YES      AVAILABLE           5046272 YES

       158 TAG20161203T230138              602121 2016/10/31 22:       3980863 2016/12/3 2      3982037 2016/12/3 2 NO   YES      AVAILABLE           5046272 YES

       159 TAG20161203T230308              602121 2016/10/31 22:       3982037 2016/12/3 2      3982215 2016/12/3 2 NO   NO       AVAILABLE            610816 YES

v$backup_spfile:

已备份的spfile及controlfile信息。

col fname for a100

select t.backup_type, t.file_type, t.status, t.fname, t.tag, t.completion_time, t.obsolete, t.bs_bytes from v$backup_files t where t.stamp in (select stamp from v$backup_spfile);

BACKUP_TYPE          FILE_TYPE            STATUS           FNAME                                                                                                TAG                            COMPLETION_TIME OBSOLETE   BS_BYTES

-------------------- -------------------- ---------------- ---------------------------------------------------------------------------------------------------- ------------------------------ --------------- -------- ----------

BACKUP SET           SPFILE                                                                                                                                                                                    NO          7127040

BACKUP SET           CONTROLFILE                                                                                                                                                                               NO          7127040

BACKUP SET           PIECE                AVAILABLE        D:\FLASH_RECOVERY_AREA\MES\AUTOBACKUP\2016_12_03\O1_MF_S_929660590_D45QOGRN_.BKP                     TAG20161203T230310             2016/12/3 23:03 NO          7127040

v$backup_datafile:

每个由数据文件备份构成的一行信息。

col name for a50

col read_radio for a10

select t1.file#, t2.name, t1.datafile_blocks, t1.blocks_read, to_char(round(t1.blocks_read / t1.datafile_blocks, 2) * 100) || '%' read_radio, t1.completion_time

  from v$backup_datafile t1 join v$datafile t2 on (t1.file# = t2.file#) order by file#, completion_time;

     FILE# NAME                                               DATAFILE_BLOCKS BLOCKS_READ READ_RADIO COMPLETION_TIME

---------- -------------------------------------------------- --------------- ----------- ---------- -------------------

         1 D:\ORADATA\MES\SYSTEM01.DBF                                  65280       65280 100%       2016-12-03 23:02:39

         1 D:\ORADATA\MES\SYSTEM01.DBF                                  65280        1895 3%         2016-12-04 14:58:49

         1 D:\ORADATA\MES\SYSTEM01.DBF                                  65280        1135 2%         2016-12-04 20:58:03

         2 D:\ORADATA\MES\UNDOTBS01.DBF                                 10880       10880 100%       2016-12-03 23:02:03

         2 D:\ORADATA\MES\UNDOTBS01.DBF                                 10880        1983 18%        2016-12-04 14:58:49

         2 D:\ORADATA\MES\UNDOTBS01.DBF                                 10880         679 6%         2016-12-04 20:58:03

         3 D:\ORADATA\MES\SYSAUX01.DBF                                  38400       38400 100%       2016-12-03 23:02:16

         3 D:\ORADATA\MES\SYSAUX01.DBF                                  38400        5815 15%        2016-12-04 14:58:49

         3 D:\ORADATA\MES\SYSAUX01.DBF                                  38400        3467 9%         2016-12-04 20:58:03

         4 D:\ORADATA\MES\USERS01.DBF                                     640         640 100%       2016-12-03 23:02:03

         4 D:\ORADATA\MES\USERS01.DBF                                     640           1 0%         2016-12-04 14:58:48

         4 D:\ORADATA\MES\USERS01.DBF                                     640         255 40%        2016-12-04 20:58:03

         5 D:\ORADATA\MES\CMES01.DBF                                    12800       12800 100%       2016-12-03 23:01:52

         5 D:\ORADATA\MES\CMES01.DBF                                    12800           1 0%         2016-12-04 14:58:48

         5 D:\ORADATA\MES\CMES01.DBF                                    12800           1 0%         2016-12-04 20:58:03

         6 D:\ORADATA\MES\RMES01.DBF                                   131072      131072 100%       2016-12-03 23:03:03

         6 D:\ORADATA\MES\RMES01.DBF                                   131072           9 0%         2016-12-04 14:58:48

         6 D:\ORADATA\MES\RMES01.DBF                                   131072          13 0%         2016-12-04 20:58:03

         7 D:\ORADATA\MES\INDX01.DBF                                   131072      131072 100%       2016-12-03 23:03:03

         7 D:\ORADATA\MES\INDX01.DBF                                   131072           1 0%         2016-12-04 14:58:48

         7 D:\ORADATA\MES\INDX01.DBF                                   131072           1 0%         2016-12-04 20:58:03

         8 D:\ORADATA\MES\HMES01.DBF                                    64000       64000 100%       2016-12-03 23:02:38

         8 D:\ORADATA\MES\HMES01.DBF                                    64000           1 0%         2016-12-04 14:58:48

         8 D:\ORADATA\MES\HMES01.DBF                                    64000           1 0%         2016-12-04 20:58:03

         9 D:\ORADATA\MES\RMES02.DBF                                   131072      131072 100%       2016-12-03 23:03:03

         9 D:\ORADATA\MES\RMES02.DBF                                   131072           1 0%         2016-12-04 14:58:48

         9 D:\ORADATA\MES\RMES02.DBF                                   131072           1 0%         2016-12-04 20:58:03

        10 D:\ORADATA\MES\INDX02.DBF                                   131072      131072 100%       2016-12-03 23:03:03

        10 D:\ORADATA\MES\INDX02.DBF                                   131072           1 0%         2016-12-04 14:58:48

        10 D:\ORADATA\MES\INDX02.DBF                                   131072           1 0%         2016-12-04 20:58:03

v$backup_device:

用于磁带备份,显示已连接到RMAN的SBT设备的名称。

select * from v$backup_device;

DEVICE_TYPE       DEVICE_NAME

----------------- -----------------------------------

SBT_TAPE

v$rman_configuration:

RMAN非默认的备份配置信息。

col name for a50

col value for a80

select * from v$rman_configuration;

     CONF# NAME                                               VALUE

---------- -------------------------------------------------- --------------------------------------------------------------------------------

         1 CONTROLFILE AUTOBACKUP                             ON

         2 CHANNEL                                            DEVICE TYPE DISK FORMAT   'd:\flash_recovery_area\mes\backupset\%d_%u_%c_%T'

         3 CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE      DISK TO 'd:\flash_recovery_area\mes\autobackup\%F'

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28974745/viewspace-2151715/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28974745/viewspace-2151715/

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐