Oracle exp匯出時出現ORA-01555和ORA-22924的解決方案

來源:互聯網
上載者:User

現場報了一個問題,說是做邏輯備份時出現錯誤,導致備份的資料不完整,一張數十G資料量的表只匯出了不到1G。錯誤資訊如下:

EXP-00056: 遇到 ORACLE 錯誤 1555
ORA-01555: snapshot too old: rollback segment number  with name "" too small
ORA-22924: snapshot too old

查了MOS,官方給出如下說明:

原因為LOB段損壞,使用如下方法來定位損壞的LOB值所在記錄的rowid

create table corrupted_lob_data (corrupted_rowid rowid);set concat offdeclare  error_1555 exception;  pragma exception_init(error_1555,-1555);  num number;begin  for cursor_lob in (select rowid r, &&lob_column from &table_owner.&table_with_lob) loop    begin      num := dbms_lob.instr (cursor_lob.&&lob_column, hextoraw ('889911')) ;    exception      when error_1555 then        insert into corrupted_lob_data values (cursor_lob.r);        commit;    end;  end loop;end;/

執行完以後,根據表中儲存的rowid值到出錯的表中查出對應的記錄。如果使用PL/SQL Developer,能看到對應的LOB欄位值顯示value error。將該值清空或刪除這條記錄可以解決,比如:update TABLE1 set COL1=empty_blob() where rowid='xxxxxxx';

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.