Oracle技术:使用rman进行表空间基于时间点的恢复

实例说明:

(1)先创建2个表空间。

create tablespace user01 datafile '+DG1' size 1M;

create tablespace user02 datafile '+DG1' size 1M;

(2)在每个表空间上各创建一张表。

create table scott.customers

(cust_id int,cust_name varchar2(10)) tablespace user01;

create table scott.sales

(id int,cust_name varchar2(10),sales_amount number(8,2)) tablespace user02;

(3)在每个表中插入2条记录,提交。检查当前的时间点,待会表空间user01要恢复到当前时间点。

insert into scott.customers values(1,'SOCTT');

insert into scott.customers values(2,'SMITH');

insert into scott.sales values(1,'SCOTT',8000);

insert into scott.sales values(1,'SMITH',10000);

COMMIT;

ALTER SYSTEM SWITCH LOGFILE;

ALTER SYSTEM SWITCH LOGFILE;

ALTER SYSTEM SWITCH LOGFILE;

date

2010年 03月 11日 星期四 21:44:52 CST

(4) truncate 表1,往表2中插入2条记录。在表空间1中再创建一个表。

truncate table scott.customers;

insert into scott.sales values(3,'SCOTT',6000);

insert into scott.sales values(4,'BLAKE',6700);

commit;

create table scott.employee(id int,name varchar2(10)) tablespace user01;

(5) 利用rman进行表空间1基于时间点的恢复。

--rman部分恢复表空间

recover tablespace user01

until time "to_timestamp('2010-03-11 21:44:52','yyyy-mm-dd hh24:mi:ss')"

auxiliary destination '/home/oracle/backup';

(6)将表空间user01 联机,检查表1的数据是否找回来,检查表2的数据是否是4条,检查新创建的表是否已经不存在。

alter tablespace user01 online;

select * from scott.customers;

CUST_ID CUST_NAME

---------- ----------

1 SOCTT

2 SMITH

select * from scott.sales;

ID CUST_NAME SALES_AMOUNT

---------- ---------- ------------

1 SCOTT 8000

1 SMITH 10000

3 SCOTT 6000

4 BLAKE 6700

select * from dba_tables where owner = 'SCOTT' and table_name='EMPLOYEE';

no rows selected

一切如我们所愿,此时,表空间不完全恢复完成。

注意:

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

只有自包含的表空间,才能基于单独不完全恢复。所谓自包含,是指该表空间中的对象不依赖于其它表空间中的对象,如该表空间中索引的基本在其它表空间,该表中

某些表的lob列放在其它表空间。

如在上例中,执行:

create index scott.idx_customers on scott.customers(cust_name) tablespace user02;

begin

dbms_tts.transport_set_check('user02',true);

end;

select * from transport_set_violations;

会提示:Index SCOTT.IDX_CUSTOMERS in tablespace USER02 points to table SCOTT.CUSTOMERS in tablespace USER01.

begin

dbms_tts.transport_set_check('USER01,user02',true);

end;

select * from transport_set_violations;

不会有任何提示,因为user01/user02表空间作为一个集合,是自包含的。

上面这

个过程看起来简单,但是数据库在步骤5时,自己做了很多的工作,所有以前人工需要做的它一步也没有少做,具体如下:

(1)建立参数文件

(2)启动辅助instance到nomount状态

(3)恢复辅助instance控制文件

(4)启动辅助instance到mount,restore表空间对应的数据文件及辅助文件(表空间system和undo的文件)

(5)将上面的几个数据文件online,恢复表空间user01,system和undo

(6)open 辅助数据库(resetlogs)

(7)exp 导出表空间user01;

(8)关闭辅助库

(9)imp 表空间user01;

(10)删除辅助库对应的数据文件及其它文件。

作者:51cto Oracle小混子

时间: 2024-09-08 09:26:36

Oracle技术:使用rman进行表空间基于时间点的恢复的相关文章

Oracle技术:手动实现表空间基于时间点的恢复

