2014年9月2日 星期二

Unclean shutdown detected on MongoDB

參考文章:Recover Data after an Unexpected Shutdown

會有一個 mongod.lock的檔案產生,如果檔案大小不為 0就會無法正常開啟 mongoDB

解決方法有兩種

1.複製一份資料
   mongod --dbpath /data/db --repair --repairpath /data/db0
   再開啟新的檔案  mongod --dbpath /data/db0

2.直接蓋掉原檔
    先移除 mongod.lock
    執行 mongod --dbpath /data/db --repair   
   


2014年8月22日 星期五

用 union 取代 exists解決 performance issue

目前碰到的情況是,我有一個 table用來儲存 GL drill-down的資料,會儲存約一年的資料,約1千3百萬筆。 有一個應用就是每個部門會查詢該部門的費用,在 hr那邊會有資訊記錄登錄的使用者具有那一個部門會科,但有可能一個人員會有需求看多個部門費用,所以會有另一個 table來記錄使用可以看那些部門的部門會科值,原本的寫法為是用 exists,大約如下:

    select * from gl_drill_down_data d
    where d.dept_id = (user_dept_id)
         or (exists (select 'ex' from user_depts ud
                         where ud.user_id = p_user_id
                             and d.user_dept_id = ud.dept_id
                        )
             )

這樣的寫法在資料筆數只有百萬筆的時候沒什麼效率問題,但更多資料時就會出現很慢的情況,就算作了很好的 index也一樣,後來的解法就是用 union如下:


select d.* from gl_drill_down_data d
where d.dept_id = (user_dept_id)
union
select d.* from gl_drill_down_data d, user_depts ud
where ud.user_id = p_user_id
and d.user_dept_id = ud.dept_id

這樣效率真的差很多,可以參考看看。
                 

2014年8月6日 星期三

TechDays Taiwan 2014 - Microsoft

可以開始報名囉,希望今年我可以去~~

GV有兩筆重複的憑證號碼存在

這個發生的情況為憑證類別為海關代徵營業稅,使用者在不同發票上輸入相同的憑證號碼,資通的顧問說畫面上會提示,但允許存檔。 如果發現相同的話,如果 ap invoice 作刪除,也要順便把 GV的那一作刪除才行。

2014年7月21日 星期一

Oracle EBS R12 PO Line單價異動影響 AP會科費用產生

通常發生在倉管人員有作退料的情況下,採購使用者會來問,為什麼收料是一個單價,退料又是另一個單價,AP Invoice, Debit Memo這時會科就會出現差異,很明顯的就是在這收、退的期間內,使用者去改變 PO Line的單價了,但可能是使用者太忙忘了,還是推責任的因素,往往都不承認有作過這件事,所以可以用 DB Trigger or ERP Alert的方式,如果有針對價格或數量有更動的話,把記錄寫進到一個暫存的 table內,這樣就比較好找出問題了。   雖然 Oracle ERP有很多 bug,尤其是在 AP這一模組,但實在很不想聽到每次使用者都說是系統的問題。

2014年7月17日 星期四

Asp.net MVC 3, 4, 5的說明

這邊有一篇文章有對不同的版本作說明,如下:

ASP.NET MVC3 Vs MVC4 Vs MVC5

如果要開發 MVC 5的程式,需要 Visual Studio 2012以上的版本才行