ORA-38301:can not perform DDL/DML Over Object in Recycle Bin 11.2.0.4
我們最近有兩臺測試服務器在oci direct load期間出現下列異常:
從表象上看,是我們在對表執行ddl操作,確實內部也是用了truncate table XXX,可是這個XXX並不是回收站裏面的XXX。即使是purge dba_recyclebin之後,也可能還是會有這個問題,所以這個問題只能說和回收站有關、但是並不一定是該表本身被DDL的原因。目前已知除了直接對回收站中的表直接DDL之外(這一般用戶不會直接進行,但是oracle後臺的各種自身統計收集任務是允許這麽做的),有可能是表空間中存在一些回收站,導致了XXX表和該表空間中已回收的對象存在空間爭用(但是我看下了dba_data_files,可用空間是足夠的);還有一個可能的已知原因是auto space advisor任務在跑
前者可以通過下列語句清理:
purge tablespace XXX;
後者可以通過下列方式禁用:
begin dbms_auto_task_admin.disable(client_name => ‘auto space advisor‘, operation => null, window_name => null); end; /
伴隨著ORA-38301,通常在alert.log裏面會有日誌:performing DML/DDL operation over object in bin. 但是他沒有被當做ERROR或者WARNING來顯示和對待。
我們的錯誤重放過程和https://knowledge.exlibrisgroup.com/Aleph/Knowledge_Articles/Oracle_message_in_alert_log%3A__%22performing_DMLDDL_operation_over_object_in_bin%22非常像,但是模擬不出來,有很多的帖子去模擬,比如http://www.xifenfei.com/2011/07/performing-dmlddl-operation-over-object-in-bin%E9%94%99%E8%AF%AF%E6%A8%A1%E6%8B%9F.html,實際上業務根本不是這麽操作的,所以這些所謂的專家就是這麽忽悠的,通常就是為了湊而湊。
至於ORA-39776,它純粹是表象,需要看具體的cause。
參考:
https://blog.csdn.net/lansesl2008/article/details/16116749
http://zy8643954.iteye.com/blog/701831
ORA-38301:can not perform DDL/DML Over Object in Recycle Bin 11.2.0.4