工作中遇到的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 切换到另外一个节点,正常。

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

Oracle锁表故障处理一例

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

个人windows工作中故障集合

在windows server中利用Serv-U15.1搭建FTP服务时,内网访问正常,通过路由动态域名映射端口从外网访问失败,提示: 连接ftp服务器时发生错误,请检查是否有权限将文件放到该服务器上...

IT故障排查工作中的六条不变法则

【51CTO精选译文】IT运维大师是每个人追寻的梦想,他们那敏锐的嗅觉似乎总能揪出计算系统故障的根本原因。这种快速反应、准确定位的能力源自多年来处理复杂数据中心基础设施难题的经验积累与个人知识储备,而...

Oracle 10g EM管理器故障一例剖析

在使用Oracle 10g数据库的过程中,如何修改了计算机名称或者Oracle的配置以后,Oracle Enterprise Manager管理器会出现故障,导致Database Control那一项...

oracle安装前准备工作中的安装包

  • 2007年07月24日 18:01
  • 2.33MB
  • 下载

工作中itext遇到的一些问题,做一下处理总结(2012.06.19)

通过itext生成pdf出现的问题,在JTable2PDF类中,当生成pdf中table的时,出现一个问题。 Cell cell1 = new Cell(newParagraph("Reservoi...

工作中oracle常用总结SQL语句汇总

  • 2012年10月31日 15:11
  • 13KB
  • 下载

工作中遇到的关于C#字符串处理小问题。《记录经验》

C#字符处理经验之谈。
  • Agou_66
  • Agou_66
  • 2016年04月16日 17:31
  • 2434
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:工作中遇到的ORACLE故障处理一例
举报原因:
原因补充:

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