oracle undo数据文件坏,oracle undo数据文件损坏故障处理案例
oracleundo数据文件损坏故障处理案例
大家都知道Oracle的数据都存储在数据文件中,undo表空间存储的数据是某些变更操作的前镜像以及一致性读数据,而且undo表空间是循环利用的,一段时间后会自动释放空间。近期遇到一个undo表空间的文件损坏的问题,导致数据库只能mount,不能open。由于没有备份,无法使用备份进行恢复,最后通过重建undo表空间,达到恢复的目的。这里把该故障的处理过程,拿出来分享一下。
故障现象:
odb1.test.com-PROD1> sqlplus '/as sysdba'
SQL*Plus: Release 11.2.0.1.0 Production on Tue Dec 26 18:28:22 2016
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 6680915968 bytes
Fixed Size 2213936 bytes
Variable Size 4294969296 bytes
Database Buffers 2348810240 bytes
Redo Buffers 34922496 bytes
Database mounted.
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-01578: ORACLE data block corrupted (file # 3, block # 144)
ORA-01110: data file 3: '/u01/app/oracle/oradata/devdb/undotbs01.dbf'
Process ID: 13013
Session ID: 1057 Serial number: 3
查看alert日志
SMON: enabling cache recovery
Errors in file /u01/app/oracle/diag/rdbms/devdb/devdb/trace/devdb_ora_13013.trc (incident=84178):
ORA-01578: ORACLE data block corrupted (file # 3, block # 144)
ORA-01110: data file 3: '/u01/app/oracle/oradata/devdb/undotbs01.dbf'
Incident details in: /u01/app/oracle/diag/rdbms/devdb/devdb/incident/incdir_84178/devdb_ora_13013_i84178.trc
Tue Dec 26 18:28:51 2016
Trace dumping is performing id=[cdmp_20160826182851]
Errors in file /u01/app/oracle/diag/rdbms/devdb/devdb/trace/devdb_ora_13013.trc:
ORA-01578: ORACLE data block corrupted (file # 3, block # 144)
ORA-01110: data file 3: '/u01/app/oracle/oradata/devdb/undotbs01.dbf'
Errors in file /u01/app/oracle/diag/rdbms/devdb/devdb/trace/devdb_ora_13013.trc:
ORA-01578: ORACLE data block corrupted (file # 3, block # 144)
ORA-01110: data file 3: '/u01/app/oracle/oradata/devdb/undotbs01.dbf'
Error 1578 happened during db open, shutting down database
USER (ospid: 13013): terminating the instance due to error 1578
Instance terminated by USER, pid = 13013
ORA-1092 signalled during: ALTER DATABASE OPEN...
opiodr aborting process unknown ospid (13013) as a result of ORA-1092
Tue Dec 26 18:28:54 2016
ORA-1092 : opitsk aborting process
查看错误代码
odb1.test.com-PROD1> oerr ora 01578
01578, 00000, "ORACLE data block corrupted (file # %s, block # %s)"
// *Cause: The data block indicated was corrupted, mostly due to software
// errors.
// *Action: Try to restore the segment containing the block indicated. This
// may involve dropping the segment and recreating it. If there
// is a trace file, report the errors in it to your ORACLE
// representative.
从上面的信息可以看出undo表空间的文件/u01/app/oracle/oradata/devdb/undotbs01.dbf有块损坏,导致数据库只能mount,不能open。
解决方法:
因没有备份,无法使用备份进行恢复。而undo表空间中没有业务数据,所以可以新建一个undo表空间,将现有undo表空间切换到新的undo表空间,再删除原来的undo空间,以达到恢复的目的。
新建一个undo表空间,并将数据库的undo表空间切换到新的undo表空间
odb1.test.com-PROD1> sqlplus '/as sysdba'
SQL*Plus: Release 11.2.0.1.0 Production on Tue Dec 26 18:28:22 2016
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL>
SQL> startup mount;
ORACLE instance started.
Total System Global Area 6680915968 bytes
Fixed Size 2213936 bytes
Variable Size 4294969296 bytes
Database Buffers 2348810240 bytes
Redo Buffers 34922496 bytes
Database mounted.
SQL>
SQL> alter database datafile '/u01/app/oracle/oradata/devdb/undotbs01.dbf' offline for drop;
Database altered.
SQL> alter database open;
Database altered.
SQL> show parameter undo_tablespace
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_tablespace string UNDOTBS1
SQL>
SQL> select a.name tbs_name,b.name file_name,bytes/1024/1024 mb
2 from v$tablespace a,v$datafile b
3 where a.ts#=b.ts# and
4 a.name like 'UNDO%';
TBS_NAME FILE_NAME MB
--------- --------------------------------------------- ----------
UNDOTBS1 /u01/app/oracle/oradata/devdb/undotbs01.dbf 25
UNDOTBS1 /u01/app/oracle/oradata/devdb/undotbs02.dbf 20480
UNDOTBS1 /u01/app/oracle/oradata/devdb/undotbs03.dbf 10240
SQL > create undo tablespace undotbs2 datafile
2 '/u01/app/oracle/oradata/devdb/undo01.dbf' size 25m
3 blocksize 8192
4 extent management local autoallocate;
Tablespace created.
SQL> alter tablespace undotbs2 add datafile '/u01/app/oracle/oradata/devdb/undo02.dbf' size 20480m autoextend off;
Tablespace altered.
SQL> alter tablespace undotbs2 add datafile '/u01/app/oracle/oradata/devdb/undo03.dbf' size 10240m autoextend off;
Tablespace altered.
SQL> alter system set undo_tablespace='UNDOTBS2';
System altered.
接下来的任务是删除原来的undo表空间
SQL> drop tablespace UNDOTBS1 including contents and datafiles;
drop tablespace UNDOTBS1 including contents and datafiles
*
ERROR at line 1:
ORA-01548: active rollback segment '_SYSSMU2_2232571081$' found, terminate dropping tablespace
SQL>
SQL> alter rollback segment '_SYSSMU2_2232571081$' offline;
alter rollback segment '_SYSSMU2_2232571081$' offline
*
ERROR at line 1:
ORA-02245: invalid ROLLBACK SEGMENT name
SQL>
SQL> col segment_name for a40
SQL> select segment_name,status from dba_rollback_segs;
SEGMENT_NAME STATUS
---------------------------------------- ------------------------------------------------------------
SYSTEM ONLINE
_SYSSMU96_2626855311$ OFFLINE
_SYSSMU95_2867914157$ OFFLINE
_SYSSMU94_2165995008$ OFFLINE
_SYSSMU93_2152957113$ OFFLINE
_SYSSMU92_378936285$ OFFLINE
_SYSSMU91_2887910803$ OFFLINE
_SYSSMU90_1914376299$ OFFLINE
_SYSSMU89_3881621438$ OFFLINE
_SYSSMU88_2795609499$ OFFLINE
_SYSSMU87_2407539561$ OFFLINE
_SYSSMU86_692627908$ OFFLINE
_SYSSMU85_856006933$ OFFLINE
_SYSSMU84_3829382194$ OFFLINE
_SYSSMU83_2565948183$ OFFLINE
_SYSSMU82_3891756263$ OFFLINE
_SYSSMU81_1952400690$ OFFLINE
_SYSSMU80_2845645998$ OFFLINE
_SYSSMU79_3808344055$ OFFLINE
_SYSSMU78_410897117$ OFFLINE
_SYSSMU29_4019643210$ OFFLINE
_SYSSMU28_90219721$ OFFLINE
_SYSSMU27_3088239721$ OFFLINE
_SYSSMU116_3119609620$ OFFLINE
_SYSSMU115_720301610$ OFFLINE
_SYSSMU114_1114091232$ OFFLINE
_SYSSMU113_1292246933$ OFFLINE
_SYSSMU42_3016116591$ OFFLINE
_SYSSMU53_2737708235$ OFFLINE
_SYSSMU52_2324266352$ OFFLINE
_SYSSMU51_222690711$ OFFLINE
_SYSSMU50_1983357937$ OFFLINE
_SYSSMU49_1088943503$ OFFLINE
_SYSSMU48_2674714980$ OFFLINE
_SYSSMU47_661180824$ OFFLINE
_SYSSMU46_3208608042$ OFFLINE
_SYSSMU45_454557363$ OFFLINE
_SYSSMU44_3986437198$ OFFLINE
_SYSSMU24_3631703957$ OFFLINE
_SYSSMU23_1173087710$ OFFLINE
_SYSSMU22_584541464$ OFFLINE
_SYSSMU21_2292998292$ OFFLINE
_SYSSMU25_3038758983$ OFFLINE
_SYSSMU74_299654288$ OFFLINE
_SYSSMU73_3176796502$ OFFLINE
_SYSSMU19_3298206699$ OFFLINE
_SYSSMU72_401746350$ OFFLINE
_SYSSMU18_3359877885$ OFFLINE
_SYSSMU41_2402883085$ OFFLINE
_SYSSMU40_1522189554$ OFFLINE
_SYSSMU39_2650049634$ OFFLINE
_SYSSMU38_2701885968$ OFFLINE
_SYSSMU17_968918022$ OFFLINE
_SYSSMU26_1190614032$ OFFLINE
_SYSSMU20_495695921$ OFFLINE
_SYSSMU37_4110619942$ OFFLINE
_SYSSMU36_3643017941$ OFFLINE
_SYSSMU35_614315702$ OFFLINE
_SYSSMU34_1969767758$ OFFLINE
_SYSSMU33_2182944988$ OFFLINE
_SYSSMU32_94718422$ OFFLINE
_SYSSMU31_3942797337$ OFFLINE
_SYSSMU71_3232828223$ OFFLINE
_SYSSMU70_435663053$ OFFLINE
_SYSSMU30_1048661479$ OFFLINE
_SYSSMU76_445013758$ OFFLINE
_SYSSMU75_1918435484$ OFFLINE
_SYSSMU58_4222240783$ OFFLINE
_SYSSMU57_1910590958$ OFFLINE
_SYSSMU64_2780552157$ OFFLINE
_SYSSMU16_3854717229$ OFFLINE
_SYSSMU15_2116662486$ OFFLINE
_SYSSMU14_2962806949$ OFFLINE
_SYSSMU13_3749295798$ OFFLINE
_SYSSMU12_3394647099$ OFFLINE
_SYSSMU63_485997380$ OFFLINE
_SYSSMU11_2947740095$ NEEDS RECOVERY
_SYSSMU62_1492349711$ OFFLINE
_SYSSMU61_626367163$ OFFLINE
_SYSSMU60_2068943566$ OFFLINE
_SYSSMU59_2657580527$ OFFLINE
_SYSSMU112_2240178017$ OFFLINE
_SYSSMU111_2453840524$ OFFLINE
_SYSSMU110_652407272$ OFFLINE
_SYSSMU109_3438362491$ OFFLINE
_SYSSMU108_4276478778$ OFFLINE
_SYSSMU107_2686253572$ OFFLINE
_SYSSMU106_3680037555$ OFFLINE
_SYSSMU105_3007023178$ OFFLINE
_SYSSMU104_3120922276$ OFFLINE
_SYSSMU103_538076310$ OFFLINE
_SYSSMU102_3671989609$ OFFLINE
_SYSSMU101_2743965288$ OFFLINE
_SYSSMU100_1182363132$ OFFLINE
_SYSSMU99_2272327060$ OFFLINE
_SYSSMU98_1965528134$ OFFLINE
_SYSSMU97_1780218387$ OFFLINE
_SYSSMU56_3644558235$ OFFLINE
_SYSSMU55_2671154422$ OFFLINE
_SYSSMU54_2554729950$ OFFLINE
_SYSSMU69_4011435110$ OFFLINE
_SYSSMU68_3213539103$ OFFLINE
_SYSSMU67_26050221$ OFFLINE
_SYSSMU66_247782248$ OFFLINE
_SYSSMU65_738935852$ OFFLINE
_SYSSMU77_2247174000$ OFFLINE
_SYSSMU43_3172529003$ OFFLINE
_SYSSMU10_3550978943$ NEEDS RECOVERY
_SYSSMU9_1424341975$ NEEDS RECOVERY
_SYSSMU8_2012382730$ NEEDS RECOVERY
_SYSSMU7_3286610060$ NEEDS RECOVERY
_SYSSMU6_2443381498$ NEEDS RECOVERY
_SYSSMU5_1527469038$ NEEDS RECOVERY
_SYSSMU4_1152005954$ NEEDS RECOVERY
_SYSSMU3_2097677531$ NEEDS RECOVERY
_SYSSMU2_2232571081$ NEEDS RECOVERY
_SYSSMU126_4033829179$ ONLINE
_SYSSMU125_2942360563$ ONLINE
_SYSSMU124_325088493$ ONLINE
_SYSSMU123_2580600680$ ONLINE
_SYSSMU122_3203705780$ ONLINE
_SYSSMU121_1289592678$ ONLINE
_SYSSMU120_3020831237$ ONLINE
_SYSSMU119_67481394$ ONLINE
_SYSSMU118_1121899644$ ONLINE
_SYSSMU117_3200636936$ ONLINE
126 rows selected.
SQL> show parameter spfile
NAME TYPE VALUE
----------------------------------- ----------- ------------------------------
spfile string /u01/app/oracle/product/11.2/dbs/spfiledevdb.ora
SQL> create pfile='/oracle/tmp.ora' from spfile;
File created.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
上面标红的部分是有问题的,通过一个隐含参数将其屏蔽掉,就可以删除undotbs1表空间。
odb1.test.com-PROD1> vi tmp.ora
devdb.__db_cache_size=2348810240
devdb.__java_pool_size=134217728
devdb.__large_pool_size=67108864
devdb.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
devdb.__pga_aggregate_target=2348810240
devdb.__sga_target=4362076160
devdb.__shared_io_pool_size=0
devdb.__shared_pool_size=1677721600
devdb.__streams_pool_size=67108864
*.audit_file_dest='/u01/app/oracle/admin/devdb/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/devdb/control01.ctl','/u01/app/oracle/oradata/devdb/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='devdb'
*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=4070572032
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=devdbXDB)'
*.memory_target=6677331968
*.open_cursors=300
*.processes=1000
*.recyclebin='OFF'
*.remote_login_passwordfile='NONE'
*.undo_tablespace='UNDOTBS2'
*._corrupted_rollback_segments=(_SYSSMU11_2947740095$,_SYSSMU10_3550978943$,_SYSSMU9_1424341975$,_SYSSMU8_2012382730$,_SYSSMU7_3286610060$,_SYSSMU6_2443381498$,_SYSSMU5_1527469038$,_SYSSMU4_1152005954$,_SYSSMU3_2097677531$,_SYSSMU2_2232571081$)
odb1.test.com-PROD1> sqlplus '/as sysdba'
SQL*Plus: Release 11.2.0.1.0 Production on Tue Dec 26 18:28:22 2016
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup pfile='/oracle/tmp.ora';
ORACLE instance started.
Total System Global Area 6680915968 bytes
Fixed Size 2213936 bytes
Variable Size 4294969296 bytes
Database Buffers 2348810240 bytes
Redo Buffers 34922496 bytes
Database mounted.
Database opened.
SQL>
SQL> drop tablespace UNDOTBS1 including contents and datafiles;
Tablespace dropped.
SQL>
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL>startup
ORACLE instance started.
Total System Global Area 6680915968 bytes
Fixed Size 2213936 bytes
Variable Size 4294969296 bytes
Database Buffers 2348810240 bytes
Redo Buffers 34922496 bytes
Database mounted.
Database opened.
SQL> select a.name tbs_name,b.name file_name,bytes/1024/1024 mb
2 from v$tablespace a,v$datafile b
3 where a.ts#=b.ts# and
4 a.name like 'UNDO%';
TBS_NAME FILE_NAME MB
--------- --------------------------------------------- ----------
UNDOTBS2 /u01/app/oracle/oradata/devdb/undo01.dbf 25
UNDOTBS2 /u01/app/oracle/oradata/devdb/undo02.dbf 20480
UNDOTBS2 /u01/app/oracle/oradata/devdb/undo03.dbf 10240
至此,undo表空间成功恢复,问题解决。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24626891/viewspace-2131692/,如需转载,请注明出处,否则将追究法律责任。
oracle undo数据文件坏,oracle undo数据文件损坏故障处理案例相关推荐
- oracle undo数据文件坏,oracle回退文件UNDOTBS01.DBF损坏的处理
oracel回退文件UNDOTBS01.DBF损坏后,oracle数据库不能装载,数据无法读取.上星期五,jh区局发生了这种情况. 发生问题后有两种处理方式:有备份的情况和没有备份的情况: 有备份的情 ...
- oracle数据块坏,Oracle数据块损坏解决办法
背景: 1.PDM(Windchill)系统 2.exp数据错误,没有rman备份数据 3.数据库trc文件报错 Dump file d:\oracle\admin\wind\udump\wind_o ...
- asm 查看 数据文件 修改 时间_ASM磁盘组ORA15042故障处理案例一:NORMAL磁盘组下失败组离线后ORA15042报错的处理...
点击上方蓝字关注我们- 我们的文章会在微信公众号"Oracle恢复实录"和博客网站"rescureora.com" 同步更新 ,欢迎关注收藏,也欢迎大家转载,但 ...
- oracle 11g dul,学习笔记:Oracle dul数据挖掘 导出Oracle11G数据文件坏块中表中
试验模拟导出Oracle 11G数据库中数据文件坏块中表中的数据 以前一直以为dul对应的版本只能恢复最高的数据库版本一致,今天测试发现dul 10可以恢复11g最新版的数据库. 模拟环境SQL> ...
- oracle undo段的作用,Oracle数据库中Undo数据段的作用及类型
Undo数据段的作用: 事务回滚(Transaction Rollback):程序执行rollback操作. 事务修复(Transaction Recovery):rollback是recovery的 ...
- Oracle ADG备库SYSAUX数据文件坏块恢复处理(ORA-00600,ORA-10567,ORA-10564......
点击上方"蓝字" 关注我们,享更多干货! 本文阐述了Oracle ADG备库SYSAUX数据文件坏块恢复处理(ORA-00600,ORA-10567,ORA-10564,ORA-0 ...
- oracle中数据文件创建,操作oracle中的数据文件
收藏于http://dev.yesky.com/296/8090796.shtml Oracle数据库 中管理表空间和数据文件 数据库的三大组成部分:数据文件,控制文件,Redo日志. 表空间分为系统 ...
- oracle表空间文件离线,oracle 表空间 数据文件 笔记
数据文件命令 Enabling and Disabling Automatic Extension for a Datafile: ALTER TABLESPACE users ADD DATAFIL ...
- oracle 如何添加数据文件,在Oracle数据库里插入excel文件数据的步骤
以下的文章我们主要介绍的是如何用SQL*Loader把Excel数据导出到Oracle中,最终的实现目的是往Oracle数据库里,插入excel文件中的相关数据,以下就是实现目的是往Oracle数据库 ...
最新文章
- McAfee安装后无法启动服务的解决办法
- linux上进程状态查询
- Spring - Java/J2EE Application Framework 应用框架 第 9 章 DAO支持
- go linux环境搭建,Linux 下 Go 环境搭建以及 Gin 安装
- 2014第6周六退火车票
- 整数域上的多项式辗转相除
- Exynos4412 内核移植(七)—— 内核相关知识补充
- ebs oracle 落伍了吗_向不了解oracle EBS的人介绍Oracle EBS
- python多线程编程
- 单片机ADC采样算法----递推平均值采样法
- CUDA/CUDNN下载安装以及适配pytorch和tensorflow
- ccrpipa6.ocx 和mswinsck.ocx 等文件缺失问题解决(用于TCP调试助手)
- 二重积分计算曲面表面积
- 关于SBUF读两次的问题
- 网络安全系统教程+渗透测试+学习路线(自学笔记)
- Android背光系统实现
- s60v5全屏幕java_【转】 最新消息 ● S60v5官方华丽升级塞班^3系统java v2.1(亲测有效)...
- 湖北大学计算机考入清华,当年以749分考入清华大学的高考状元王端鹏,现状如何呢?...
- oracle的账户无法注册表,oracle用户账号在哪注册表ORA-12514问题解决
- 有趣的CSS实现“勾号”
热门文章
- managed code和unmanaged code混合debug
- Google Maps JavaScript API V3 官方网站
- Developer's Guide to Microsoft Enterprise Library, C# Edition
- word2vec原理知识铺垫
- .net MVC之表单的使用
- Python学习_4_if_while_for
- BZOJ 2226 [Spoj 5971] LCMSum 最大公约数之和 | 数论
- 第一章 微服务网关 - 入门
- PHP计划任务:如何使用Linux的Crontab执行PHP脚本(转载)
- CSS3渐变——线性渐变