Chinaunix首页 | 论坛 | 博客
  • 博客访问: 719880
  • 博文数量: 191
  • 博客积分: 10987
  • 博客等级: 上将
  • 技术积分: 1925
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-22 09:52
文章分类

全部博文(191)

文章存档

2014年(10)

2011年(11)

2010年(38)

2009年(132)

分类: Oracle

2010-04-07 22:11:45

 

 

 

备份数据库实验6

1. 全备数据库一次(备份A

2.建立数据库用户,

3.设定该用户默认表空间

4.使用该用户创建对象表并插入数据。(DML1

5.归档日志文件

6.全备数据库一次(备份B)

7.再次数据对象表插入数据并提交(DML2)

8.归档日志文件

9.删除该用户的默认表空间。

10.全备数据库一次(备份C

11.发现误删除表空间,需要恢复到DML2操作。完成恢复。

 

恢复数据思路:

1.使用第二次全备+第二次以后的归档日志文件来恢复数据。恢复到误删表空间的那个时间点。

2.利用基于时间点的方式来恢复数据。

3.从告警文件查看出误删表空间的时间。

4.恢复数据到DML2时间点。

恢复过程介绍:

1.从备份集中找到有效的全备,从备份集中找到误删除之前的最新的控制文件的备份

2.首先恢复控制文件

3.再还原数据库

4.alert告警文件中找到误删表空间的时间点

5.基于时间点的恢复表空间

6.使用resetlogs打开数据库

7.数据恢复。

 

操作过程:

全备数据库

run

{allocate channel a1 type disk;

backup full filesperset 2 (database include current controlfile format 'f:\full\A\%p%s%t');

sql 'alter system archive log current';

release channel a1;

}

建立数据库用户设定默认表空间

SQL>create tablespace sun_tbs datafile 'D:\oracle\product\oradata\cisdb\sun_tbs.dbf' size 20M

SQL> create user xylove identified by xylove123 default tablespace sun_tbs;

SQL> grant connect,resource to xylove;

使用该用户创建对象表并插入数据

SQL> create table xylove.s (id int);

SQL> insert into xylove.s values(1000);

SQL> select * from xylove.s;

 ID

----------

      1000

SQL> commit;

归档日志文件

SQL> alter system archive log current;

全备数据库

run

{allocate channel a1 type disk;

backup full filesperset 2 (database include current controlfile format 'f:\full\B\%p%s%t');

sql 'alter system archive log current';

release channel a1;

}

再次数据对象表插入数据并提交(DML2)

SQL> insert into xylove.s values(2000);

SQL> select * from xylove.s;

 ID

----------

      1000

      2000

SQL> create table xylove.p (name varchar(20));

SQL> insert into xylove.p values('hans');

SQL> select * from xylove.p;

NAME

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

hans

SQL> commit;

归档日志文件:

SQL> alter system archive log current;

删除该用户的默认表空间

SQL> drop tablespace sun_tbs including contents and datafiles;

全备数据库

run

{allocate channel a1 type disk;

backup full filesperset 2 (database include current controlfile format 'f:\full\C\%p%s%t');

sql 'alter system archive log current';

release channel a1;

}

发现误删除表空间,数据丢失,需要恢复到DML2操作

 

SQL> select * from xylove.s;

select * from xylove.s

                        *

1行出现错误:

ORA-00942:表或视图不存在

SQL> select * from xylove.p;

select * from hn_xylove.p

1行出现错误:

ORA-00942: 表或视图不存在

恢复数据:

恢复过程

1.从备份集中找到有效的全备,从备份集中找到误删除之前的最新的控制文件的备份:

RMAN> list backup;

……..

 

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

249     Full    372.01M    DISK        00:00:33     05-4 -10

        BP 关键字: 249   状态: AVAILABLE  已压缩: NO  标记: TAG20100405T232535

段名:F:\FULL\B\1277715562735

  备份集 249 中的数据文件列表

  文件 LV 类型 Ckp SCN    Ckp 时间   名称

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

  1       Full 7171631    05-4 -10 D:\ORACLE\PRODUCT\ORADATA\CISDB\SYSTEM01.DBF

 

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

250     Full    241.52M    DISK        00:00:23     05-4 -10

        BP 关键字: 250   状态: AVAILABLE  已压缩: NO  标记: TAG20100405T232535

段名:F:\FULL\B\1278715562771

  备份集 250 中的数据文件列表

  文件 LV 类型 Ckp SCN    Ckp 时间   名称

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

  3       Full 7171642    05-4 -10 D:\ORACLE\PRODUCT\ORADATA\CISDB\SYSAUX01.DBF

  8       Full 7171642    05-4 -10 D:\ORACLE\PRODUCT\ORADATA\CISDB\BLOCK.DBF

 

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

251     Full    66.44M     DISK        00:00:07     05-4 -10

        BP 关键字: 251   状态: AVAILABLE  已压缩: NO  标记: TAG20100405T232535

段名:F:\FULL\B\1279715562796

  备份集 251 中的数据文件列表

  文件 LV 类型 Ckp SCN    Ckp 时间   名称

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

  5       Full 7171655    05-4 -10 D:\ORACLE\PRODUCT\ORADATA\CISDB\EXAMPLE01.DBF

  10      Full 7171655    05-4 -10 D:\ORACLE\PRODUCT\ORADATA\CISDB\ORA_DATA1_01.DBF

 

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

252     Full    2.76M      DISK        00:00:02     05-4 -10

        BP 关键字: 252   状态: AVAILABLE  已压缩: NO  标记: TAG20100405T232535

段名:F:\FULL\B\1280715562804

  备份集 252 中的数据文件列表

  文件 LV 类型 Ckp SCN    Ckp 时间   名称

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

  4       Full 7171658    05-4 -10 D:\ORACLE\PRODUCT\ORADATA\CISDB\USERS01.DBF

  15      Full 7171658    05-4 -10

 

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

253     Full    40.10M     DISK        00:00:05     05-4 -10

        BP 关键字: 253   状态: AVAILABLE  已压缩: NO  标记: TAG20100405T232535

段名:F:\FULL\B\1281715562807

  备份集 253 中的数据文件列表

  文件 LV 类型 Ckp SCN    Ckp 时间   名称

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

  2       Full 7171661    05-4 -10 D:\ORACLE\PRODUCT\ORADATA\CISDB\UNDOTBS01.DBF

  13      Full 7171661    05-4 -10 D:\ORACLE\PRODUCT\ORADATA\CISDB\UNIFORM_TBS_02.DBF

 

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

254     Full    376.00K    DISK        00:00:03     05-4 -10

        BP 关键字: 254   状态: AVAILABLE  已压缩: NO  标记: TAG20100405T232535

段名:F:\FULL\B\1282715562814

  备份集 254 中的数据文件列表

  文件 LV 类型 Ckp SCN    Ckp 时间   名称

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

  11      Full 7171664    05-4 -10 D:\ORACLE\PRODUCT\ORADATA\CISDB\AUTOALLOCATE_TBS_01.DBF

  14      Full 7171664    05-4 -10 D:\ORACLE\PRODUCT\ORADATA\CISDB\TBS.DBF

 

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

255     Full    824.00K    DISK        00:00:02     05-4 -10

        BP 关键字: 255   状态: AVAILABLE  已压缩: NO  标记: TAG20100405T232535

段名:F:\FULL\B\1283715562818

  备份集 255 中的数据文件列表

  文件 LV 类型 Ckp SCN    Ckp 时间   名称

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

  6       Full 7171666    05-4 -10 D:\ORACLE\PRODUCT\ORADATA\CISDB\USERS02.DBF

  7       Full 7171666    05-4 -10 D:\ORACLE\PRODUCT\ORADATA\CISDB\UNDOTBS02.DBF

 

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

256     Full    376.00K    DISK        00:00:02     05-4 -10

        BP 关键字: 256   状态: AVAILABLE  已压缩: NO  标记: TAG20100405T232535

段名:F:\FULL\B\1284715562821

  备份集 256 中的数据文件列表

  文件 LV 类型 Ckp SCN    Ckp 时间   名称

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

  9       Full 7171668    05-4 -10 D:\ORACLE\PRODUCT\ORADATA\CISDB\ORA_DATA_1.DBF

  12      Full 7171668    05-4 -10 D:\ORACLE\PRODUCT\ORADATA\CISDB\UNIFORM_TBS_01.DBF

 

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

257     Full    8.52M      DISK        00:00:02     05-4 -10

        BP 关键字: 257   状态: AVAILABLE  已压缩: NO  标记: TAG20100405T232535

段名:F:\FULL\B\1285715562825

  包括的控制文件: Ckp SCN: 7171669      Ckp 时间: 05-4 -10

 

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

258     Full    8.55M      DISK        00:00:03     05-4 -10

        BP 关键字: 258   状态: AVAILABLE  已压缩: NO  标记: TAG20100405T232707

段名:F:\CONTROLFILE\C-4048038982-20100405-14

  包括的控制文件: Ckp SCN: 7171674      Ckp 时间: 05-4 -10

  包含的 SPFILE: 修改时间: 05-4 -10

 

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

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

259     Full    8.55M      DISK        00:00:04     05-4 -10

        BP 关键字: 259   状态: AVAILABLE  已压缩: NO  标记: TAG20100405T233025

段名:F:\CONTROLFILE\C-4048038982-20100405-15

  包括的控制文件: Ckp SCN: 7172062      Ckp 时间: 05-4 -10

  包含的 SPFILE: 修改时间: 05-4 -10

 

…………

1),经过查询rman备份集,误删表空间前的最新的全备是tag= TAG20100405T232535

2),经过查询rman备份集,误删表空间前的最新的控制文件备份是:F:\CONTROLFILE\C-4048038982-20100405-14

2.首先恢复控制文件

启动数据库到nomount状态:

RMAN>  restore controlfile from 'F:\CONTROLFILE\C-4048038982-20100405-14';

启动 restore 05-4 -10

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=189 devtype=DISK

 

通道 ORA_DISK_1: 正在复原控制文件

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:03

输出文件名=D:\ORACLE\PRODUCT\ORADATA\CISDB\CONTROL01.CTL

输出文件名=D:\ORACLE\PRODUCT\ORADATA\CISDB\CONTROL02.CTL

输出文件名=D:\ORACLE\PRODUCT\ORADATA\CISDB\CONTROL03.CTL

完成 restore 05-4 -10

3.再还原数据库

启动数据库到mount状态:

RMAN> restore database from tag='TAG20100405T232535';

………

通道 ORA_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件

正将数据文件00004恢复到D:\ORACLE\PRODUCT\ORADATA\CISDB\USERS01.DBF

正将数据文件00015恢复到D:\ORACLE\PRODUCT\ORADATA\CISDB\SUN_TBS.DBF

通道 ORA_DISK_1: 正在读取备份段 F:\FULL\B\1280715562804

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = F:\FULL\B\1280715562804 标记 = TAG20100405T232535

…………

4.alert告警文件中找到误删表空间的时间点

Mon Apr 05 23:30:22 2010

 drop tablespace sun_tbs including contents and datafiles

5.基于时间点的恢复表空间

RMAN> recover database until time "to_date('2010-04-05 23:30:22','YYYY-MM-DD HH24:MI:SS')";

6.使用resetlogs打开数据库

RMAN> alter database open resetlogs;

7.恢复数据

SQL> select * from xylove.p;

NAME

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

hans

SQL> select * from xylove.s;

 ID

----------

      1000

      2000

完成恢复。

 

                                                                                                                                 2010-4-5.

                                                

 

 

 

 

 

 

 

 

 

 

阅读(1222) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~