yiyufeng1986 发表于 2012-6-23 13:15:51

Undo表空间满了的问题

场景描述:这个数据库有大量的DML操作。显示通过sqlldr 外部加载大量数据到表中,开发人员对数据进行分析。分析完后,再delete删除某几个月的数据。
由于有这样的操作,导致了undo表空间迅速第一次满了,后来给undo增加了一个datafile,可是今天又满了。怎么undo段不进行释放呢。
SQL> show parameter undo;

NAME                                     TYPE       VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string       AUTO
undo_retention                         integer       900
undo_tablespace                      string       UNDOTBS1

++++++++++++++++++++++++++++++++++++++++++++++++++=
SQL> SELECT   tablespace_name, status, SUM (bytes) / 1024 / 1024 "Bytes(M)"
FROM   dba_undo_extents
GROUP BY   tablespace_name, status;2    3

TABLESPACE_NAME              STATUS        Bytes(M)
------------------------------ --------- ----------
UNDOTBS1                     UNEXPIRED   1.9375
UNDOTBS1                     EXPIRED        4.875
UNDOTBS1                     ACTIVE        65479.5625

oraunix 发表于 2012-6-23 15:20:01

大部分是active,那说明你的数据库中有大量的活动事务,查一下v$transaction视图。

yiyufeng1986 发表于 2012-6-23 18:18:31

oraunix 发表于 2012-6-23 15:20 static/image/common/back.gif
大部分是active,那说明你的数据库中有大量的活动事务,查一下v$transaction视图。 ...

老师,我看了一下这个视图。里面就有一条记录。

oraunix 发表于 2012-6-26 10:32:49

毫无疑问,你的活动事务使用了大量的undo空间。
应该是批处理。

ch7543658 发表于 2013-8-20 17:47:26

oraunix 发表于 2012-6-26 10:32 static/image/common/back.gif
毫无疑问,你的活动事务使用了大量的undo空间。
应该是批处理。

那是要继续增加 undo 空间么?

fishcat 发表于 2013-8-20 20:22:52

数据量大可以考虑应用上调整,比如分区

oracle_周 发表于 2013-8-25 14:53:02

明显你应该批量操作

oracle_周 发表于 2013-8-25 14:54:24

分批量的,不然一次事物没完就弄爆了
页: [1]
查看完整版本: Undo表空间满了的问题