| 場景 | 推薦技術 | 理由 |
| 會話關鍵/高併發/需 TAF | Pro*C/C++ 或 OCI | 直接呼叫核心庫,效能最強,支援透明應用故障轉移 |
| 一般業務邏輯/快速開發 | PL/SQL (存儲過程/函數/觸發器) | 資料庫內執行,網路往返最少,維護性佳 |
| 表單/報表導向應用 | Oracle Forms/Reports (Developer Suite) | 宣告式開發,生產力高 |
代碼品質鐵律
- 失敗檢查與恢復:指定備援實例、終止錯誤客戶進程
- 解耦資料庫變更:使用 VIEW、%TYPE、%ROWTYPE、Table-Driven 設計
- 充分單元/模組測試:為整合奠基
- 關鍵表操作備份優先:應用前備份表,成功後刪除
- 代碼優化:高比例效能問題源於拙劣代碼
- 空間增長監控:防止空間耗盡導致應用失敗
定時資料整理自動化 (Cron + Pro*C)
# Shell 腳本 (cleanup.sh) - 必須在腳本中顯式設定環境變數
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/9.2.0
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH
$ORACLE_HOME/bin/proc_cleanup # 呼叫 Pro*C 編譯執行檔
# Crontab 排程
0 2 * * * /home/oracle/scripts/cleanup.sh >> /home/oracle/logs/cleanup.log 2>&1
大量刪除專用回滾段策略
-- Pro*C 代碼片段
EXEC SQL ALTER ROLLBACK SEGMENT RBS_SPEC ONLINE;
EXEC SQL SET TRANSACTION USE ROLLBACK SEGMENT RBS_SPEC;
EXEC SQL DELETE FROM huge_table WHERE create_date < :cutoff_date;
EXEC SQL ALTER ROLLBACK SEGMENT RBS_SPEC OFFLINE;
- 平時 OFFLINE,用時 ONLINE,專用於大刪除交易
- 指定 STORAGE 參數支撐大量 UNDO
- 分區表優先用
TRUNCATE PARTITION:秒級完成、不產生 UNDO、不產生碎片 (需重建局部索引)
結語
Oracle 系統設計無標準答案,唯有「依應用而異、依資料而異、依規模而異」的工程判斷。將硬體選型、邏輯物理設計、開發規範、運維自動化串聯為標準化交付流程,才能在專案中實現「可預期的效能、可控制的風險、可持續的演進」。
- 上一篇文章: Oracle 8i/9i EXP/IMP 實戰經驗全集:參數詳解、跨版本遷移與疑難雜症
- 下一篇文章: 主流數據倉庫解決方案深度對比:IBM、Oracle、Sybase、Informix、CA、NCR、Microsoft、SAS
Copyright ©
程式碼之家 All Rights Reserved