熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

在異種機之間實現數據庫遷移

2013-11-13 22:23:34  來源: Oracle 

  在異種機之間進行數據庫遷移是一件麻煩的事但有時候為了進行數據庫升級或其他原因又必須進行這種操作我在工作中就遇到了這種情況要求是將原來在vax機(操作系統為open vms)上的生產管理庫procdb(sybase數據庫)遷移到alpha機(操作系統為digital unix)上借助syabse的power designer和unix的shell命令可以很方便地完成此項工作
  具體過程如下
  一ALPHA服務器上建立新的數據庫procdb
  .建立生產管理庫procdb
  #isql Usa Pxxxxxxx
  >create database procdb
  >on data_dev=
  >log on data_dev=
  >with override
  >go
  .增加新用戶
  >use master
  >go
  >sp_addlogin sssxxxxxxxxxxprocdb
  >go
  >use procdb
  >sp_changedbowner sss
  >go
  二生產管理庫procdb的移植
  .使用PowerDesigner 從vax上的procdb中移出數據庫結構
  * 運行PowerDesigner
  * 選擇File菜單下的Reverse Engineering …
  * 連接到vax上的procdb數據庫
  * 遷移庫結構
  * 保存該文件
  .將從vax獲取的數據庫結構移入alpha機的procdb數據庫
  * 連接到alpha上的procdb數據庫
  * 選擇Database菜單下的Gernate Database將數據庫表結構寫入alpha機的procdb數據庫;
  * 執行Database菜單下的Gernate Trigger and Procedure將存儲過程和觸發器寫入alpha機的procdb數據庫;
  .數據遷移
  * 注冊到unix機上用select 語句選出Procdb數據庫中的表並且輸出到文件tabnametxt中
  #isql U sss P xxxxx o tabnametxt
  > select name from sysobjects
  > where type =U
  > go
  * 建立awkout文件用於產生從vax機上讀取數據的bcp命令批
  # vi awkout
  awkout
  {
  print bcp $out $dat U sss P xxxxx S vax_sybase c
  }
  * 產生讀取數據的bcp文件bcpout
  #awk f awkout tabnametxt >bcpout
  產生的bcpout文件格式如下
  bcp table out tabledat U sss P xxxxx S vax_sybase c
  bcp table out tabledat U sss P xxxxx S vax_sybase c
  bcp table out tabledat U sss P xxxxx S vax_sybase c
       .
       .
       .
  * 建立awkin文件用於產生寫入數據到alpha機上的bcp命令批
  awkin
  {
  print bcp $in $dat U sss P xxxxx S alpha_sybse c
  }
  * 建立用於插入數據的bcp文件bcpin
  #awk f awkin tabnametxt >bcpin
  產生的bcpout文件格式如下
  bcp table in tabledat U sss P xxxxx S vax_sybase c
  bcp table in tabledat U sss P xxxxx S vax_sybase c
  bcp table in tabledat U sss P xxxxx S vax_sybase c
       
       
       
  
  * 執行這兩個bcp文件
  #ksh bcpout
  #ksh bckin
  自此數據庫遷移完成以上代碼在digital unix上運行通過power designer在Win上運行

From:http://tw.wingwit.com/Article/program/Oracle/201311/18975.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.