失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > oracle恢复误删字段 Oracle恢复被误删除存储过程的2种方法

oracle恢复误删字段 Oracle恢复被误删除存储过程的2种方法

时间:2019-06-01 21:16:40

相关推荐

oracle恢复误删字段 Oracle恢复被误删除存储过程的2种方法

使用的Oracle版本:11G R2

这里我们使用测试来进行演示,第一步,先创建测试存储过程,第二步,恢复删除后的存储过程。

SQL创建测试存储过程:SQL>conngel/gel

Connected.

SQL>CREATEORREPLACEPROCEDUREproc_test_drop

2AS

3BEGIN

4FORxIN(SELECTsysdateFROMdual)

5LOOP

6DBMS_OUTPUT.put_line(x.sysdate);

7ENDLOOP;

8ENDproc_test_drop;

9/

Procedurecreated.

SQL>setserveroutputon

SQL>execproc_test_drop;

03-MAR-16

PL/SQLproceduresuccessfullycompleted.

SQL>

SQL>l

1*selecttext,namefromdba_sourcewhereowner=’GEL’andname=’PROC_TEST_DROP’

SQL>/

TEXTNAME

————————————————-——————————

PROCEDUREproc_test_dropPROC_TEST_DROP

ASPROC_TEST_DROP

BEGINPROC_TEST_DROP

FORxIN(SELECTsysdateFROMdual)PROC_TEST_DROP

LOOPPROC_TEST_DROP

DBMS_OUTPUT.put_line(x.sysdate);PROC_TEST_DROP

ENDLOOP;PROC_TEST_DROP

ENDproc_test_drop;PROC_TEST_DROP

8rowsselected.

SQL>showuser

USERis“SYS”

SQL>conngel/gel

Connected.

SQL>dropPROCEDUREproc_test_drop;

Proceduredropped.

SQL>selecttext,namefromdba_sourcewhereowner=’GEL’andname=’PROC_TEST_DROP’;

norowsselected

下面是恢复的方法,紧供大家参考:

方法1:利用闪回查询进行恢复CREATEORREPLACEFORCEVIEW“SYS”.”DBA_SOURCE”(“OWNER”,“NAME”,“TYPE”,“LINE”,“TEXT”)AS

selectu.name,o.name,

decode(o.type#,7,‘PROCEDURE’,8,‘FUNCTION’,9,‘PACKAGE’,

11,‘PACKAGEBODY’,12,‘TRIGGER’,13,‘TYPE’,14,‘TYPEBODY’,

‘UNDEFINED’),

s.line,s.source

fromsys.obj$o,sys.source$s,sys.user$u

whereo.obj#=s.obj#

ando.owner#=u.user#

and(o.type#in(7,8,9,11,12,14)OR

(o.type#=13ANDo.subnameisnull))

unionall

select/*+ordered*/distinctu.name,o.name,‘JAVASOURCE’,s.joxftlno,s.joxf

tsrc

fromsys.obj$o,x$joxfss,sys.user$u

whereo.obj#=s.joxftobn

ando.owner#=u.user#

ando.type#=28

SQL>conn/assysdba

Connected.

SQL>selecttextfromdba_sourceasoftimestampsysdate-5/60/24whereowner=’GEL’andname=’PROC_TEST_DROP’;

TEXT

—————————————————————–

PROCEDUREproc_test_drop

AS

BEGIN

FORxIN(SELECTsysdateFROMdual)

LOOP

DBMS_OUTPUT.put_line(x.sysdate);

ENDLOOP;

ENDproc_test_drop;

8rowsselected.

闪回技术的其中一个功能就是:恢复丢失的数据、撤销不正确的且已经提交的改变。

方法2:通过基表进行恢复SQL>altersessionsetnls_date_format='yyyy-mm-ddhh24:mi:ss';

Sessionaltered.

SQL>selectsysdatefromdual;

SYSDATE

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

-03-0315:39:40

SQL>selectobj#fromobj$asoftimestampto_timestamp('-03-0315:34:00',‘YYYY-MM-DDHH24:MI:SS’)wherename=’PROC_TEST_DROP’;

OBJ#

———-

52148

SQL>

SQL>setlong9999999

SQL>selectsource

2fromsource$asoftimestampto_timestamp('-03-0315:34:00',‘YYYY-MM-DDHH24:MI:SS’)

3whereobj#=52148

4orderbyline;

SOURCE

————————————————————————————————————————–

PROCEDUREproc_test_drop

AS

BEGIN

FORxIN(SELECTsysdateFROMdual)

LOOP

DBMS_OUTPUT.put_line(x.sysdate);

ENDLOOP;

ENDproc_test_drop;

8rowsselected.

SQL>

基表就是存储Oracle信息的底层表,通过基表的数据,也可以做到恢复。

如果觉得《oracle恢复误删字段 Oracle恢复被误删除存储过程的2种方法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。