我们的一个常年使用的系统以Oracle 9i作为数据库。昨天,该系统显示“ORA-01653: Unable to extend table ARADMIN.B518C536870918 by 589824 in tablespace ARSYSTEM”,而所有用户都无法向系统加入任何数据。经检查,这个表空间ARSYSTEM有4个数据文件(arsys1-4.dbf)。每个datafile的设置均为预先分配7000MB而不可自动扩展。而报错时,其中一个datafile (arsys4.dbf)还有3200MB空余。这个系统在向ARSYSTEM增加了第5个预先分配7000MB而不可自动扩展的datafile (arsys5.dbf)后回复正常。而这个新增datafile的过程持续了大约15分钟,而新的datafile一下就用了4600MB。问题是系统报错时,用户只是向其中增添很少量(小于1MB)的数据。那么,
1. 为什么这么少量的数据会在第4个数据文件仍有3200MB空间时导致系统报错?
2. 为什么新的数据文件会一下写入了4600MB的数据?这些数据在此之前是保留在内存里吗?如果我们没有及时增加数据文件,而关闭数据库,这一部分数据会不会遗失?怎样可以救回?事实上,我们并不肯定这是数据库的问题还是该应用系统的问题。所以希望高手从Oracle的角度指点迷津。谢谢!
1. 为什么这么少量的数据会在第4个数据文件仍有3200MB空间时导致系统报错?
2. 为什么新的数据文件会一下写入了4600MB的数据?这些数据在此之前是保留在内存里吗?如果我们没有及时增加数据文件,而关闭数据库,这一部分数据会不会遗失?怎样可以救回?事实上,我们并不肯定这是数据库的问题还是该应用系统的问题。所以希望高手从Oracle的角度指点迷津。谢谢!
解决方案 »
- Oracle查询问题
- 求高手:为什么创建过程时发生编译错误后,数据库还是会创建出那个过程啊
- ORA-00600: 内部错误代码,参数: [kghGetHpSz1], [0x7E828050], [], [], [], [], [], []
- 关于LTRIM函数的疑问
- 求一oracle的SQL语句(在线等)急!!
- Oracle Database 10g Express Edition如何使用UTL_FILE?
- oracle8i有什么好的中文网站和中文书可选?是它好学还是sql server好学?
- oracle database 能否支持用户自定义函数?
- 是不是在存储过程中不能建立临时表呀??ORACLE 数据库
- Oracle rman备份还原命令写成批处理
- oracle里面的单引号问题
- 请教oracle 9i 表恢复的问题
如果此时你不增加空间,而关闭数据库。如果是正常关闭,ORACLE自动回滚事务。如果异常关闭,再次启动时,ORACLE自动执行实例恢复。当然,异常关闭还是存在丢失数据的可能。
发现写入的数据确实比现有空闲空间少。-》发现需要写入的数据所需空间确实比现有空闲空间大。
而这个新增datafile的过程持续了大约15分钟,而新的datafile一下就用了4600MB。 -- 这个问题我也很疑惑, alert log里有没有其他的信息, 分配一个新的数据文件不需要15分钟这么长时间,我分配一个5g的数据文件,都在1分钟之内,所以可以检查下磁盘有没有异常。 顺便用statspack 分析下数据库。 ------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
Q Q 群:62697716
可能是由于这些对象导致的
WHERE file_id=your_new_datafile_id;