第5章:从打开的数据库备份与恢复之从打开的数据库备份中进行不完全恢复

本文通过具体步骤演示了如何在Oracle数据库中进行不完全恢复操作,包括解锁用户、删除表、归档日志管理、数据库文件还原及验证恢复结果等过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/* 2008/05/28
*环境:Windows XP +Oracle10.2.0.1
*Oracle 备份与恢复培训教程 Kenny Smith,Stephan Haisley著 周琪、韩岷、李渝琳等译
*第二部分:用户管理的备份与恢复
*第5章:从打开的数据库备份与恢复
*/


练习5.4:从打开的数据库备份中进行不完全恢复

1、删除一个表
对用户scott解琐
SQL> alter user scott account unlock;

用户已更改。

SQL> connect scott/tiger
ERROR:
ORA-28001: the password has expired


更改 scott 的口令
新口令:
重新键入新口令:
口令已更改
已连接。

SQL> select id,to_char(time,'yyyy-mm-dd HH24:MI:SS') time from test;

        ID TIME
---------- -------------------
         1 2008-05-28 15:33:31

 


删除scott.emp表
SQL> drop table scott.emp;

表已删除。


SQL> insert into test values(2,sysdate);

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system switch logfile;

系统已更改。

SQL> select id,to_char(time,'yyyy-mm-dd HH24:MI:SS') time from test;

        ID TIME
---------- -------------------
         1 2008-05-28 15:33:31
         2 2008-05-28 15:42:50

不完全恢复到删除表只前,也就是test表只有1数据。

2、重新命名一个归档日志
用基于取消的恢复,当某个归档日志文件损坏或丢失时,常常使用基于取消的恢复。
确定当前日志文件:
SQL> select sequence#,status from v$log;

 SEQUENCE# STATUS
---------- ----------------
         8 CURRENT
         6 INACTIVE
         7 ACTIVE

当前日志文件序号为8,找到日志文件序号为7的归档O1_MF_1_7_43T38PB7_.ARC  重命名为

O1_MF_1_7_43T38PB7_.ARC.backup。

 

3、检查恢复
找出需要恢复到某一时间点
SQL> select sequence#,first_change#,to_char(first_time,'yyyy-mm-dd hh24:mi:ss')
  2  first_time from v$log_history;

 SEQUENCE# FIRST_CHANGE# FIRST_TIME
---------- ------------- -------------------
         1        534907 2008-05-28 15:19:11
         2        541971 2008-05-28 15:19:43
         3        550006 2008-05-28 15:34:21
         4        550018 2008-05-28 15:34:47
         5        551127 2008-05-28 15:37:24
         6        551180 2008-05-28 15:38:47
         7        551263 2008-05-28 15:39:34

已选择7行。

4、还原数据库
关闭数据库,把原来备份的数据文件拷贝回来
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host del G:\oracle\product\10.2.0\oradata\risenet\*.dbf
G:\oracle\product\10.2.0\oradata\risenet\*, 是否确认(Y/N)? y

SQL> host copy e:\backup\*.dbf  G:\oracle\product\10.2.0\oradata\risenet
e:\backup\open_backup_output.lst
e:\backup\SYSTEM01.DBF
e:\backup\UNDOTBS01.DBF
e:\backup\SYSAUX01.DBF
e:\backup\USERS01.DBF
e:\backup\RISE.DBF

已复制         6 个文件。


SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  272629760 bytes
Fixed Size                  1248476 bytes
Variable Size             104858404 bytes
Database Buffers          159383552 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。

5、将数据库恢复到某一点上

查看哪些需要恢复
SQL> select * from v$recover_file;

     FILE# ONLINE  ONLINE_ ERROR              CHANGE# TIME
---------- ------- ------- --------------- ---------- --------------
         1 ONLINE  ONLINE                      551181 28-5月 -08
         2 ONLINE  ONLINE                      551205 28-5月 -08
         3 ONLINE  ONLINE                      551218 28-5月 -08
         4 ONLINE  ONLINE                      551236 28-5月 -08
         5 ONLINE  ONLINE                      551249 28-5月 -08

SQL> alter database recover automatic until time '2008-05-28:15:33:31';
alter database recover automatic until time '2008-05-28:15:33:31'
                                                                *
第 1 行出现错误:
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01195: 文件 1 的联机备份需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\RISENET\SYSTEM01.DBF'


SQL> alter database recover until cancel using backup controlfile;
alter database recover until cancel using backup controlfile
*
第 1 行出现错误:
ORA-00279: 更改 551181 (在 05/28/2008 15:38:48 生成) 对于线程 1 是必需的
ORA-00289: 建议:
G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\RISENET\ARCHIVELOG\2008_05_28\O1_MF

_1_6_%U_.ARC
ORA-00280: 更改 551181 (用于线程 1) 在序列 #6 中

 

注意:需要归档日志时,需要把刚才重命名的日志改回来。


SQL> recover database using backup controlfile until time '2008-05-28:15:33:31';

ORA-00279: 更改 551263 (在 05/28/2008 15:39:34 生成) 对于线程 1 是必需的
ORA-00289: 建议:
G:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\RISENET\ARCHIVELOG\2008_05_28\O1_MF

_1_7_%U_.ARC
ORA-00280: 更改 551263 (用于线程 1) 在序列 #7 中


指定日志: {=suggested | filename | AUTO | CANCEL}
cancel
介质恢复已取消。
SQL> alter database open resetlogs;

数据库已更改。

 

6、验证数据库恢复
SQL> select * from test;

        ID TIME
---------- --------------
         1 28-5月 -08

SQL> select * from scott.emp;

     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM
---------- ---------- --------- ---------- -------------- ---------- ----------
    DEPTNO
----------
      7369 SMITH      CLERK           7902 17-12月-80            800

 

问答:
 1、某个处于备份模式的联机表空间中的数据文件并不发生变化,或由数据库写进程用更改过的数据块予以

更新
A、True
B、False

答案:B
在热备份模式中,数据文件块被持续不断地读出和写入,数据文件首部和重做内容的控制不一样。


2、为什么要清理归档日志目的路径中已经归档的重做日志文件?
A、这些已经归档的重做日志文件与数据库参数文件冲突了
B、将它们脱机以防不测
C、这样归档目的路径有空间容纳更多的归档文件
D、以防一个新数据库的文件覆盖已有的归档文件

答案:BCD

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12778571/viewspace-321869/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12778571/viewspace-321869/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值