工作中遇到的ORACLE故障处理一例

原创 2005年05月16日 12:39:00

问题描述:

接到客户投诉,数据库的rbs表空间中数据文件rbs01.dbf大小超过10G,并一直在增长,另一个rbs02.dbf正常,大小为800M,目前该目录空间使用率已达87%,可用磁盘空间已剩不多,能否将rbs01,dbf数据文件回收,请提供解决问题的方法。

解决步骤:

1.拨号至现场,确认空间大小。

SQL> SELECT tablespace_name,max_m,count_blocks free_blk_cnt,sum_free_m,to_char(100*sum_free_m/sum_m, '99.99') || '%'
AS pct_free FROM (SELECT tablespace_name,sum(bytes)/1024/1024 AS sum_m FROM dba_data_files GROUP BY tablespace_name),
(SELECT tablespace_name AS fs_ts_name, max(bytes)/1024/1024 AS max_m,count(blocks) AS count_blocks,sum(bytes/1024/1024)
AS sum_free_m FROM dba_free_space GROUP BY tablespace_name) WHERE tablespace_name=fs_ts_name;

TABLESPACE_NAME                MAX_M FREE_BLK_CNT SUM_FREE_M PCT_FREE

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

NMS_STAT_IDX                   893.1            2     899.25  44.96%

RBS                              402          131 9563.98437  86.98%

2.查看回滚段的存储参数,发现OPTSIZE为空,致使回滚段无法自动收缩。告知现场,批量插入OPTSIZE值-每个20M后回滚段自动收缩。

SQL> SELECT n.name, s.extents, s.rssize, s.optsize,s.hwmsize, s.xacts, s.status FROM v$rollname n, v$rollstat s WHERE n.usn = s.usn;

NAME                           EXTENTS RSSIZE    OPTSIZE HWMSIZE XACTS STATUS

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

RBS0                                21 220119            2432614     0 ONLINE

RBS1                                21 220119            2432614     0 ONLINE

RBS2                                21 220119            2432614     0 ONLINE

RBS3                                21 220119            2422128     0 ONLINE

但此时表空间无法RESIZE,提示:

ALTER DATABASE DATAFILE '/opt/oracle/db02/oradata/ORCL/rbs01.dbf' RESIZE 4194304K

ORA-03297: file contains used data beyond requested RESIZE value

3.查看SYSTEM 回滚段的归属表空间,确认不在RBS表空间里――SYSTEM 回滚段表空间是SYSTEM.

SQL> SELECT owner, s.status, segment_name, f.file_name, f.bytes/1024/1024 "Size

    MB" FROM   dba_rollback_segs s, dba_data_files f WHERE  s.file_id = f.file_id; 

OWNER  STATUS           SEGMENT_NAME                   FILE_NAME                                                                           Size

MB

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

SYS    ONLINE           SYSTEM                         /opt/oracle/db02/oradata/ORCL/system01.dbf                                           900

PUBLIC ONLINE           RBS0                           /opt/oracle/db02/oradata/ORCL/rbs02.dbf                                                 800

PUBLIC ONLINE           RBS1                           /opt/oracle/db02/oradata/ORCL/rbs02.dbf                                                 800

PUBLIC ONLINE           RBS2                           /opt/oracle/db02/oradata/ORCL/rbs02.dbf                                                 800

PUBLIC ONLINE           RBS3                           /opt/oracle/db02/oradata/ORCL/rbs02.dbf                                                 800

PUBLIC ONLINE           RBS4                           /opt/oracle/db02/oradata/ORCL/rbs02.dbf                                                 800

....

PUBLIC ONLINE           RBS46                          /opt/oracle/db02/oradata/ORCL/rbs02.dbf                                                 800

PUBLIC ONLINE           RBS47                          /opt/oracle/db02/oradata/ORCL/rbs02.dbf                                                 800

PUBLIC ONLINE           RBS49                          /opt/oracle/db02/oradata/ORCL/rbs02.dbf                                                 800

PUBLIC ONLINE           RBS48                          /opt/oracle/db02/oradata/ORCL/rbs02.dbf                                                 800

 

4.创建临时替代的RBS表空间 RBS_TEMP,以及相应的回滚段RBS_TEMP_1,RBS_TEMP2, RBS_TEMP3..

