很多時候人為誤操作會對Oracle的數(shù)據(jù)造成影響,比如誤刪數(shù)據(jù)。當誤操作發(fā)生時,通常有四個解決方法:
十多年的平武網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整平武建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“平武網(wǎng)站設(shè)計”,“平武網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
1.閃回數(shù)據(jù)庫或閃回表
2.備份恢復(fù)
3.logminer挖掘redo
4.使用延時庫
前三種方法都不是很完美:
閃回數(shù)據(jù)庫影響較大,且事先需要開啟庫上的閃回。
閃回表或閃回版本查詢使用方便,但在繁忙的數(shù)據(jù)庫中很容易快照過舊。
備份恢復(fù)耗時長、影響大
logminer挖掘日志耗時耗力
此時如果事先有搭建延時備庫的話,則可以很容易的從備庫得到誤刪的數(shù)據(jù)。以下進行演示。
主庫:
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string BDDEV2
備庫:
SQL> show parameter instance_name
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string BDTEST
現(xiàn)有表及數(shù)據(jù)如下:
SQL> select * from scott.tb_test;
ID AGE TM
---------- ---------- -----------------
1 2 20181203 14:22:14
2 3 20181203 14:22:14
3 4 20181203 14:22:14
4 5 20181203 14:22:14
5 6 20181203 14:22:14
6 7 20181203 14:22:14
7 8 20181203 14:22:14
8 9 20181203 14:22:14
9 10 20181203 14:22:14
10 11 20181203 14:22:14
10 rows selected.
此時備庫是實時應(yīng)用的:
SQL> SELECT * FROM V$DATAGUARD_STATS;
NAME VALUE UNIT TIME_COMPUTED DATUM_TIME
------------------------------ ------------------------------ ---------------------------------------- ------------------------------ ------------------------------
transport lag +00 00:00:00 day(2) to second(0) interval 12/03/2018 14:23:33 12/03/2018 14:23:33
apply lag +00 00:00:00 day(2) to second(0) interval 12/03/2018 14:23:33 12/03/2018 14:23:33
apply finish time +00 00:00:00.000 day(2) to second(3) interval 12/03/2018 14:23:33
estimated startup time 7 second 12/03/2018 14:23:33
備庫轉(zhuǎn)為延時庫,延時60分鐘:
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> alter database recover managed standby database disconnect from session delay 60;
Database altered.
主庫修改記錄:
SQL> update scott.tb_test set age = 100,tm = sysdate where id = 10;
1 row updated.
SQL> commit;
Commit complete.
SQL> select * from scott.tb_test;
ID AGE TM
---------- ---------- -----------------
1 2 20181203 14:22:14
2 3 20181203 14:22:14
3 4 20181203 14:22:14
4 5 20181203 14:22:14
5 6 20181203 14:22:14
6 7 20181203 14:22:14
7 8 20181203 14:22:14
8 9 20181203 14:22:14
9 10 20181203 14:22:14
10 100 20181203 14:26:50
10 rows selected.
可看到,修改數(shù)據(jù)的時間為' 20181203 14:26:50 '。
此時刪除表數(shù)據(jù):
SQL> select sysdate from dual;
SYSDATE
-----------------
20181203 14:28:18
SQL> truncate table scott.tb_test;
Table truncated.
SQL> alter system switch logfile;
System altered.
此時主庫中數(shù)據(jù)已經(jīng)刪除,備庫中數(shù)據(jù)還停留在主庫修改數(shù)據(jù)之前:
SQL> select * from scott.tb_test;
ID AGE TM
---------- ---------- -----------------
1 2 20181203 14:22:14
2 3 20181203 14:22:14
3 4 20181203 14:22:14
4 5 20181203 14:22:14
5 6 20181203 14:22:14
6 7 20181203 14:22:14
7 8 20181203 14:22:14
8 9 20181203 14:22:14
9 10 20181203 14:22:14
10 11 20181203 14:22:14
如果我們要恢復(fù)數(shù)據(jù)到update之后、truncate之前,則要手動前滾備庫到指定時間點:
--備庫操作
重啟備庫到mount:
SQL> startup force mount;
ORACLE instance started.
Total System Global Area 2.1379E+10 bytes
Fixed Size 2262656 bytes
Variable Size 2.0401E+10 bytes
Database Buffers 939524096 bytes
Redo Buffers 36073472 bytes
Database mounted.
手動前滾備庫到指定時間點:
SQL> recover standby database until time '20181203 14:27:00';
ORA-00279: change 108456269 generated at 12/03/2018 14:26:50 needed for thread 1
ORA-00289: suggestion : /opt/app/oracle/archivelog_bdtest/1_248_987097214.dbf
ORA-00280: change 108456269 for thread 1 is in sequence #248
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
Log applied.
Media recovery complete.
前滾完成,打開備庫:
SQL> alter database open;
Database altered.
SQL> alter session set nls_date_format='yyyymmdd hh34:mi:ss';
Session altered.
SQL> select * from scott.tb_test;
ID AGE TM
---------- ---------- -----------------
1 2 20181203 14:22:14
2 3 20181203 14:22:14
3 4 20181203 14:22:14
4 5 20181203 14:22:14
5 6 20181203 14:22:14
6 7 20181203 14:22:14
7 8 20181203 14:22:14
8 9 20181203 14:22:14
9 10 20181203 14:22:14
10 100 20181203 14:26:50
10 rows selected.
此時就得到了所需數(shù)據(jù),只需把數(shù)據(jù)重新導(dǎo)入到主庫中即可。
待處理完成后,重新打開備庫的redo應(yīng)用:
SQL> alter database recover managed standby database disconnect from session delay 60;
Database altered.
此時備庫又變?yōu)榱苏5难訒r庫。
注意:
1.備庫DELAY時間指的是當主庫日志歸檔后,再延時DELAY指定的時間應(yīng)用日志,比如:設(shè)置DELAY參數(shù)為20分鐘,10:00主庫日志歸檔,則10:20備庫才會應(yīng)用此歸檔日志
2.也可以在LOG_ARCHIVE_DEST_2指定DELAY參數(shù)達到同樣的延時目的:
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=DEVSTBY LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DEVSTBY DELAY=60'
3.備庫不能進行實時應(yīng)用,因為實時應(yīng)用會使DELAY參數(shù)失效,備庫變?yōu)锳DG
文章題目:利用延時備庫找回被誤刪的數(shù)據(jù)
本文路徑:http://www.rwnh.cn/article40/jisseo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站改版、域名注冊、關(guān)鍵詞優(yōu)化、企業(yè)網(wǎng)站制作、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)