超級(jí)好用的oracle 閃回功能之--恢復(fù)存儲(chǔ)過程篇
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┠※┃名稱:oracle 閃回功能之--恢復(fù)存儲(chǔ)過程篇 ┠※┃說明:將存儲(chǔ)過程恢復(fù)到某一指定時(shí)間段。
┠※┃作者:zlj113
┠※┃時(shí)間:20091225
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
經(jīng)常有在工作中誤操作導(dǎo)至程存過程被替換或被刪除的現(xiàn)象產(chǎn)生。給工作帶來一定的麻煩,可能需要重新寫一次代碼,若過程比較短重寫一次還能接受,若是那種比較長(zhǎng)的存儲(chǔ)過程重要?jiǎng)t是需要付出相當(dāng)大的代價(jià)的。好在oracle10G就開始提供了 一種強(qiáng)大的閃回flashback 功能,可以針對(duì)誤刪除的數(shù)據(jù),表,存儲(chǔ)過程等進(jìn)行恢復(fù)。
廢話就先不說了,看看詳細(xì)的恢復(fù)過程吧^^....
首先需要用SYS登陸到PLSQL Devplore 中,選擇 sysdba 的權(quán)限 ,若用其它的用戶登陸則在下面的操作中會(huì)提示出權(quán)限不足的警告
第三種方法:
SQL> set pagesize 0
SQL> column text format a4000 SQL> spool C:\7.text Started spooling to C:\7.text SQL> SELECT text FROM DBA_source AS OF TIMESTAMP TO_TIMESTAMP('2009-12-25 10:07:00', 'YYYY-MM-DD HH24:MI:SS') WHERE OWNER = '用戶名' AND NAME = ‘存儲(chǔ)過程名’ ORDER BY LINE ; SQL> spool off; 這種方法就不用事先查詢出存儲(chǔ)過程的ID只需要知道名字和用戶即可.
第一種方法:
在Command窗體里依次輸入:
set pagesize 0 column text format a4000 --格式化text 列的數(shù)據(jù) a4000表示 文字 按4000長(zhǎng)度顯示 spool c:\1.text -- 這句是指一會(huì)將結(jié)果輸出到文件,如果存儲(chǔ)過程比較小則可以采用第2種方法) select text From source$ as of timestamp to_timestamp('2009-12-25 12:21:38', 'yyyy-mm-dd hh24:mi:ss') where obj#=55110; --這里的時(shí)間點(diǎn)就是你想要恢復(fù)什么時(shí)候的存儲(chǔ)過程. 而obj#=55110 這個(gè)55110是你存儲(chǔ)過程相對(duì)應(yīng)的ID號(hào), 可以在事先用select object_id from dba_objects where object_name ='存儲(chǔ)過程名注意大小寫是敏感的'; 查出所對(duì)應(yīng)的ID號(hào)。 spool off; 然后你就可以到c:盤下找到1.txt文件里面就會(huì)有你2009-12-25 12:21:38時(shí)存儲(chǔ)過程的內(nèi)容啦!
怎么樣,是不是超好用呀!
第二種方法:
select *From source$ as of timestamp to_timestamp('2009-12-25 12:21:38', 'yyyy-mm-dd hh24:mi:ss') where obj#=55110;
這種方法呢,就只是把存儲(chǔ)過程的內(nèi)容顯示在表格里了,需要自己復(fù)制粘貼出來。適合比較短小的存儲(chǔ)過程。 本文來自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/zlj113/archive/2009/12/25/5075983.aspx
|
|