oracle恢复被覆盖的存储过程

如果你不小心覆盖了之前的存储过程,那得赶紧闪回,时长越长闪回的可能性越小。原理很简单,存储过程的定义就是数据字典,修改数据字典跟修改普通表的数据没有区别,此时会把修改前的内容放到undo中,我们可以根据这一点来进行闪回,所以我说要尽快,要不然找不回来了。下面我们来做一个实验:

1.在用户TEST下14:31下建立存储过程

create or replace procedure GG_TEST

as l_cnt number;

begin

for i in 1 .. 10000

loop

execute immediate ‘select count(*) from t where x = ‘ || i into l_cnt;

end loop;

end;

2.在用户TEST下在14:33下删除存储过程

drop procedure GG_TEST;

3.登录到sys账户下

create table p_temp  as

select *

from dba_source as of timestamp TO_TIMESTAMP(‘2014-05-04 14:33:00‘, ‘YYYY-MM-DD HH24:MI:SS‘)

where TYPE = ‘PROCEDURE‘

And owner = ‘TEST‘

And Name = ‘GG_TEST‘;

select text

from p_temp

where name like upper(‘%GG_TEST%‘)

and owner = ‘TEST‘

order by line;

TEXT

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

procedure GG_TEST

as l_cnt number;

begin

for i in 1 .. 10000

loop

execute immediate ‘select count(*) from t where x = ‘ || i into l_cnt;

end loop;

end;

oracle恢复被覆盖的存储过程,布布扣,bubuko.com

时间: 2024-10-06 13:08:37

oracle恢复被覆盖的存储过程的相关文章

oracle怎么恢复被覆盖的存储过程

在oracle数据库中,如果覆盖了之前的存储过程,那得赶紧闪回,时长越长闪回的可能性越小. 原理很简单,存储过程的定义就是数据字典,修改数据字典跟修改普通表的数据没有区别,此时会把修改前的内容放到undo中,可以根据这一点来进行闪回,所以我说要尽快,要不然找不回来了. 来做一个实验: 1.在用户TEST下14:31下建立存储过程 create or replace procedure GG_TEST as l_cnt number; begin for i in 1 .. 10000 loop

oracle如何恢复被覆盖的存储过程

如果你不小心覆盖了之前的存储过程,那得赶紧闪回,时长越长闪回的可能性越小.原理很简单,存储过程的定义就是数据字典,修改数据字典跟修改普通表的数据没有区别,此时会把修改前的内容放到undo中,我们可以根据这一点来进行闪回,所以我说要尽快,要不然找不回来了. create table p_temp as select * from dba_source as of timestamp TO_TIMESTAMP('2014-05-14 09:30:00', 'YYYY-MM-DD HH24:MI:SS

oracle 找回被覆盖的存储过程

登录到sys账户下 1.TO_TIMESTAMP('2014-05-04 14:33:00', 'YYYY-MM-DD HH24:MI:SS') 删除前的日期 2.owner 表空调 3.Name  存储过程名,要大写. create table p_temp as select * from dba_source as of timestamp TO_TIMESTAMP('2014-05-04 14:33:00', 'YYYY-MM-DD HH24:MI:SS') where TYPE = '

ORACLE恢复神器之ODU/AUL/DUL

分享ORACLE数据库恢复神器之ODU.DUL和AUL工具. ODU:ORACLE DATABASE UNLOADER DUL:DATA UNLOADER AUL:也称MyDUL 关于三种工具说明: (1)Oracle 的内部工具是DUL(Data UnLoader).这个需要Oracle 的支持. (2)老熊写的ODU   网址:http://www.oracleodu.com/en/ (3)d.c.b.a (支付宝 楼方鑫)写的AUL. 网址:http://www.anysql.net/do

Oracle恢复表数据

Oracle恢复数据 在oracle 10g以及之后的版本,提供了回收站的机制,为了防止误操作将表数据清空而有回收机制. 换句话说,我们删除的表不会立马消失,而是进入回收站.下面我们可以查看回收站 查看回收站 --查看回收站 SHOW RECYCLEBIN; 恢复数据 如果回收站中有我们误删除的表,我们可以通过flashback将表数据恢复 --恢复表数据 FLASHBACK TABLE 表名称 TO BEFORE DROP; 从回收站中清空表 我们也可以从回收站中把表清空 --清空回收站中的某

oracle恢复已经删除的数据

insert into tablerestore select * from tablerestore as of timestamp to_Date('2014-8-8 15:00:00','yyyy-mm-dd hh24:mi:ss')     参数解释:tablerestore 要恢复数据的表 后面的时间是恢复截止到某个点的数据 oracle恢复已经删除的数据,布布扣,bubuko.com

oracle恢复案例:rename一个数据文件后做不完全恢复

案例:rename一个数据文件后做不完全恢复 SQL>startup mount:   //启动到mount状态 SQL> show parameter control_files    //查看控制文件的位置信息 NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ contro

Oracle恢复已删除数据

Oracle恢复已删除的数据,主要有两种方法:SCN和时间戳. 一.通过SCN恢复删除且已提交的数据 1.获得当前数据库的scn号 select current_scn from v$database; (切换到sys用户或system用户查询) 查询到的scn号为:1499223 2.查询当前scn号之前的scn select * from 表名 as of scn 1499220; (确定删除的数据是否存在,如果存在,则恢复数据:如果不是,则继续缩小scn号) 3.恢复删除且已提交的数据 f

oracle 使用 dbms_lock.sleep暂停存储过程执行

grant execute on dbms_lock to USERNAME; ? dbms_lock.sleep(time)参数单位为秒 ? create or replace procedure initdata is num number := 0; begin ? for i in 1 .. 500 loop ? num := num + 1; if num >= 1000 then dbms_lock.sleep(5); num := 0; dbms_output.put_line('