热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

删除undo表空间遭遇ORA-30013及ORA-01548错误解决方法

今天在一套RAC环境下删除、切换其中一个实例的undo表空间时,遭遇ORA-30013及ORA-01548的错误,下面记录过程及解决方法。1创建新

今天在一套RAC环境下删除、切换其中一个实例的undo表空间时,遭遇ORA-30013及ORA-01548的错误,下面记录过程及解决方法。1 创建新

删除undo表空间遭遇ORA-30013及ORA-01548错误解决方法

[日期:2014-03-28] 来源:Linux社区 作者:Linux [字体:]

今天在一套RAC环境下删除、切换其中一个实例的undo表空间时,遭遇ORA-30013及ORA-01548的错误,下面记录过程及解决方法。

1 创建新的UNDO表空间UNDOTBS3,并将当前实例的UNDO切换到UNDOTBS3之后,删除旧的UNDOTBS1时,遇到下述错误:

SQL> drop tablespace undotbs1 including contents and datafiles;

drop tablespace undotbs1 including contents and datafiles

*

ERROR at line 1:

ORA-30013: undo tablespace 'UNDOTBS1' is currently in use

2 从上可以看到UNDOTBS1目前正在被使用。查询MetaLink,Unable to Drop Undo Tablespace ORA-30013 [ID 835944.1]获取基本思路,依据该文档给出的提示,执行下述命令:

SQL> select segment_name,owner,tablespace_name,status from dba_rollback_segs

2 where tablespace_name='UNDOTBS1' and status = 'ONLINE';

SEGMENT_NAME OWNER TABLESPACE_NAME STATUS

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

_SYSSMU2$ PUBLIC UNDOTBS1 ONLINE

_SYSSMU3$ PUBLIC UNDOTBS1 ONLINE

_SYSSMU6$ PUBLIC UNDOTBS1 ONLINE

_SYSSMU8$ PUBLIC UNDOTBS1 ONLINE

SQL> SELECT KTUXEUSN, KTUXESLT, KTUXESQN, /* Transaction ID */ KTUXESTA Status,

2 KTUXECFL Flags FROM x$ktuxe WHERE ktuxesta!='INACTIVE';

KTUXEUSN KTUXESLT KTUXESQN STATUS FLAGS

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

2 38 583286 PREPARED SCO|COL|REV|DEAD|EXTDTX

3 29 982959 PREPARED SCO|COL|REV|DEAD|EXTDTX

6 14 945326 PREPARED SCO|COL|REV|DEAD|EXTDTX

8 7 957413 PREPARED SCO|COL|REV|DEAD|EXTDTX

13 19 507098 PREPARED SCO|COL|REV|EXTDTX

SQL> select local_tran_id, state from dba_2pc_pending;

LOCAL_TRAN_ID STATE

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

14.28.100017 collecting

2.38.583286 prepared

8.7.957413 prepared

3.29.982959 prepared

6.14.945326 prepared

13.19.507098 prepared

6 rows selected.

3 从上步的结果,结合文档ID 835944.1,基本上可以找到问题的原因:当前数据库中有未结束的分布式事务,而这些未结束的分布式事务占用了UNDOTBS1,最终导致不能删除UNDOTBS1。 文档ID 835944.1给出的解决方案是结束掉这些分布式事务。MetaLink上给出的思路是参照 Note 401302.1文档,而不凑巧的是,现在这篇文档无法查看,不得已,尝试重启数据库并删除UNDOTBS1。 重启之后,alert日志里看到如下错误信息:

*** SERVICE NAME:(SYS$BACKGROUND) 2012-02-10 11:27:15.527

*** SESSION ID:(431.1) 2012-02-10 11:27:15.527

*** 2012-02-10 11:27:15.527

ERROR, tran=14.28.100017, session#=1, ose=0:

ORA-02019: connection description for remote database not found

ORA-02019: connection description for remote database not found

*** 2012-02-10 11:27:50.676

ERROR, tran=14.28.100017, session#=1, ose=0:

ORA-02019: connection description for remote database not found

ORA-02019: connection description for remote database not found

*** 2012-02-10 11:28:42.707

ERROR, tran=14.28.100017, session#=1, ose=0:

ORA-02019: connection description for remote database not found

ORA-02019: connection description for remote database not found

