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'
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'
然后在新机器上运行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了
应为
alter database backup controlfile to trace
前提是归档文件你也已经拷贝到新机器的新路径下