12
返回列表 发新帖
楼主: warehouse

模拟丢失当前联机日志做了一个试验!

[复制链接]
论坛徽章:
8
授权会员
日期:2007-08-03 16:45:54ITPUB元老
日期:2007-10-11 17:31:17ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44铁扇公主
日期:2007-10-26 16:08:47生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:兔
日期:2008-04-16 18:00:422010新春纪念徽章
日期:2010-03-01 11:08:24
11#
发表于 2005-1-29 14:22 | 只看该作者

我把损坏的日志移走后,用同样的方法恢复后,数据库起不来了

为什么呢???????

使用道具 举报

回复
论坛徽章:
8
授权会员
日期:2007-08-03 16:45:54ITPUB元老
日期:2007-10-11 17:31:17ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44铁扇公主
日期:2007-10-26 16:08:47生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:兔
日期:2008-04-16 18:00:422010新春纪念徽章
日期:2010-03-01 11:08:24
12#
发表于 2005-1-29 15:03 | 只看该作者

能回答吗???

?/

使用道具 举报

回复
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
13#
 楼主| 发表于 2005-1-29 15:06 | 只看该作者
你的另一个贴子上面按照他们的说法,加上隐含参数,启动看看!

使用道具 举报

回复
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
14#
 楼主| 发表于 2005-1-29 21:04 | 只看该作者
最初由 wlidflower 发布
[B]你试着把一个事务在这个redo中
然后把数据库shutdown abort看看
这样还可以起来吗? [/B]


能起来,但是数据没有恢复过来,说明数据都在当前联机日志文件里了!

C:\>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期日 1月 30 20:40:12 2005

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

首先冷备份数据库!

SQL> connect sys/system as sysdba
已连接。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  131144544 bytes
Fixed Size                   453472 bytes
Variable Size             104857600 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> select *from xys.ttt;

        AA         BB CC
---------- ---------- ----
         1          1 test


--输入测试数据!
SQL> insert into xys.ttt values(2 , 2 , 'test');

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system checkpoint;

系统已更改。

SQL> insert into xys.ttt values(3 , 3 , 'test');

已创建 1 行。

SQL> commit;

提交完成。

SQL> insert into xys.ttt values(4 , 4 , 'test');

已创建 1 行。

SQL> shutdown abort
ORACLE 例程已经关闭。

删除当前联机日志!

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  131144544 bytes
Fixed Size                   453472 bytes
Variable Size             104857600 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
ORA-00313: 无法打开日志组 1 (线程 1) 的成员
ORA-00312: 联机日志 1 线程 1: 'C:\ORACLE\ORA92\ORCL\REDO05_1.LOG'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-00312: 联机日志 1 线程 1: 'C:\ORACLE\ORA92\ORCL\REDO05.LOG'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。


SQL> shutdown immediate
ORA-01109: 数据库未打开


已经卸载数据库。
ORACLE 例程已经关闭。

恢复数据文件!

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

