美文网首页
undo表空间损坏的处理方式

undo表空间损坏的处理方式

作者: 个人精进成长营 | 来源:发表于2021-07-02 07:58 被阅读0次

UNDO 表空间损坏的恢复方法

一般Undo 表空间损坏的情况下,数据库都已不能正常打开了。启动时都会报类似如下的错误:

ORA-01157: cannot identify/lock data file 12 - see DBWR trace file

ORA-01110: data file 12: '/d01/oramtest/proddata/undo01.dbf'

要想解决问题,必须重建UNDO 表空间,但是如果不open, 就不能重建创建undo 表空间。 所以可以先用系统默认的undo 表空间:system rollback segment 来启动数据库,再创建UNDO 表空间。

1.1 创建pfile 文件

SQL> create pfile='F:/initorcl.ora' from spfile;

文件已创建。

1.2 修改pfile文件

#*.undo_tablespace='UNDOTBS1'

#*.undo_management='AUTO'

undo_management='MANUAL'

rollback_segments='SYSTEM'

1.3 启动数据库至Mount 状态

SQL> STARTUP MOUNT pfile='F:/initorcl.ora' ;

1.4 offline drop undo 表空间

SQL> ALTER DATABASE DATAFILE 'D:/app/Administrator/oradata/orcl/UNDOTBS01.DBF' OFFLINE DROP;

1.5 open 数据库

SQL> ALTER DATABASE OPEN;

1.6 删除旧的undo 表空间

SQL> DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS; 

注:该命令不会删除物理文件。 要想一起删除物理文件需要 AND DATAFILES CASCADE CONSTRAINTS ;

如:  drop tablespace UNDOTBS1 including contents AND DATAFILES CASCADE CONSTRAINTS ;

1.7 创建新的UNDO 表空间

SQL> create undo tablespace undotbs1 datafile 'D:/app/Administrator/oradata/orcl/UNDOTBS01.DBF' size 100M ;

create undo tablespace undotbs1 datafile 'D:/app/Administrator/oradata/orcl/UNDOTBS01.DBF' size 100M

*

第 1 行出现错误:

ORA-01119: 创建数据库文件 'D:/app/Administrator/oradata/orcl/UNDOTBS01.DBF'时出错

ORA-27038: 所创建的文件已存在

OSD-04010: 指定了 <create> 选项, 但文件已经存在

因为我们之前删除时并没有删除物理文件,所以在建同名文件时就会报错。 我们可以加上REUSE 参数。 只要文件不在使用,就可以重写已经存在的文件。

SQL> create undo tablespace undotbs1 datafile 'D:/app/Administrator/oradata/orcl/UNDOTBS01.DBF' size 100M reuse;

表空间已创建。

1.8  shutdown 数据库 并将pfile 改回

SQL> select name,issys_modifiable from v$parameter where name='undo_management' or name='rollback_segments';

NAME            ISSYS_MOD

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

rollback_segments    FALSE

undo_management    FALSE

从上面查询的结果,可以知道修改这2个参数必须重启数据,所以还是shutdown 吧。

SQL> shutdown immediate

1.9 修改pfile 参数

*.undo_tablespace='UNDOTBS1'

*.undo_management='AUTO'

#undo_management='MANUAL'

#rollback_segments='SYSTEM'

1.10 用刚才修改的pfile 启动数据库,并创建spfile

SQL> startup pfile='F:/initorcl.ora' ;

SQL> create spfile from pfile='F:/initorcl.ora';

1.10 再次shutdown,用spfile 启动.

SQL> shutdown immediate

SQL> startup

相关文章

  • undo表空间损坏的处理方式

    UNDO 表空间损坏的恢复方法 一般Undo 表空间损坏的情况下,数据库都已不能正常打开了。启动时都会报类似如下的...

  • oracle删除undo临时文件

    1-查询undo对应的表空间 2-创建新的表空间 3-设置undo的表空间为新的表空间 4- 删除旧的表空间 5-...

  • 表空间

    系统表空间独立表空间临时表空间 #5.7+undo tablespace #5.6+Genera...

  • MySQL:8.0.21版本特性

    一、新特性 Mysql和Innodb增强: 1、undo可以新增表空间mysql> CREATE UNDO TAB...

  • oracle管理(十六)性能调优

    插入速度(imp、impdp): 临时表空间调大undo表空间调大redo日志文件的个数、大小 临时表空间:TEM...

  • Undo 表空间管理

    What is Undo 当发布一条回滚语句时,撤销记录用于撤销未提交事务读数据库所做的修改。 在数据...

  • oracle undo表空间的切换

    环境 centos7,oracle11 1、新建 用oracle用户登陆sqlplus / as sysdba ...

  • 在ubuntu下将dmp数据导入Oracle的常用命令

    0.导入文件很大时需要加一个undo表空间(如果不大,可跳过) 1.这一句是创建一个临时表空间,表空间的名称就是b...

  • InnoDB多版本并发控制MVCC

    前言 InnoDB维护旧版本数据来支持事务并发和回滚。旧版本信息会存储在系统表空间或者undo表空间里,以回滚段(...

  • 12-mysql

    难点:表空间 redo/undo 半同步复制 高可用 MySQL架构原理和存储机制MySQL体系结构(内存结构...

网友评论

      本文标题:undo表空间损坏的处理方式

      本文链接:https://www.haomeiwen.com/subject/hnheultx.html