2018年5月25日 星期五

Form 6i client程式以timer排程產生報表檔案, 遇到error ORA-302000

狀況:
1.Form 6i client程式以timer排程產生報表檔案
2.排程異常終止, 有error ORA-302000

原因:
1.依搜尋所得資料, 可能是無法存取檔案造成.  在程式執行時, 的確是有寫入log檔, 或許log檔被lock而造成問題.
2.另一個查到的原因是沒有相符的目錄, 但這項與現有狀況不符.

治標方式: 終止原Form 6i runtime, 另以排程再重新執行

若要治本, 或許可試試改寫log檔的存取方式.


Ref:
Ora 302000 When Using Text_Io.Fopen
http://www.hivmr.com/db/ca78pdd137s38fcsdk1s7dxd99zjzpsp

2018年5月7日 星期一

Oracle EBS: JBO-25013: Too many objects match the primary key oracle.jbo.Key[xxxxxx nnnnnn ]

iSupplier Portal上的客製程式突然有狀況, 所有人都遇到相同error:

oracle.jbo.TooManyObjectsException: JBO-25013: Too many objects match the primary key oracle.jbo.Key [xxxxxx nnnnnn ]

看起來是primary key有問題, 但找了相關table:
1.沒有primary key
2.有primary key, 但沒有相符的id

找了一些文章, 實際的狀況都不符合.

DB中的幾個lock後來證實無關, AP server restart也沒有用.

最後查了有insert資料的table, 發現有兩個ID欄位有相符值, 但這兩個欄位沒有設定primary key, 而且ID重複的兩筆資料, 依creation_date來看, 在2014年就已存在.

刪除重複資料, 再執行客製程式, OK了.

所以是程式有檢查這兩個ID值?

程式最近一次異動大約在兩年前, 剩下的問題是:
1.如果重複值造成問題, 應該2014年或2016年就發生
2.若是系統設定異動造成, 會是什麼設定值

目前無解.

想到的唯一可能是有誤新增資料、但creation_date直接取2014年的日期, 而不是取新增時的日期.