线上库一张表误操作,要求恢复,但不能在原库进行,通过闪回查询已经得知flashback已经不可能了,因为过去太久了所以需要通过rman备份导入另一台机器还原,然后把相关表导出。恢复过程如下:
C:\oracle\product\11.1.0\db_1\BIN>rman target /
恢复管理器: Release 11.1.0.6.0 - Production on 星期四 11月 7 16:59:58 2013
Copyright (c) 1982, 2007, Oracle. All rights reserved.
已连接到目标数据库 (未启动)
RMAN> startup nomount
Oracle 实例已启动
系统全局区域总计 501059584 字节
Fixed Size 2116336 字节
Variable Size 440403216 字节
Database Buffers 50331648 字节
Redo Buffers 8208384 字节
RMAN> restore controlfile from 'c:\recover\C-4052383007-20131103-03';
启动 restore 于 07-11月-13
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=98 设备类型=DISK
通道 ORA_DISK_1: 正在还原控制文件
通道 ORA_DISK_1: 还原完成, 用时: 00:00:03
输出文件名=C:\ORACLE\ORADATA\QIXIN\CONTROL01.CTL
输出文件名=C:\ORACLE\ORADATA\QIXIN\CONTROL02.CTL
输出文件名=C:\ORACLE\ORADATA\QIXIN\CONTROL03.CTL
完成 restore 于 07-11月-13
RMAN> alter database mount;
使用目标数据库控制文件替代恢复目录
数据库已装载
RMAN> catalog start with 'c:\recover';
搜索与样式 c:\recover 匹配的所有文件
数据库未知文件的列表
=====================================
文件名: C:\recover\C-4052383007-20131103-02
文件名: C:\recover\C-4052383007-20131103-03
文件名: C:\recover\INC0_20131103_AFOO2HT0_1_1.BKP
文件名: C:\recover\INC0_20131103_AIOO2I2J_1_1.BKP
文件名: C:\recover\INC0_20131103_AKOO2I3B_1_1.BKP
是否确实要将上述文件列入目录 (输入 YES 或 NO)? yes
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: C:\recover\C-4052383007-20131103-02
文件名: C:\recover\C-4052383007-20131103-03
文件名: C:\recover\INC0_20131103_AFOO2HT0_1_1.BKP
文件名: C:\recover\INC0_20131103_AIOO2I2J_1_1.BKP
文件名: C:\recover\INC0_20131103_AKOO2I3B_1_1.BKP
RMAN> crosscheck backupset;
RMAN> delete expired backupset;
RMAN> list backupset summary;
备份列表
===============
关键字 TY LV S 设备类型 完成时间 段数 副本数 压缩标记
------- -- -- - ----------- ---------- ------- ------- ---------- ---
19618 B 0 A DISK 03-11月-13 1 1 YES TAG20131103T220104
19621 B A A DISK 03-11月-13 1 1 YES TAG20131103T220403
19623 B A A DISK 03-11月-13 1 1 YES TAG20131103T220426
19624 B F A DISK 03-11月-13 1 1 NO TAG20131103T220435
19626 B F A DISK 03-11月-13 1 1 NO TAG20131103T223040
RMAN> @c:\recover\tmp\abc.sql
SQL> alter database rename file 'D:\ORACLE\ORADATA\QIXIN\REDO01.LOG' to 'c:\recover\tmp\r1.log';
SQL> alter database rename file 'D:\ORACLE\ORADATA\QIXIN\REDO02.LOG' to 'c:\recover\tmp\r2.log';
SQL> alter database open resetlogs;
C:\oracle\product\11.1.0\db_1\BIN>exp userid=test/test file=c:\recover\sms_mt.dmp buffer=8192000 direct=y rows=y tables=abc1,abc2
主库操作:
F:>imp userid=test/test file=f:\sms.dmp full=y commit=y
abc.sql内容如下
run{
set newname for datafile 1 to 'c:\recover\tmp\SYSTEM01.DBF';
set newname for datafile 2 to 'c:\recover\tmp\SYSAUX01.DBF';
set newname for datafile 3 to 'c:\recover\tmp\UNDOTBS01.DBF';
set newname for datafile 4 to 'c:\recover\tmp\USER01.DBF';
set newname for datafile 5 to 'c:\recover\tmp\EXAMPLE01.DBF';
set newname for datafile 6 to 'c:\recover\tmp\mms_data.DBF';
set newname for datafile 7 to 'c:\recover\tmp\sms_data1.DBF';
set newname for datafile 8 to 'c:\recover\tmp\vblog_1.DBF';
set newname for datafile 9 to 'c:\recover\tmp\crop1.DBF';
set newname for datafile 10 to 'c:\recover\tmp\crop2.DBF';
set newname for datafile 11 to 'c:\recover\tmp\crop3.DBF';
switch datafile all;
restore database;
}