首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 冷備份異機遷移完整操作手冊

     編輯:Oracle 資料庫相關知識

遷移核心邏輯

關源庫 → 拷貝文件 → 目標機修改參數/重命名 → Mount 狀態改名 → Open 數據庫

前置信息收集 (源庫)

SELECT * FROM v$instance;
SELECT * FROM v$database;
SELECT * FROM v$tablespace;
SELECT * FROM v$datafile;

記錄:實例名、版本、塊大小、表空間名、數據文件路徑、控制文件、日志文件、SPFILE 路徑。

生成拷貝腳本 (cp.sql)

SET LINESIZE 130 PAGESIZE 2000 TRIMSPOOL ON ECHO OFF VERIFY OFF TIMING OFF FEEDBACK OFF HEAD OFF
SPOOL cpfile.bat
SELECT 'copy '||name||' z:\orcl\'||SUBSTR(name, INSTR(name, '\', -1)+1) FROM v$controlfile
UNION ALL
SELECT 'copy '||member||' z:\orcl\'||SUBSTR(member, INSTR(member, '\', -1)+1) FROM v$logfile
UNION ALL
SELECT 'copy '||name||' z:\orcl\'||SUBSTR(name, INSTR(name, '\', -1)+1) FROM v$datafile
UNION ALL
SELECT 'copy '||name||' z:\orcl\'||SUBSTR(name, INSTR(name, '\', -1)+1) FROM v$tempfile
UNION ALL
SELECT 'copy '||value||' z:\orcl\'||SUBSTR(value, INSTR(value, '\', -1)+1) FROM v$parameter WHERE name='spfile';
SPOOL OFF

假設目標機映射盤符為 Z:,路徑統一為 z:\orcl\

生成重命名腳本 (ren.sql)

SPOOL renfile.sql
SELECT 'ALTER DATABASE RENAME FILE '''||member||''' TO ''d:\oradata\orcl\'||SUBSTR(member, INSTR(member, '\', -1)+1)||''';' FROM v$logfile
UNION ALL
SELECT 'ALTER DATABASE RENAME FILE '''||name||''' TO ''d:\oradata\orcl\'||SUBSTR(name, INSTR(name, '\', -1)+1)||''';' FROM v$datafile
UNION ALL
SELECT 'ALTER DATABASE RENAME FILE '''||name||''' TO ''d:\oradata\orcl\'||SUBSTR(name, INSTR(name, '\', -1)+1)||''';' FROM v$tempfile;
SPOOL OFF

CREATE PFILE FROM SPFILE;  -- 生成文本參數文件便於修改

源庫關閉與拷貝

HOST lsnrctl stop
SHUTDOWN IMMEDIATE
-- 將 Windows 服務改為「手動」啟動,防止意外啟動導致文件不一致
HOST cpfile.bat
STARTUP
HOST lsnrctl start

目標機操作

  1. 拷貝 pfile、tnsnames.ora、口令文件、renfile.sql 到對應目錄
  2. 修改 pfile 中 control_files 參數指向新路徑
  3. STARTUP MOUNT PFILE='?/dbs/initorcl.ora'
  4. @renfile.sql — 執行重命名
  5. CREATE SPFILE FROM PFILE;
  6. ALTER DATABASE OPEN;
  7. HOST lsnrctl start

遷移後驗證

  • SELECT file_name FROM dba_data_files; 確認路徑正確
  • SELECT * FROM v$tempfile; 檢查臨時文件是否自動創建 (OMF 環境下自動)
  • 應用端連接測試

常用輔助命令備忘

-- 重建實例服務
oradim -NEW -SID test -STARTMODE manual -PFILE "D:\Oracle\admin\test\pfile\init.ora"

-- 日志組管理
ALTER DATABASE ADD LOGFILE GROUP 3 ('/u01/log3a.rdo','/u02/log3b.rdo') SIZE 100M;
ALTER DATABASE DROP LOGFILE GROUP 2;
ALTER DATABASE CLEAR LOGFILE '/u01/log2a.rdo';

-- 臨時文件管理
ALTER TABLESPACE temp ADD TEMPFILE '/oradata/temp03.dbf' SIZE 10G;
ALTER DATABASE TEMPFILE '/oradata/temp02.dbf' DROP INCLUDING DATAFILES;

性能參考

245GB 數據庫,Windows 跨網段拷貝約 9 小時 (千兆網絡)。建議:
- 使用壓縮工具 (7z -mx=1) 壓縮後傳輸
- 或採用 RMAN 备份集 + 壓縮 + 並行通道
- 存儲層面支援快照/克隆 (NetApp SnapMirror, EMC TimeFinder) 可分鐘級完成

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved