楼主: text1978

[FAQ] 冷备份还原数据库是不是不能前滚恢复?

[复制链接]
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
11#
 楼主| 发表于 2004-5-10 18:09 | 只看该作者
完全冷备还原的数据库的控制文件并没有记录冷备后产生的ARCH归档的记录啊。

使用道具 举报

回复
论坛徽章:
86
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20咸鸭蛋
日期:2012-05-08 10:27:19版主8段
日期:2012-05-15 15:24:112013年新春福章
日期:2013-02-25 14:51:24
12#
发表于 2004-5-10 18:28 | 只看该作者
最初由 ZALBB 发布
[B]BITI,我尝试使用until cancel,但出现这种情况
SQL> connect / as sysdba
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area  319889436 bytes
Fixed Size                   454684 bytes
Variable Size             109051904 bytes
Database Buffers          209715200 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
SQL> recover database until cancel;
完成介质恢复。
SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FI
---------- ---------- ---------- ---------- ---------- --- ---------------- --
         1          1         46    1048576          1 YES INACTIVE            
         2          1         47    1048576          1 NO  CURRENT              
         3          1         45    1048576          1 YES INACTIVE            

SQL> recover database until time '2004-05-09 14:42:00';
完成介质恢复。
SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项


SQL> alter database open noresetlogs;

数据库已更改。

SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            E:\oraclelog
最早的概要日志序列     45
下一个存档日志序列   47
当前日志序列           47

---其实,之前的数据库(现已经被覆盖了数据、控制、日志文件)的LOG SCN 已经到达74里,但恢复时,不见数据库来读取? [/B]


sorry  

recover database using backup controlfile until cancel;

漏掉了 using backup controlfile

使用道具 举报

回复
论坛徽章:
314
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
13#
发表于 2004-5-10 18:37 | 只看该作者

痛苦

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

