把64位的unix系統資料庫遷移到32位的windows系統資料庫中

mengzhaoliang發表於2008-10-08

把64位的unix系統資料庫遷移到32位的windows系統資料庫中

需求描述:從一個64為AIX5.3系統的Oracle資料庫把某一個使用者的資料導到32位的Windows系統Oracle資料庫中,資料量大概3G左右。作業系統不一樣,但Oracle的版本用的都是10.2.0.1的版本,確定用exp\imp的方式進行遷移資料。


一、在64位的AIX5.3系統上匯出某一使用者的所有資料(下面在AIX5.3系統操作)

 1、檢視磁碟空間情況:
  在64位的AIX5.3系統上執行匯出資料
  先檢視匯出的磁碟空間是否足夠存放匯出的資料(需要大於3G的空間):
  AIX5.3系統命令:

df -m


  
 2、檢視資料庫的監聽器,以便知道資料庫的監聽名稱。

位於$ORACLE_HOME/network/admin/tnsnames.ora
 如:

DQOMS =

(DESCRIPTION =

    (ADDRESS_LIST =

           (ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 1568)) )

     (CONNECT_DATA =

     (SERVICE_NAME = DQOMS)

    )

)

  監聽名稱為dqoms


  3、執行匯出命令,讓其命令在後臺執行(可能要2、3個小時匯出資料)
  資料量比較大,以防網路不穩定,該匯出程式在後臺執行命令:

nohup  exp    wner=dqomswas   file=20081008exp   log=20081008exp.log   &

  檢視後臺執行的程式:

$ ps  -ef|grep  exp

 

二、在Windows中匯入在AIX系統匯出的資料

 1、用ftp等工具把在AIX系統匯出的資料傳到Windows系統中

 2、在windows系統中安裝Oracle 10.2.0.1版本的資料庫(略)

 3、在匯入資料庫之前需要建立AIX系統資料庫中的表空間和使用者


 3.1 在AIX系統資料庫中查詢總共有多少表空間,建立相應的表空間。
 

SQL> select a.ts#,a.name "tablespace",b.name

 2 from v$tablespace a,v$datafile b

3 where a.ts#=b.ts# order by a.ts#;

  3.2 在Windows系統的資料庫中建立相應的表空間
  比如建立一個RMAN_SPACE的表空間:
  
 

SQL> create tablespace RMAN_SPACE

2 datafile 'F:\oracle\product\10.2.0\oradata\xboms\RMAN_SPACE.dbf'

3 size 20M autoextend on;

表空間已建立。

  建立完表空間!接著建立使用者
 
  3.3建立使用者:

SQL> create user xbomswas

2 identified by xbomswas;

使用者已建立。

  3.4 給使用者授權
 

SQL> grant dba to xbomswas;

   3.5 先檢視AIX系統資料庫dqomswas使用者的預設表空間
 

SQL> conn dqomswas/dqomswas

已連線。

SQL> select username,default_tablespace,temporary_tablespace from user_users;

   3.6檢視windows系統資料庫上xbomswas使用者的預設表空間
  

SQL> conn xbomswas/xbomswas

已連線。

SQL> select username,default_tablespace,temporary_tablespace from user_users;

   兩個使用者的預設表空間一直就可以了(如果不一致,更改xbomswas使用者的預設表空間:

alter user xbomswas default tablespace users;


  3.7在windows系統中檢視資料庫的監聽器名稱.位於$ORACLE_HOME/network/admin/tnsnames.ora
  如果沒有,需要新增上:
  如:


XBOMS =

 (DESCRIPTION =

     (ADDRESS_LIST =

            (ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 1521)) )

             (CONNECT_DATA = (SERVICE_NAME = XBOMS)

     )

)

   監聽名稱為XBOMS
  如果在cmd執行

sqlplus  
  能登陸資料庫則可以匯入資料了。

   4 在windows系統中匯入資料,因為建立了相應的表空間了,但沒有建立相應的使用者,有很多表可能授權給其他使用者,但資料庫中缺少某使用者,則會報錯(由於 ORACLE 的 1917 錯誤)。所以在匯入時加上grants=no ,也就是不匯入許可權,這樣就不用報錯了。
  

imp      file=f:\20081008exp.dmp   fromuser=dqomswas   touser=xbomswas   grants=no    log=f:\20081008imp.log

  

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

相關文章