首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle 10.2.0.4 異機遷移並升級至 11.2.0.4 完整實戰日誌

     編輯:Oracle 教學

Oracle 10.2.0.4 異機遷移並升級至 11.2.0.4 完整實戰日誌

「異機遷移 + 就地升級」雙重變更是高風險操作,本文記錄一次生產級演練全過程:源庫 10.2.0.4 (192.168.8.132) → 目標庫 11.2.0.4 (192.168.8.133),Linux x86-64,覆蓋預檢查、RMAN 異機還原、升級腳本執行、時區文件升級 (DSTv4→DSTv14)、組件驗證等關鍵節點。

階段 0:源庫 10g 環境預檢查 (關鍵門檻)

  1. 執行預升級腳本: 將 11g Home 下 rdbms/admin/utlu112i.sql 複製到源庫執行,輸出 upgrade_info.log。
    • 表空間檢查:SYSTEM ≥ 981M、SYSAUX ≥ 722M、UNDO ≥ 400M、TEMP ≥ 60M —— 不足需提前擴容。
    • 參數調整:SGA_TARGET 需 ≥ 596M(64位),棄用參數 background_dump_dest/user_dump_dest → diagnostic_dest。
    • 組件狀態:所有組件 VALID,無 INVALID 物件(若有先 @utlrp.sql 重編譯)。
    • 時區文件:源庫 V4,目標 11.2.0.4 自帶 V14,升級後需跑 DST 升級。
    • 回收站:需 PURGE DBA_RECYCLEBIN 清空。
  2. 一致性校驗: @rdbms/admin/dbupgdiag.sql,配合 @utlrp.sql 消除無效對象。
  3. 收集字典統計信息: EXEC DBMS_STATS.GATHER_DICTIONARY_STATS; 加速升級過程。
  4. RMAN 全量備份 + 歸檔備份: 含控制文件、SPFILE,備份集拷貝至目標機器。

階段 1:目標機 11g 環境準備與 RMAN 還原

  1. 安裝 11.2.0.4 軟件,創建實例 ORCL (僅軟件/實例,無數據庫)。
  2. 修改 SPFILE/PFILE:移除棄用參數,設置 diagnostic_dest、compatible=11.2.0.4.0、內存參數按預檢建議調整。
  3. NOMOUNT 還原控制文件:
    RMAN> SET DBID=1393903281;
    RMAN> RESTORE CONTROLFILE FROM '/home/oracle/bak/full_orcl_02pq07sn_1_1';
    RMAN> ALTER DATABASE MOUNT;
    
  4. 還原數據文件 + 恢復:
    RMAN> RESTORE DATABASE;
    RMAN> RECOVER DATABASE;  -- 若缺歸檔,CATALOG 備份集後 SET UNTIL SCN 恢復
    
  5. 重建 Database Link(源庫查詢 SYS.LINK$ 生成 DDL,目標端執行)。

階段 2:升級核心 — @catupgrd.sql


ALTER DATABASE OPEN RESETLOGS UPGRADE;
SPOOL upgrade.log
@?/rdbms/admin/catupgrd.sql
-- 耗時 ~1-2 小時,勿中斷

升級後必跑:


SHUTDOWN IMMEDIATE
STARTUP
@?/rdbms/admin/utlu112s.sql  -- 升級後狀態檢查
@?/rdbms/admin/utlrp.sql     -- 重編譯所有無效對象

階段 3:時區文件升級 DSTv4 → DSTv14 (自動模式)

11.2.0.4 強制要求 DST 升級,使用 MOS 文檔 Doc ID 977512.1 提供的自動腳本:


-- 準備檢查
@check.sql  -- 內容來自 upg_tzv_check.sql,輸出:Newest RDBMS DST version detected is DSTv14

-- 正式升級 (會自動重啟 2 次實例)
@app.sql    -- 內容來自 upg_tzv_apply.sql

關鍵日誌輸出:

  • INFO: Upgrading all SYS owned TSTZ data
  • INFO: Upgrading all non-SYS TSTZ data
  • 列出升級表清單 (SYSMAN、IX 等 Schema 下含 TIMESTAMP WITH TIME ZONE 列的表)
  • INFO: Total failures during update of TSTZ data: 0
  • INFO: Your new Server RDBMS DST version is DSTv14

驗證: SELECT * FROM v$timezone_file; → VERSION=14;DATABASE_PROPERTIES 中 DST_PRIMARY_TT_VERSION=14。

階段 4:最終驗證與收尾


SELECT comp_id, comp_name, version, status FROM dba_registry;
-- 17 組件均為 VALID 11.2.0.4.0

-- 業務驗證:核心表數據量、關鍵 SQL 執行計劃、應用連接測試

核心避坑總結 (血淚經驗)

  1. 預檢查不通過絕不動刀: 表空間、參數、無效對象、回收站,項項落實。
  2. 異機還原時 DBID 必須 SET,否則 RMAN 無法識別備份集。
  3. 歸檔缺失用 SET UNTIL SCN 而非時間點,SCN 精確到一致性點。
  4. 升級腳本猛跑時勿操作實例,任何中斷可能導致數據字典不一致,需從頭恢復備份重來。
  5. DST 升級腳本會強制重啟 2 次,確保 SPFILE 正確、無手工干預。
  6. 升級後必跑 utlrp.sql,無效對象歸零是交付標準。
  7. 保留源庫備份至升級驗證通過後 1 週,支持隨時回退。

這套「預檢 → 異機還原 → 升級 → DST 升級 → 驗證」標準化流程,已支撐多個 10g→11g 核心系統平滑遷移。關鍵在於把風險全部前置到預檢查階段消除,升級階段才能做到「只跑腳本、不做決策」。

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