ORACLE_HOME啟動 9i 資料庫,以 SYSDBA 執行 10g ORACLE_HOME/rdbms/admin/utlu102i.sql:
SQL> SPOOL info.log
SQL> @utlu102i.sql
SQL> SPOOL OFF
| 類別 | 發現事項 | 需採取行動 |
|---|---|---|
| 參數調整 | shared_pool_size 需 ≥ 177,861,837 | 修改 pfile/spfile |
| 參數調整 | java_pool_size 需 ≥ 67,108,864 | 修改 pfile/spfile |
| 新參數 | streams_pool_size 未定義,需 ≥ 50,331,648 | 新增參數 |
| 參數調整 | session_max_open_files 需 ≥ 20 | 新增參數 |
| 廢棄參數 | hash_join_enabled, log_archive_start | 註解或移除 |
| 表空間 | SYSTEM ≥ 248MB, TEMP ≥ 58MB (含自動擴展 18MB) | 確認足夠 |
| 新表空間 | 需建立 SYSAUX ≥ 500MB | 升級過程中建立 |
| 統計資訊 | SYS 結構描述統計過舊 | 升級前收集統計 |
| 角色警告 | CONNECT 角色權限將縮減為僅 CREATE SESSION | 評估應用影響 |
將 9i pfile 複製至 10g 目錄並修改:
-- 修改前關鍵參數
*.shared_pool_size=50331648
*.java_pool_size=0
*.hash_join_enabled=TRUE
*.log_archive_start=true
*.log_archive_format='%s.arc'
*.log_archive_dest='D:\oracle\archive'
-- 修改後
*.shared_pool_size=177861837
*.java_pool_size=67108864
# *.hash_join_enabled=TRUE -- 廢棄參數註解
# *.log_archive_start=true -- 廢棄參數註解
# *.log_archive_format='%s.arc' -- 改用 LOG_ARCHIVE_DEST_n
# *.log_archive_dest='D:\oracle\archive'
*.streams_pool_size=50331648
*.session_max_open_files=20
*.compatible='9.2.0.0.0' -- 升級完成後再調為 10.2.0
listener.oraC:\> oradim -DELETE -SID ZHANGYE
C:\> oradim -NEW -SID ZHANGYE -MAXUSERS 10 -STARTMODE AUTO -PFILE D:\Oracle10g\database\INITzhangye.ORA
SQL> STARTUP UPGRADE
CREATE TABLESPACE sysaux
DATAFILE 'D:\oracle\oradata\zhangye\sysaux01.dbf'
SIZE 500M REUSE
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO
ONLINE;
SQL> SPOOL upgrade.log
SQL> @?/rdbms/admin/catupgrd.sql
SQL> @utlu102s.sql -- 檢查升級結果
SQL> SPOOL OFF
若 upgrade.log 有錯誤,處理後重跑 catupgrd.sql。
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP PFILE=D:\Oracle10g\database\INITzhangye.ORA
SQL> @?/rdbms/admin/utlrp.sql
-- 驗證無效物件
SQL> SELECT COUNT(*) FROM dba_objects WHERE status='INVALID';
-- 應回傳 0
compatible 參數調整為 10.2.0DBMS_STATS.GATHER_DATABASE_STATS)參考文件:Oracle Database Upgrade Guide 10g Release 2 (10.2) Part Number B14238-01
注意:生產環境升級前務必在測試環境完整演練,並制定詳細回滾方案。