首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > Oracle数据库联机日志文件丢失处理方法(2)
【标  题】:Oracle数据库联机日志文件丢失处理方法(2)
【关键字】:Oracle
【来  源】:http://blog.chinaunix.net/article.php?articleId=48258&blogId=1281

Oracle数据库联机日志文件丢失处理方法(2)

续..............

方法四:修改系统参数方法
1、 插入数据
SQL> select * from test;

      TEL
----------
        1
        2
        3
        4

SQL> insert into test values(5);

1 row created.

SQL> commit;

Commit complete.

SQL>
2、 强行关闭
SQL> shutdown abort
ORACLE instance shut down.
SQL>
3、 手工模拟删除redo
4、 启动db
SQL> startup
ORACLE instance started.

Total System Global Area  353862792 bytes
Fixed Size                   730248 bytes
Variable Size             285212672 bytes
Database Buffers           67108864 bytes
Redo Buffers                 811008 bytes
Database mounted.
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/T3/ORACLE/oradata/ORA9/redo03.log'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
5、 尝试使用前3中方法中最简单的
SQL> recover database until cancel;
ORA-00279: change 550174 generated at 09/02/2005 16:00:19 needed for thread 1
ORA-00289: suggestion : /T3/ORACLE/arch/1_1.dbf
ORA-00280: change 550174 for thread 1 is in sequence #1
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
看来不行
6、 修改init.ora,加入一行
_allow_resetlogs_corruption=true
7、 启动with pfile
SQL> startup
ORACLE instance started.
Total System Global Area  320308312 bytes
Fixed Size                   730200 bytes
Variable Size             285212672 bytes
Database Buffers           33554432 bytes
Redo Buffers                 811008 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

SQL> host ls /T3/ORACLE/oradata/ORA9/redo*
/T3/ORACLE/oradata/ORA9/redo*: No such file or directory
SQL> alter database open resetlogs;
Database altered.

SQL> host ls /T3/ORACLE/oradata/ORA9/redo*
/T3/ORACLE/oradata/ORA9/redo01.log  /T3/ORACLE/oradata/ORA9/redo02.log  /T3/ORACLE/oradata/ORA9/redo03.log
8、 检验数据
SQL> select * from test.test;

      TEL
----------
        1
        2
        3
        4

SQL>
看到了吧,我们前面由于执行了SHUTDOWN ABORT,这时候对数据的修改还没有保存到数据文件中,虽然执行了COMMIT,这个时候还在联机日志中,等待CKPT触发DBWR写入DATAFILE,但是这个时候执行了SHUTDOWN ABORT,redo被删除后,里面的信息也就丢了,造成数据丢失
9、 备份,去掉那个参数


试验五:丢失当前日志组的成员
1、SQL> select * from v$logfile;

   GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
        3         ONLINE
/T3/ORACLE/oradata/ORA9/redo03.log

        2         ONLINE
/T3/ORACLE/oradata/ORA9/redo02.log

        1         ONLINE
/T3/ORACLE/oradata/ORA9/redo01.log


   GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
        1         ONLINE
/T3/ORACLE/oradata/ORA9/redo01a.log

        2         ONLINE
/T3/ORACLE/oradata/ORA9/redo02a.log

        3         ONLINE
/T3/ORACLE/oradata/ORA9/redo03a.log

SQL> select * from v$log;

   GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- ----------
        1          1          2  104857600          2 YES INACTIVE
      554599 02-9月 -05

        2          1          3  104857600          2 YES INACTIVE
      554601 02-9月 -05

        3          1          4  104857600          2 NO  CURRENT
      554603 02-9月 -05
SQL>
3、 模拟插入数据
SQL> conn test/test
Connected.
SQL> select * from test;

      TEL
----------
        1
        2
        3
        4

SQL> insert into test values(5);

1 row created.

SQL> commit
 2  ;

Commit complete.
4、 shutdown db,模拟删除一个当前日志成员
$ cd oradata/ORA9
$ ls redo03*
redo03.log   redo03a.log
$ rm redo03a.log
5、 启动db,表面没有错误
SQL> startup
ORACLE instance started.

Total System Global Area  353862792 bytes
Fixed Size                   730248 bytes
Variable Size             285212672 bytes
Database Buffers           67108864 bytes
Redo Buffers                 811008 bytes
Database mounted.
Database opened.
SQL>
6、 查看日至成员
SQL> select * from v$logfile;

   GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
        3         ONLINE
/T3/ORACLE/oradata/ORA9/redo03.log

        2         ONLINE
/T3/ORACLE/oradata/ORA9/redo02.log

        1         ONLINE
