ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle实验记录 (恢复-rman恢复)

oracle实验记录 (恢复-rman恢复)

原创 Linux操作系统 作者:fufuh2o 时间:2009-09-18 10:14:00 0 删除 编辑

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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-06-26

  • 博文量
    182
  • 访问量
    471658