SQL*Loader-951錯誤
在使用datastage開發的時候,遇到錯誤:
SQL*Loader-951: Error calling once/load initialization
ORA-00604: error occured at recursive SQL level 1
ORA-00054: resource busy and acquire with NOWAIT specified
搬出谷歌大神:
可能是表裏索引處於 unusable state --> 導致索引unusable的原因:duplicate keys on unique constraint column,解決的方案SKIP_INDEX_MAINTENANCE or rebuild index
我琢磨了半天,我這個表沒有索引啊,怎麽可能出現這個問題?也沒想太多,把OS重啟了事,運行JOB,成功無報錯。又試了一次,出現同樣的錯誤。正在糾結中,無意中把delete表語句的session關掉了,JOB就正常了。 最終原因居然是:我刪除表數據之後並沒有commit,導致重新插入數據的時候報錯。太粗心了,把知識重新記一次。
科普自己:
DML(select,insert,update,delete,call,explain plan,lock table,...)不自動提交
DDL 自動提交
DCL 自動提交
sql*plus裏面如果沒有提交的話,正常退出sql*plus的時候就會自動提交;如果非正常退出sql*plus,不提交。
例子:
insert into src.dw_sjc_q_chel_visit_record_d(appkey,method,time,request,response,provider,isbilling)
select appkey,method,time,request,response,provider,isbilling from dw_biz_credit_access_bf
commit;
SQL*Loader-951錯誤