oracle資料庫表被清空
㈠ oracle資料庫 表數據被刪除還能恢復嗎
delete可以恢復
truncate和drop不可恢復
oracle11g以後truncate又可恢復了
㈡ oracle資料庫誤操作把表刪除了,不知道刪除了哪張表,怎麼找回
一:表的恢復
對誤刪的表,只要沒有使用PURGE永久刪除選項,那麼從flash back區恢復回來希望是挺大的。一般步驟有:
1、從flash back里查詢被刪除的表
select * from recyclebin
2.執行表的恢復
flashback table tb to before drop,這里的tb代表你要恢復的表的名稱。
二:表數據恢復
對誤刪的表記錄,只要沒有truncate語句,就可以根據事務的提交時間進行選擇恢復,一般步驟有:
1、先從flashback_transaction_query視圖里查詢,視圖提供了供查詢用的表名稱、事務提交時間、UNDO_sql等欄位。
如:select * from flashback_transaction_query where
table_name='TEST';
2、執行表記錄恢復
一般先根據時間進行查詢,查詢語句模式為select * from tb as of timestamp
to_timestamp(time,'yyyy-mm-dd hh24:mi:ss'); tb指表名稱,time指某個時間點
如select * from scott.test as of timestamp to_timestamp('2009-12-11
20:53:57','yyyy-mm-dd hh24:mi:ss');
若有數據,恢復極為簡單了,語句為flashback table tb to timestamp
to_timestamp(time,'yyyy-mm-dd hh24:mi:ss');
如flashback table scott.test to timestamp to_timestamp('2009-12-11
20:47:30','yyyy-mm-dd hh24:mi:ss');
注意:alter table testvarchar enable row movement;
這個命令的作用是,允許Oracle 修改分配給行的rowid。在Oracle
中,插入一行時就會為它分配一個rowid,而且這一行永遠擁有這個rowid。閃回表處理會對EMP
完成DELETE,並且重新插入行,這樣就會為這些行分配一個新的rowid。要支持閃回就必須允許Oracle 執行這個操作
㈢ oracle資料庫數據刪除後如何恢復
Oracle DBA神器:PRM災難恢復工具,Schema級別數據恢復。PRM For Oracle Database – schema級別oracle資料庫數據恢復特性 ,PRM即ParnassusData Recovery Manager是企業級別Oracle資料庫災難恢復工具。PRM可以在無備份的情況下恢復被truncated掉的表,也可以恢復無法打開的Oracle資料庫(Alter Database Open失敗)中的數據。 PRM是圖形化增強版的Oracle DUL工具,同時具備很多Oracle DUL不具備的特性
㈣ oracle資料庫誤操作把表刪除了,怎樣恢復
一:表的恢復
對誤刪的表,只要沒有使用PURGE永久刪除選項,那麼從flash back區恢復回來希望是挺大的。一般步驟有:
1、從flash back里查詢被刪除的表
select * from recyclebin
2.執行表的恢復
flashback table tb to before drop,這里的tb代表你要恢復的表的名稱。
二:表數據恢復
對誤刪的表記錄,只要沒有truncate語句,就可以根據事務的提交時間進行選擇恢復,一般步驟有:
1、先從flashback_transaction_query視圖里查詢,視圖提供了供查詢用的表名稱、事務提交時間、UNDO_SQL等欄位。
如:select * from flashback_transaction_query where
table_name='TEST';
2、執行表記錄恢復
一般先根據時間進行查詢,查詢語句模式為select * from tb as of timestamp
to_timestamp(time,'yyyy-mm-dd hh24:mi:ss'); tb指表名稱,time指某個時間點
如select * from scott.test as of timestamp to_timestamp('2009-12-11
20:53:57','yyyy-mm-dd hh24:mi:ss');
若有數據,恢復極為簡單了,語句為flashback table tb to timestamp
to_timestamp(time,'yyyy-mm-dd hh24:mi:ss');
如flashback table scott.test to timestamp to_timestamp('2009-12-11
20:47:30','yyyy-mm-dd hh24:mi:ss');
注意:alter table testvarchar enable row movement;
這個命令的作用是,允許Oracle 修改分配給行的rowid。在Oracle
中,插入一行時就會為它分配一個rowid,而且這一行永遠擁有這個rowid。閃回表處理會對EMP
完成DELETE,並且重新插入行,這樣就會為這些行分配一個新的rowid。要支持閃回就必須允許Oracle 執行這個操作
㈤ 我們公司一個oracle資料庫里的一張表被truncate了,現在要想辦法恢復,沒有開歸檔也沒有備
你可以試試PRM for Oracle。
ParnassusData Recovery Manager(以下簡稱PRM)是企業級ORACLE數據災難恢復軟體,可直接從Oracle9i,10g,11g,12c的資料庫數據文件(datafile)中抽取還原數據表上的數據,而不需要通過ORACLE資料庫實例上執行SQL來拯救數據。ParnassusDataRecovery Manager是一款基於JAVA開發的綠色軟體,無需安裝,下載解壓後便可直接使用。
恢復場景1 誤Truncate表的常規恢復
D公司的業務維護人員由於誤將產品資料庫當做測試環境庫導致錯誤地TRUNCATE了一張表上的所有數據,DBA嘗試恢復但是發覺最近的備份不可用,導致無法從備份中恢復出該數據表上的記錄。 此時DBA決定採用PRM來恢復已經被TRUNCATE掉的數據。
由於該環境中 所有資料庫文件均是可用且健康的,用戶僅需要 字典模式下載入SYSTEM表空間的數據文件以及被TRUNCATED表的數據文件即可,例如:
create table ParnassusData.torderdetail_his1 tablespace users as
select * from parnassusdata.torderdetail_his;
SQL> desc ParnassusData.TORDERDETAIL_HIS
Name Null? Type
----------------------- -------- --------------
SEQ_ID NOT NULL NUMBER(10)
SI_STATUS NUMBER(38)
D_CREATEDATE CHAR(20)
D_UPDATEDATE CHAR(20)
B_ISDELETE CHAR(1)
N_SHOPID NUMBER(10)
N_ORDERID NUMBER(10)
C_ORDERCODE CHAR(20)
N_MEMBERID NUMBER(10)
N_SKUID NUMBER(10)
C_PROMOTION NVARCHAR2(5)
N_AMOUNT NUMBER(7,2)
N_UNITPRICE NUMBER(7,2)
N_UNITSELLINGPRICE NUMBER(7,2)
N_QTY NUMBER(7,2)
N_QTYFREE NUMBER(7,2)
N_POINTSGET NUMBER(7,2)
N_OPERATOR NUMBER(10)
C_TIMESTAMP VARCHAR2(20)
H_SEQID NUMBER(10)
N_RETQTY NUMBER(7,2)
N_QTYPOS NUMBER(7,2)
select count(*) from ParnassusData.TORDERDETAIL_HIS;
COUNT(*)
----------
984359
select bytes/1024/1024 from dba_segments where segment_name='TORDERDETAIL_HIS' and owner='PARNASSUSDATA';
BYTES/1024/1024
---------------
189.71875
SQL> truncate table ParnassusData.TORDERDETAIL_HIS;
Table truncated.
SQL> select count(*) from ParnassusData.TORDERDETAIL_HIS;
COUNT(*)
----------
0
啟動PRM ,並選擇 Tools => Recovery Wizard
㈥ 不小心把ORACLE中tuser表中的數據給清空了,要怎麼還原之前的那些數據呢
Oracle DBA神器:PRM-DUL災難恢復工具可以直接從這種受損的Oracle資料庫中將數據拯救出來。
當你的資料庫因為ORA-00600/ORA-07445或其他ORA-報錯,或丟失關鍵的system表空間數據文件,或ASM diskgroup損壞時均可以考慮採用PRM-DUL來做恢復。PRM-DUL採用獨創的DataBridge恢復技術,直接從數據文件中抽取數據後可以像DBLINK那樣直接插入到新建資料庫中,而無需數據落地成為DMP文件佔用空間。
㈦ oracle的一個數據表被刪除,如何恢復數據,以及查詢是誰進行了操作
基於oracle數據文件和控制文件的恢復,只要數據文件還在 就可以利用PRM FOR Oracle工具從中抽取出有用數據。
PRM可以再無備份的情況下恢復被truncated掉的表,也可以恢復無法打開的Oracle資料庫(Alter database open失敗)中的數據。 PRM是圖形化增強版的Oracle DUL工具,同時具備很多Oracle DUL不具備的特性。
而且PRM無需學任何新命令。
對於誤操作DROP TABLE的數據恢復
D公司的應用開發人員在ASM存儲環境下,在沒有任何備份的情況下DROP了系統中一張核心應用表,此時第一時間採用PRM可以恢復該DROP掉數據表的絕大部分數據。10g以後提供了 recyclebin回收站特性,可以首先通過查詢DBA_RECYCLEBINS視圖來確定被DROP掉的表是否在回收站中,如果在則優先通過回收站flashback to before drop,如果回收站中也沒有了,則第一時間使用PRM恢復。
恢復簡要流程如下:
首先將被DROP掉的數據表所在的表空間OFFLINE
通過查詢數據字典或者LOGMINER找到被DROP掉數據表的DATA_OBJECT_ID,如果此步驟中得不到這個DATA_OBJECT_ID,則需要在NON-DICT非字典模式下
啟動PRM,進入NON-DICT非字典模式,並加入被DROP掉數據表所在的表空間的所有數據文件,之後SCAN DATABASE+SCAN TABLE from Extent MAP
通過DATA_OBJECT_ID定位到展開對象樹形圖中對應的數據表,採用DataBridge模式插回到源資料庫中
㈧ oracle資料庫怎麼清空
方法一:Delete
Form
表名
方法二:TRUNCATE
TABLE
在功能上與不帶
WHERE
子句的
DELETE
語句相同:二者均刪除表中的全部行。但
TRUNCATE
TABLE
比
DELETE
速度快,且使用的系統和事務日誌資源少。
DELETE
語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。TRUNCATE
TABLE
通過釋放存儲表數據所用的數據頁來刪除數據,並且只在事務日誌中記錄頁的釋放。
TRUNCATE
TABLE
刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重置為該列的種子。如果想保留標識計數值,請改用
DELETE。如果要刪除表定義及其數據,請使用
DROP
TABLE
語句。
對於由
FOREIGN
KEY
約束引用的表,不能使用
TRUNCATE
TABLE,而應使用不帶
WHERE
子句的
DELETE
語句。由於
TRUNCATE
TABLE
不記錄在日誌中,所以它不能激活觸發器。
TRUNCATE
TABLE
不能用於參與了索引視圖的表。
貼過來的,但是很全面
一般就是DLEETE
from
表
希望對你能有所幫助。
㈨ 如何清空oracle資料庫所有表
可以使用以下3種方式實現:
1、如果有plsql客戶端,則可以使用該用戶登錄,選中所有表 右鍵Drop即可。
2、如果有刪除用戶的許可權,則可以寫:
dropuseruser_namecascade;
加了cascade就可以把用戶連帶的數據全部刪掉。
3、如果沒有刪除用戶的許可權,則可以執行:
select'droptable'||table_name||';'fromcatwheretable_type='TABLE'