实验说明: (1)先创建2个表空间. create tablespace user01 datafile '/opt/oracle/oradata/ocp/user01.dbf' size 1M; create tablespace user02 datafile '/opt/oracle/oradata/ocp/user02.dbf' size 1M; (2)在每个表空间上各创建一张表. create table scott.customers (cust_id int,cust_name v

【TSPITR】RMAN表空间基于时间点的自动恢复

[RMAN]TSPITR--RMAN表空间基于时间点的自动恢复 1.1  BLOG文档结构图       1.2  前言部分   1.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① TSPITR表空间基于时间点的自动恢复 ② logminer的简单应用   本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力. 1.2.2  实验环境介绍   目标库:11.2.0.3 

探索ORACLE之RMAN_07整个业务表空间丢失恢复

探索ORACLE之RMAN_07整个业务表空间丢失恢复 作者:吴伟龙   Name:Prodence Woo QQ:286507175  msn:hapy-wuweilong@hotmail.com   1.     整个业务表空间丢失恢复 注意:以下的所有实验,都是基于上面的全库备份来做的恢复. 2.1 删除wwl表空间的所有数据文件 [root@wwldb ~]# cd /DBData/WWL/ [root@wwldb WWL]# rm -rf wwl* [root@wwldb WWL]#

命令行中使用oracle命令创建数据库和表空间

本文详细介绍命令行中使用oracle命令创建数据库和表空间 1.使用超级用户登录sqlplus. 2.创建表空间: SQL> create tablespace test 2 datafile 'D:\oracle\oradata\test\test.dbf' 3 size 100M autoextend on next 10M maxsize unlimited extent management local; 3.创建用户和密码: SQL> create user Username ide

Oracle学习(一)表空间和区

1.表空间:表空间是数据库的逻辑划分,一个表空间只属于一个数据库.每个表空间由一个或多个 数据文件组成. 表空间中其他逻辑结构的数据存储在这些数据文件中.在Oracle安装完成后,会自动建立多个表空间 , 主要有: (1)System表空间:该表空间用于存放Oracle系统内部表和数据字典的数据,如表名.列名.用户 名等. (2)undo表空间:该表空间是存储撤销信息的表空间.当用户对数据库表进行修改(insert, update,delete)时, Oracle会自动使用undo表空间来临时存

db2 restore之后,三个表空间重定向失败,如何恢复

问题描述 db2 restore之后,三个表空间重定向失败,如何恢复 原镜像的表空间容器类型是deceive 恢复的时候用 set tablespace containes for 4 using (FILE '/data/temp.dat' 131072);容器类型用了File 并且改变了大小,这三个表空间用命令还原不成功,没法查询数据,后来在qc上找到相应表空间,alter修改表空间,依旧是修改为file容器类型,其中一个成功了,另外两个不能alter 有没有人能帮忙解释下,如何改变容器类型

用Oracle 10g Data Pump重组表空间

Oracle 10g版本对数据输入与输出的操作功能进行重新设计,在输入或输出工作中增加断开和连接的功能.对这些功能做微小改动,就可利于DBA表空间的操作. 作为整体单元输出表空间 过去的输出和输入功能有3种模式:依赖于对象输出,如索引的单个表格:输出某个用户所有的对象:输出整个数据库.但是表空间是一个难于处理的问题.不同用户的对象存储在给定的表空间中,但是某些对象可能存储在其它表空间. 因此,唯一的解决方法则是使用查询数据字典查找列表及其从属主,然后使用"table-mode export&qu

Oracle在不同平台间表空间迁移

平台环境:   1.源库:         Windows Service 2003 SP2 x86         Oracle Service 10.2.0.4 x86    2.目标库          Redhat Linux   5.5  X64          Oracle Service 10.2.0.5    3.检查目标数据库的系统环境 /G'xLC*M.D!zH!_&d206744233.检查目标系统环境O,[`Qf%s20674423内存大小:M:Y@8Z0sV20674

Oracle中删除用户和表空间的常见问题(比如:ORA-01940无法删除当前已连接用户的解决方案)

这时候以管理员身份进入sqlplus命令窗口. 在删除用户的时候有时候会出现以下问题: ORA-01940无法删除当前已连接用户 这时候的解决方案是: 1)查看用户的连接状况   select username,sid,serial# from v$session (2)找到要删除用户的sid,和serial,并删除 例如:你要删除用户'WUZHQ',可以这样做: alter system kill session'532,4562'; 这里的532表示的是sid,4562表示的是seria.