Ⅰ 資料庫日誌中可以查看插入刪除更新等操作的記錄嗎
使用Log Explorer查看和恢復數據
Log Explorer 4.1.可用於sql Server2005的日誌查看工具
下載地址:
http://download.csdn.net/source/620271
使用方法:
打開Log Explorer -> Attach Log File -> 選擇SQL Server伺服器和登陸方式 -> Connect ->
在Database Name中選擇資料庫 -> Attach-> 左面對話框中Browse-> View Log-> 就可以看到log記錄了
想恢復的話: 右鍵Log記錄 Undo Transation-> 選擇保存文件名和路徑-> 然後打開該文件到查詢分析器里執行
T-sql代碼就可以了
例如 如果Log是delete table where ...的話,生成的文件代碼就是insert table ....
然後將此insert table的代碼放到查詢分析器里執行.就可以恢復數據.
----------------------------------------------------------------------
--如何恢復被delete/update的數據
----------------------------------------------------------------------
1連接到被刪除資料庫的Db
打開log explorer 選擇 "file"->"attach log file"->選擇伺服器和登陸方式->"connect"->選擇"資料庫"->"attach"
2 查看日誌
在左面操作項目的對話框中選擇"browse"項目->"view log"->就可以看到當前的Log記錄了
3 恢復數據
右鍵某一條log記錄,選擇"undo transation"->"選擇保存文件名和路徑"->然後打開該文件到查詢分析器里執行
T-sql代碼就可以了
例如: 如果log是delete table where ...的話,生成的文件代碼就是insert table ....
----------------------------------------------------------------------
--Log Explorer恢復被drop table和truncate table後的數據
----------------------------------------------------------------------
1 連接到被刪除資料庫的Db
操作同上
2 恢復方法
1) 選擇"salvaage dropped/truncate"菜單,在右邊的對話框中選擇表名,和droped/trucated的日期,
File Name中選擇生成insert語句腳步的存放位置,condition選擇是droped還是truncated,
最後點擊"create" 就會生成insert語句,把生成的語句到查詢分析器裡面執行一下就可以了
2) 選擇"ViewDDL Commands"菜單->選"truncate table" 操作項->點擊"Salvage"->生成語句->查詢分析器里執行
----------------------------------------------------------------------
--log explorer使用的幾個問題
----------------------------------------------------------------------
1) 對資料庫做完全/差異/日誌備份
備份時如果選用了刪除事務日誌中不活動的條目
再用Log explorer打試圖看日誌時,提示No log recorders found that match the filter,would you like to view unfiltered data 選擇yes 就看不到剛才的記錄了
如果不選用了刪除事務日誌中不活動的條目
再用Log explorer打試圖看日誌時,就能看到原來的日誌並做恢復
2) 修改了其中一個表中的部分數據,此時用Log explorer看日誌,可以作日誌恢復
3) 然後恢復備份,(注意:恢復是斷開log explorer與資料庫的連接,或連接到其他數據上,
否則會出現資料庫正在使用無法恢復)
恢復完後,再打開log explorer 提示No log recorders found that match the filter,would you like to view unfiltered data,選擇yes 就看不到剛才在2中修改的日誌記錄,所以無法做恢復.
4) 不要用SQL的備份功能備份,搞不好你的日誌就破壞了.
正確的備份方法是:
停止SQL服務,復制數據文件及日誌文件進行文件備份.
然後啟動SQL服務,用log explorer恢復數據
Ⅱ 如何查詢 oracle 表中被刪除的記錄情況
可以定義一個觸發器,來把刪除的記錄寫到一個日誌表中,方法如下。
測試方法:
創建原始表,插入數據:
createtabletest
(idint,
namevarchar2(10));
insertintotestvalues(1,'張三');
insertintotestvalues(2,'李四');
commit;
創建日誌表:
createtabletest_log
(idint,
namevarchar2(10),
deletedatedate);
創建觸發器:
createorreplacetriggert_delete_test
beforedeleteontest
foreachrow
begin
insertintotest_log(id,name,deletedate)
values(:old.id,:old.name,sysdate);
end;
執行刪除操作:
deletefromtestwhereid=2;
commit;
檢測test表,及test_log表:
所以,可以證明,刪除成功,並且將刪除的數據寫入到了日誌表中。
Ⅲ 如何從資料庫的完整日誌模式還原誤刪除的數據
從日誌回復資料庫
:自己一步一步按照說明試著看
--創建測試資料庫
create
database
db
go
--對資料庫進行備份
backup
database
db
to
disk='c:\db.bak'
with
format
go
--創建測試表
create
table
db.dbo.tb_test(id
int)
--延時1秒鍾,再進行後面的操作(這是由於sql
server的時間精度最大為百分之三秒,不延時的話,可能會導致還原到時間點的操作失敗)
waitfor
delay
'00:00:01'
go
--假設我們現在誤操作刪除了
db.dbo.tb_test
這個表
drop
table
db.dbo.tb_test
--保存刪除表的時間
select
dt=getdate()
into
#
go
--在刪除操作後,發現不應該刪除表
db.dbo.tb_test
--下面演示了如何恢復這個誤刪除的表
db.dbo.tb_test
--首先,備份事務日誌(使用事務日誌才能還原到指定的時間點)
backup
log
db
to
disk='c:\db_log.bak'
with
format
go
--接下來,我們要先還原完全備份(還原日誌必須在還原完全備份的基礎上進行)
restore
database
db
from
disk='c:\db.bak'
with
replace,norecovery
go
--將事務日誌還原到刪除操作前(這里的時間對應上面的刪除時間,並比刪除時間略早
declare
@dt
datetime
select
@dt=dateadd(ms,-20,dt)
from
#
--獲取比表被刪除的時間略早的時間
restore
log
db
from
disk='c:\db_log.bak'
with
recovery,stopat=@dt
go
--查詢一下,看錶是否恢復
select
*
from
db.dbo.tb_test
/*--結果:
id
-----------
(所影響的行數為
0
行)
--*/
--測試成功
go
--最後刪除我們做的測試環境
drop
database
db
drop
table
#
Ⅳ oracle被刪除dbs如何查看操作日誌
Oracle日誌文件查看方法:
1、以sysdba許可權用戶登錄資料庫。
2、執行sql語句:select*fromv$logfile;
3、結果顯示即為日誌路徑:
4、另外還有其他的操作日誌可用以下兩個sql語句查詢:
select*fromv$sql;--(#查看最近所作的操作)select*fromv$sqlarea;--(#查看最近所作的操作)
Oracle日誌的查看方法:
SQL>select*fromv$sql(#查看最近所作的操作)
SQL>select*fromv$sqlarea(#查看最近所作的操作)
Oracle資料庫的所有更改都記錄在日誌中,從目前來看,分析Oracle日誌的唯一方法就是使用Oracle公司提供的LogMiner來進行,因為原始的日誌信息我們根本無法看懂,Oracle8i後續版本中自帶了LogMiner,而LogMiner就是讓我們看懂日誌信息的工具,通過這個工具可以:查明資料庫的邏輯更改,偵察並更正用戶的誤操作,執行事後審計,執行變化分析。