1. 程式人生 > >ORA-38301:can not perform DDL/DML Over Object in Recycle Bin 11.2.0.4

ORA-38301:can not perform DDL/DML Over Object in Recycle Bin 11.2.0.4

測試 style 操作 ask erro ora- cli pre ati

我們最近有兩臺測試服務器在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