由ORA-1691引发的超大SYSAUX表空间整理,请问有没有更好的办法

 我来答
huanglenzhi
推荐于2016-07-28 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517203
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
初步查看错误信息
[oracle@dmdb ~]$ oerr ora 1688
01688, 00000, "unable to extend table %s.%s partition %s by %s in tablespace %s"
// *Cause: Failed to allocate an extent of the required number of blocks for
// table segment in the tablespace indicated.
// *Action: Use ALTER TABLESPACE ADD DATAFILE statement to add one or more
// files to the tablespace indicated.
[oracle@dmdb ~]$ oerr ora 1691
01691, 00000, "unable to extend lob segment %s.%s by %s in tablespace %s"
// *Cause: Failed to allocate an extent of the required number of blocks for
// LOB segment in the tablespace indicated.
// *Action: Use ALTER TABLESPACE ADD DATAFILE statement to add one or more
// files to the tablespace indicated.
################################################
(3)可以看到下面两个表是把SYSAUX撑大的源头
SELECT us.SEGMENT_NAME,us.SEGMENT_TYPE,bytes/1024/1024/1024 GB,us.TABLESPACE_NAME,ul.table_name
FROM user_segments us,user_lobs ul
WHERE us.SEGMENT_NAME = ul.SEGMENT_NAME AND ul.table_name = 'MGMT_BPEL_CONFIGFILES_UPLOAD';

OWNER SEGMENT_NAME SEGMENT_TYPE MB
---------- ------------------------------ -------------------- ----------
SYS SYS_LOB0000008983C00004$$ LOBSEGMENT 29212
SYS SYS_LOB0000003717C00007$$ LOBSEGMENT 3062

(4)查看dba_LOBS 看到是如下两个表
TABLE_NAME SEGMENT_NAME
------------------------------ ------------------------------
WRH$_SQLTEXT SYS_LOB0000008983C00004$$
WRI$_ADV_OBJECTS SYS_LOB0000003717C00007$$

##############################################################参考文章 是因为BUG导致WRH$_SQLTEXT表数据没用自动删除。
http://blog.csdn.net/lwei_998/article/details/6532443

这样以后解决:
SQL> truncate table WRH$_SQLTEXT;
####
这篇文章页很好
http://wenku.baidu.com/view/daf642728e9951e79b89278c.html
2972 rows selected.
回收方式:参考:
http://space.itpub.net/7199859/viewspace-193116

##############################################################
自己尝试回收32G的sysaux表空间:

根据BLOCK_ID 定位对象,删除然后根据元数据DDL重建

select max(BLOCK_ID) from dba_extents where tablespace_name='SYSAUX';
select segment_name,segment_type,owner from dba_extents where tablespace_name='SYSAUX' and BLOCK_ID=4194177;
SQL> drop table wrh$_latch purge;
然后根据元数据DDL重建

(5)批量删除:尝试缩小至5G 经过计算 5G/8k=655360 所以要重新清理大于BLOCK_ID=655360的对象:

select segment_name,segment_type,owner from dba_extents where tablespace_name='SYSAUX' and BLOCK_ID>655360;

SEGMENT_NAME SEGMENT_TYPE OWNER
-------------------------------------------------------------------------------- ------------------
------------------------------
WRI$_ADV_RECOMMENDATIONS TABLE SYS
WRI$_ADV_ACTIONS TABLE SYS
WRI$_ADV_RATIONALE TABLE SYS
WRI$_ADV_RATIONALE TABLE SYS
WRI$_OPTSTAT_TAB_HISTORY TABLE SYS
WRI$_OPTSTAT_IND_HISTORY TABLE SYS
WRI$_OPTSTAT_HISTHEAD_HISTORY TABLE SYS
WRI$_OPTSTAT_HISTHEAD_HISTORY TABLE SYS
SCHEDULER$_EVENT_LOG TABLE SYS
WRH$_BG_EVENT_SUMMARY TABLE SYS
WRH$_ENQUEUE_STAT TABLE SYS
WRH$_SHARED_POOL_ADVICE TABLE SYS
WRI$_ADV_PARAMETERS_PK INDEX SYS
I_WRI$_OPTSTAT_IND_OBJ#_ST INDEX SYS
I_WRI$_OPTSTAT_IND_ST INDEX SYS
I_WRI$_OPTSTAT_HH_OBJ_ICOL_ST INDEX SYS
#######

SQL> select 'drop table'||' '||segment_name||' purge;' from dba_extents where tablespace_name='SYSAUX' and
SEGMENT_TYPE='TABLE' and BLOCK_ID>655360 ;

drop table WRI$_ADV_RECOMMENDATIONS purge;
drop table WRI$_ADV_ACTIONS purge;
drop table WRI$_ADV_RATIONALE purge;
drop table WRI$_OPTSTAT_TAB_HISTORY purge;
drop table WRI$_OPTSTAT_IND_HISTORY purge;
drop table WRI$_OPTSTAT_HISTHEAD_HISTORY purge;
drop table WRI$_OPTSTAT_HISTHEAD_HISTORY purge;
drop table SCHEDULER$_EVENT_LOG purge;
drop table WRH$_BG_EVENT_SUMMARY purge;
drop table WRH$_ENQUEUE_STAT purge;
drop table WRH$_SHARED_POOL_ADVICE purge;

alter index WRI$_ADV_PARAMETERS_PK rebuild;

(6)之后使用PLSQL查看表的元数据,然后执行重新创建的脚本即可。
这样就可以把SYSAUX表空间缩小到5G大小对应655360个8K块了。
SQL> alter database datafile '/home/oracle/product/oradata/dmdb1/sysaux01.dbf' resize 5g;

Database altered

大家可以使用同样的办法使得SYSAUX缩小到500M以下,只不过手动麻烦些,希望大家有更好的办法。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式