oracle current redo 损坏,current redo损坏

插入测试数据

SQL> insert into t select * from dba_objects;

50351 rows created.

SQL> commit;

Commit complete.

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

GROUP# STATUS

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

1 CURRENT

2 INACTIVE

3 INACTIVE

SQL> shutdown abort;

ORACLE instance shut down.

破坏redo log

[oracle@racdg rac]$ mv group_1.261.841267257  group_1.261.841267257.bak

启动数据库

SQL> startup

ORACLE instance started.

Total System Global Area  314572800 bytes

Fixed Size              2020448 bytes

Variable Size             96471968 bytes

Database Buffers       213909504 bytes

Redo Buffers              2170880 bytes

Database mounted.

ORA-00313: open failed for members of log group 1 of thread 1

ORA-00312: online log 1 thread 1: '/u01/oradata/rac/group_1.261.841267257'

ORA-27037: unable to obtain file status

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3

SQL> alter database clear unarchived logfile group 1;

alter database clear unarchived logfile group 1

*

ERROR at line 1:

ORA-01624: log 1 needed for crash recovery of instance rac1 (thread 1)

ORA-00312: online log 1 thread 1: '/u01/oradata/rac/group_1.261.841267257'

设置隐含参数

rac1._ALLOW_RESETLOGS_CORRUPTION=true

再次启动数据库

SQL> startup pfile='/u01/product/10.2/db_1/dbs/initrac1.ora';

ORACLE instance started.

Total System Global Area  314572800 bytes

Fixed Size              2020448 bytes

Variable Size             96471968 bytes

Database Buffers       213909504 bytes

Redo Buffers              2170880 bytes

Database mounted.

ORA-00313: open failed for members of log group 1 of thread 1

ORA-00312: online log 1 thread 1: '/u01/oradata/rac/group_1.261.841267257'

ORA-27037: unable to obtain file status

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3

SQL> recover database until cancel;

ORA-00279: change 808373 generated at 03/21/2014 15:08:12 needed for thread 1

ORA-00289: suggestion : /u01/oradata/rac/arch/1_4_842797543.dbf

ORA-00280: change 808373 for thread 1 is in sequence #4

Specify log: {=suggested | filename | AUTO | CANCEL}

auto

ORA-00308: cannot open archived log '/u01/oradata/rac/arch/1_4_842797543.dbf'

ORA-27037: unable to obtain file status

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3

ORA-00308: cannot open archived log '/u01/oradata/rac/arch/1_4_842797543.dbf'

ORA-27037: unable to obtain file status

Linux-x86_64 Error: 2: No such file or directory

Additional information: 3

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below

ORA-01194: file 1 needs more recovery to be consistent

ORA-01110: data file 1: '/u01/oradata/rac/system.dbf'

SQL> alter database open resetlogs;

alter database open resetlogs

*

ERROR at line 1:

ORA-01092: ORACLE instance terminated. Disconnection forced

alert报错

Fri Mar 21 15:44:43 2014

Errors in file /u01/admin/rac/udump/rac1_ora_3679.trc:

ORA-00600: internal error code, arguments: [2662], [0], [808380], [0], [808410], [4194313], [], []

Fri Mar 21 15:44:43 2014

Error 600 happened during db open, shutting down database

USER: terminating instance due to error 600

Instance terminated by USER, pid = 3679

ORA-1092 signalled during: alter database open resetlogs...

使用ADJUST_SCN事件

SQL> startup pfile='/u01/product/10.2/db_1/dbs/initrac1.ora' mount;

ORACLE instance started.

Total System Global Area  314572800 bytes

Fixed Size              2020448 bytes

Variable Size             96471968 bytes

Database Buffers       213909504 bytes

Redo Buffers              2170880 bytes

Database mounted.

SQL> col name for a50

SQL> set lines 150

SQL> select name, checkpoint_change# from v$datafile;

NAME                                   CHECKPOINT_CHANGE#

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

