oracle本来安装在F盘,现在要恢复到异机的D盘.报错如下:
SQL> startup nomount
ORA-01078: failure in processing system parameters
ORA-01565: error in identifying file 'D:\oracle\product\10.2.0\db_1/dbs/spfileDA
TACENTER1.ora'
ORA-27046: file size is not a multiple of logical block size
OSD-04012: ?????????????? (OS 3583)SPFILEDATACENTER1.ORA内容:(我把原来F的地方都改成D盘了,目录文件也都拷过去了.)
datacenter1.__java_pool_size=8388608
datacenter1.__large_pool_size=4194304
datacenter1.__shared_pool_size=92274688
datacenter1.__streams_pool_size=4194304
*.audit_file_dest='D:\oracle\product\10.2.0/admin/DATACENTER1/adump'
*.background_dump_dest='D:\oracle\product\10.2.0/admin/DATACENTER1/bdump'
*.compatible='10.2.0.1.0'
*.control_files='D:\oracle\product\10.2.0/oradata/DATACENTER1/\control01.ctl','D:\oracle\product\10.2.0/oradata/DATACENTER1/\control02.ctl','D:\oracle\product\10.2.0/oradata/DATACENTER1/\control03.ctl'
*.core_dump_dest='D:\oracle\product\10.2.0/admin/DATACENTER1/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='DATACENT'
*.db_recovery_file_dest='D:\oracle\product\10.2.0/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='DATACENTER1'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=DATACENTER1XDB)'
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=203423744
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=612368384
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='D:\oracle\product\10.2.0/admin/DATACENTER1/udump'

解决方案 »

  1.   

    spfile文件是不能直接改的,是二进制文件来的哟。你可以先试试用pfile的形式启动,就是保存一个存文本的pfile文件,内容就是和你spfile一样的,然后用startup pfile='pfile路径'的方式启动。不过这里只是解决你目前的问题。你目前的问题是nomount状态都没有成功,解决了这个问题,估计还有不少其他新的问题出现的。对于不熟悉oracle的人来说,要做你这样的事情,还是通过exp和imp来做了。
      

  2.   

    楼主先用spfile生成pfilecreate pfile=d:.... from spfile;然后更改pfile文件,很多地方要改
    然后在新机器上运行oradim -new -sid 和pfile文件对应的SID -intpwd 密码
    然后拷贝数据文件,控制文件到新机器的新目录下set ORACLE_SID=刚才的SID
    sqlplus / as sysdba
    startup mount
    alter backup controlfile to trace;然后到你的udump目录下找新生成的trace文件
    找到create controlfile......的那个语句shutdown immediate
    startup nomount
    拷贝create controlfile的那个语句,注意如果pfile文件中的db_name如果变了,这里要改下语句reuse要换成set
    重建控制文件成功后
    alter database mount;
    alter database open;O了
      

  3.   

    更正alter backup controlfile to trace
    应为
    alter database backup controlfile to trace
      

  4.   

    如果是老的备份,还需要recover
    前提是归档文件你也已经拷贝到新机器的新路径下