重做undo表空间

场景:

alert日志,报了如下错误:

[oraprod@arpinfo bdump]$ tail -f alert_PROD.log
Errors in file /ora1159/prod/proddb/9.2.0/admin/PROD_arpinfo/udump/prod_ora_8729.trc:
ORA-00603: ORACLE server session terminated by fatal error
ORA-00600: internal error code, arguments: [4097], [], [], [], [], [], [], []
Fri Sep 6 10:08:56 2019
Errors in file /ora1159/prod/proddb/9.2.0/admin/PROD_arpinfo/udump/prod_ora_8785.trc:
ORA-00600: internal error code, arguments: [4097], [], [], [], [], [], [], []
Fri Sep 6 10:08:59 2019
Errors in file /ora1159/prod/proddb/9.2.0/admin/PROD_arpinfo/udump/prod_ora_8785.trc:
ORA-00603: ORACLE server session terminated by fatal error
ORA-00600: internal error code, arguments: [4097], [], [], [], [], [], [], []

原因

The following error is occurring in the alert.log right before the database crashes.

ORA-00600: internal error code, arguments: [4194], [#], [#], [], [], [], [], []

This error indicates that a mismatch has been detected between redo records and rollback (undo) records.

ARGUMENTS:

Arg [a] - Maximum Undo record number in Undo block

Arg [b] - Undo record number from Redo block

Since we are adding a new undo record to our undo block, we would expect that the new record number is equal to the maximum record number in the undo block plus one. Before Oracle can add a new undo record to the undo block it validates that this is correct. If this validation fails, then

an ORA-600 [4194] will be triggered.

其核心原因是:undo超过了它最大的量。重建undo表空间,此次unlimited。

1.查看undo的参数

SQL> show parameter undo;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 1800
undo_suppress_errors boolean FALSE
undo_tablespace string UNDOTBS7

2.修改undo_retention参数

SQL> ALTER SYSTEM SET undo_retention=900 SCOPE=BOTH;
ALTER SYSTEM SET undo_retention=900 SCOPE=BOTH
*
ERROR at line 1:
ORA-32001: write to SPFILE requested but no SPFILE specified at startup

3.以spfile的方式启动数据库

-------------------------------以spfile启动数据库
SQL> create spfile from pfile;
File created.
-------------------------------重启数据库
SQL> shutdown immediate;
SQL> startup -------------------------------修改undo_retention
SQL> ALTER SYSTEM SET undo_retention=900 SCOPE=BOTH;
System altered.

4.创建UNDOTBS8表空间

SQL> create undo tablespace UNDOTBS8 datafile '/ora1159/prod/proddata/UNDOTBS8.dbf' size 256M autoextend on next 128M maxsize unlimited;

Tablespace created.

5.查询历史undo是否还有事务(包含回滚事务)

SELECT a.tablespace_name,a.segment_name,b.ktuxesta,b.ktuxecfl,
b.ktuxeusn||'.'||b.ktuxeslt||'.'||b.ktuxesqn trans
FROM dba_rollback_segs a, x$ktuxe b
WHERE a.segment_id = b.ktuxeusn
AND a.tablespace_name = UPPER('&tsname')
AND b.ktuxesta <> 'INACTIVE';
Enter value for tsname: UNDOTBS7
old 5: AND a.tablespace_name = UPPER('&tsname')
new 5: AND a.tablespace_name = UPPER('UNDOTBS7') no rows selected

如果没有数据,可以进行undo表空间切换。

6.切换undo表空间

alter system set undo_tablespace='UNDOTBS8';

7.查询回滚段情况

原undo表空间的回滚段全部offline,可以删除相关表空间

SQL> select tablespace_name,segment_name,status from dba_rollback_segs;

TABLESPACE_NAME                SEGMENT_NAME                   STATUS
------------------------------ ------------------------------ ----------------
SYSTEM SYSTEM ONLINE
UNDOTBS7 _SYSSMU2$ OFFLINE
UNDOTBS7 _SYSSMU3$ OFFLINE
UNDOTBS7 _SYSSMU4$ OFFLINE
UNDOTBS7 _SYSSMU5$ OFFLINE
UNDOTBS7 _SYSSMU6$ OFFLINE
UNDOTBS7 _SYSSMU7$ OFFLINE
UNDOTBS7 _SYSSMU8$ OFFLINE
UNDOTBS7 _SYSSMU9$ OFFLINE
UNDOTBS7 _SYSSMU10$ OFFLINE
UNDOTBS7 _SYSSMU11$ OFFLINE TABLESPACE_NAME SEGMENT_NAME STATUS
------------------------------ ------------------------------ ----------------
UNDOTBS7 _SYSSMU12$ OFFLINE
UNDOTBS7 _SYSSMU13$ OFFLINE
UNDOTBS7 _SYSSMU14$ OFFLINE
UNDOTBS8 _SYSSMU15$ ONLINE
UNDOTBS8 _SYSSMU16$ ONLINE
UNDOTBS8 _SYSSMU17$ ONLINE
UNDOTBS8 _SYSSMU18$ ONLINE
UNDOTBS8 _SYSSMU19$ ONLINE
UNDOTBS8 _SYSSMU20$ ONLINE
UNDOTBS8 _SYSSMU21$ ONLINE
UNDOTBS8 _SYSSMU22$ ONLINE TABLESPACE_NAME SEGMENT_NAME STATUS
------------------------------ ------------------------------ ----------------
UNDOTBS8 _SYSSMU23$ ONLINE
UNDOTBS8 _SYSSMU24$ ONLINE 24 rows selected.

8.下线原undo表空间

alter tablespace UNDOTBS7 offline;

9.删除原undo表空间

drop tablespace UNDOTBS7 including contents and datafiles;

10.修改undo retention

SQL> ALTER SYSTEM SET undo_retention=1800 SCOPE=BOTH;

参考文献

Step by step to resolve ORA-600 4194 4193 4197 on database crash (文档 ID 1428786.1)

【Oracle】重做undo表空间的更多相关文章

  1. [Oracle]理解undo表空间

    一.回退段介绍 在Oracle数据库中,当某个事物对数据进行修改时,Oracle首先将数据的原始值保存到一个回退段中.一个事物只能将它的回退信息保存到一个回退段中,而多个并行事物可以使用同一个回退段. ...

  2. 记一次ORACLE的UNDO表空间爆满分析过程

    这篇文章是记录一次ORACLE数据库UNDO表空间爆满的分析过程,主要整理.梳理了同事分析的思路.具体过程如下所示: 早上收到一数据库服务器的UNDO表空间的告警邮件,最早一封是7:55发出的(监控作 ...

  3. 如何让Oracle释放undo表空间

    如何让Oracle释放undo表空间   最佳答案   在日常的数据库维护和数据库编程中经常会遇到犹豫对大数据量做DML操作后是得ORACLE的undo表空间扩展到十几个G或者几十个G 但是这些表空间 ...

  4. oracle的undo表空间

    undo表空间是Oracle特有的概念.undo表空间中会自动分配undo段,这些undo段用来保存事务中的DML语句的undo信息,也就是来保存数据在被修改之前的值.在rollback,实例恢复(回 ...

  5. Oracle中undo表空间的切换

    查看操作系统: SQL>  !cat /etc/redhat-releaseRed Hat Enterprise Linux Server release 7.4 (Maipo)查看数据库版本: ...

  6. oracle重建undo表空间

    create undo tablespace UNDOTBS2 datafile 'D:\oracle\product\10.2.0\oradata\ttonline\UNDOTBS02.DBF' s ...

  7. 监控和管理Oracle UNDO表空间的使用

    对Oracle数据库UNDO表空间的监控和管理是我们日常最重要的工作之一,UNDO表空间通常都是Oracle自动化管理(通过undo_management初始化参数确定):UNDO表空间是用于存储DM ...

  8. Oracle undo 表空间管理 (摘DAVID)

    Oracle 的Undo有两种方式: 一是使用undo 表空间,二是使用回滚段. 我们通过 undo_management 参数来控制使用哪种方式,如果设为auto,就使用UNDO 表空间,这时必须要 ...

  9. (转载)undo表空间

    对Oracle数据库UNDO表空间的监控和管理是我们日常最重要的工作之一,UNDO表空间通常都是Oracle自动化管理(通过undo_management初始化参数确定):UNDO表空间是用于存储DM ...

随机推荐

  1. CSS覆盖问题的说明

    最近在写css的时候,由于经常使用到很长的多级选择器,而碰到一些样式被覆盖或者覆盖不了的情况是相当的郁闷,所以专门花了一些时间对一些选择器做了对比测试.这里先说明一下,由于ie6不支持css2.0选择 ...

  2. Asp.Net MVC 的19个管道事件

    httpApplication调用ProcessRequest方法,内部执行19个管道事件,如下 BeginRequest  开始处理请求 AuthenticateRequest 授权验证请求开始,获 ...

  3. JS读取xml

    xml文件 <?xml version="1.0" encoding="utf-8"?> <root> <data id=&quo ...

  4. //某父元素(.class)底下相同class的第二的取值

    //某父元素(.class)底下相同class的第二的取值 var v = $('.cell-right').find(".startime").eq(1).val();

  5. 腾讯WeTest加入智慧零售“倍增计划”,引领微信小程序质量优化

    WeTest 导读 在2019腾讯全球数字生态大会零售分论坛上,腾讯正式面向全行业合作伙伴发布倍增计划,通过咨询.培训.竞赛三步走,帮助零售商户解决前端触点融通的问题,推动微信生意大盘阶梯式上涨. 倍 ...

  6. sess文件编译输出css的四种方式以及使用

    sess文件输出css有下面四种方式: :nested(嵌套) :compact(紧凑) :expanded(展开) :compressed(压缩) 如何使用: sass --watch style. ...

  7. <转>WPF 中的绑定

    在WPF应用的开发过程中Binding是一个非常重要的部分. 在实际开发过程中Binding的不同种写法达到的效果相同但事实是存在很大区别的. 这里将实际中碰到过的问题做下汇总记录和理解. 1. so ...

  8. 其他综合-Kickstart无人值守安装系统CentOS 7

    Kickstart无人值守安装系统CentOS 7 1.概述 1.1 关于PXE Preboot Execution Environment 翻译过来就是预启动执行环境:简称 PXE :传统安装操作系 ...

  9. css 最后的终章

    相对定位:参考点 相对原来的位置 1.如果是一个单独的文档流盒子,及你姐设置了相对定位,和普通盒子一样 2.相对定位后,如果调整位置,会留下坑 作用:微调元素 子绝父相 提升层级 绝对定位 参考点:父 ...

  10. 第18.2节_地址类型与LL层设备过滤

    一.地址类型 二.白名单和Resolving List 三.LL层设备过滤 一.地址类型 学习资料:官方手册 Vol 6: Core System Package [Low Energy Contro ...