热门标签 | 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的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 在使用SQL Server进行动态SQL查询时,如果遇到LIKE语句无法正确返回预期结果的情况,通常是因为参数传递方式不当。本文将详细探讨这一问题,并提供解决方案及相关的技术背景。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
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社区 版权所有