
環境資訊:
| 源庫 | 目標庫 | |
|---|---|---|
| 作業系統 | WIN7 | WIN SVR 2012 R2 |
| 系統盤符 | C,D,E,F | C,D |
| IP | x.x.x.216 | x.x.x.112 |
| 資料庫版本 | 10.2.0.4.0 - 64bi | 10.2.0.4.0 - 64bi |
| 存盤方式 | 單實體 | 單實體 |
| ORACLE_HOME | D:\oracle\product\10.2.0\db_1 | D:\oracle\product\10.2.0\db_1 |
| ORACLE_SID | ORCL | ORCL |
資料庫遷移思路:
- 目標系統創建新的資料庫
- 將源庫中所有控制檔案,資料檔案復制到目標庫中
- 重建控制檔案修改相應路徑(如果檔案路徑有變更)
- 介質恢復所有資料檔案
- 啟動資料庫
具體恢復步驟:
- 源庫中查詢控制檔案、REDO 檔案、資料檔案位置并且記錄下來,并且查詢資料庫 DBID 記錄下來
select name from v$datafile;
select name from v$controlfile;
select * from v$logfile;
select dbid from v$database;
- 進行切換日志組,觸發檢查點,確保資料由臟塊進入資料檔案中,
alter system switch logfile;
alter system checkpoint;
shutdown immediate;//可選[取決于是否停機遷庫]
- 關閉目標資料庫 (以下皆在目標資料庫進行操作)
shutdown immediate;
- 以 notmount 模式啟動,并且設定資料庫 DBID 后關閉資料庫
startup nomount;
set dbid=1526707455;//(源庫DBID)
shutdown immediate;
- 將所有控制檔案、REDO 檔案及資料庫檔案復制到新的系統環境中(因為 216 系統盤與 112 系統盤不一致,故移動到目標庫 D 盤某一固定檔案夾中)
因為本次復制并無引數檔案故控制檔案(3 個)需放在 ORACLE10G 默認控制檔案的路徑下 D:\oracle\product\10.2.0\oradata\orcl - 啟動 mount 模式啟動目標資料庫
startup mount;
- 匯出控制檔案重建陳述句
alter database backup controlfile to trace as 'c:\REBUILDCTL.SQL';
-
編輯 REBUILDCTL.SQL 檔案夾,將資料檔案,REDO 檔案,臨時檔案等替換為放置到目標系統后的相對檔案路徑,

(需修改的路徑不止途中圈出的,需修改所有路徑為目標系統規劃路徑)
-
關閉資料庫,并且運行 REBUILDCTL.SQL 檔案
shutdown immediate;
@c:\REBUILDCTL.SQL;
- 以 mount 模式進行啟動,并且對所有資料檔案進行介質恢復(因為重建控制檔案會導致 scn 更新,導致與資料檔案中不統一)
recover database;
- 清除重做日志打開資料庫
alter database open resetlogs;
- 驗證資料庫(驗證源資料庫中的資料是否到目標資料庫中)
PS
- 之前想通過 windows 命令創建虛擬盤符 E,F 來避免為了修改資料檔案的路徑而去對控制檔案進行重建,然而發現 oracle 識別不到虛擬盤符的路徑,所以還是得老老實實得去重建修改掉相對路徑,
- 其他參考地址:
- https://jingyan.baidu.com/article/ca00d56c6d0d9de99eebcf82.html
- https://www.cnblogs.com/Snowfun/articles/4805048.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/41057.html
標籤:其他
