热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

轻松解决:Oracle8i回滚段表空间的坏块

来源: 作者: 时间:2007-07-29 Tag: 点击:

问:当数据库出现坏块,回滚段里的部分数据不能读取时,应该用什么方法解决。

答: 具体方法如下;

 

首先应当检查一下swappALRT.log文件,会发现以下错误:

 

Tue Sep 21 10:34:08 2004
Errors in file E:\oracle\admin\swapp\bdump\swappSMON.TRC:
ORA-01578: ORACLE data block corrupted (file # 2, block # 24497)
ORA-01110: data file 2: 'E:\ORACLE\ORADATA\SWAPP\RBS01.DBF'

此种现象说明回滚段表空间数据文件出现了坏块。这时需要新建一个回滚段表空间,把以前坏了的回滚段表空间drop掉,在新的回滚段表空间上建回滚段,所要建的回滚段和以前的一摸一样,让以后产生的回滚数据都写到新建的回滚段上。

 

首先停掉listener,不允许有新的应用连到数据库上做操作,然后down掉数据库,为了清除掉已有的数据库会话连接资源:

 

$lsnrctl stop

LSNRCTL for Solaris: Version 8.1.7.3.0 - Production 
on 21-SEP-2004 17:40:36

(c) Copyright 1998 Oracle Corporation.? All rights 
reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(
HOST=ipasdb)(PORT=1521)))
The command completed successfully.

$sqlplus internal/oracle

SQL*Plus: Release 8.1.7.0.0 - Production on Tue 
Sep 21 17:41:24 2004

(c) Copyright 2000 Oracle Corporation.? 
All rights reserved.


Connected to:
Oracle8i Enterprise Edition Release 8.1.7.3.0 - 64bit
 Production
With the Partitioning option
JServer Release 8.1.7.3.0 - 64bit Production

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

 

SQL>startup restrict (以受限模式启动数据库,为了防止其他用户登陆进来做相关操作,这时候只允许管理员登陆)

 

查找回滚段对应的表空间:

 

 

SQL> select tablespace_name,status from dba_tablespaces; 

TABLESPACE_NAME??????????????? STATUS
------------------------------ ---------
SYSTEM???????????????????????? ONLINE
TOOLS????????????????????????? ONLINE
RBS??????????????????????????? ONLINE
TEMP?????????????????????????? ONLINE
USERS????????????????????????? ONLINE
INDX?????????????????????????? ONLINE
DRSYS????????????????????????? ONLINE
WACOS????????????????????????? ONLINE
NMS??????????????????????????? ONLINE
TEST?????????????????????????? ONLINE
FS???????????????????????????? ONLINE
PERFSTAT?????????????????????? ONLINE

 

12rows selected.

 

回滚段表空间为RBS.

 

 

查看当前回滚段表空间里是否有活动的事物:

 

SQL> SELECT s.username,t.xidusn,t.ubafil,
t.ubablk,t.used_ublk? FROM
 v$session s,v$transaction t WHERE s.saddr=t.ses_addr;
no rows selected.

 

发现没有活动事物后,drop回滚段。

 

接下来查找回滚段存储参数信息:

 

SQL> col tablespace_name format a10
SQL> col SEGMENT_NAME format a12
SQL> set line 120
SQL> select SEGMENT_NAME,OWNER,TABLESPACE_NAME,
initial_extent,NEXT_EXTENT,MIN_EXTENTS,MAX_EXTENTS,
PCT_INCREASE from dba_rollback_segs;

 

 

SEGMENT_NAME OWNER? TABLESPACE INITIAL_EXTENT 
NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS PCT_INCREASE
------------ ------ ---------- -------------- ----------- -------
SYSTEM?????? SYS??? SYSTEM????????????? 57344?????? 57344????????
2???????? 505??????????? 0
RBS0???????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS1???????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS2???????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS3???????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS4???????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS5???????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS6???????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS7???????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS8???????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS9???????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS10??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS11??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS12??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS13??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS14??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS15??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS16??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS17??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS18??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS19??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS20??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS21??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS22??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS23??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS24??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS26??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS27??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS28??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
RBS25??????? PUBLIC RBS01????????????? 524288????? 524288????????
8??????? 4096??????????? 0
APPRBS?????? PUBLIC RBS01???????????? 2097152??? 10485760????????
50?????? 32765??????????? 0

 

31 rows selected.

 

把initial_extent,next_extent,min_extents,max_extents,pct_increase的值都记录下来,留做以后创建新的回滚段使用。

最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册