Oracle 資料庫誤truncate table恢復過程
北京某國企客戶 Oracle 11g R2 資料庫誤truncate table CM_CHECK_ITEM_HIS,表資料丟失,業務查詢到該表時報錯,此時發現數據庫的備份不能用,表資料無法查詢。
客戶Oracle 11g R2 資料庫誤truncate table CM_CHECK_ITEM_HIS,表資料丟失,業務查詢到該表時報錯,此時發現數據庫的備份不能用,表資料無法查詢。
Truncate資料的機理是,ORACLE會在資料字典和Segment Header中更新表的Data Object ID,而實際資料部分的塊則不會做修改。由於資料字典與段頭的DATA_OBJECT_ID與後續的資料塊中的並不一致,所以ORACLE服務程序在讀取全表資料時不會讀取到已經被TRUNCATE的記錄,但是實際仍未被覆蓋的資料。
恢復過程
為保護使用者資料,本文件構造與客戶相同的故障。Scott使用者建立表emp1,複製emp表,連續複製多次,總記錄數為:7340032條。truncate表emp1,之後沒有進行任何操作。查詢該表,資料庫中該表的記錄為0條。
注: Os:win server 2008R2。資料庫版本:win_oracle_11.2.0.1_x64;
1 對system表空間檔案進行分析,找到truncate表的原始資料所在的位置
2 解析表所在的資料檔案資料庫,找到truncate的資料3 將truncate的資料庫插入到資料庫中結果
通過解析system01.dbf檔案,找到truncate的資料所在的位置,找到被刪除的資料。解析表所在的資料檔案,將truncate的資料插入到資料庫中。
在資料庫中,查詢被truncate,發現數據回來了,直接備份資料。
Exp匯出scott使用者;
相關推薦
Oracle 資料庫誤truncate table恢復過程
北京某國企客戶 Oracle 11g R2 資料庫誤truncate table CM_CHECK_ITEM_HIS,表資料丟失,業務查詢到該表時報錯,此時發現數據庫的備份不能用,表資料無法查詢。 客戶Oracle 11g R2 資料庫誤truncate tab
ORACLE資料庫誤操作執行了DELETE,該如何恢復資料?
作為一個程式設計師,資料庫操作是必須的,但是如果操作失誤,一般都會造成比較嚴重的後果。 今天一不小心,幹了一件揪心的事情,將正在使用的組織機構誤操作執行了delete,頓時大腦有點缺氧,感覺蒙圈了(相信對於沒有資料備份和回滾經驗的小夥伴來說都是這樣的感受),但是一想,資料庫
oracle drop/truncate table 恢復
4. 修改pfile node1new.__db_cache_size=335544320 node1new.__java_pool_size=4194304 node1new.__large_pool_size=4194304 node1new.__oracle_base='/u01/app/oracle'
三種語句可以恢復Oracle資料庫誤刪除資料
有很多朋友都遇到過在操作資料庫時誤刪除某些重要資料的情況,如果資料庫沒有備份而且資料有十分重要的情況下怎麼做才能找回誤刪除的資料呢?我在這裡為大家介紹幾種誤刪除資料庫中重要資料的恢復方法(不考慮全庫備份和利用歸檔日誌)第一種資料恢復方法是利用oracle提供的閃回方法進行資料
Oracle資料庫誤刪,誤修改已經提交的恢復方法
以前給自己制定了一個計劃,一個月至少寫一篇部落格。感覺這個已經被我默默的給破化了,以前這樣想的就是給自己一些計劃去學習新的東西。最近感覺狀態很差,沒有心情學習(也許是因為過年,也許是因為公司)。自己入這行也這麼久了,感覺看不到前途的光芒,有點轉行的念頭了。不發牢
oracle資料庫中truncate表後如何快速恢復
在生產中,極有可能遇到不小心truncate表的情況,truncate表後不會產生日誌記錄和回滾段空間的使用,不能用閃回恢復。尤其是在沒有任何備份的情況下所以恢復起來相當麻煩,雖然在有備份
Oracle資料庫誤刪表,怎樣恢復表結構和表資料
誤刪Oracle資料庫表,恢復表結構及資料 必要條件:Oracle版本必須在10G以上 操作如下: 1.先找到原有表還在資料庫的時間 select timestamp_to_scn(to_timestamp('2017-02-21 09:00',
ORACLE資料庫誤操作後資料恢復方法
1、查詢誤操作之前的資料,只需要保證時間在誤操作之前即可 select * from YOUR_TABLE as of timestamp to_timestamp('2017-11-11 18:0
oracle資料庫如何手工完全恢復操作?(總結)
oracle資料庫如何手工完全恢復操作? 1.當全部或大部分資料檔案損壞時,需在mount 下進行“資料庫還原恢復”操作: 具體為手工在作業系統中,通過cp 還原受損的 dbf,不一定需要還原全部資料檔案,可以通過查詢v$recover_file來確定哪些檔案需要被還原。
Oracle資料庫學習筆記四——儲存過程的值傳遞和引用傳遞
程式語言中的4種子例程: 由兩種行為定義,即形式值是否返回以及引數列表是值傳遞還是引用傳遞。 如果返回輸出,子例程就是函式,如果不返回,就是過程。 所以4中子例程為: 1.值傳遞函式 2.引用傳遞函式 3.值傳遞過程 4.引用傳遞過程pl/sql值傳遞過程由下列5條規則定義
Oracle DROPtable以及Truncate table 的簡單測試
1. 一個使用者庫 有一個業務表比較大 大小是 49g 表的行數為:121546147 一億兩千萬行 製作一個虛擬機器的快照測試一下 drop table 和 truncate table的效能差距 2. 首先是drop table 測試時間為: 3.
Oracle 資料誤刪的恢復措施
Oracle中,常見的資料刪除操作就三種,truncate,drop,delete,下面分類說一下如何恢復 Truncate:
SQLSERVER2012誤刪資料恢復過程
由於長時間從事企業應用系統開發,前往使用者現場升級、除錯系統是比較常做的事情,但是就在週一,由於同事的失誤在毫無知覺的情況下誤刪了生產資料庫幾乎所有的資料。當我發現的那一刻,感覺頭髮都立起來了,心想這他孃的是要領盒飯了。 為了迅速恢復系統的使用,在當時的情況下立即關閉
Oracle資料庫熱備份與恢復(聯機備份)示例
Oracle資料庫熱備份(聯機備份)示例 必須將日誌置為歸檔方式 SQL>archive log list; --檢視日誌歸檔方式. Database log mode No Archive Mode Automatic
Oracle資料庫 drop表之後恢復(包括表內資料)
drop表查詢:select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recyclebin;恢復drop掉的表: (person=表名)flashback
ORACLE資料庫表及資料恢復
恢復刪除表(保證表還在回收站,並未被purge掉) --flashback table 表名 to before drop恢復刪除表。 恢復刪除資料1: ALTER TABLE table_name
Oracle資料庫中truncate命令和delete命令的區別
首先講一下,truncate命令: 語法:TRUNCATE TABLE table; 表格裡的資料被清空,儲存空間被釋放。 執行後會自動提交,包括之前其它未提交的會話,因而一旦清空無法回退。 只有表格的建立者或者其他擁有刪除任意表格許可權的使用者(如DBA)才能清空表格。 TRUNCATE TABL
Oracle資料庫中對誤刪資料的恢復
如果一不小心對Oracle資料庫中的資料進行了誤刪除操作,那麼如何進行資料恢復呢(不考慮全庫備份和利用歸檔日誌)?如果使用的是9i以及之後的版本,那麼我們可以採用閃回技術對誤刪除的資料進行恢復。方式有兩種。 原理: 利用oracle提供的閃回方法,如果在刪除資料後還沒做大量的操作(只
ORACLE 儲存過程不能用truncate table xxx解決方法
ORACLE 儲存過程不能用truncate table xxx CREATE OR REPLACE PROCEDURE XM_MRP_YFKUWEI1 AS /* 工作日每天0點30,要HOLD住研發倉(將F41021的批次狀態碼=E,條件F0005的研發庫位); */
Oracle資料庫資料檔案rm -rf誤刪除後恢復
Oracle資料庫中表空間的資料檔案在基於OS系統級別被rm -rf 刪除後,只要資料庫在刪除後一直未被shutdown,那麼就可以手動恢復,恢復的前提是Oracle安裝在Linux系統下,下面是一個例項模擬 1. 在資料庫open的時候,直接刪除users表空間中的