RMAN> backup as backupset format '/u01/app/oracle/backup/rmanbk/df_%d_%s_%p.bus' tablespace users;
创建镜像(image)拷贝
RMAN> BACKUP AS COPY DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf';
RMAN> BACKUP AS COPY ARCHIVELOG LIKE '/u01/app/oracle/backup/rmanbk/arch%';
两者之间的区别:
备份集备份:只备份使用过的数据块
镜像备份:所有的数据块都备份,使用switch可以加快恢复的速度
创建全库备份
全库备份包括:所有的数据文件、控制日志、归档日志文件、参数文件,可以使用备份集备份和镜像备份
备份集全库备份:
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO disk;
RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET;
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u01/app/oracle/backup/rmanbk/%d_%s.dbf';
RMAN> BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;--备份完归档之后删除归档
也可以直接发出备份集备份:
RMAN> backup as backupset database plus archivelog delete input;
镜像全库备份:
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO disk;
RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY;
RMAN> BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;--备份完归档之后删除归档
也可以直接发出镜像备份:
RMAN> backup as copy database plus archivelog delete input;
完全备份:对所有使用过的数据块进行备份,它不能是增量备份的一部分
backup as backupset database;
oracle中提供了增量备份,有两种级别:level 0和level 1
level 0:对所有使用过的数据块进行备份,并且将备份标记为level 0,它可以是增量备份的一部分
level 1:有两种level 1备份
1. 差异增量备份:默认的增量备份类型,它只备份最近一次level 0或者level 1备份之后发生过变化的数据块
2. 累积增量备份:它只备份最近一次level 0备份之后发生过变化的数据块
ALTER DATABASE
{ENABLE|DISABLE} BLOCK CHANGE TRACKING
[USING FILE '...']
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u01/app/oracle/blocktr';
更改文件的名称:
SQL> shutdown immediate;
SQL> startup mount
SQL> ALTER DATABASE RENAME FILE '/u01/app/oracle/blocktr' TO '/u01/app/oracle/btr';
SQL> alter database open;
ls /u01/app/oracle/btr--发现文件已经改名
关闭块跟踪:
SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
如果设置了DB_CREATE_FILE_DEST,可以不用指定文件的位置:
SQL> alter system set DB_CREATE_FILE_DEST='/u01/app/oracle';
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;
cd /u01/app/oracle/ORCL/changetracking
ls
在数据库中查看块跟踪文件的位置:
SQL> select * from v$block_change_tracking;
查看块跟踪的效率:
没有使用块跟踪:
SQL> select * from v$block_change_tracking;
RMAN> backup incremental level 0 database;
RMAN> backup incremental level 1 database;
SQL> SELECT file#, avg(datafile_blocks), avg(blocks_read),
avg(blocks_read/datafile_blocks)* 100 AS PCT_READ_FOR_BACKUP, avg(blocks)
FROM v$backup_datafile
WHERE incremental_level > 0
GROUP BY file#;
SQL> SELECT file#, avg(datafile_blocks), avg(blocks_read),
avg(blocks_read/datafile_blocks)* 100 AS PCT_READ_FOR_BACKUP, avg(blocks)
FROM v$backup_datafile
WHERE used_change_tracking = 'YES' AND incremental_level > 0
GROUP BY file#;
使用块跟踪:
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;
SQL> select * from v$block_change_tracking;
RMAN> delete noprompt backup;
RMAN> backup incremental level 0 database;
RMAN> backup incremental level 1 database;
SQL> SELECT file#, avg(datafile_blocks), avg(blocks_read),
avg(blocks_read/datafile_blocks)* 100 AS PCT_READ_FOR_BACKUP, avg(blocks)
FROM v$backup_datafile
WHERE used_change_tracking = 'YES' AND incremental_level > 0
GROUP BY file#;
执行代理副本
使用RMAN BACKUP命令的PROXY选项可以请求MML 执行文件的副本
语法:
BACKUP [AS BACKUPSET] … PROXY [ONLY] DATABASE|TABLESPACE....
PROXY ONLY选项对于备份由代理完成的介质管理器和存储网络非常有用,这可以明显地减少了存储网络通信量
一些介质管理产品可完善地管理Oracle 数据文件与备份设备之间的所有数据移动
某些产品在存储子系统与介质子系统之间使用了高速连接,从而可大幅减少主数据库服务器的备份负载
这一点十分有用,因为复制是在SAN 上而不是在LAN 上执行的。除了通过LAN 在MML 之间传送状态之外,RMAN 此时已不再涉及操作
使用BACKUP COPIES创建双份备份集
RMAN> BACKUP AS BACKUPSET DEVICE TYPE DISK COPIES 2 INCREMENTAL LEVEL 0 tablespace users format='/u01/app/oracle/backup/rmanbk/%d_%s_%c.dbf';
使用BACKUP COPIES创建双向备份集
为了创建双份备份集,可使用带有COPIES选项的BACKUP命令覆盖其它COPIES或DUPLEX设置
要使用BACKUP COPIES创建双向备份,请执行以下步骤:
1. 使用BACKUP命令的COPIES选项指定完全一样的副本的数量
2. 发出LIST BACKUP命令来验证备份。
对备份集备份
RMAN> run {
allocate channel c1 type disk format '/u01/app/oracle/backup/rmanbk/backup1/%U';
allocate channel c2 type disk format '/u01/app/oracle/backup/rmanbk/backup2/%U';
backup section size 200m datafile 5;
}
该 RMAN命令分配两个通道并在两个通道上并行备份用户的表空间,每个通道占用数据文件的一个 500MB 的段并以
并行方式备份该文件,这加快了大型文件的备份速度
以这种方式备份时,备份的内容也显示为段
RMAN> run {
allocate channel oem_backup_disk1 type disk format '/u01/app/oracle/backup/rmanbk/%U';
backup keep until time 'SYSDATE+31' restore point '%RESTORE_POINT' as backupset tag '%TAG' database;
release channel oem_backup_disk1;
}
RMAN> LIST RESTORE POINT ALL;
RMAN> LIST RESTORE POINT 'rsname';
RMAN> CONNECT TARGET /
RMAN> CONNECT CATALOG rman/rman@catdb
RMAN> CHANGE BACKUP TAG 'consistent_db_bkup' KEEP FOREVER;
RMAN> CHANGE COPY OF DATABASE CONTROLFILE NOKEEP;
管理归档数据库备份
CHANGE命令会更改与配置的保留策略有关的备份或副本的排除状态。
例如,可以指定CHANGE ... NOKEEP使当前排除在保留策略之外的备份变为OBSOLETE状态。
第一个示例将一致的备份更改为归档备份,用户计划在场外存储该归档备份。
因为该数据库是一致的,所以无需对其进行恢复,不需要与备份一起保存归档重做日志。
第二个示例指定数据文件和控制文件的任何长期映像副本都不应处于排除状态,而应根据现有保留策略变为过期。
此语句实际上会将归档属性从这些备份文件中删除。
如果未指定标记(如此示例所示),则CHANGE执行会应用于指定类型的所有备份。
应指定一个标记,以便只更改需要更改的备份文件。
注:RESTORE POINT选项不适用于CHANGE命令,因为无法为已过去的时间(创建备份的时间)创建还原点
SQL> select sequence#,name,first_change# from v$archived_log where status='A';
(2)V$BACKUP_DATAFILE 该动态视图用于显示控制文件和数据文件的备份信息。通过在动态性能视图V$BACKUP_DATAFILE,V$BACKUP_PIECE之间进行连接查询可以显示特定数据文件的备份片文件信息
SQL> SELECT A.FILE#, B.HANDLE, A.BLOCKS*A.BLOCK_SIZE BYTE
FROM V$BACKUP_DATAFILE A, V$BACKUP_PIECE B
WHERE A.SET_STAMP=B.SET_STAMP AND B.STATUS='A';
(3) V$BACKUP_REDOLOG 该动态性能视图用于显示归档日志备份集的信息,每个归档日志备份集可以包含一个或多个归档日志。通过在 V$BACKUP_PIECE 和 V$BACKUP_REDOLOG之间进行连接查询,可以显示备份片文件所包含的归档日志备份信息
SQL> SELECT DISTINCT A.HANDLE, B.SEQUENCE#, B.FIRST_CHANGE#, B.BLOCKS
FROM V$BACKUP_PIECE A, V$BACKUP_REDOLOG B
WHERE A.SET_STAMP=B.SET_STAMP AND A.STATUS='A';
(4)V$BACKUP_SET,V$BACKUP_PIECE, 前者用于显示备份集的详细信息,后者用于显示备份片的详细信息,通过在二者之间进行连接查询,可以显示备份集所对应的备份片的信息
SQL> SELECT B.HANDLE, A.BACKUP_TYPE, A.PIECES, A.ELAPSED_SECONDS
FROM V$BACKUP_SET A, V$BACKUP_PIECE B
WHERE A.SET_STAMP=B.SET_STAMP AND B.STATUS='A'
handle:用于表示备份片文件名
backup_type:用于表示备份片类型(D: 数据文件完备份,I:数据文件增量备份, L:归档日志备份)
pieces:用于表示备份片个数
elapsed_seconds:用于表示备份的总开销时间
(5)V$BACKUP_CORRUPTION 用于显示在执行BACKUP命令时所检测到的损坏数据块信息
SQL> SELECT FILE#, BLOCK#, BLOCKS,MARKED_CORRUPT FROM V$BACKUP_CORRUPTION;
(6)V$COPY_CORRUPTION 用于显示在执行COPY命令时所检测到的损坏数据块信息。
RMAN> list backup;
--显示某个特定备份集的信息。
RMAN> list backupset 7;
--显示某个表空间或者数据文件的备份信息:
RMAN> list backup of tablespace users;
RMAN> list backup of datafile 1;
--显示数据库或者某个表空间的镜像副本的信息:
RMAN> list copy of database;
RMAN> list copy of tablespace users;
--显示归档日志的备份信息:
RMAN> list backup of archivelog all;
RMAN> list backup of archivelog from time='sysdate-2';
--显示控制文件和spfile的备份信息:
RMAN> list backup of controlfile;
RMAN> list backup of spfile;
--显示控制文件的镜像副本信息:
RMAN> list copy of controlfile;
--以为汇总形式显示有关备份信息:
RMAN> list backup summary;
--以汇总形式显示某个表空间的备份信息:
RMAN> list backup of tablespace users summary;
--显示每个备份集和备份片的信息:
RMAN> list backup by file;
过期的备份:备份的文件已经丢失(比如我们手工从操作系统里删除了备份文件),
而备份的元数据里仍然记录了这些备份的信息。