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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM