2013年(350)
分类: Oracle
2013-04-24 16:24:11
之前在测试传输表空间时感受了一下跨平台的移值,当时只测试了通过传输表空间的特性复制某个指定表空间,或者是通过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:ora10gproduct10.2.0adminjssttsadump'
*.background_dump_dest='E:ora10gproduct10.2.0adminjssttsbdump'
*.compatible='10.2.0.1.0'
*.control_files='E:ora10goradatajssttscontrol01.ctl','E:ora10goradatajssttscontrol02.ctl','E:ora10goradatajssttscontrol03.ctl'
*.core_dump_dest='E:ora10gproduct10.2.0adminjssttscdump'
*.db_name='jsstts'
....
....
*.user_dump_dest='E:ora10gproduct10.2.0adminjssttsudump'
6、创建spfile
SQL> create spfile from pfile='E:ora10goradatajssttsinitjsstts.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:ora10goradatajssttsredoA01.log' SIZE 20M,
9 GROUP 2 'E:ora10goradatajssttsredoA02.log' SIZE 20M,
10 GROUP 3 'E:ora10goradatajssttsredoA03.log' SIZE 20M
11 -- STANDBY LOGFILE
12 DATAFILE
13 'E:ora10goradatajssttssystem01.dbf',
14 'E:ora10goradatajssttsundotbs01.dbf',
15 'E:ora10goradatajssttssysaux01.dbf',
16 'E:ora10goradatajssttsusers01.dbf',
17 'E:ora10goradatajssttsjssweb.dbf'
18 CHARACTER SET ZHS16GBK
19 ;
控制文件已创建。
--由于之前使用正常关闭,数据文件处于一致性状态,不需要恢复,直接打开即可。
SQL> ALTER DATABASE OPEN;
数据库已更改。
--临时表空间,如果前面没复制,这里就得重新创建一个
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'E:ora10goradatajssttstemp01.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,重建密码文件等等,复制完成。