在 Linux AS3 + Oracle 9.2.0.5 環境下,使用 PL/SQL Developer 或 TOAD 等第三方工具編譯 Procedure、Trigger 時,工具頻繁自動斷開、編譯失敗,Alert Log 大量出現 ORA-07445 錯誤;但改用 SQL*Plus 編譯則正常。
Errors in file /u01/app/oracle/admin/sensky/udump/sensky_ora_656.trc:
ORA-07445: exception encountered: core dump [ptmak()+104] [SIGSEGV] [Address not mapped to object] [0x8] [] []
經 Metalink (MOS) 查證,此為 Oracle 9i 的已知 Bug (Bug 2858875),與 Change Data Capture (CDC) 功能相關。當第三方工具進行 PL/SQL 偵錯/編譯時,會觸發內部 CDC 觸發程式,導致 Process 發生 Segmentation Fault。
以 SYS 權限執行移除 CDC 物件的腳本:
SQL> @?/rdbms/admin/rmcdc.sql
執行完成後,再使用 PL/SQL Developer 或 TOAD 編譯存儲過程、觸發程式即可正常通過。
此問題困擾多日,執行 rmcdc.sql 後即刻解決,特此記錄供遇到相同問題的 DBA 參考。