Skip to content

ora 1654

遭遇ORA-3927错误的不规范处理操作

客户早上碰到问题,我正好检查下系统,在告警日志中碰到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可能造成的对系统的影响.