/* 2008/06/06
*环境:Windows XP +Oracle10.2.0.1
*循序渐进oracle——数据库管理、优化与备份恢复
*循序渐进oracle第7章:备份与恢复之RMAN镜像拷贝不完全恢复
*/
7 RMAN的备份与恢复
Oracle10g开始,允许使用单条命令"backup as copy"进行数据库拷贝
RMAN> run{
2> backup as copy tag "20080605_copy" database;
3> }
一、使用rman的不完全恢复
1、插入数据
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- -------------- -------------
50 support denver
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS beijing
SQL> select * from test;
ID TIME
---------- -------------------
5 2008-06-06 08:00:34
6 2008-06-06 08:13:42
SQL> drop table scott.dept;
表已删除。
SQL> insert into test values(7,sysdate);
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from test;
ID TIME
---------- -------------------
5 2008-06-06 08:00:34
6 2008-06-06 08:13:42
7 2008-06-06 08:16:56
需要恢复到删除表之前的时间2008-06-06 08:13:42
2 恢复
RMAN> shutdown immediate;
数据库已关闭
数据库已卸载
Oracle 实例已关闭
RMAN> startup mount
已连接到目标数据库 (未启动)
Oracle 实例已启动
数据库已装载
系统全局区域总计 272629760 字节
Fixed Size 1248476 字节
Variable Size 113247012 字节
Database Buffers 150994944 字节
Redo Buffers 7139328 字节
RMAN> recover database until time '2008-06-06 08:13:42';
启动 recover 于 06-6月 -08
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 06/6/2008 22:49:54
ORA-01861: literal does not match format string
这个错误是由于时间日期格式设置的问题。
设置正确的时间格式,进行基于时间点的不完全恢复:
/************************来自网上的资料:start
Oracle的日期格式默认设置是DD-MON-YY,很多时候我们需要修改这种格式以满足我们的需求。
可以通过设置NLS_DATE_FORMAT来改变日期格式,为了让这种改变永久生效,介绍下面的几种方法:
1、修改glogin.sql文件,这个文件的路径:
Windows下,%ORACLE_HOME%\sqlplus\admin
UNIX下,$ORACLE_HOME/sqlplus/admin
在文件中加上:alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
2、修改注册表(Windows平台下)
开始 =》运行=》regedit=》HKEY_LOCAL_MACHINE=》SOFTWARE=》ORACLE=》HOME0 =》新建 字
符串值NLS_DATE_FORMAT ,并设置其值为:YYYY-MM-DD:HH24:MI:SS
3、修改用户环境变量配置文件(UNIX平台下),加上
export NLS_LANG=AMERICAN
export NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
有时候只设置了NLS_DATE_FORMAT,而不设置NLS_LANG可能日期格式不会改变(参考RollingPig的文章
),这个可能跟平台及Shell类型有关系。
rman会话中设置nls_date_format和nls_lang
run {
......
sql 'alter session set NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"';
sql 'alter session set NLS_LANGUAGE="AMERICAN"';
......
}
/************************来自网上的资料:end
C:\>rman target/
恢复管理器: Release 10.2.0.1.0 - Production on 星期五 6月 6 08:53:05 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已连接到目标数据库: RISENET (DBID=2274326636, 未打开)
RMAN> restore database;
启动 restore 于 06-6月 -08
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在恢复数据文件00001
输入数据文件副本 recid=27 stamp=656667195 文件名=G:\ORACLE\PRODUCT\10.2.0\FLASH_
RECOVERY_AREA\RISENET\DATAFILE\O1_MF_SYSTEM_44JXWG2G_.DBF
数据文件 00001 的恢复目标: G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\SYSTEM01.DBF
通道 ORA_DISK_1: 已复制数据文件 00001 的数据文件副本
输出文件名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\SYSTEM01.DBF recid=46 stamp=
656672215
通道 ORA_DISK_1: 正在恢复数据文件00002
输入数据文件副本 recid=29 stamp=656667233 文件名=G:\ORACLE\PRODUCT\10.2.0\FLASH_
RECOVERY_AREA\RISENET\DATAFILE\O1_MF_UNDOTBS1_44JXYYF5_.DBF
数据文件 00002 的恢复目标: G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\UNDOTBS01.DB
F
通道 ORA_DISK_1: 已复制数据文件 00002 的数据文件副本
输出文件名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\UNDOTBS01.DBF recid=47 stamp
=656672218
通道 ORA_DISK_1: 正在恢复数据文件00003
输入数据文件副本 recid=28 stamp=656667224 文件名=G:\ORACLE\PRODUCT\10.2.0\FLASH_
RECOVERY_AREA\RISENET\DATAFILE\O1_MF_SYSAUX_44JXY57B_.DBF
数据文件 00003 的恢复目标: G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\SYSAUX01.DBF
通道 ORA_DISK_1: 已复制数据文件 00003 的数据文件副本
输出文件名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\SYSAUX01.DBF recid=48 stamp=
656672231
通道 ORA_DISK_1: 正在恢复数据文件00004
输入数据文件副本 recid=31 stamp=656667241 文件名=G:\ORACLE\PRODUCT\10.2.0\FLASH_
RECOVERY_AREA\RISENET\DATAFILE\O1_MF_USERS_44JXZ8TV_.DBF
数据文件 00004 的恢复目标: G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\USERS01.DBF
通道 ORA_DISK_1: 已复制数据文件 00004 的数据文件副本
输出文件名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\USERS01.DBF recid=49 stamp=6
56672234
通道 ORA_DISK_1: 正在恢复数据文件00005
输入数据文件副本 recid=30 stamp=656667238 文件名=G:\ORACLE\PRODUCT\10.2.0\FLASH_
RECOVERY_AREA\RISENET\DATAFILE\O1_MF_RISE_44JXZ5L2_.DBF
数据文件 00005 的恢复目标: G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\RISE.DBF
通道 ORA_DISK_1: 已复制数据文件 00005 的数据文件副本
输出文件名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\RISE.DBF recid=50 stamp=6566
72235
通道 ORA_DISK_1: 正在恢复数据文件00006
输入数据文件副本 recid=32 stamp=656667242 文件名=G:\ORACLE\PRODUCT\10.2.0\FLASH_
RECOVERY_AREA\RISENET\DATAFILE\O1_MF_MZL_44JXZB0Z_.DBF
数据文件 00006 的恢复目标: G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\MZL.DBF
通道 ORA_DISK_1: 已复制数据文件 00006 的数据文件副本
输出文件名=G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\MZL.DBF recid=51 stamp=65667
2236
完成 restore 于 06-6月 -08
RMAN> recover database until time '2008-06-06 08:13:42';
启动 recover 于 06-6月 -08
使用通道 ORA_DISK_1
正在开始介质的恢复
介质恢复完成, 用时: 00:00:05
完成 recover 于 06-6月 -08
RMAN> alter database open resetlogs;
数据库已打开
查看数据:
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- -------------- -------------
50 support denver
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS beijing
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12778571/viewspace-332659/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12778571/viewspace-332659/
本文介绍了如何使用Oracle RMAN工具进行数据库的不完全恢复操作,重点讲解了基于时间点的恢复过程,包括解决日期格式问题的方法。

被折叠的 条评论
为什么被折叠?



