從linux平臺移值資料庫到windows平臺

junsansi發表於2007-12-10

之前在測試傳輸表空間時感受了一下跨平臺的移值,當時只測試了通過傳輸表空間的特性複製某個指定表空間,或者是通過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,重建密碼檔案等等,複製完成。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-22304/,如需轉載,請註明出處,否則將追究法律責任。

相關文章