SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
rman使用备份集 恢复要先
restore backup
基本命令就是
RESTORE
restore database;从backup SET 转储整个database备份 (MOUNT下)
restore tablespace xx;从backup SET 转储指定tablespace备份(MOUNT下,OPEN下tablespace 需要offline 损坏的datafile or tablespace)
restore datafile XX;从backup SET 转储指定datafile备份(MOUNT,OPEN下datafile要offline)
restore spfile xx;从backup SET 转储SPFILE备份(nomount)
restore controlfile xx; 从backup SET 转储controlfile(NOMOUNT)可以加to
restore archivelog xx;从backup set 转储archivelog(MOUNT,OPEN)
接着recover
recover tablespace
recover datafile
recover database
完全恢复(database)
RMAN> shutdown immediate;
数据库已关闭
数据库已卸载
Oracle 实例已关闭
RMAN> startup mount;
已连接到目标数据库 (未启动)
Oracle 实例已启动
数据库已装载
系统全局区域总计 612368384 字节
Fixed Size 1250428 字节
Variable Size 197135236 字节
Database Buffers 406847488 字节
Redo Buffers 7135232 字节
RMAN> restore database;
启动 restore 于 14-9月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK
.....................
RMAN>
RMAN>
RMAN> recover database;
启动 recover 于 14-9月 -09
使用通道 ORA_DISK_1
正在开始介质的恢复
介质恢复完成, 用时: 00:00:05
完成 recover 于 14-9月 -09
RMAN>
RMAN> alter database open;
数据库已打开
完全恢复(TABLESPACE) MOUNT下
RMAN> restore tablespace TESTTB;
启动 restore 于 14-9月 -09
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00007恢复到D:\TESTTB.DBF
通道 ORA_DISK_1: 正在读取备份段 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\B~~~~~~~~~~~~~(OPEN 时候不行)
ACKUPSET\2009_09_14\O1_MF_NNNDF_TAG20090914T103430_5BVBXRF5_.BKP
RMAN> startup force mount;
Oracle 实例已启动
数据库已装载
系统全局区域总计 612368384 字节
Fixed Size 1250428 字节
Variable Size 201329540 字节
Database Buffers 402653184 字节
Redo Buffers 7135232 字节
RMAN> restore tablespace TESTTB;
启动 restore 于 14-9月 -09
分配的通道: ORA_DISK_1
完成 restore 于 14-9月 -09
RMAN> recover tablespace testtb ;
启动 recover 于 14-9月 -09
使用通道 ORA_DISK_1
正在开始介质的恢复
介质恢复完成, 用时: 00:00:03
完成 recover 于 14-9月 -09
RMAN> alter database open;
数据库已打开
RMAN> sql 'alter tablespace testtb online';~~~~~~~~~~~~~~~~~~~~~~~~~应该把这个操作写到一个run中
sql 语句: alter tablespace testtb online
完全恢复(TABLESPACE) OPEN下
RMAN> sql 'alter tablespace testtb offline';(先将要恢复的tablespace offline) 实际情况中因为datafile损坏而无法offline ,应该alter tablespace XX OFFLINE FOR
RECOVER
sql 语句: alter tablespace testtb offline
RMAN> restore tablespace TESTTB;
启动 restore 于 14-9月 -09
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
.................
完成 restore 于 14-9月 -09
RMAN> recover tablespace testtb;
启动 recover 于 14-9月 -09
使用通道 ORA_DISK_1
正在开始介质的恢复
介质恢复完成, 用时: 00:00:03
完成 recover 于 14-9月 -09
RMAN> sql 'alter tablespace testtb online';
sql 语句: alter tablespace testtb online
RMAN> run{sql'alter database datafile 7 offline'~~~~~~~~~~~~~~~OFFLINE datafile
2> ;
3> restore tablespace testtb;
4> recover tablespace testtb;
5> sql'alter database datafile 7 online';}
正在开始介质的恢复
介质恢复完成, 用时: 00:00:02
完成 recover 于 14-9月 -09
sql 语句: alter database datafile 7 online
完全恢复(datafile ) mount
RMAN> run{startup force mount;
2> restore datafile 4;
3> recover datafile 4;
4> sql'alter database datafile 4 online';}
Oracle 实例已启动
数据库已装载
系统全局区域总计 612368384 字节
Fixed Size 1250428 字节
Variable Size 205523844 字节
Database Buffers 398458880 字节
Redo Buffers 7135232 字节
启动 restore 于 14-9月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00004恢复到E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
通道 ORA_DISK_1: 正在读取备份段 E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\B
ACKUPSET\2009_09_14\O1_MF_NNNDF_TAG20090914T103430_5BVBXRF5_.BKP
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_09_14\O1_
MF_NNNDF_TAG20090914T103430_5BVBXRF5_.BKP 标记 = TAG20090914T103430
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:03
完成 restore 于 14-9月 -09
启动 recover 于 14-9月 -09
使用通道 ORA_DISK_1
正在开始介质的恢复
介质恢复完成, 用时: 00:00:03
完成 recover 于 14-9月 -09
sql 语句: alter database datafile 4 online
完全恢复(datafile ) OPEN
RMAN> run{sql'alter database datafile 4 offline';
2> restore datafile 4;
3> recover datafile 4;
4> sql'alter database datafile 4 online';}
sql 语句: alter database datafile 4 offline
启动 restore 于 14-9月 -09
使用通道 ORA_DISK_1
..................
完成 recover 于 14-9月 -09
sql 语句: alter database datafile 4 online
恢复spfile(nomount)
RMAN> list backup of spfile;
备份集列表
===================
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
71 Full 7.11M DISK 00:00:03 14-9月 -09
BP 关键字: 95 状态: AVAILABLE 已压缩: NO 标记: TAG20090914T103430
段名:E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_09_14\O1_MF_N
CSNF_TAG20090914T103430_5BVC0COZ_.BKP
包含的 SPFILE: 修改时间: 14-9月 -09
SQL> host del E:\oracle\product\10.2.0\db_1\database\spfileorcl.ora;
RMAN> restore spfile from 'E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUP
SET\2009_09_14\O1_MF_NCSNF_TAG20090914T103430_5BVC0COZ_.BKP';
启动 restore 于 14-9月 -09
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 已找到的自动备份: E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORC
L\BACKUPSET\2009_09_14\O1_MF_NCSNF_TAG20090914T103430_5BVC0COZ_.BKP
通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成
完成 restore 于 14-9月 -09
RMAN> run{alter database mount;
2> alter database open;}
恢复controlfile (NOMOUNT)
RMAN> shutdown immediate;
数据库已关闭
数据库已卸载
Oracle 实例已关闭
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`删除控制文件
RMAN> restore controlfile from 'E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\B
ACKUPSET\2009_09_14\O1_MF_NCSNF_TAG20090914T103430_5BVC0COZ_.BKP';
启动 restore 于 14-9月 -09
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在复原控制文件
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:05
输出文件名=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
输出文件名=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
输出文件名=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
完成 restore 于 14-9月 -09
RMAN> alter database mount;
数据库已装载
释放的通道: ORA_DISK_1
RMAN> recover database ;
..............................
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 3 已作为文件 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
存在于磁盘上
存档日志线程 1 序列 4 已作为文件 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG
存在于磁盘上
存档日志线程 1 序列 5 已作为文件 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG
存在于磁盘上
存档日志文件名 =E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG 线程 =1 序列 =3
存档日志文件名 =E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG 线程 =1 序列 =4
存档日志文件名 =E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG 线程 =1 序列 =5
介质恢复完成, 用时: 00:00:06
完成 recover 于 14-9月 -09
单恢复controlfile的话 必须应用current redofile (可以看恢复controlfile(4)实验记录)
RMAN> alter database open resetlogs;(因为备份控制文件中信息与logfile中信息不一样 所以resetlogs重置redofile ,sequence 为1,scn+1)
rman 不完全恢复
基于时间
基于SCN
基于sequence
基于控制文件恢复
正常情况下恢复完后以前的备份将无法使用 ,要重新备份(其实也可以使用 后面会实验)
RMAN> backup database;
启动 backup 于 14-9月 -09
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=136 devtype=DISK
SQL> set time on
15:01:28 SQL>
15:02:43 SQL> conn xh/a831115
已连接。
15:02:50 SQL> select count(*) from t2;
COUNT(*)
----------
1001
15:02:51 SQL> truncate table t2;
表被截断。
15:02:59 SQL> select count(*) from t2;
COUNT(*)
----------
0
C:\>rman target '/ as sysdba'
恢复管理器: Release 10.2.0.1.0 - Production on 星期一 9月 14 15:11:57 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已连接到目标数据库: ORCL (DBID=1223510333, 未打开)
RMAN> run{startup force mount;
2> set until time='2009-09-14 15:01:28';~~~~~~~~~~~~~~~~基于scn就是until scn= ,基于sequence就是until sequece=
3> restore database;
4> recover database;
5> alter database open resetlogs;
6> }
介质恢复完成, 用时: 00:00:04
完成 recover 于 2009-09-14 15:14:04
数据库已打开
SQL> conn xh/a831115
已连接。
SQL> select count(*) from t2;
COUNT(*)
----------
1001
~~~~~~~~~~~~~~~~~~~~~~~`
恢复时候改变文件位置
比如原来DISK不能用了 改变下位置
RMAN> backup datafile 6;
RMAN> run{sql'alter database datafile 6 offline';
2> set newname for datafile 6 to 'e:\test.dbf';~~~~~~~~~让restore到这个位置
3> restore datafile 6;
4> switch datafile 6;~~~~~~~~~~~~~改变controlfile中记录
5> recover datafile 6;
6> sql 'alter database 6 online';
7> }
sql 语句: alter database datafile 6 offline
sql 语句: alter database datafile 6 offline
正在执行命令: SET NEWNAME
启动 restore 于 18-9月 -09
使用通道 ORA_DISK_1
另外
在oracle连接的时候可以直接执行脚本和让oracle操作不显示到屏幕 而写入指定的log
C:\>rman target '/ as sysdba' nocatalog log='d:\rmanlog.log' (APPEND 追加)
如果下次还是使用这个log将会覆盖上次的记录,除非用APPEND将追加在上次记录的后面
RMAN> backup datafile 6;
RMAN>
~~~~~~~~RMANLOG.LOG中记录
恢复管理器: Release 10.2.0.1.0 - Production on 星期五 9月 18 17:49:29 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: ORCL (DBID=1223510333)
使用目标数据库控制文件替代恢复目录
RMAN>
启动 backup 于 18-9月 -09
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=160 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00006 name=E:\TEST.DBF
通道 ORA_DISK_1: 正在启动段 1 于 18-9月 -09
通道 ORA_DISK_1: 已完成段 1 于 18-9月 -09
段句柄=E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2009_09_18\O1_MF_NNNDF_TAG20090918T175010_5C6OYLM1_.BKP 标记=TAG20090918T175010 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
完成 backup 于 18-9月 -09
执行系统文件
C:\>rman target '/ as sysdba' cmdfile='d:\test.txt'(TEST.TXT中 是backup datafile 6)
恢复管理器: Release 10.2.0.1.0 - Production on 星期五 9月 18 10:11:28 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到目标数据库: ORCL (DBID=1223510333)
RMAN> backup datafile 6;
2>
启动 backup 于 18-9月 -09
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
rman target '/ as sysdba' catalog / script=.......
另外也可以执行脚本 脚本保存在catalog中所以要建立catalog
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12020513/viewspace-614961/ ,如需转载,请注明出处,否则将追究法律责任。