重庆思庄Oracle、、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 93|回复: 0
打印 上一主题 下一主题

[Oracle] ORA-00214 undo表空间文件损坏

[复制链接]
跳转到指定楼层
楼主
发表于 3 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现象描述
数据库所在机器异常断电导致启动失败,系统显示如下错误信息:

ORA-00214: control file '/opt/oracle/db/oradata/iptvmdn/lv_control2tbs' version
117553 inconsistent with file '/opt/oracle/db/oradata/iptvmdn/lv_control1tbs'


可能原因
异常断电导使undo表空间文件损坏,数据库启动失败。
处理步骤

以oracle用户登录数据库所在机器。
以sysdba用户连接数据库。
% sqlplus / as sysdba

通过spfile文件创建一个临时的pfile文件。
SQL> create pfile=’$ORACLE_HOME/dbs/temp_pfile_ora’ from spfile;

退出sqlplus
SQL> quit

在该pfile文件最后添加*.undo_management=‘MANUAL’。
% vi $ORACLE_HOME/dbs/temp_pfile_ora

在此文件最后添加*.undo_management=‘MANUAL’。
注:在MANUAL模式无法切换undo表空间。

以sysdba用户连接数据库。
% sqlplus / as sysdba

使用临时pfile文件启动数据库。
SQL> startup pfile=$ORACLE_HOME/dbs/temp_pfile_ora;

如果还是无法启动数据库,可以将表空间文件offline。
数据库启动成功,显示如下信息。

ORACLE instance started.

Total System Global Area 4142166016 bytes
Fixed Size 2166208 bytes
Variable Size 2214593088 bytes
Database Buffers 1912602624 bytes
Redo Buffers 12804096 bytes
Database mounted.
Database opened.

查看并记录回滚段信息。
SQL> select SEGMENT_NAME from dba_rollback_segs;

关闭数据库。
SQL> shutdown immediate;

修改临时pfile文件。
a.删除“*.undo_management=‘MANUAL’”。
b. 添加如下内容。
_corrupted_rollback_segments=(_SYSSMU1_1192403689$,_SYSSMU2_1192403689$,_SYSSMU3_1192403689$,_SYSSMU4_1192403689$,_SYSSMU5_1192403689$,_SYSSMU6_1192403689$,_SYSSMU7_1192403689$,_SYSSMU8_1192403689$,_SYSSMU9_1192403689$,_SYSSMU10_1192403689$)

括号中的内容为8中的查询结果。

使用临时pfile文件启动数据库。
SQL> startup pfile=$ORACLE_HOME/dbs/temp_pfile_ora;

启动成功,系统显示如下信息:

ORACLE instance started.

Total System Global Area 4142166016 bytes
Fixed Size 2166208 bytes
Variable Size 2214593088 bytes
Database Buffers 1912602624 bytes
Redo Buffers 12804096 bytes
Database mounted.
Database opened.

重建undo表空间。
SQL> CREATE UNDO TABLESPACE undotbs02 DATAFILE ‘/var/tmp/cssd_mdn/myundo.dbf' SIZE 2G;

SQL> alter system set undo_tablespace = undotbs2;

SQL> drop tablespace UNDOTBS1 including contents cascade constraints;

SQL> CREATE UNDO TABLESPACE undotbs01 DATAFILE ‘/dev/oramdn_dg/lv_undotbs’ size 9G;

SQL> autoextentd off;

SQL> alter system set undo_tablespace = UNDOTBS1;

关闭数据库。
SQL> shutdown immediate;

重启数据库。
SQL> startup

启动成功,系统显示如下信息:

OORACLE instance started.

Total System Global Area 4142166016 bytes
Fixed Size 2166208 bytes
Variable Size 2214593088 bytes
Database Buffers 1912602624 bytes
Redo Buffers 12804096 bytes
Database mounted.
Database opened.


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2025-5-14 06:45 , Processed in 0.086795 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表