使用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都是这个失败信息。各位高手帮忙分析下错误原因,谢谢了。

解决方案 »

  1.   

    先create table,再insert 。。select 试试看。
      

  2.   


    从网上搜了下,大致的说法与表空间的自增长和表空间满了有关。供参考:
    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 
      

  3.   

    先看看你的空间是否爆满?如果没有的话,那么看一下你的这个datafile是否还健在或者是否有坏块啦。
      

  4.   

    第一可能应该是datafile 有坏块。
    第二看看回滚段是否够大。
      

  5.   

    问题解决了,但原因没找出来,先说下一些现象跟大家分享下。
    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这样问题就解决了,可是具体原因还是不知道,还有认真看了下表空间,是足够的,况且还创建了其他更大的表都没任何问题。