/T3/ORACLE/oradata/ORA9/redo01.log


   GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
        1         ONLINE
/T3/ORACLE/oradata/ORA9/redo01a.log

        2         ONLINE
/T3/ORACLE/oradata/ORA9/redo02a.log

        3 INVALID ONLINE
/T3/ORACLE/oradata/ORA9/redo03a.log
7、 删除出问题的联机日志文件
SQL> alter database drop logfile member '/T3/ORACLE/oradata/ORA9/redo03a.log';
alter database drop logfile member '/T3/ORACLE/oradata/ORA9/redo03a.log'
*
ERROR at line 1:
ORA-01609: log 3 is the current log for thread 1 - cannot drop members
ORA-00312: online log 3 thread 1: '/T3/ORACLE/oradata/ORA9/redo03.log'
ORA-00312: online log 3 thread 1: '/T3/ORACLE/oradata/ORA9/redo03a.log'


SQL>
看来当前日志成员是不允许删除的
SQL> alter system switch logfile;

System altered.

SQL> select * from v$log;

   GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- ----------
        1          1          5  104857600          2 NO  CURRENT
      557687 02-9月 -05

        2          1          3  104857600          2 YES INACTIVE
      554601 02-9月 -05

        3          1          4  104857600          2 YES ACTIVE
      554603 02-9月 -05


SQL> alter database drop logfile member '/T3/ORACLE/oradata/ORA9/redo03a.log';

Database altered.

SQL>  alter database add logfile member '/T3/ORACLE/oradata/ORA9/redo03a.log' to group 3;

Database altered.
SQL> select * from v$logfile;

   GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
        3         ONLINE
/T3/ORACLE/oradata/ORA9/redo03.log

        2         ONLINE
/T3/ORACLE/oradata/ORA9/redo02.log

        1         ONLINE
/T3/ORACLE/oradata/ORA9/redo01.log


   GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
        1         ONLINE
/T3/ORACLE/oradata/ORA9/redo01a.log

        2         ONLINE
/T3/ORACLE/oradata/ORA9/redo02a.log

        3 INVALID ONLINE
/T3/ORACLE/oradata/ORA9/redo03a.log
看来还得切换一下日至
SQL> alter system switch logfile;

System altered.
SQL> select * from v$logfile;

   GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
        3         ONLINE
/T3/ORACLE/oradata/ORA9/redo03.log

        2         ONLINE
/T3/ORACLE/oradata/ORA9/redo02.log

        1         ONLINE
/T3/ORACLE/oradata/ORA9/redo01.log


   GROUP# STATUS  TYPE
---------- ------- -------
MEMBER
--------------------------------------------------------------------------------
        1         ONLINE
/T3/ORACLE/oradata/ORA9/redo01a.log

        2         ONLINE
/T3/ORACLE/oradata/ORA9/redo02a.log

        3         ONLINE
/T3/ORACLE/oradata/ORA9/redo03a.log

至此,大功告成…………….

结论:
只要日志组的member不是一个,出现前面的4种可能性是非常小的,即使出现了也有相应的恢复方法,所以不必惊慌;
如果memer多于1个,即使坏了其中的几个,也不会 影响数据库的正常启动,启动后,再进行相应的操作即可, 所以这个时候每天察看alert.log就显得非常重要了。


Remen
2005.9.2

SQL 2000 第1节课:【上一篇】
postgres,sqlserve,oracler下划线查询:【下一篇】
【相关文章】
  • ORACLE汉字显示的字符集问题 z
  • oracle for Redhat AS 3.4
  • Oracle 9i修改字符集为UTF8
  • 安装Oracle实现中文显示的方法
  • 终于在linux安装oracle成功
  • oracle数据库通过触发器设置自增字段
  • oracle笔记
  • NT下如何彻底删除Oracle?
  • JDBC 3.0 API与Oracle9i数据库
  • 实例练习1 取得Oracle9i数据库连接信息
  • 【随机文章】
  • 蠕虫病毒“高波”变种分析报告(2)
  • 《浅谈在应用CRectTracker类的程序中响应WM_LBUTTONUP消息》
  • Unix系统应用服务程序的自动启停
  • 找到一个linux下的快速开发工具SlickEdit
  • 一段根据MAC生成序列号的代码
  • emu的Ajax联机游戏终于可以发布到公网了
  • 禁止任何人通过su命令改变为root用户
  • Windows2000的日志文件详述及删除方法
  • 动态网页技术--CGI:ASP:JSP:PHP(4)
  • AJAX框架汇总【转自thinkpadleo的专栏】
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.