日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

闪回的用途与实战(闪回表,闪回删除,闪回重名删除,闪回版本查询)

發(fā)布時(shí)間:2024/9/27 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 闪回的用途与实战(闪回表,闪回删除,闪回重名删除,闪回版本查询) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

閃回可以做的操作有如下幾種類型:
1、當(dāng)數(shù)據(jù)錯(cuò)誤刪除,并且提交時(shí)(flashback table)
2、當(dāng)錯(cuò)誤刪除了一張表drop table(flashback drop)
3、通過(guò)閃回獲取表的歷史記錄(flashback version query)
4、當(dāng)錯(cuò)誤地執(zhí)行了一個(gè)事務(wù),并且提交了(flashback transaction query)
5、將整個(gè)數(shù)據(jù)庫(kù)進(jìn)行恢復(fù)。

使用閃回條件:
1、切換到管理員上。

假設(shè)開(kāi)始登錄的用戶名和密碼是MISPS

如果是連接遠(yuǎn)程的,連接sqlplus的方式是:

sqlplus MISPS/MISPS@ip:1521/nmcdb.nmc.gov.cn as sysdba;(此時(shí)用戶名為MISPS,密碼為MISPS,nmcdb.nmc.gov.cn為servicename)。

?執(zhí)行下面的命令切換到管理員:

conn / as sysdba;

2、查詢undo表空間(undo是一個(gè)表空間,這個(gè)表空間對(duì)應(yīng)著很多物理上的存儲(chǔ)文件,這些文件中記錄了所有的操作日志,閃回就是通過(guò)undo這個(gè)表空間里的日志來(lái)做的)

查看表空里的參數(shù)

show parameters undo;

結(jié)果為:

注意:undo_retention這個(gè)參數(shù)表示的是閃回的時(shí)間限制,其后面的value表示900秒。表示超過(guò)2個(gè)G的數(shù)據(jù),在過(guò)了900秒之后不可以回復(fù)了。在900秒之內(nèi)可以恢復(fù)!

將900秒改成20分鐘的命令:?alter system set undo_retention=1200 scope=both;

scope的取值:1、memory(在當(dāng)前的會(huì)話中有效),2.spfile(在配置文件修改,不修改當(dāng)前會(huì)話),3.both(既修改當(dāng)前會(huì)話也修改配置文件)

3閃回表概念:

閃回表,實(shí)際上是將表中的數(shù)據(jù)快速恢復(fù)到過(guò)去的一個(gè)是焦點(diǎn)或者系統(tǒng)改變號(hào)SCN上。實(shí)際表的閃回,需要使用到與撤銷表空間相關(guān)的undo信息,通過(guò)

show parameter undo命令可以了解這些信息。

用戶對(duì)表數(shù)據(jù)的修改操作,都記錄在撤銷表空間中,這為表的閃回提供了數(shù)據(jù)恢復(fù)的基礎(chǔ)。例如,修改某個(gè)操作在提交后被記錄在撤銷表空間,保留時(shí)間

為900秒,用戶可以在這900秒的時(shí)間內(nèi)對(duì)表進(jìn)行閃回操作,從而將表中的數(shù)據(jù)恢復(fù)到修改之前的狀態(tài)。

執(zhí)行表的閃回,需要有flashback any table的權(quán)限。

4、授予MISPS用戶閃回表的權(quán)限

?grant flashback any table to MISPS;

這時(shí)候MISPS就可以執(zhí)行閃回表的相關(guān)操作了。

5、這時(shí)候回到MISPS用下:conn MISPS/MISPS

6、閃回表的語(yǔ)法:

FLASHBACK TABLE [schema.]<table_name>

TO?

{[BEFORE DROP [RENAME TO table]]?

[SCN|TIMESTAMP]expr

[ENABLE|DISABLE]TRIGGERS}

schema:模式名,一般為用戶名

TO TIMESTAMP:系統(tǒng)郵戳,包含年、月、日、時(shí)、分、秒。

TO SCN:系統(tǒng)改變好(system change number,對(duì)應(yīng)修改時(shí)的時(shí)間)

ENABLE TRIGGERS:表示觸發(fā)器恢復(fù)以后為enable狀態(tài),而默認(rèn)為disable狀態(tài)。

TO BEFORE DROP:表示恢復(fù)到刪除之前。

RENAME TO table:表示更換表名。

7、通過(guò)時(shí)間獲取SCN

