客户早上碰到问题,我正好检查下系统,在告警日志中碰到3927错误,大致如下:
Thu Jul 17 09:53:13 2014 ORA-1654: unable to extend index DYMPOPSA.IDX_P17_TB_SP_LOG by 8192 in tablespace DYMPOPS Thu Jul 17 09:53:13 2014 ORA-1654: unable to extend index DYMPOPSA.IDX_P17_TB_SP_LOG by 8192 in tablespace DYMPOPS Thu Jul 17 09:53:18 2014 ALTER DATABASE DATAFILE '/u02/oradata/DYMPOPS/DYMPOPSA2.dbf' RESIZE 500M Thu Jul 17 09:53:18 2014 ORA-3297 signalled during: ALTER DATABASE DATAFILE '/u02/oradata/DYMPOPS/DYMPOPSA2.dbf' RESIZE 500M... Thu Jul 17 09:53:28 2014 ALTER DATABASE DATAFILE '/u02/oradata/DYMPOPS/DYMPOPSA5.dbf' RESIZE 500M Thu Jul 17 09:53:28 2014 ORA-3297 signalled during: ALTER DATABASE DATAFILE '/u02/oradata/DYMPOPS/DYMPOPSA5.dbf' RESIZE 500M... Thu Jul 17 09:53:45 2014 ALTER DATABASE DATAFILE '/u02/oradata/DYMPOPS/DYMPOPSA5.dbf' RESIZE 2000M Thu Jul 17 09:53:45 2014 Completed: ALTER DATABASE DATAFILE '/u02/oradata/DYMPOPS/DYMPOPSA5.dbf' RESIZE 2000M Thu Jul 17 09:54:12 2014 ALTER DATABASE DATAFILE '/u02/oradata/DYMPOPS/DYMPOPSA5.dbf' RESIZE 3000M
发现在17号表空间DYMPOPS满了,有人尝试通过resize的方式去扩大datafile,从500M开始一直尝试到3000m,终于成功了。其中在小于3000M时候,系统报错如下:
ORA-3297 signalled during: ALTER DATABASE DATAFILE '/u02/oradata/DYMPOPS/DYMPOPSA5.dbf' RESIZE *M...
通过以上可以看出几个问题:
1.首先ORA-3297的错误是告诉你file contains used data beyond requested RESIZE value,意思是实际数据文件使用的数据量要大于你所resize的指定值,所以最好在做这个操作的时候,最好先查一下dba_free_space,所要更改的这个数据文件的一些信息,比如实际使用数据量是多少等;
2.其次日志中显示是在早上9点多时候执行操作,这个点对这个系统来讲是高峰期,在这个时候需要考虑整体的资源使用情况,一般不建议在高峰时间resize datafile,建议通过增加datafile的方式来处理ORA-1654表空间空间不足的情况.
如果要问第二个问题为什么?请考虑下resize datafile的原理以及系统处理高负荷状况下resize datafile可能造成的对系统的影响.