通过RMAN针对基于时间点的不完全恢复做了一个实验!

[复制链接]
查看11 | 回复1 | 2011-11-16 22:31:22 | 显示全部楼层 |阅读模式
rman做基于时间的不完全,主要是想看一下时间的格式如何控制!
os:red hat as 3
ora:9204
catalog:windowns 2000(所有的操作都在客户端catalog所在的机器上操作)
1、首先在数据库服务器上设置时间格式:
NLS_DATE_FORMAT="YYYY.MM.DD HH24:MI:SS"
export NLS_DATE_FORMAT
C:\>rman target sys/system@test catalog rman/rman@rmandb
恢复管理器: 版本9.2.0.1.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation.All rights reserved.
连接到目标数据库: TEST (DBID=1837576790)
连接到恢复目录数据库
RMAN> register database;
注册在恢复目录中的数据库
正在启动全部恢复目录的 resync
完成全部 resync
RMAN> list backupset;

RMAN> run{
2> allocate channel c1 type disk ;
3> allocate channel c2 type disk ;
4> backup database format='/dbbak/db_full_%U';
5> release channel c1;
6> release channel c2;
7> }
分配的通道: c1
通道 c1: sid=10 devtype=DISK
分配的通道: c2
通道 c2: sid=11 devtype=DISK
启动 backup 于 05-2月 -04
通道 c1: 正在启动 full 数据文件备份集
通道 c1: 正在指定备份集中的数据文件
输入数据文件 fno=00002 name=/oradata/test/undotbs01.dbf
输入数据文件 fno=00007 name=/oradata/test/xdb01.dbf
输入数据文件 fno=00006 name=/oradata/test/users01.dbf
输入数据文件 fno=00004 name=/oradata/test/indx01.dbf
输入数据文件 fno=00008 name=/oradata/test/rmantest.dbf
通道 c1: 正在启动段 1 于 05-2月 -05
通道 c2: 正在启动 full 数据文件备份集
通道 c2: 正在指定备份集中的数据文件
在备份集中包含当前的 SPFILE
备份集中包括当前控制文件
输入数据文件 fno=00001 name=/oradata/test/system01.dbf
输入数据文件 fno=00003 name=/oradata/test/drsys01.dbf
输入数据文件 fno=00005 name=/oradata/test/tools01.dbf
通道 c2: 正在启动段 1 于 05-2月 -05
通道 c1: 已完成段 1 于 05-2月 -05
段 handle=/dbbak/db_full_24gbvpl5_1_1 comment=NONE
通道 c1: 备份集已完成, 经过时间:00:01:43
通道 c2: 已完成段 1 于 05-2月 -05
段 handle=/dbbak/db_full_25gbvpl5_1_1 comment=NONE
通道 c2: 备份集已完成, 经过时间:00:01:43
完成 backup 于 05-2月 -04
释放的通道: c1
释放的通道: c2
--在客户端CATALOG所在的机器上(另一个SQLPLUS窗口中)输入测试数据
SQL> connect sys/system@test as sysdba;
已连接。

SQL> select * from test.test;
AA
--------------------
test2
test3
success
test
test1
SQL> set timing on
SQL> set time on
09:15:37 SQL> delete from test.test;
已删除5行。
已用时间:00: 00: 00.02
09:15:45 SQL> desc test.test;
名称
是否为空? 类型
----------------------------------------- -------- ----------------------------
AA
VARCHAR2(10)
09:16:12 SQL> insert into test.test values('test');
已创建 1 行。
已用时间:00: 00: 00.00
09:16:23 SQL> commit;
提交完成。
已用时间:00: 00: 00.00
09:16:25 SQL>
09:16:43 SQL>
09:16:43 SQL>
09:16:44 SQL>
09:16:44 SQL>
09:16:44 SQL>
09:16:44 SQL> drop table test.test;
表已丢弃。
已用时间:00: 00: 02.01
09:16:59 SQL>
09:17:00 SQL>
09:17:00 SQL>
09:17:00 SQL>
09:17:00 SQL>
09:17:01 SQL>
09:17:01 SQL>
09:17:01 SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
09:22:30 SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area236000356 bytes
Fixed Size
451684 bytes
Variable Size
201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers
667648 bytes
数据库装载完毕。
RMAN> run{
2> set until time '2005.02.05 09:16:44';
3> restore database;
4> recover database;
5> };
正在执行命令: SET until clause
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of set command at 02/05/2004 09:22:12
ORA-01861: literal does not match format string
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00558: error encountered while parsing input commands
RMAN-01005: syntax error: found ";": expecting one of: "allocate, alter, backup,
beginline, blockrecover, catalog, change, connect, copy, create, crosscheck, co
nfigure, duplicate, debug, delete, drop, exit, endinline, host, {, library, list
, mount, open, print, quit, recover, register, release, replace, report, renorma
lize, reset, restore, resync, rman, run, rpctest, set, setlimit, sql, spool, sta
rtup, shutdown, send, show, test, upgrade, validate"
RMAN-01007: at line 0 column 2 file: standard input
--修改日期格式
RMAN> sql "alter session set nls_date_format=''yyyy.mm.dd hh24:mi:ss'' ";
sql 语句: alter session set nls_date_format=''yyyy.mm.dd hh24:mi:ss''
RMAN> run{
2> set until time '2005.02.05 09:16:44';
3> restore database;
4> recover database;
5> };
正在执行命令: SET until clause
启动 restore 于 05-2月 -04
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=10 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到/oradata/test/system01.dbf
正将数据文件00003恢复到/oradata/test/drsys01.dbf
正将数据文件00005恢复到/oradata/test/tools01.dbf
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=/dbbak/db_full_25gbvpl5_1_1 tag=TAG20040205T091300 params=NULL
通道 ORA_DISK_1: 恢复完成
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00002恢复到/oradata/test/undotbs01.dbf
正将数据文件00004恢复到/oradata/test/indx01.dbf
正将数据文件00006恢复到/oradata/test/users01.dbf
正将数据文件00007恢复到/oradata/test/xdb01.dbf
正将数据文件00008恢复到/oradata/test/rmantest.dbf
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=/dbbak/db_full_24gbvpl5_1_1 tag=TAG20040205T091300 params=NULL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 05-2月 -04
启动 recover 于 05-2月 -04
使用通道 ORA_DISK_1
正在开始介质的恢复
完成介质的恢复
完成 recover 于 05-2月 -04
RMAN>
09:22:41 SQL> alter database open resetlogs;
数据库已更改。
已用时间:00: 00: 05.07
09:27:14 SQL> select *from test.test;
select *from test.test

*
ERROR 位于第 1 行:
ORA-00942: table or view does not exist
已用时间:00: 00: 00.00
09:27:38 SQL>

这里问题出现了,为什么数据没有恢复过来?
我想是服务器端的时间和客户端的时间不一致造成的
09:53:34 SQL> alter session set nls_date_format='yyyy.mm.dd hh24:mi:ss';
会话已更改。
已用时间:00: 00: 00.00
09:54:08 SQL> select sysdate from dual;
SYSDATE
-------------------
2005.02.05 08:56:43
已用时间:00: 00: 00.00
09:54:11 SQL>
回复

使用道具 举报

千问 | 2011-11-16 22:31:22 | 显示全部楼层
是啊!
所以,一般都建議用logmnr來查看到底這個delete/truncate/drop的時間點是什麼,或者scn是什麼。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行