前言
Oracle 錯誤代碼數量龐大,開發與運維人員常需快速定位問題根因。本文彙整高頻錯誤代碼,按類別整理說明,並附帶常見成因提示,方便隨時查閱。
一、語法與物件類錯誤
| 錯誤代碼 | 含義 | 常見成因 |
| ORA-00900 | 無效 SQL 語句 | 語法拼寫錯誤、保留字誤用 |
| ORA-00904 | 標識符無效 | 欄位名拼寫錯誤、建表時末欄位多逗號 |
| ORA-00907 | 缺少右括號 | 括號未閉合 |
| ORA-00911 | 無效字符 | SQL 中混入特殊字符 |
| ORA-00917 | 缺少逗號 | 欄位清單或值清單遺漏逗號 |
| ORA-00918 | 列定義不明確 | 多表查詢未加別名導致欄位歧義 |
| ORA-00922 | 缺失或無效選項 | 表名含空格、儲存子句錯誤 |
| ORA-00923 | 未找到 FROM 關鍵字 | SELECT 後直接跟表名、缺少 FROM |
| ORA-00933 | SQL 命令未正確結束 | 語句結尾多/少分號、子查詢括號錯誤 |
| ORA-00936 | 缺少表達式 | SELECT 後無欄位、WHERE 條件不完整 |
| ORA-00942 | 表或視圖不存在 | 對象名錯誤、權限不足、同義詞缺失 |
| ORA-00947 | 值數量不足 | INSERT 值與欄位數量不匹配 |
| ORA-00979 | 非 GROUP BY 表達式 | 聚合查詢中非聚合欄位未納入 GROUP BY |
二、約束與資料完整性錯誤
| 錯誤代碼 | 含義 | 常見成因 |
| ORA-00001 | 違反唯一約束 | 主鍵/唯一鍵重複值 |
| ORA-01400 | 無法插入 NULL | NOT NULL 欄位未賦值 |
| ORA-01401 | 插入值過大 | 字串長度超過欄位定義 |
| ORA-01476 | 除數為零 | 計算欄位分母為 0 |
| ORA-02291 | 完整性約束違反-父鍵不存在 | 外鍵引用的父表記錄缺失 |
| ORA-02292 | 完整性約束違反-存在子記錄 | 刪除父表時子表仍有關聯資料 |
三、資源與儲存類錯誤
| 錯誤代碼 | 含義 | 常見成因 |
| ORA-01555 | 快照太舊 | UNDO 保留時間不足、長查詢與高 DML 衝突 |
| ORA-01628 | 達到最大擴展數 | 表空間/段擴展數觸及上限 |
| ORA-01652 | 無法擴展 TEMP 段 | 臨時表空間不足、排序/雜湊操作過大 |
| ORA-01653 | 表無法擴展 | 表空間剩餘空間不足 |
| ORA-01654 | 索引無法擴展 | 索引表空間滿 |
四、網路與連線類錯誤
| 錯誤代碼 | 含義 | 常見成因 |
| ORA-01017 | 用戶名/密碼無效 | 認證資訊錯誤、大小寫敏感 |
| ORA-01034 | ORACLE not available | 資料庫未啟動、實例掛起 |
| ORA-03113 | 通訊通道端對端失效 | 網路中斷、Server 進程異常終止 |
| ORA-12154 | TNS:無法解析連線標識符 | tnsnames.ora 配置錯誤、服務名拼寫錯誤 |
| ORA-12514 | TNS:監聽器無法識別服務 | 服務未註冊到監聽器、SID/Service Name 錯誤 |
| ORA-12541 | TNS:無監聽器 | 監聽器未啟動、防火牆阻擋 |
五、PL/SQL 與執行期錯誤
| 錯誤代碼 | 含義 | 常見成因 |
| ORA-06502 | 數值或值錯誤 | 型別轉換失敗、變數超出範圍 |
| ORA-06512 | 在行號處捕獲異常 | 配合 ORA-06502 定位具體行 |
| ORA-06550 | PL/SQL 編譯錯誤 | 語法錯誤、引用對象不存在 |
| ORA-04068 | 包/程序狀態已被丟棄 | 會話中對象被重編譯導致狀態失效 |
六、日期與字符轉換錯誤
| 錯誤代碼 | 含義 | 常見成因 |
| ORA-01830 | 日期格式圖片在轉換前結束 | 輸入字串與格式模型不匹配 |
| ORA-01843 | 無效月份 | 月份值超出 1-12 |
| ORA-01847 | 月份中日值無效 | 日期超出該月最大天數 |
| ORA-01861 | 字面值與格式字串不匹配 | TO_DATE 格式模型與實際輸入不符 |
七、分散式交易與進階錯誤
| 錯誤代碼 | 含義 | 常見成因 |
| ORA-02049 | 分散式交易等待鎖定超時 | 跨資料庫鎖競爭 |
| ORA-02063 | 前導錯誤堆疊 | 遠端資料庫返回的錯誤訊息 |
| ORA-04021 | 等待鎖定對象 | DDL 與 DML 並發衝突 |
| ORA-04030 | PGA 記憶體不足 | 排序/雜湊區域過大、參數設定偏小 |
使用建議
- 善用 oerr 工具:Linux/Unix 下執行
oerr ora 錯誤號 可獲取官方詳細說明。
- 查看 Alert Log:嚴重錯誤(如 ORA-00600、ORA-07445)必須結合告警日誌與 Trace 檔案分析。
- 關注版本差異:部分錯誤代碼在新版本中已廢棄或行為變更,請參考對應版本文檔。
總結
本手冊涵蓋開發運維高頻遭遇的 Oracle 錯誤,建議收藏備查。實際排查時,請結合具體 SQL、執行計劃與環境上下文綜合判斷。如有遺漏常見錯誤,歡迎補充。