最近在客户方一次故障中,发现oracle告警日志出现ORA-1691的频繁错误,对此进行了相关的排除,最终把该问题解决了。下面来讲解一下排除的过程。
【正文】
以下给大家讲解一下整个处理的过程和思路。
1.1 生产环境:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
Windows server 2008 R2 Enterprise
在巡检客户的数据库过程中,发现该数据库的告警日志频繁出现ORA-1691的错误:
Fri Oct 10 13:15:45 2014
ORA-1691: unable to extend lobsegment PROTECT.SYS_LOB0000013803C00004$$ by 128 in tablespace LOB_TABLESPACE
ORA-1691: unable to extend lobsegment PROTECT.SYS_LOB0000013803C00004$$ by 8192 in tablespace LOB_TABLESPACE
ORA-1691: unable to extend lobsegment PROTECT.SYS_LOB0000013803C00004$$ by 128 in tablespace LOB_TABLESPACE
ORA-1691: unable to extend lobsegment PROTECT.SYS_LOB0000013803C00004$$ by 8192 in tablespace LOB_TABLESPACE
Fri Oct 10 13:15:45 2014
ORA-1691: unable to extend lobsegment PROTECT.SYS_LOB0000013803C00004$$ by 128 in tablespace LOB_TABLESPACE
ORA-1691: unable to extend lobsegment PROTECT.SYS_LOB0000013803C00004$$ by 8192 in tablespace LOB_TABLESPACE
ORA-1691: unable to extend lobsegment PROTECT.SYS_LOB0000013803C00004$$ by 128 in tablespace LOB_TABLESPACE
1.2 错误分析:
对此查看了下该表空间LOB_TABLESPACE的使用情况:
发现该表空间的空间情况已满,无法写入到数据文件,故报ORA-1691的错误。由于在windows下系统限制MAX已经是最大值,故必须向表空间添加新的数据文件。
二 解决办法
2.1 故障处理:
Oracle管理员权限下进行:
给现有的表空间添加数据文件:
SQL> alter tablespace LOB_TABLESPACE add datafile 'D:\ORACLE\ORADATA\PROTECT\LOB04.dbf' size 2G autoextend ON;
给当前数据文件设置自动扩展,每次增长100M,最大值为30G。(根据实际情况设置,如不去指定参数,默认扩展为操作系统最大值)
SQL> alter database datafile 'D:\ORACLE\ORADATA\PROTECT\LOB04.dbf'autoextend on next 100M maxsize 30G;
2.2 总结
在windows下单个数据文件大小会受操作系统限制影响,即使存放磁盘有足够的空间仍无法写入,故出现上述错误。将表空间从文件系统改为ASM文件系统,可以突破这个瓶颈。