近期发现备份文件(.dmp)文件异常大,使用以下方法查询到异常的表:
SQL> select segment_name,sum(bytes)/1024/1024 from dba_segments group by segment_name having sum(bytes)/1024/1024>1000;
找到异常大的段的段名,例如:seg_A;
SQL> select table_name,segment_name from dba_lobs where segment_name='seg_A';
根据异常大的段名找到对应的表的表名,例如:table_B;
使用SQL Developer连接到数据库,查看table_B的内容,发现从某一天起有大量重复的某用户登录信息,怀疑是这些大量重复的异常登录信息导致表空间异常
增大,并最终导致备份文件的异常增大。
使用SQL Developer删除相应的条目时,有时可以成功删除几十条(远远不够),有时一条都删除不了,有以下报错:
DELETE FROM "ABCDE"."table_B" WHERE ROWID = '×××××' AND ORA_ROWSCN = '×××××' and ( "ID" is null or "ID" is not null )
保存对表 "ABCDE"."table_B" 的更改时出现一个错误:
行 1: ORA-01654: 索引 ×××××.SYS_IL00000××××××00003$$ 无法通过 16 (在表空间 XXX 中) 扩展
SSH登录数据库,使用SQL语句删除相应条目:
DELETE FROM "ABCDE"."table_B" WHERE ××_USER_ID = '×××××××';
也有以下报错:
ORA-01654: unable to extend index ×××××.SYS_IL00000××××××00003$$ by 16 in
tablespace XXX
oracle数据库版本SQL*Plus: Release 11.1.0.6.0
请问这是什么原因导致的?查ORA-01654,是和表空间不足有关,但是对于一个生产系统,我该怎样扩展表空间?
该贴被蜀山战纪编辑于2015-12-3 16:27:50