尝试再次删除UNDOTBS1:

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$' found, terminate dropping tablespace

这次报出ORA-01548的错误!!!原来还是分布式事务未提交导致的:

SQL> SELECT KTUXEUSN, KTUXESLT, KTUXESQN, /* Transaction ID */ KTUXESTA Status,

2 KTUXECFL Flags FROM x$ktuxe WHERE ktuxesta!='INACTIVE';

KTUXEUSN KTUXESLT KTUXESQN STATUS FLAGS

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

2 38 583286 PREPARED SCO|COL|REV|DEAD|EXTDTX

3 29 982959 PREPARED SCO|COL|REV|DEAD|EXTDTX

6 14 945326 PREPARED SCO|COL|REV|DEAD|EXTDTX

8 7 957413 PREPARED SCO|COL|REV|DEAD|EXTDTX

13 19 507098 PREPARED SCO|COL|REV|EXTDTX

SQL> select local_tran_id, state from dba_2pc_pending;

LOCAL_TRAN_ID STATE

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

14.28.100017 collecting

2.38.583286 prepared

8.7.957413 prepared

3.29.982959 prepared

6.14.945326 prepared

13.19.507098 prepared

6 rows selected.

SQL>

4 继续MetaLink:ORA-1548 Dropping UNDO Tablespace Distributed Transaction Pending:Prepared / Dead [ID 1321093.1]根据该文档,执行下述命令:

SQL> Select segment_id,segment_name,status,tablespace_name

2 from dba_rollback_segs where status not in ('ONLINE','OFFLINE');

SEGMENT_ID SEGMENT_NAME STATUS TABLESPACE_NAME

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

2 _SYSSMU2$ PARTLY AVAILABLE UNDOTBS1

3 _SYSSMU3$ PARTLY AVAILABLE UNDOTBS1

6 _SYSSMU6$ PARTLY AVAILABLE UNDOTBS1

8 _SYSSMU8$ PARTLY AVAILABLE UNDOTBS1

SQL>

You find you have segments that are 'Partly Available' This usually means they still have active transactions pending and you can not drop the tablespace until the transaction is committed or rolled back. 当回滚段状态为Partly Available时,说明还是有事务没结束!!!

SQL> SELECT KTUXEUSN, KTUXESLT, KTUXESQN, /* Transaction ID */

2 KTUXESTA Status,

3 KTUXECFL Flags

4 FROM x$ktuxe

5 WHERE ktuxesta!='INACTIVE'

6 AND ktuxeusn

7 in(2,3,6,8);

KTUXEUSN KTUXESLT KTUXESQN STATUS FLAGS

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

2 38 583286 PREPARED SCO|COL|REV|DEAD|EXTDTX

3 29 982959 PREPARED SCO|COL|REV|DEAD|EXTDTX

6 14 945326 PREPARED SCO|COL|REV|DEAD|EXTDTX

8 7 957413 PREPARED SCO|COL|REV|DEAD|EXTDTX

SQL> select local_tran_id, state from dba_2pc_pending;

LOCAL_TRAN_ID STATE

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

14.28.100017 collecting

2.38.583286 prepared

8.7.957413 prepared

3.29.982959 prepared

6.14.945326 prepared

13.19.507098 prepared

6 rows selected.

SQL>

推荐阅读
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • SQLite 动态创建多个表的需求在网络上有不少讨论,但很少有详细的解决方案。本文将介绍如何在 Qt 环境中使用 QString 类轻松实现 SQLite 表的动态创建,并提供详细的步骤和示例代码。 ... [详细]
  • 该平台旨在为大型企业提供一个高效、灵活且可扩展的分布式微服务架构解决方案。它采用模块化、微服务化和热部署的设计理念,结合当前最先进且无商业限制的主流开源技术,如Spring Cloud、Spring Boot2、MyBatis、OAuth2和Element UI,实现前后端分离的系统管理平台。 ... [详细]
  • 精选30本C# ASP.NET SQL中文PDF电子书合集
    欢迎订阅我们的技术博客,获取更多关于C#、ASP.NET和SQL的最新资讯和资源。 ... [详细]
  • 本文介绍如何在 FireDAC 环境下实现 FDMEMTable 字段的自动获取,为开发人员提供便捷的数据处理方式。 ... [详细]
author-avatar
手机用户2502878283
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有