创建表导致数据库关闭

EastHoo 2009-12-11 04:58:09
使用create table 。。。as select 创建表(使用dblink将远程数据库表和本地库表关联,并在本地库创建表),结果出现错误,查看日志如下:
Thu Dec 10 15:18:17 2009
Errors in file d:\oracle\admin\ora9\udump\ora9_ora_1180.trc:
ORA-01114: 将块写入文件 9 时出现 IO 错误 (块 # 2080753)
ORA-27069: skgfdisp: 尝试在文件范围外执行 I/O
OSD-04026: 传递的参数无效。 (OS 2080776)
ORA-01114: 将块写入文件 9 时出现 IO 错误 (块 # 2080753)
ORA-27069: skgfdisp: 尝试在文件范围外执行 I/O
OSD-04026: 传递的参数无效。 (OS 2080776)
ORA-01114: 将块写入文件 9 时出现 IO 错误 (块 # 2080753)
ORA-27069: skgfdisp: 尝试在文件范围外执行 I/O
OSD-04026: 传递的参数无效。 (OS 2080776)
ORA-01114: 将块写入文件 时出现 IO 错误 (块 # )

Thu Dec 10 15:18:19 2009
Errors in file d:\oracle\admin\ora9\udump\ora9_ora_1180.trc:
ORA-00603: ORACLE server session terminated by fatal error
ORA-01114: IO error writing block to file 9 (block # 2080753)
ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
OSD-04026: 传递的参数无效。 (OS 2080776)
ORA-01114: IO error writing block to file 9 (block # 2080753)
ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
OSD-04026: 传递的参数无效。 (OS 2080776)
ORA-01114: IO error writing block to file 9 (block # 2080753)
ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
OSD-04026: 传递的参数无效。 (OS 2080776)
ORA-01114: IO error writing block to file (block # )

Thu Dec 10 15:18:47 2009
KCF: write/open error block=0x10200b online=1
file=9 D:\ORACLE\ORADATA\ORA9\USERS01.DBF
error=27069 txt: 'OSD-04026: 传递的参数无效。 (OS 1056779)'
Thu Dec 10 15:18:47 2009
Errors in file d:\oracle\admin\ora9\bdump\ora9_dbw0_3436.trc:
ORA-01242: data file suffered media failure: database in NOARCHIVELOG mode
ORA-01114: IO error writing block to file 9 (block # 1056779)
ORA-01110: data file 9: 'D:\ORACLE\ORADATA\ORA9\USERS01.DBF'
ORA-27069: skgfdisp: attempt to do I/O beyond the range of the file
OSD-04026: 传递的参数无效。 (OS 1056779)

DBW0: terminating instance due to error 1242
Instance terminated by DBW0, pid = 3436

看了下日志,提示文件 9 'D:\ORACLE\ORADATA\ORA9\USERS01.DBF'写入块失败,且运行sql语句后,数据库自动关闭,再次打开数据库,检查表空间、数据文件都是正常的,且空间足够。
运行了2次sql都是这个失败信息。

各位高手帮忙分析下错误原因,谢谢了。
...全文
148 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
EastHoo 2009-12-14
  • 打赏
  • 举报
回复
问题解决了,但原因没找出来,先说下一些现象跟大家分享下。
1、我换了个公用服务器,在数据库中建表(采用的还是dblink,只是服务器变了而已,服务器性能超好了),但是提示“ORA-0165:无法通过1024(在表空间USERS中)扩展temp段”。
由于这个服务器不是我们管,所以没法查日志,只是觉得自己查出的数据也才15W,可关联的表有一个是千万级的。

2、解决问题是查询条件exists改成了表关联,因为我的语句非常长,就换个类似的简单例子
create table ....as select * from a where a.dep=10001 and exists (select 1 from b a.id =b.id)
换成
create table ....as select * from a,b where a.dep=10001 and a.id=b.id

这样问题就解决了,可是具体原因还是不知道,还有认真看了下表空间,是足够的,况且还创建了其他更大的表都没任何问题。

baidu1900 2009-12-13
  • 打赏
  • 举报
回复
汗!非常想知道
SambaGao 2009-12-13
  • 打赏
  • 举报
回复
第一可能应该是datafile 有坏块。
第二看看回滚段是否够大。
liuyi8903 2009-12-12
  • 打赏
  • 举报
回复
先看看你的空间是否爆满?

如果没有的话,那么看一下你的这个datafile是否还健在或者是否有坏块啦。
EastHoo 2009-12-12
  • 打赏
  • 举报
回复
表空间是足够的,还有10几个G空闲。
Dave 2009-12-11
  • 打赏
  • 举报
回复

从网上搜了下,大致的说法与表空间的自增长和表空间满了有关。

供参考:
http://space.itpub.net/12045182/viewspace-592277
http://www.cnblogs.com/flyingfish/archive/2007/05/17/749706.html

楼主可以在表空间上在检查下看看,比如把表空间在设大点看看...




------------------------------------------------------------------------------
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
crazylaa 2009-12-11
  • 打赏
  • 举报
回复
先create table,再insert 。。select 试试看。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