/u01/oradata/rac/system.dbf                         808376

/u01/oradata/rac/undotbs1.dbf                         808376

/u01/oradata/rac/sysaux.dbf                         808376

/u01/oradata/rac/users.dbf                         808376

/u01/oradata/rac/example.dbf                         808376

/u01/oradata/rac/undotbs2.dbf                         808376

/u01/oradata/rac/users_2.dbf                         808376

SQL> alter session set events 'IMMEDIATE trace name ADJUST_SCN level 1';  (强行将scn增大,level越大,增加的SCN越多)

Session altered.

SQL> alter database open;

Database altered.

SQL> select name, checkpoint_change# from v$datafile;

NAME                                   CHECKPOINT_CHANGE#

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

/u01/oradata/rac/system.dbf                         828381

/u01/oradata/rac/undotbs1.dbf                         828381

/u01/oradata/rac/sysaux.dbf                         828381

/u01/oradata/rac/users.dbf                         828381

/u01/oradata/rac/example.dbf                         828381

/u01/oradata/rac/undotbs2.dbf                         828381

/u01/oradata/rac/users_2.dbf                         828381

7 rows selected.

但是最初向T中插入的数据查不出来了

SQL> select count(*) from t;

COUNT(*)

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

0

重新插入,及切换日志操作正常

SQL> insert into t select * from dba_objects;

50351 rows created.

SQL> commit;

Commit complete.

SQL> alter system switch logfile;

System altered.

SQL> /

System altered.

SQL> /

System altered.

SQL> /

System altered.

最后,应该将整个数据库exp导出,重新建库。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库中,扩大Redo日志的具体步骤如下: 1. 在主库上查询当前Redo日志的大小和数量: ``` SQL> SELECT GROUP#, THREAD#, SEQUENCE#, ARCHIVED, STATUS, FIRST_CHANGE#, NEXT_CHANGE#, BLOCKS*BLOCK_SIZE/1024/1024 AS SIZE_MB FROM V$LOG; ``` 其中,BLOCKS列表示该Redo日志组的块数,BLOCK_SIZE表示每个块的大小,SIZE_MB表示该Redo日志组的大小。 2. 根据查询结果,计算出每个Redo日志组的平均大小和数量,以及需要扩大的大小。 3. 在主库上切换到需要扩大的Online Redo日志组: ``` SQL> ALTER SYSTEM SWITCH LOGFILE; ``` 4. 在主库上强制刷写Redo日志: ``` SQL> ALTER SYSTEM CHECKPOINT; ``` 5. 在主库上将当前Online Redo日志组标记为需要归档: ``` SQL> ALTER SYSTEM ARCHIVE LOG CURRENT; ``` 6. 在主库上使用ALTER DATABASE命令扩大Online Redo日志组的大小,例如: ``` SQL> ALTER DATABASE ADD LOGFILE THREAD 1 GROUP 4 ('/u01/app/oracle/oradata/orcl/redo04a.log', '/u01/app/oracle/oradata/orcl/redo04b.log') SIZE 100M; ``` 其中,THREAD 1表示要添加到的线程号,GROUP 4表示要添加到的Redo日志组号,('/u01/app/oracle/oradata/orcl/redo04a.log', '/u01/app/oracle/oradata/orcl/redo04b.log')表示要添加的Redo日志文件名,SIZE 100M表示每个Redo日志文件的大小。 7. 在主库上启用新的Redo日志组: ``` SQL> ALTER SYSTEM SWITCH LOGFILE; ``` 8. 在备库上检查Redo同步情况: ``` SQL> SELECT SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG WHERE THREAD#=1 ORDER BY SEQUENCE#; ``` 如果APPLIED列的值为YES,则表示该Redo日志已经被成功应用到备库中。 注意:在执行以上操作前,请先备份主库和备库中的数据,以防止数据丢失。同时,如果不熟悉Redo日志的操作,请勿轻易操作,以免造成不可逆的后果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值