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;

时间: 2024-10-27 01:56:47

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

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

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

oracle 11g 恢复,覆盖ctl,dbf,log等数据文件后报错:所有历程都无法建立新的连接.

问题描述 oracle 11g 恢复,覆盖ctl,dbf,log等数据文件后报错:所有历程都无法建立新的连接. 服务器上oracle挂了连接无监听,文件都在.想恢复数据,自己电脑上装了个同样的oralce11g64位,把数据文件拷贝下来测试.覆盖数据文件后出现历程都无法连接的问题.有没解决过这问题的人帮忙解决下. 解决方案 http://blog.csdn.net/dirful/article/details/48206435

Oracle 备份恢复概念

--====================== -- Oracle 备份恢复概念 --======================       数据库维护中,备份或恢复是重中之重的问题.尽管很多时候数据库系统运行缓慢,但对数据库数据的丢失而言,显然后者损失的代价是 不言而喻的.因此DBA至少在保证数据不丢失的情况下来提高系统的性能是最起码的要求.关于什么是备份与恢复,在此不做赘言.   一.物理备份与逻辑备份     物理备份         是所有物理文件的一个副本,比如数据文件,控制文件,

Oracle实例恢复和介质恢复

Oracle恢复基础概述  一.恢复解决方案 错误类型及解决方案 错误分类 恢复解决方案 介质失败 如果是少量的块损坏,使用块介质恢复:如果是大量的块.数据文件.表空间的损坏,可能需要对损坏的数据文件或者表空间执行完全恢复:如果是归档Redo日志文件或者联机Redo日志文件的丢失,那么只需要不完全恢复方式. 逻辑损坏 如果是程序员错误导致出现的问题,可通过补丁应用修复问题.对于无法修复的问题,也可采用介质恢复手段来恢复数据. 用户错误 根据不同用户错误,选择不同的Flashback技术恢复,使用

Oracle部分恢复法简述

Oracle 部分恢复法 我们有的时候需要做恢复测试,但是由于目标数据库太大,如果完全恢复数据文件,那么需要很大 的存储空间,但是如果不做恢复测试,又无法怎么数据库的备份是否可用,这里给大家介绍一种部分恢 复法,即可以做恢复测试,又可以节省空间和时间. 首先我们要确定需要恢复的表空间,有些表空间是强制性需要恢复的,比如:system.undo等,然 后再确认一两个需要恢复的表空间,比如:data.users等,那么其它的都无需恢复. 1.把上面提到的所有表空间的数据文件恢复到指定的位置. 2.接

Oracle实例恢复

Oracle实例恢复原理 首先从事物说起,当执行update开启一个事物的时候,首先需要在buffer cache中找到可用的块(block)更新数据,然后构造cr块,将update之前的数据放入到undo中,同时会在log buffer内写日志,log buffer内数据每隔3秒通过lgwr进程将往redo log写日志,在这个过程更改的数据还在内存中,产生脏数据,直到dbwr进程将脏数据写入到磁盘,如果脏数据还未写入磁盘,脏数据中包括提交或未提交的,这个时候由于掉掉或其他原因导致数据库意外宕

oracle-求助诸君:EF调用Oracle包中带游标的存储过程

问题描述 求助诸君:EF调用Oracle包中带游标的存储过程 大家好,项目开发时遇到了瓶颈,是关于EF6调用Oracle包中带游标的存储过程,小弟尝试了N遍后,还是百试不得其解,望诸君助小弟一臂之力. Oracle packages如下:--------------分割线-----------------------------Oracle package bodies如下: ----------------------分割线----------------------------- 这是ADO

Oracle 实例恢复

--======================= -- Oracle 实例恢复 --=======================   一.Oracle实例失败     Oracle实例失败多为实例非一致性关闭所致,通常称为崩溃(crash).实例失败的结果等同于shutdown abort.     实例失败的原因         电源负载故障         硬件故障         后台进程失败         异常关闭数据库     实例失败后的状况         数据库可能丢失已提

Oracle中返回结果集的存储过程分享_oracle

Oracle不像SQLServer那样在存储过程中用Select就可以返回结果集,而是通过Out型的参数进行结果集返回的.实际上是利用REF CURSOR 复制代码 代码如下: --procedure返回记录集: ----------------------声明一个Package-------------- CREATE OR REPLACE PACKAGE pkg_test AS TYPEmyrctypeIS REF CURSOR; PROCEDURE get_r(p_id NUMBER,p_