SQL>CREATE TABLESPACE "RBS_TEMP" LOGGING

    DATAFILE '/opt/oracle/db02/oradata/ORCL/RBS_TEMP.dbf' SIZE

    500M EXTENT MANAGEMENT LOCAL;

SQL>create public rollback segment rbs_TEMP_1 tablespace RBS_TEMP;

SQL>create public rollback segment rbs_TEMP_2 tablespace RBS_TEMP;

SQL>create public rollback segment rbs_TEMP_3 tablespace RBS_TEMP;

SQL>alter rollback segment RBS_TEMP_1  online;

SQL>alter rollback segment RBS_TEMP_2  online;

SQL>alter rollback segment RBS_TEMP_3  online;

5.把RBS表空间中的回滚段全部OFFLINE,并且删除。

SQL>alter rollback segment RBS1 offline;

SQL>alter rollback segment RBS2 offline;

SQL>alter rollback segment RBS3 offline;

....

DROP ROLLBACK SEGMENT RBS1;

DROP ROLLBACK SEGMENT RBS2;

DROP ROLLBACK SEGMENT RBS3;

....

drop tablespace RBS; 

rm RBS 的数据文件。注意别删错。

 

6.从SPFILE中生成 PFILE 文件,修改INIT文件(由于是双机cluster,注意两台机器都要修改)。

把相应的rollback_segments='RBS0','RBS1','RBS2','RBS3','RBS4','RBS5','RBS6'。。。’RBS48’删除,并添加上'RBS_TEMP_1','RBS_TEMP_2','RBS_TEMP_3'。
(注意,如果不做此操作,数据库在启动时会报01092的错误,查看metalink,上面没有相应的CASE作为参考)

SQL> startup

ORACLE instance started.

 
Total System Global Area 1205480064 bytes

Fixed Size                   731776 bytes

Variable Size             486539264 bytes

Database Buffers          715825152 bytes

Redo Buffers                2383872 bytes

Database mounted.

ORA-01092: ORACLE instance terminated. Disconnection forced

 

7.创建RBS表空间,添加相应的 回滚段。注意修改INIT文件里的参数。 

遇到的问题:

(1).磁盘空间没有释放:

做第四步Rm 删除RBS数据文件时,发现磁盘空间没有释放。删除了10个G的数据文件,剩余空间还是1.9G.

$ df -k

Filesystem            kbytes    used   avail capacity  Mounted on

/dev/md/dsk/d10      62173692 13783150 47768806    23%    /

                     20971520 18513080 1931224    91%    /opt/oracle/db02

由于白天,没有敢做veritas命令的fsck. 也没有做cluster切换。

(2). cluster切换失败:

到了夜里,cluster切换发生失败,原因时INIT文件里RBS参数没有更新。数据库不能正常启动。

解决RBS参数后,数据库正常启动。 手工关闭数据库后,准备用CLUSTER去启动数据库。

用 scswitch –Z –g oracle 命令,发现数据库还是没有被cluster带起来,

查看vxdg list

NAME         STATE           ID

rootdg       enabled  1103770865.1025.sr_db2

ipasdg       enabled  1103772024.1098.sr_db2

root@sr_db2 # more /etc/vfstab

发现有如下条目存在:

/dev/vx/dsk/ipasdg/db02_vol     /dev/vx/rdsk/ipasdg/db02_vol    /opt/oracle/db02

        vxfs     2       no     -

/dev/vx/dsk/ipasdg/db03_vol     /dev/vx/rdsk/ipasdg/db03_vol    /opt/oracle/db03

        vxfs     2       no     -

/dev/vx/dsk/ipasdg/db04_vol     /dev/vx/rdsk/ipasdg/db04_vol    /opt/oracle/db04

        vxfs     2       no     -

/dev/vx/dsk/ipasdg/arch_vol     /dev/vx/rdsk/ipasdg/arch_vol    /opt/oracle/arch

        vxfs     2       no     -

/dev/vx/dsk/ipasdg/backup_vol   /dev/vx/rdsk/ipasdg/backup_vol  /backup vxfs

 2       no     -

手工mount /opt/oracle/db02,发现此时卷能够正常拉起来。依次把db03,db04,nms,wacos,backup.arch 卷拉起来。

此时df -k查看空间,发现空间已经释放。

