• 博客访问: 2859436
  • 博文数量: 335
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-30 13:07
个人简介

暂无介绍

文章分类

全部博文(335)

文章存档

2016年(1)

2012年(5)

2011年(38)

2010年(48)

2009年(70)

2008年(173)

分类: Linux操作系统

2008-06-06 09:01:18

/* 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

 


 

阅读(1916) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册