从linux平台移值数据库到windows平台

来源:互联网 发布:淘宝西台美肤假货 编辑:程序博客网 时间:2024/05/21 14:40
之前在测试传输表空间时感受了一下跨平台的移值,当时只测试了通过传输表空间的特性复制某个指定表空间,或者是通过RMAN中的CONVERT或TTS复制数据库,测试结束之后,感觉ORACLE10G之后对不同平台(相同字节顺序)的数据文件相互兼容性方面得到大大提升,下意识认为不通过传输表空间直接复制数据文件应该也可以,今天在本地测试了一下,确实相当好使,通过这种方式使得跨平台的移植更加高效,也易于管理和操作,下面记录的为操作过程。
注意:源平台与目标平台的字节顺序(endian format)需要相同。更多概念可以参考我的笔记"使用可传输表空间的特性复制数据"

源平台:linux AS4U2(32bit)+oracle 10.2.0.3
目标平台:Windows2003sp1(32bit)+oracle10.2.0.3

1、生成客户端初始化参数文件---linux操作
SQL> create pfile from spfile;

文件已创建。



2、生成重建控制文件脚本---linux操作
SQL> alter database backup controlfile to trace;

数据库已更改。



3、复制文件----linux操作
为创建一致性复制,首先关闭源数据库。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

复制所有数据文件、重做日志文件、归档文件、控制文件创建脚本、客户端初始化参数文件、listener.ora,tnsnames.ora等到目标平台(控制文件需要重建,可以不用复制了)。
方式多样,过程就不演示了。


注:以下步骤均在windows平台操作,(Linux先生您辛苦了,放心吧人民不会忘记你的,等完成windows的复制我就把你格了~~~~)。



4、新建OracleService
E:\ora10g>oradim -new -sid jsstts
实例已创建。
注意SID要与linux服务器中的相同。



5、修改初始化参数文件
注意修改初始化参数文件中路径,比如*_dest的参数。例如:
*.audit_file_dest='E:\ora10g\product\10.2.0\admin\jsstts\adump'
*.background_dump_dest='E:\ora10g\product\10.2.0\admin\jsstts\bdump'
*.compatible='10.2.0.1.0'
*.control_files='E:\ora10g\oradata\jsstts\control01.ctl','E:\ora10g\oradata\jsstts\control02.ctl','E:\ora10g\oradata\jsstts\control03.ctl'
*.core_dump_dest='E:\ora10g\product\10.2.0\admin\jsstts\cdump'
*.db_name='jsstts'
....
....
*.user_dump_dest='E:\ora10g\product\10.2.0\admin\jsstts\udump'






6、创建spfile
SQL> create spfile from pfile='E:\ora10g\oradata\jsstts\initjsstts.ora';

文件已创建。




7、重建控制文件(也别忘了更改文件路径)
由于是完全备份,因此我们选择noresetlogs方式重建(如果你的复制并非建立数据文件一致性的基础上,那你只能选择resetlogs方式重建)。
SQL> CREATE CONTROLFILE REUSE DATABASE "jsstts" NORESETLOGS NOARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 'E:\ora10g\oradata\jsstts\redoA01.log' SIZE 20M,
9 GROUP 2 'E:\ora10g\oradata\jsstts\redoA02.log' SIZE 20M,
10 GROUP 3 'E:\ora10g\oradata\jsstts\redoA03.log' SIZE 20M
11 -- STANDBY LOGFILE
12 DATAFILE
13 'E:\ora10g\oradata\jsstts\system01.dbf',
14 'E:\ora10g\oradata\jsstts\undotbs01.dbf',
15 'E:\ora10g\oradata\jsstts\sysaux01.dbf',
16 'E:\ora10g\oradata\jsstts\users01.dbf',
17 'E:\ora10g\oradata\jsstts\jssweb.dbf'
18 CHARACTER SET ZHS16GBK
19 ;

控制文件已创建。

--由于前面是在数据库正常关闭情况下拷贝的数据文件,处于一致性状态,不需要执行recover,直接open

SQL> ALTER DATABASE OPEN;

数据库已更改。

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'E:\ora10g\oradata\jsstts\temp01.dbf'
2 SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;

表空间已更改。







8、测试一下
SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
------------------------------
SYSTEM
UNDOTBS1
SYSAUX
TEMP
USERS
JSSWEB

已选择6行。



打扫一下战场,比如重配一下listener及tnsnames,重建密码文件等等,复制完成。
原创粉丝点击