Total System Global Area  319889436 bytes
Fixed Size                   454684 bytes
Variable Size             109051904 bytes
Database Buffers          209715200 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 261343035 (在 05/10/2004 15:09:10 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLELOG\ARC00047.001
ORA-00280: 更改 261343035 对于线程 1 是按序列 # 47 进行的


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

ORA-00283: 恢复会话因错误而取消
ORA-00600: 内部错误代码,参数: [3020], [8388665], [1], [47], [943], [16], [], []
ORA-10567: Redo is inconsistent with data block (file# 2, block# 57)
ORA-10564: tablespace UNDOTBS1
ORA-01110: 数据文件 2: 'D:\ORACLE\ORADATA\ENCORE\UNDOTBS01.DBF'
ORA-10560: block type 'KTU SMU HEADER BLOCK'


ORA-01112: 未启动介质恢复


SQL>

使用道具 举报

回复
论坛徽章:
16
ITPUB元老
日期:2006-12-29 17:11:00秀才
日期:2015-12-25 15:31:102015年新春福章
日期:2015-03-06 11:57:31沸羊羊
日期:2015-03-04 14:43:432012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412010新春纪念徽章
日期:2010-03-01 11:21:02祖国60周年纪念徽章
日期:2009-10-09 08:28:002009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:鼠
日期:2008-01-02 17:35:53
14#
发表于 2004-5-10 19:25 | 只看该作者
最初由 biti_rainy 发布
[B]冷备份时候的所有文件,不过就是控制文件老了会提示不需要恢复而已

这个时候只要指定 毕,再手工apply 联机日志就成了 [/B]



biti_rainy :
is it so?

i have full cold backup with archivelog,my database down,then i  restore all backupfile. then i open database to mount, recover database using backup controlfile util  cancel ,and apply archivelog to cancel.

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
15#
 楼主| 发表于 2004-5-10 19:35 | 只看该作者
问题多多。
oracle是用什么机制出发ARCH进行写归档的?因为我的redolog大小是100M,但是得到的归档有100M的,几十兆,十几兆,以致几兆,几百K的都有。期间我并未手动强制归档过。而且oracle的官方文档上说,数据库关闭的时候也没有强制写归档。那么这些几十兆,十几兆,以致几兆,几百K的归档是怎么产生的?

前滚恢复的问题是不是和控制文件有很大关系?看到oracle的一个应用冷备份-+归档恢复的例子,这个例子也只是说“大多数数据文件损坏”其中包括system.dbf。但是并没有说控制文件也是损坏的。

使用道具 举报

回复
论坛徽章:
314
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
16#
发表于 2004-5-10 20:55 | 只看该作者
SQL*Plus: Release 9.2.0.5.0 - Production on 星期一 5月 10 20:07:43 2004

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

已连接到空闲例程。

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  319889436 bytes
Fixed Size                   454684 bytes
Variable Size             109051904 bytes
Database Buffers          209715200 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> connect scott/tiger
已连接。
SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
BAIDU                          TABLE
BONUS                          TABLE
CATT                           TABLE
DEPT                           TABLE
EMP                            TABLE
MCGROUP                        TABLE
SALGRADE                       TABLE
TABS1                          TABLE

已选择8行。


只有8个表[/COLOR]

SQL> connect / as sysdba
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

此时,拷贝冷备份的文件(数据、在线日志、控制)回去,此实验之前做的冷备份[/COLOR]

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

Total System Global Area  319889436 bytes
Fixed Size                   454684 bytes
Variable Size             109051904 bytes
Database Buffers          209715200 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 261342883 (在 05/10/2004 14:09:44 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLELOG\ARC00047.001
ORA-00280: 更改 261342883 对于线程 1 是按序列 # 47 进行的


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 261343932 (在 05/10/2004 14:38:05 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLELOG\ARC00048.001
ORA-00280: 更改 261343932 对于线程 1 是按序列 # 48 进行的
ORA-00278: 此恢复不再需要日志文件 'E:\ORACLELOG\ARC00047.001'


ORA-00279: 更改 261345972 (在 05/10/2004 14:38:12 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLELOG\ARC00049.001
ORA-00280: 更改 261345972 对于线程 1 是按序列 # 49 进行的
ORA-00278: 此恢复不再需要日志文件 'E:\ORACLELOG\ARC00048.001'


此处省去众多相似的回复信息[/COLOR]

ORA-00279: 更改 261395028 (在 05/10/2004 14:41:12 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLELOG\ARC00073.001
ORA-00280: 更改 261395028 对于线程 1 是按序列 # 73 进行的
ORA-00278: 此恢复不再需要日志文件 'E:\ORACLELOG\ARC00072.001'


ORA-00279: 更改 261397073 (在 05/10/2004 14:41:28 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLELOG\ARC00074.001
ORA-00280: 更改 261397073 对于线程 1 是按序列 # 74 进行的
ORA-00278: 此恢复不再需要日志文件 'E:\ORACLELOG\ARC00073.001'


ORA-00279: 更改 261399138 (在 05/10/2004 14:41:37 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLELOG\ARC00075.001
ORA-00280: 更改 261399138 对于线程 1 是按序列 # 75 进行的
ORA-00278: 此恢复不再需要日志文件 'E:\ORACLELOG\ARC00074.001'


ORA-00308: 无法打开存档日志 'E:\ORACLELOG\ARC00075.001'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。


SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 261399138 (在 05/10/2004 14:41:37 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLELOG\ARC00075.001
ORA-00280: 更改 261399138 对于线程 1 是按序列 # 75 进行的


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
E:\ORACLELOG\redo03.log

给错了在线日志[/COLOR]

ORA-00308: 无法打开存档日志 'E:\ORACLELOG\redo03.log'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
D:\oracle\oradata\redo03.log

这回给对了在线日志[/COLOR]

已应用的日志。
完成介质恢复。
SQL> alter database open resetlogs;

数据库已更改。

SQL> connect scott/tiger
已连接。
SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
BAIDU                          TABLE
BONUS                          TABLE
CATT                           TABLE
DEPT                           TABLE
EMP                            TABLE
MCGROUP                        TABLE
SALGRADE                       TABLE
TABS1                          TABLE
z200001                        TABLE
z200002                        TABLE
z200003                        TABLE

已选择11行。

SQL>

总共有11个表,3个表被回复了[/COLOR]

BITI说的是对的,USING BACKUP CONTROLFILE 确实会自动寻找
归档日志来回复,即便此时的数据库是“完整,可打开”的!
注意最后一个日志要使用在线日志来回复。

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
17#
 楼主| 发表于 2004-5-11 09:15 | 只看该作者
数据库装载完毕。
SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 261342883 (在 05/10/2004 14:09:44 生成) 对于线程 1 是必需的
ORA-00289: 建议: E:\ORACLELOG\ARC00047.001
ORA-00280: 更改 261342883 对于线程 1 是按序列 # 47 进行的


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto


这一步是不是必须的?我刚开始的时候就指定文件,然后oracle让我指定一个更新的归档。
到最后它让我指定一个不存在的归档。

使用道具 举报

回复
论坛徽章:
314
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
18#
发表于 2004-5-11 09:19 | 只看该作者
注意最后一个日志要使用在线日志来回复。[/COLOR]

使用道具 举报

回复
论坛徽章:
0
19#
发表于 2004-5-11 10:08 | 只看该作者
ZALBB兄,有两个问题请教:
  1.在你做了“此时,拷贝冷备份的文件(数据、在线日志、控制)回去,此实验之前做的冷备份”后,在恢复时还能用在线日志吗?在线日志的状态肯定比最后一个归档文件低。
  2.recover database using backup controlfile;是用来恢复控制文件的。
    recover database until cancel;是对数据库进行不完全恢复的。就是当应用归档文件恢复到想恢复到的那一时间点后就输入cancel。
    recover database using backup controlfile until cancel;是什么意思呢?难道是对控制文件进行不完全恢复吗?而且你做的是一个complete recovery并不是一个incomplete recovery.
   3.我也按你方法做了,不成功。只有保留当前状态下的在线重做日志才可以按你上面的步骤进行完全恢复。

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
20#
发表于 2004-5-11 10:24 | 只看该作者
我的理解,在线日志不用copy回去了吧

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表