root@sr_db2# mount /opt/oracle/db02

root@sr_db2 # df -k

Filesystem            kbytes    used   avail capacity  Mounted on

/dev/md/dsk/d20      62173692 8795392 52756564    15%    /

/proc                      0       0       0     0%    /proc

fd                         0       0       0     0%    /dev/fd

mnttab                     0       0       0     0%    /etc/mnttab

swap                 11375392     136 11375256     1%    /var/run

swap                 11375320      64 11375256     1%    /tmp

/dev/md/dsk/d60        99655    5001   84689     6%    /global/.devices/node@2

/dev/md/dsk/d50        99655    5001   84689     6%    /global/.devices/node@1

/dev/vx/dsk/ipasdg/db02_vol

                     20971520 7766192 13102168    38%    /opt/oracle/db02

scswitch –z –g oracle –h db1 切换到另外一个节点,正常。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java web 工作中遇到的一些问题

1、replaceAll()报错 public class Biaomi { public static void main(String[] args) { String a = "发大(...
  • xiaoyurencao
  • xiaoyurencao
  • 2016年01月26日 13:38
  • 695

记录自己学习心得以及工作中遇到问题的总结

第一次来这里写文章,以后会陆续更新其他文章。
  • xieming1601
  • xieming1601
  • 2016年09月10日 09:22
  • 193

Oracle锁表故障处理一例

一次开发人员直接在数据库服务器上做delete table操作系统,由时在上班高峰运行,造成长时间执行无反应,进而把SQLPLUS客户端关闭掉,再次运行删除语句,造成数据库运行缓慢。    询问操作...
  • dyllove98
  • dyllove98
  • 2014年11月25日 17:44
  • 1369

oracle rac常见问题

oracle rac其实维护起来也不复杂,但是有很多人遇到rac就害怕,我从经验角度给大家讲解一些: 1. 节点不能启动,可能一个或是两个 •存储无法正确识别 •磁盘权限 •操作系统集群软...
  • ylqiu1028
  • ylqiu1028
  • 2017年06月08日 20:48
  • 347

最近工作中遇到的问题以及解决方法总结

项目编译报错 linker command failed with exit code 1 (use -v to see invocation) 对着这个错误,很常见,但引起这个错误的原因却是千奇百...
  • u013749108
  • u013749108
  • 2017年08月25日 21:27
  • 396

2012年末工作中遇到的问题总结及感悟

新知识总结: 1:单点登录 验证系统;系统1; 系统2; 系统3;单独项目提供服务的思想 + cookie + filter;服务端能够处理客户端coolie 2:SOAP:简单对象访...
  • u013700340
  • u013700340
  • 2014年03月30日 19:36
  • 1143

oracle goldengate 故障处理一例

ogg找不到归档日志。 描述:由于长时间没启动ogg进程,源库的归档日志已经被清除,ogg的源库抽取进程卡住abend状态;查看ggserr.log,分析故障原因: 2017-09-26 13:4...
  • oqqtry1
  • oqqtry1
  • 2017年09月26日 14:29
  • 103

我在工作中遇到的JS问题汇总

1.tabmenu问题 这个问题我一直在网上参考源码,参考了很多源码,但是我感觉很难处理,我自己困惑的地方有这样几点。 1、我只能通过getElementById(“tab”)在读...
  • aVeCathleen
  • aVeCathleen
  • 2015年08月19日 11:31
  • 1051

近期工作中遇到的一些问题总结

1.城市列表数据的更新,可以加入版本控制这个概念,每次进入时先比对本地版本号跟服务器版本号是否一致,不一致去网络进行请求来进行城市数据的更新. 2.解析字典的脚本,将字典字符串拷贝到txt文档,cd...
  • q364385155
  • q364385155
  • 2015年12月22日 17:42
  • 843

2015年工作中遇到的10个问题:1-10

1.NullPointerException。内容分类存在脏数据,导致报错,需要判断变量是否为Null。查看内容,id不合法,没有找到这条内容,需要判断是否有值,如果为null,跳转到404页面。2....
  • FansUnion
  • FansUnion
  • 2015年01月08日 21:11
  • 1837
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:工作中遇到的ORACLE故障处理一例
举报原因:
原因补充:

(最多只允许输入30个字)