一步一步学RMAN
通过rman连接本地数据库
[oracle@linux129 iseal]$ rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on Thu Oct 16 15:02:51 2014
Copyright (c) 1982, 2005, Oracle.? All rights reserved.
connected to target database: ISEAL (DBID=2642039039)
RMAN>
也可以先启动rman,在通过connect来连接
[oracle@linux129 iseal]$ rman
Recovery Manager: Release 10.2.0.1.0 - Production on Thu Oct 16 15:05:22 2014
Copyright (c) 1982, 2005, Oracle.? All rights reserved.
RMAN> connect target /
connected to target database: ISEAL (DBID=2642039039)
RMAN>
连接远程数据库
配置tnsname.ora
[oracle@linux129 iseal]$ rman? target sys/123456@zbotp?? (用户,密码,实例)
Recovery Manager: Release 10.2.0.1.0 - Production on Thu Oct 16 15:04:16 2014
Copyright (c) 1982, 2005, Oracle.? All rights reserved.
connected to target database: ZBOTP (DBID=3154698562)
RMAN>
也可以先启动rman,在通过connect来连接
[oracle@linux129 iseal]$ rman
Recovery Manager: Release 10.2.0.1.0 - Production on Thu Oct 16 15:06:05 2014
Copyright (c) 1982, 2005, Oracle.? All rights reserved.
RMAN> connect target sys/123456@zbotp
connected to target database: ZBOTP (DBID=3154698562)
RMAN>
输出指定到日志文件中
[oracle@linux129 iseal]$ rman target sys/123456@zbotp log /oracle/oradata/rman_log
RMAN> exit
[oracle@linux129 iseal]$ cat /oracle/oradata/rman_log
Recovery Manager: Release 10.2.0.1.0 - Production on Thu Oct 16 15:07:26 2014
Copyright (c) 1982, 2005, Oracle.? All rights reserved.
connected to target database: ZBOTP (DBID=3154698562)
RMAN>
Recovery Manager complete.
[oracle@linux129 iseal]$
列出备份信息
列出数据库中所有文件的备份信息:
RMAN>LIST BACKUP OF DATABASE;
列出指定表空间的备份信息:
RMAN>LIST COPY OF TABLESPACE 'SYSTEM';
列出指定数据文件的备份信息:
RMAN>LIST BACKUP OF DATAFILE 'F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA';
删除备份
1、删除陈旧备份
当使用RMAN执行备份操作时,RMAN会根据备份冗余策略确定陈旧备份。
RMAN> delete obsolete;
若出现如下报错:
RMAN-06207: WARNING: 1 objects could not be deleted for DISK channel(s) due
RMAN-06208:????????? to mismatched status.? Use CROSSCHECK command to RMAN-06210: List of Mismatched objects
RMAN-06211: ==========================
RMAN-06212:?? Object Type?? Filename/Handle
RMAN-06213: --------------- ---------------------------------------------------
RMAN-06214: Backup Piece??? /oracle/oradata/iseal_backup
则:RMAN> crosscheck backuppiece '/oracle/oradata/iseal_backup';
using channel ORA_DISK_1
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/oracle/oradata/iseal_backup recid=2 stamp=861114110
Crosschecked 1 objects
RMAN> delete expired backup;
2、删除EXPIRED备份
执行crosscheck命令核对备份集,那么会将该备份集标记为EXPIRED状态。为了删除相应的备份记录,可以执行delete expired backup命令。
RMAN> delete expired backup;
3、删除EXPIRED副本
RMAN> delete expired copy;
4、删除特定备份集
RMAN> delete backupset 19;
6、删除所有备份集
RMAN> delete backup;
7、删除特定映像副本
RMAN> delete datafilecopy 'd:\backup\DEMO_19.bak';
8、删除所有映像副本
RMAN> delete copy;
9、在备份后删除输入对象
RMAN> delete archivelog all delete input;
RMAN> delete backupset 22 format = ''d:\backup\%u.bak'' delete input;
对数据库进行全备
1、使用backup database命令执行备份
RMAN> BACKUP DATABASE FORMAT 'D:\BACKUP\%U';
2、通过list命令查看刚刚创建的备份信息:
RMAN> list backup of database;
备份表空间
只要实例启动并处于加载状态,不论数据库是否打开,都可以在rman中对表空间进行备份,例如:
RMAN> backup tablespace jweb;
我们再通过LIST BACKUP 查看一下备份:
RMAN> LIST BACKUP OF TABLESPACE USERS;
删除备份
RMAN> DELETE BACKUPSET 18;其中18为BP Key
备份指定数据文件
首先可以先通过数据字典DBA_DATA_FILES查询出表空间对应的数据文件及其序号,例如:
select file_name,file_id,tablespace_name from dba_data_files
然后再通过BACKUP DATAFILE备份指定序号的数据文件,例如:
RMAN> BACKUP DATAFILE n;
如果要查看指定数据文件的备份,可以用:
RMAN> LIST BACKUP OF DATAFILE n;
注:n=指定的的数据文件序号,如果需要备份的数据文件有多个,n=多个序号,中间以逗号分隔即可。
备份控制文件
1.最简单的方式,通过CONFIGURE命令将CONTROLFILE AUTOBACKUP置为ON。
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
然后你再通过rman做任何备份操作的同时,都会自动对控制文件做备份。
2.对编号为1的数据文件,即SYSTEM表空间的数据文件做备份时,RMAN也会自动对控制文件做备份。
3.手动执行备份命令。
RMAN> BACKUP CURRENT CONTROLFILE;
4.执行BACKUP时指定INCLUDE CURRENT CONTROLFILE参数,例如:
RMAN> BACKUP DATABASE INCLUDE CURRENT CONTROLFILE;
查看备份的控制文件,可以通过:
RMAN> LIST BACKUP OF CONTROLFILE;
备份归档日志文件
RMAN> BACKUP ARCHIVELOG ALL;
查看已备份的归档日志片段:
RMAN> LIST BACKUP OF ARCHIVELOG ALL;
恢复表空间
同样也可以分成三个步骤:
1、启动数据库到加载状态
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
2、进行恢复操作,在恢复之前,如果需要被恢复的表空间未处于脱机状态,需要通过alter tablespace ... Offline语句将其置为脱机:
RMAN> SQL 'ALTER TABLESPACE jweb OFFLINE IMMEDIATE';
RMAN> RESTORE TABLESPACE jweb;
RMAN> RECOVER TABLESPACE jweb;
RMAN> SQL 'ALTER TABLESPACE jweb ONLINE';
3、打开数据库
RMAN> ALTER DATABASE OPEN;
恢复数据文件
事实上,恢复表空间实际就是恢复其所对应的数据文件(一个表空间可能对应多个数据文件),所以步骤与上相似。
1、启动数据库到加载状态
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
2、进行恢复操作,在恢复之前,如果需要被恢复的表空间未处于脱机状态,需要通过alter tablespace ... Offline语句将其置为脱机,操作数据文件时可以直接指定数据文件,也可以以数据文件序号代替:
RMAN>SQL 'ALTER DATABASE DATAFILE 10 OFFLINE;
RMAN> RESTORE DATAFILE 10;
RMAN> RECOVER DATAFILE 10;
RMAN>SQL ' ALTER DATABASE DATAFILE 10 ONLINE;
3、打开数据库
RMAN> ALTER DATABASE OPEN;
归档模式下,假设某数据文件丢失,恢复该数据文件。
SQL> create table ceshi(id number) tablespace rmanspace;
Table created.
SQL> insert into ceshi values(1);
1 row created.
SQL> insert into ceshi values(2);
1 row created.
SQL> commit;
Commit complete.
RMAN 备份
RMAN> connect target /
connected to target database: ZBOTP (DBID=3154698562)
RMAN> list backup of database;
using target database control file instead of recovery catalog
RMAN> backup tablespace rmanspace;
手动删除表空间文件rmanspace文件后
SQL> startup;
ORACLE instance started.
Total System Global Area? 167772160 bytes
Fixed Size???????????? ??? 1218316 bytes
Variable Size????????? ?? 79694068 bytes
Database Buffers??? ?? 83886080 bytes
Redo Buffers???????? ??? 2973696 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/oracle/oradata/zbotp/rmanspace.dbf'
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
[oracle@linux128 zbotp]$ rman target /
connected to target database: ZBOTP (DBID=3154698562, not open)
RMAN> restore datafile '/oracle/oradata/zbotp/rmanspace.dbf';
Starting restore at 16-10月-14
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=156 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00005 to /oracle/oradata/zbotp/rmanspace.dbf
channel ORA_DISK_1: reading from backup piece /oracle/flash_recovery_area/ZBOTP/backupset/2014_10_16/o1_mf_nnndf_TAG20141016T162132_b3z00dgy_.bkp
channel ORA_DISK_1: restored backup piece 1
piece handle=/oracle/flash_recovery_area/ZBOTP/backupset/2014_10_16/o1_mf_nnndf_TAG20141016T162132_b3z00dgy_.bkp tag=TAG20141016T162132
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
Finished restore at 16-10月-14
RMAN> recover datafile '/oracle/oradata/zbotp/rmanspace.dbf';
Starting recover at 16-10月-14
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:00
Finished recover at 16-10月-14
RMAN> alter database open ;
database opened
查询数据
[oracle@linux128 zbotp]$ sqlplus / as sysdba
SQL> select * from ceshi;
ID
----------
1
2
丢失控制文件的恢复
DBID是数据库的唯一标识,查询方法有两种
1.rman target /
DBID会包含在提示信息之中
2.
sqlplus / as sysdba
select dbid from v$database;
备份控制文件
RMAN>? BACKUP CURRENT CONTROLFILE;
RMAN> list backup of controlfile;
RMAN> exit
手动删除控制文件
[oracle@linux128 zbotp]$ rm control0*
[oracle@linux128 zbotp]$ rman target /
Recovery Manager: Release 10.2.0.1.0 - Production on 星期四 10月 16 16:40:41 2014
Copyright (c) 1982, 2005, Oracle.? All rights reserved.
connected to target database: zbotp (not mounted)
RMAN> set dbid 3154698562
executing command: SET DBID
RMAN> restore controlfile from 'd:\backup\C-3391142503-20070718-04';
RMAN> sql 'alter database mount';
RMAN> restore database;
RMAN> recover database;
RMAN> sql 'alter database open resetlogs';
浙公网安备 33010602011771号