我有个客户使用的是ORACLE8.0.5版本的数据库,在将表索引空间由固定的大小更改为自动增长后,出现了ORA-01200错误。后来我检查发现他整个数据库共有三个数据文件。每个数据文件的大小都在3G以上。不知道这里有没有那位高人能够指点一下。我自己曾经尝试着用一些办法来恢复,但最后均未成功。

解决方案 »

  1.   

    ORA-01200: actual file size of %s is smaller than correct size of %s blocks.
    *Cause: The size of the file as returned by the operating system is smaller than the size of the file as indicated in the file header and the controlfile. Somehow the file has been truncated. Maybe it is the result of a half completed copy.
    *Action: Restore a good copy of the data file and do recovery as needed.
    只能找备份恢复
      

  2.   

    客户没有做备份.
    我曾经尝试着用:
    1) 先关掉oracle,做一个冷备 
    2)在init文件中,加入下面命令 _allow_resetlogs_corruption=true  
     3)s然后呢启动到mount状态 
    tartup mount 
    4)查看是否所有数据文件都是ONLINE
    Select name,status from v$datafile
    5)将所有数据文件更改为ONLINE/OFFLINE
    Alter datafile ‘ e:\necdata\necdata03.ora(更改文件的路径地址)’online/offline 6)更换指定数据文件
    Alter database rename file ‘E:\NECDATA\NECDATA03.ORA(源文件路径)’to ‘E:\NECDATA\TEST01.ORA(目标文件路径)’
    7)进行恢复   recover database until cancel
    8)停止数据库服务
    shutdown immediate 
    9)重新启动到mount状态
    startup mount 
     10)打开数据库   alter database open resetlogs 
     11)exp数据库 
    exp80 system(管理员帐户)/manager(密码)@necdata(数据字符集) file=I:\ora001.dmp(导出数据文件存放路径) log=I:\log001.log(导出日志存放路径) full=y rows=y 
    12)关掉oracle数据库  
    13)重新创建数据库 
    14)利用imp将exp出来的内容imp到新的数据库中 
    但是没有成功,在进行底11步的时候,发现主要数据还是导不出来.
      

  3.   

    在windows上一个文件可能不能超过4G,有可能你的某个数据文件超过了4G如果那样需要增加数据文件
      

  4.   

    windows上NTFS可以超过4g第10步成功了吗?如果成功了,重新运行catexp.sql脚本