一.概述:

使用IMPDP工具导入大表(166G)数据时,报undo表空间不能扩展,导入工作失败.手工停止了impdp后,undo表空间存在无法自动释放的故障.本文主要描述如何通过重建undo表空间来手工释放undo表空间.

数据库环境的描述:

OS: AIX 6.1+HACMP 5.3

DB: ORACLE 10.2.0.5 RAC

二.问题的描述

impdp 导入数据时,报ora-30036错误

$impdp user/passwd directory=imp_dir dumpfile=big_table_%U.dmp parallel=10 logfile=imp_big_table.log

ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS1'[@more@]

检查数据库的归档日志文件,也发现了这个报警

more /oracle/admin/*/bdump/alert_{SID}.log|grep undo

ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS1'

ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS1'

ORA-30036: unable to extend segment by 8 in undo tablespace 'UNDOTBS1'

强行终止了impdp的操作,impdp的进程在操作中已不见

# ps -ef|grep impdp

root 8650752 8061396 0 15:02:08 pts/1 0:00 grep impdp

卸载数据文件所在的文件系统时,发现无法下载

SQL>select * from dba_directories

OWNER DIRECTORY_NAME DIRECTORY_PATH

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

SYS imp_dir /imp_data

#umount /imp_data

umount: 0506-349 Cannot unmount /dev/imp_data: The requested resource is busy.

检查UNDO 表空间的使用情况,如下,存在一个两个比较大的EXPIRED的undo segment.

SQL> select owner,segment_name,sum(bytes/1024/1024) from dba_undo_extents group by owner,segment_name order by 3

OWN SEGMENT_NAME SUM(BYTES/1024/1024)

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

.........

SYS _SYSSMU12$ 26.125

SYS _SYSSMU9$ 27.125

SYS _SYSSMU7$ 45.125

SYS _SYSSMU18$ 72.125

SYS _SYSSMU20$ 72.125

SYS _SYSSMU10$ 72.125

SYS _SYSSMU1$ 83.125

SYS _SYSSMU6$ 3563.1875

SYS _SYSSMU8$ 9524.4375

SQL> select tablespace_name,status,sum(bytes/1024/1024) from dba_undo_extents group by tablespace_name,status;

TABLESPACE_NAME STATUS SUM(BYTES/1024/1024)

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

UNDOTBS1 ACTIVE 47.0625

UNDOTBS2 EXPIRED 291.25

UNDOTBS1 UNEXPIRED 285.875

UNDOTBS1 EXPIRED 13063.6875

在metalink上,查找相关信息,看到有一个bug,说的是:undo表空间不足的时候,不会overwrite expired的undo segment。这个bug是10.2.0.3,9.2.0.8版本上发生,当前数据库的版本为10.2.0.5,不应该是这个bug引起的。

三.问题的分析

数据库的环境是10.2.0.5 RAC,UNDO表空间不足发生在node1的undotbs1上,为了不影响数据库的运行,首先为该表空间增加了空间。

SQL>alter tablespace undotbs1 add datafile '/dev/rora_data_03' size 11518m;

尝试通过重新启动数据库,来释放undo表空间上的内容,结果失败,undotbs1仍然存在大量的expried的segment不能释放(这个数据库的undo 是自动管理的)

因为umount 导入文件系统也失败,考虑是不是因为手工强行停止了impdp的操作,导致了操作系统中还有相关进程没有完全停掉。所以采用了重新启动数据库服务器的方式来释放相关的文件系统的锁。

四.问题的解决

重新启动数据库服务器后,尝试umount 文件系统(/imp_data),结果成功.

现在剩下的问题是,如何shrink undo segment的问题,总不能让那么多的undo表空间就象太空垃圾一样,存在在数据库中.

在metalink上找到相关的文档:How to Shrink the datafile of Undo Tablespace [ID 268870.1]

按照文档介绍的方法,进行了下面的操作

SQL>create undo tablespace undotbs3 datafile '/dev/rora_data_02' size 11518m extent management local;

SQL>alter system set undo_tablespace='UNDOTBS3' scope=both sid='JLZDH1';

SQL>drop tablespace undotbs1 including contents;

ORA-30013 : undo tablespace undotbs1 is currently in use

在删除undo表空间undotbs1时,报表空间在使用,无法删除的错误.

重新启动数据库,再次查看undo表空间的情况

SQL> show parameter undo

NAME TYPE VALUE

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

undo_management string AUTO

undo_retention integer 450

undo_tablespace string UNDOTBS3

SQL> select tablespace_name,status,sum(bytes/1024/1024) from dba_undo_extents group by tablespace_name,status;

TABLESPACE_NAME STATUS SUM(BYTES/1024/1024)

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

UNDOTBS3 UNEXPIRED 6.25

UNDOTBS2 EXPIRED 291.25

UNDOTBS1 EXPIRED 7152.1875

UNDOTBS3 EXPIRED 13.0625

再次尝试删除undotbs1,成功了.

SQL> drop tablespace undotbs1 including contents;

Tablespace dropped.

SQL> select tablespace_name,status,sum(bytes/1024/1024) from dba_undo_extents group by tablespace_name,status;

TABLESPACE_NAME STATUS SUM(BYTES/1024/1024)

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

UNDOTBS3 UNEXPIRED 2.3125

UNDOTBS2 EXPIRED 291.25

UNDOTBS3 EXPIRED 17

五.总结

impdp/expdp是oracle提供的数据库数据导入/导出的工具,速度比旧工具imp/exp要快很多,但也存在很多的bug,由于加入了job方式的管理,异常出现的机会比较多.曾经遇到过,手工终止impdp操作,导致了system表空间被大量占用的问题.本次又遇到undo表空间不能释放的问题.虽然数据泵有很多问题,但使用了parallel并行处理后,速度提升不是一般的多,所以日常工作中,还是首选数据泵工具.

undo表空间不能释放时,最好的解决办法就是:

1.重新建立一个新的undo表空间.

2.设置数据库的undo表空间为新的undo表空间

3.删除旧的undo表空间及其内容

释放oracle undo表空间,undo表空间释放相关推荐

  1. 《MYSQL是怎样运行的》笔记|配置文件|系统变量|字符集|InnoDB存储结构|数据页结构|索引结构与使用|数据目录|表空间|连表原理|查询优化|BufferPool|事务|redo与undo|锁

    <MYSQL是怎样运行的>笔记 前记: 历时15天,笔记+看书.完成于2022.2.5. 本书是讲具体的数据库实现,而数据库系统概念见:https://blog.csdn.net/qq_4 ...

  2. Oracle数据库表空间整理回收与释放操作

    文章目录 前言 一.降低表空间高水位 1.查看表空间和对应物理文件名 2.清空回收站 3.整理表空间 4.生成RESIZE代码 二.在删除时进行释放 1.清空表数据并释放表空间 2.迁移表数据 参考文 ...

  3. oracle+怎么清理碎片,oracle 收缩表、清理碎片,释放空间

    可以用来收缩段,消除空间碎片的方法有两种: 1.alter table table_name move 需要注意: 1)move操作会锁表.(如果是很小的表,可以在线做.如果是大表一定要注意,会长时间 ...

  4. 关于Oracle数据库删除表空间后磁盘空间不释放的问题

    有些小白在操作数据库时随便新建表空间,并且喜欢直接设置最大值把表空间文件直接设置成32G,而后在导库的时候又没进行正确操作导致新建的表空间并未使用,而把数据又全部导入users表空间了,这样就造成数据 ...

  5. Oracle 数据库、实例、表空间、用户、数据库对象

    Oracle是一种数据库管理系统,是一种关系型的数据库管理系统.通常情况了我们称的"数据库",包含了物理数据.数据库管理系统.内存.操作系统进程的组合体,就是指这里所说的数据库管理 ...

  6. mysql 直接删表空间文件_oracle删除(释放)数据文件/表空间流程

    oracle删除(释放)数据文件/表空间流程 生产环境:数据库里空间不足,niptest表空间251G,只使用了17G 再alter database datafile '...../niptest1 ...

  7. Oracle小知识点之temp表空间

    温故: 上一篇文章中我和大家分享了Oracle的smon和pmon的相关知识,今天又特地来给大家讲一讲Oracle的temp表空间,为什么要讲这个呢?和昨天的理由差不多,还是有一道考试题提到了这个te ...

  8. Oracle Study案例之--基于表空间的时间点恢复(TSPITR)

     Oracle Study案例之--基于表空间的时间点恢复(TSPITR) TSPITR(表空间时间点恢复)用于将一个或多个表空间恢复到过去某个时间点的状态,而其他表空间仍然保持现有状态. TSPIT ...

  9. Oracle 同义词、DBLINK、表空间的使用

    Oracle 同义词 Oracle同义词创建及其作用 Oracle的同义词(synonyms)从字面上理解就是别名的意思,和试图的功能类似,就是一种映射关系.本文介绍如何创建同义词语句,删除同义词以及 ...

最新文章

  1. sql text转image_[转]故障分析 | 记一次 MySQL 主从双写导致的数据丢失问题
  2. HDU 3584 Cube (三维树状数组)
  3. 53_Auto-Encoders和Variational AutoEncoders(VAE)、PCA降维和Auto-Encoders降维的比较、Auto-Encoders变种、pytorch实现等
  4. python time sleep和wait_Python和硒:driver.implicitly_wait()和time.sleep()之间的区别...
  5. oracle报28003,【翻译自mos文章】运行utlpwdmg.sql之后报ORA-28003, ORA-20001, ORA-20002, ORA-20003, ORA-20004 错误...
  6. 王者荣耀s12赛季服务器维护,王者荣耀S12赛季延期,这篇攻略让我段位狂涨!
  7. Hadoop之MapReduce介绍
  8. ORACLE之字符集修改(10g)
  9. 聊聊jQuery is not defined
  10. tidyverse —— readr包
  11. DeepReID: Deep Filter Pairing Neural Network for Person Re-Identification
  12. 几何光学学习笔记(2)- 1.2 费马原理、马吕斯定律和成像
  13. 【Practical】CSDN图片去除水印
  14. 文字太多时给文本框添加滑动条——text + ContentSizeFitter + Scroll View
  15. ECharts实现两根柱子重叠在一起的柱状图
  16. Python 语言及其应用 Chapter_3_Note_2 容器_列表_元组_字典_集合
  17. android 清除cookie,Android 获取和清除 WebView 中的 Cookie
  18. 文心ERNIE 3.0 Zeus千亿参数大模型,一键生成“学术范儿”论文标题
  19. 研发效能双周报 10 月 vol.2 | 两份技术前瞻,哪些新技术将助力效能提升?
  20. VUE课堂笔记1-课前准备

热门文章

  1. pytorch深度学习保姆级笔记--gpu环境配置
  2. 电商--红包活动总结
  3. 原始GAN存在的问题
  4. PyQt 中 的白色边框问题
  5. java+ssm+mysql图书借阅管理系统
  6. 用HTML编写迪士尼乐园页面
  7. 机器学习需要的最小数据量是多少?
  8. 线程池参数和状态详解
  9. Linux操作系统监控工具-nmon
  10. 记录OSError: [WinError -2147221008] 尚未调用 CoInitialize