select timestamp_to_scn(sysdate) from dual;

8、單獨(dú)創(chuàng)建一張表,來(lái)做實(shí)驗(yàn)

create table flashback_table
(fid number,
fname varchar(20))

插入3條數(shù)據(jù)insert into flashback_table values(1,'tom'):

查詢一下結(jié)果:

select * from flashback_table;

10、記錄當(dāng)前的SCN

select timestamp_to_scn(sysdate) from dual;

11、刪除一條數(shù)據(jù):delete from flashback_table where fid=2;

執(zhí)行:commit

12、現(xiàn)在的業(yè)務(wù)是fid=2的數(shù)據(jù)刪除錯(cuò)了,要把它改回來(lái),這時(shí)候使用的命令為,這時(shí)候就要執(zhí)行閃回操作。

給出一個(gè)錯(cuò)誤案例:flashback table flashback_table to scn 8029021

錯(cuò)誤原因:

select rowid,fid,fname from flashback_table;

注意:這里的rowid表示的是在硬盤上的位置。錯(cuò)誤原因的是Oracle將fid為1和3的數(shù)據(jù)進(jìn)行了優(yōu)化,現(xiàn)在給它的rowid變成連續(xù)的了,也就是說(shuō)在AAASP4AAHAAAAaFAAA和AAASP4AAHAAAAaFAAC之間沒(méi)有位置了:

默認(rèn)是不能夠移動(dòng)rowid的,所以出現(xiàn)了上面的錯(cuò)誤,所以下面進(jìn)行配置的修改:開(kāi)啟行移動(dòng)功能。

語(yǔ)句為:alter table flashback_table enable row movement;

再執(zhí)行閃回操作:flashback table flashback_table to scn 8029021

select rowid,fid,fname from flashback_table;

這時(shí)發(fā)現(xiàn)刪除的數(shù)據(jù)再次恢復(fù)了。

注意:

1、需要flashback any table的權(quán)限

2、開(kāi)啟行移動(dòng)功能

3、如何獲取回退的scn/時(shí)間?

4、系統(tǒng)表不能被閃回(管理員的表不能被閃回)

5、數(shù)字字典不能被閃回。不能跨越DDL操作。

----------------------------------------------------------------------------------------------------------------------------------

二、閃回刪除(drop)

實(shí)際上從系統(tǒng)的回收站中的將已刪除的對(duì)象,回復(fù)到刪除之前的狀態(tài)。

系統(tǒng)的回收站只對(duì)普通用有用。

---關(guān)于Oracle系統(tǒng)回收站。(講解一個(gè)案例)

1、刪除一個(gè)表

首先查詢當(dāng)前用戶下有哪些表

select * from tab;

刪除表:

查看系統(tǒng)回收站

?show recyclebin;

這時(shí)候發(fā)現(xiàn)了drop掉的表在recyclebin中發(fā)現(xiàn)了。

查看當(dāng)前是哪個(gè)用戶:show user;

因?yàn)橛脩鬗ISPS為普通用戶所以才有回收站,如果是管理員,就沒(méi)有回收站:

徹底刪除一張表的方式是:drop table T_USER_L purge;purge參數(shù)表示徹底刪除。

清空回收站的方式:purge recyclebin;

執(zhí)行閃回刪除,?flashback table T_USERS_L to before drop;

select * from tab;

發(fā)現(xiàn)表恢復(fù)了。

?

方式二:通過(guò)回收站中的名字閃回刪除。

1、刪除表:?drop table T_USERS_L;

2、查看回收站的名字:show recyclebin;

通過(guò)回收站的名字返回:?flashback table "BIN$hIr1xeS0RY2sls0cyMHE3g==$0"to before drop;

?

--閃回重名的對(duì)象

執(zhí)行閃回刪除,這時(shí)候恢復(fù)的是最后刪除的那個(gè)次表

flashback table test to before drop;

如果在此執(zhí)行閃回表,這時(shí)候?qū)⒊霈F(xiàn)錯(cuò)誤,這時(shí)候要對(duì)刪除的表進(jìn)行重命名:

查看返回的表:select * from tab;

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

閃回版本查詢(側(cè)重點(diǎn)查詢)

《未完待續(xù)》

?

?

總結(jié)

以上是生活随笔為你收集整理的闪回的用途与实战(闪回表,闪回删除,闪回重名删除,闪回版本查询)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。