一、源机器上操作:
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;