Total System Global Area  131144544 bytes
Fixed Size                   453472 bytes
Variable Size             104857600 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
SQL> recover database until cancel;
ORA-00279: 更改 1335486 (在 01/30/2005 20:31:43 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ORACLE\ARCHIVE\1_5.DBF
ORA-00280: 更改 1335486 对于线程 1 是按序列 # 5 进行的


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00328: 归档日志在更改 1269748 结束,需要稍后的更改 1335486
ORA-00334: 归档日志: 'D:\ORACLE\ARCHIVE\1_5.DBF'


SQL> recover database until cancel;
ORA-00279: 更改 1335486 (在 01/30/2005 20:31:43 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ORACLE\ARCHIVE\1_5.DBF
ORA-00280: 更改 1335486 对于线程 1 是按序列 # 5 进行的


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

数据库已更改。

SQL> select * from xys.ttt;

        AA         BB CC
---------- ---------- ----
         1          1 test

SQL>

使用道具 举报

回复
论坛徽章:
150
蓝锆石
日期:2011-11-16 22:31:22萤石
日期:2011-11-17 13:05:31祖母绿
日期:2008-06-14 15:23:26海蓝宝石
日期:2011-11-16 22:25:15紫水晶
日期:2011-11-16 22:31:22红宝石
日期:2011-10-09 08:54:30蓝锆石
日期:2009-01-31 15:20:54萤石
日期:2008-12-22 15:22:00祖母绿
日期:2011-11-17 13:13:26海蓝宝石
日期:2008-07-05 14:52:18
15#
 楼主| 发表于 2005-1-29 21:41 | 只看该作者
接着上面的实验,其实上面还是没有recovery 过程,这次有了恢复过程!其实这里还有一个问题,当然上面的实验一值都存在着这样的问题,那就是没有恢复过来的数据(在insert 之后,尽管发出了commit; 而没有执行alter system checkpoint!)有可能根本就没有写到当前日志文件里,应该还在日志缓冲区里,不过不论怎样,丢失联机日志的情况下,用这样的方式还是可以做不完全恢复的!
SQL> select * from xys.ttt;

        AA         BB CC
---------- ---------- ----
         1          1 test

SQL> insert into xys.ttt values(2 , 2 , 'test');

已创建 1 行。

SQL> commit;

提交完成。

SQL> alter system checkpoint;

系统已更改。

SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            D:\oracle\archive
最早的概要日志序列     1
下一个存档日志序列   1
当前日志序列           1
SQL> alter system archive log current;

系统已更改。

SQL> select group# , status from v$log;

    GROUP# STATUS
---------- ----------------
         1 INACTIVE
         4 CURRENT
         6 UNUSED

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
------------------------------------------------------------------------------

         1         ONLINE
C:\ORACLE\ORA92\ORCL\REDO05.LOG

         4         ONLINE
C:\ORACLE\ORA92\ORCL\REDO04.LOG

         4         ONLINE
C:\ORACLE\ORA92\ORCL\REDO04_1.LOG


    GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
------------------------------------------------------------------------------

         6         ONLINE
C:\ORACLE\ORA92\ORCL\REDO06.LOG

         1         ONLINE
C:\ORACLE\ORA92\ORCL\REDO05_1.LOG

         6         ONLINE
C:\ORACLE\ORA92\ORCL\REDO06_1.LOG


已选择6行。

SQL> insert into xys.ttt values(3 , 3 , 'test');

已创建 1 行。

SQL> commit;

提交完成。

SQL> insert into xys.ttt values(4 , 4 , 'test');

已创建 1 行。

SQL> shutdown abort
ORACLE 例程已经关闭。

删除当前联机日志文件!

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  131144544 bytes
Fixed Size                   453472 bytes
Variable Size             104857600 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
ORA-00313: 无法打开日志组 4 (线程 1) 的成员
ORA-00312: 联机日志 4 线程 1: 'C:\ORACLE\ORA92\ORCL\REDO04_1.LOG'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-00312: 联机日志 4 线程 1: 'C:\ORACLE\ORA92\ORCL\REDO04.LOG'
ORA-27041: 无法打开文件
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。


SQL> shutdown immediate
ORA-01109: 数据库未打开


已经卸载数据库。
ORACLE 例程已经关闭。

恢复数据文件!

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

Total System Global Area  131144544 bytes
Fixed Size                   453472 bytes
Variable Size             104857600 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
SQL> recover database until cancel;
ORA-00279: 更改 1335487 (在 01/30/2005 20:48:58 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ORACLE\ARCHIVE\1_1.DBF
ORA-00280: 更改 1335487 对于线程 1 是按序列 # 1 进行的


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 1336306 (在 01/30/2005 21:22:25 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ORACLE\ARCHIVE\1_2.DBF
ORA-00280: 更改 1336306 对于线程 1 是按序列 # 2 进行的
ORA-00278: 此恢复不再需要日志文件 'D:\ORACLE\ARCHIVE\1_1.DBF'


ORA-00328: 归档日志在更改 1293298 结束,需要稍后的更改 1336306
ORA-00334: 归档日志: 'D:\ORACLE\ARCHIVE\1_2.DBF'


SQL> recover database until cancel;
ORA-00279: 更改 1336306 (在 01/30/2005 21:22:25 生成) 对于线程 1 是必需的
ORA-00289: 建议: D:\ORACLE\ARCHIVE\1_2.DBF
ORA-00280: 更改 1336306 对于线程 1 是按序列 # 2 进行的


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

数据库已更改。

SQL> select *from xys.ttt;

        AA         BB CC
---------- ---------- ----
         1          1 test
         2          2 test

SQL>

使用道具 举报

回复

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

本版积分规则 发表回复

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