使用冷备份迁移数据库

一、源机器上操作:
1、创建参数pfile文件
SQL> create pfile='initORCL.ora' from spfile;
   
2、关毕数据库
SQL> shutdown immediate;
   
3、复制 参数文件,控制文件,数据文件,重做日志组文件 到目标机器上的目录里 或者 FTP上。

二、目标机器上操作:
1、创建数据库文件、控制文件和REDO文件存储位置
mkdir D:\DATA\ORCL
    
2、创建dmp目录
mkdir D:\oracle\product\10.2.0\admin\ORCL\adump
mkdir D:\oracle\product\10.2.0\admin\ORCL\bdump
mkdir D:\oracle\product\10.2.0\admin\ORCL\cdump
mkdir D:\oracle\product\10.2.0\admin\ORCL\dpdump
mkdir D:\oracle\product\10.2.0\admin\ORCL\udump
  
3、修改参数文件pfile(initorcl.ora),将在Linux系统中的路径修改为windows系统的路径格式。主要参数见下面:
    *.audit_file_dest='D:\oracle\product\10.2.0\admin\ORCL\adump'
    *.background_dump_dest='D:\oracle\product\10.2.0\admin\ORCL\bdump'
    *.control_files='d:\DATA\ORCL\control01.ctl','d:\DATA\ORCL\control02.ctl','d:\DATA\ORCL\control03.ctl'
    *.core_dump_dest='D:\oracle\product\10.2.0\admin\ORCL\cdump'
    *.user_dump_dest='D:\oracle\product\10.2.0\admin\ORCL\udump'
    
4、创建一个数据库服务,其中sid 要和源数据库保持一致()
oradim -new -sid ORCL -startmode m

5、创建本地密码验证文件
cd %ORACLE_HOME%\database
orapwd file=pwdORCL.ora password=oracle entries=10
    
6、使用修改后的参数文件启动实例
    startup nomount pfile='d:\DATA\ORCL\initORCL.ora';
--可以按照自己的需求调整参数
    create spfile from pfile='d:\DATA\ORCL\initORCL.ora';
    
shutdown immediate;
startup nomount;    
alter database mount;

(注意:如果源、目标库的操作系统,数据库文件格式、位置是一样的,到这步就可以直接open数据库了。)
    
7、创建一个控制文件的跟踪文件,这一部很重要,生成到跟踪文件里的就是重创控制文件的命令。   
    SQL> alter database backup controlfile to trace;
    SQL> shutdown immediate;
生成的跟踪文件在udump目录下。
    
8、打开跟踪文件,进行修改,并创建createORCL.sql脚本,完成数据库的迁移。
    用UltraEdit打开,并查找这行:“--     Set #1. NORESETLOGS case”    选中并复制到   
    “-- End of tempfile additions.   
    --   
    --     Set #2. RESETLOGS case”为止。   
    因为我在linux下已经把所有的文件都复制过来了,所以我选用Set #1. NORESETLOGS case这段创建控制文件模版。
    ******这部分主要修改windows的路径。********
    
9、将8的内容形成一份sql脚本,大致如下:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  NOARCHIVELOG
    MAXLOGFILES 40
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 3900
LOGFILE
  GROUP 11 'd:\DATA\ORCL\redo11.log'  SIZE 150M,
  GROUP 12 'd:\DATA\ORCL\redo12.log'  SIZE 150M,
  GROUP 13 'd:\DATA\ORCL\redo13.log'  SIZE 150M,
  GROUP 14 'd:\DATA\ORCL\redo14.log'  SIZE 150M,
  GROUP 15 'd:\DATA\ORCL\redo15.log'  SIZE 150M,
  GROUP 16 'd:\DATA\ORCL\redo16.log'  SIZE 150M,
  GROUP 17 'd:\DATA\ORCL\redo17.log'  SIZE 150M,
  GROUP 18 'd:\DATA\ORCL\redo18.log'  SIZE 150M,
  GROUP 19 'd:\DATA\ORCL\redo19.log'  SIZE 150M,
  GROUP 20 'd:\DATA\ORCL\redo20.log'  SIZE 150M
-- STANDBY LOGFILE
DATAFILE
  'd:\DATA\ORCL\system01.dbf',
  'd:\DATA\ORCL\sysaux01.dbf',
  'd:\DATA\ORCL\users01.dbf',
  'd:\DATA\ORCL\users03.dbf',
  'd:\DATA\ORCL\users02.dbf',
  'd:\DATA\ORCL\ORCLidx03.dbf',
  'd:\DATA\ORCL\ORCLidx02.dbf',
  'd:\DATA\ORCL\ORCLidx01.dbf',
  'd:\DATA\ORCL\ORCLdata03.dbf',
  'd:\DATA\ORCL\ORCLdata02.dbf',
  'd:\DATA\ORCL\ORCLdata01.dbf',
  'd:\DATA\ORCL\undorbs1.dbf'
CHARACTER SET ZHS16GBK;
RECOVER DATABASE;
ALTER DATABASE OPEN;
    
10、在sqlplus里执行保存的脚本
    SQL> @d:\createORCL.sql;
    
请使用浏览器的分享功能分享到微信等