历史数据归档存储过程(怎么查oracle存储过程更新记录)

精选笔记 bchgfjyf56547 2024-04-11 20:56 10 0

一、oracle历史数据迁移

Oracle数据库的数据迁移方法有哪些呢

Windows中oracle服务启动关闭脚本 oracle控制文件的管理随着数据库管理系统和操作系统平台的更新换代的速度的加快,数据库管理员经常需要在两个不同的数据库之间或在两种不同的系统平台之间进行数据迁移。

本文介绍了数据库数据迁移的一般步骤以及实现向Oracle8i数据库进行数据迁移的几种方法,并对它们的优缺点做了对比分析。在开发环境向运行环境转换、低版本数据库向高版本数据库转换以及两个不同数据库之间进行转换时,数据库中的数据(包括结构定义)需要被转移并使之正常运行,这就是数据库中的数据迁移。

对于中小型数据库,如Foxpro中的*。dbf,这种迁移非常简单,一般只需通过简单的Copy就能完成。

但对于大型数据库系统,如Oracle数据库,数据迁移就不那么简单了,它需要利用一定的技术和经验,有步骤按计划地完成。数据迁移的一般步骤对数据库管理人员来说,数据库数据迁移极具挑战性,一旦措施不当,珍贵的数据资源将面临丢失的危险,要成功地实现数据库数据平滑迁移,需要周密计划和充分准备,并按照一定的步骤来完成。

设计数据迁移方案设计数据迁移方案主要包括以下几个方面工作:研究与数据迁移相关的资料,或在网站上查询相关内容、评估和选择数据迁移的软硬件平台、选择数据迁移方法、选择数据备份和恢复策略、设计数据迁移和测试方案等。进行数据模拟迁移根据设计的数据迁移方案,建立一个模拟的数据迁移环境,它既能仿真实际环境又不影响实际数据,然后在数据模拟迁移环境中测试数据迁移的效果。

数据模拟迁移前也应按备份策略备份模拟数据,以便数据迁移后能按恢复策略进行恢复测试。测试数据模拟迁移:根据设计的数据迁移测试方案测试数据模拟迁移,也就是检查数据模拟迁移后数据和应用软件是否正常,主要包括:数据一致性测试、应用软件执行功能测试、性能测试、数据备份和恢复测试等。

准备实施数据迁移:数据模拟迁移测试成功后,在正式实施数据迁移前还需要做好以下几个方面工作:进行完全数据备份、确定数据迁移方案、安装和配置软硬件等。正式实施数据迁移:按照确定的数据迁移方案,正式实施数据迁移。

测试数据迁移效果:按照数据迁移测试方案测试数据迁移效果,并对数据迁移后的数据库参数和性能进行调整,使之满足数据迁移后实际应用系统的需要。移植系统应用软件:将实际应用系统的应用软件移植到数据迁移后的数据库系统上,并使之正常运行。

正式运行应用系统:在正式实施数据迁移成功并且数据库参数和性能达到要求后,就可以正式运行应用系统,并投入实际使用。

Oracle数据库的数据迁移方法是怎样的

主要介绍了Oracle数据库的数据迁移方法,详细内容请大家参考下文:随着数据库管理系统和操作系统平台的更新换代的速度的加快,数据库管理员经常需要在两个不同的数据库之间或在两种不同的系统平台之间进行数据迁移。

本文介绍了数据库数据迁移的一般步骤以及实现向Oracle8i数据库进行数据迁移的几种方法,并对它们的优缺点做了对比分析。在开发环境向运行环境转换、低版本数据库向高版本数据库转换以及两个不同数据库之间进行转换时,数据库中的数据(包括结构定义)需要被转移并使之正常运行,这就是数据库中的数据迁移。

对于中小型数据库,如Foxpro中的*。dbf,这种迁移非常简单,一般只需通过简单的Copy就能完成。

但对于大型数据库系统,如Oracle数据库,数据迁移就不那么简单了,它需要利用一定的技术和经验,有步骤按计划地完成。数据迁移的一般步骤对数据库管理人员来说,数据库数据迁移极具挑战性,一旦措施不当,珍贵的数据资源将面临丢失的危险,要成功地实现数据库数据平滑迁移,需要周密计划和充分准备,并按照一定的步骤来完成。

设计数据迁移方案设计数据迁移方案主要包括以下几个方面工作:研究与数据迁移相关的资料,或在网站上查询相关内容、评估和选择数据迁移的软硬件平台、选择数据迁移方法、选择数据备份和恢复策略、设计数据迁移和测试方案等。进行数据模拟迁移根据设计的数据迁移方案,建立一个模拟的数据迁移环境,它既能仿真实际环境又不影响实际数据,然后在数据模拟迁移环境中测试数据迁移的效果。

数据模拟迁移前也应按备份策略备份模拟数据,以便数据迁移后能按恢复策略进行恢复测试。测试数据模拟迁移根据设计的数据迁移测试方案测试数据模拟迁移,也就是检查数据模拟迁移后数据和应用软件是否正常,主要包括:数据一致性测试、应用软件执行功能测试、性能测试、数据备份和恢复测试等。

准备实施数据迁移数据模拟迁移测试成功后,在正式实施数据迁移前还需要做好以下几个方面工作:进行完全数据备份、确定数据迁移方案、安装和配置软硬件等。正式实施数据迁移按照确定的数据迁移方案,正式实施数据迁移。

测试数据迁移效果按照数据迁移测试方案测试数据迁移效果,并对数据迁移后的数据库参数和性能进行调整,使之满足数据迁移后实际应用系统的需要。移植系统应用软件将实际应用系统的应用软件移植到数据迁移后的数据库系统上,并使之正常运行。

以上是我对于这个问题的解答,希望能够帮到大家。

Oracle数据库迁移几种方式分别是什么

我们常常需要对数据进行迁移,迁移到更加高级的主机上、迁移到远程的机房上、迁移到不同的平台下……一、exp/imp:这也算是最常用最简单的方法了,一般是基于应用的owner级做导出导入。

操作方法为:在新库建立好owner和表空间,停老库的应用,在老库做exp user/pwd owner=XXX file=exp_xxx。 dmp log=exp_xxx。

log buffer=6000000,传dmp文件到新库,在新库做imp user/pwd fromuser=XXX touser=XXX file=exp_xxx。dmp log=imp_xxx。

log ignore=y。优缺点:优点是可以跨平台使用;缺点是停机时间长,停机时间为从exp到网络传输到新库,再加上imp的时间。

二、存储迁移:这种情况下,数据文件、控制文件、日志文件、spfile都在存储上(一般情况下是裸设备),我们可以直接把存储挂到新机器上,然后在新机器上启动数据库。操作方法:将老库的pfile(因为里面有指向裸设备的spfile链接),tnsnames。

ora,listener。ora,密码文件传到新库的对应位置。

将存储切至新机,或者用文件拷贝或dd的方式复制数据文件,启动数据库。优缺点:优点是该迁移方式非常简单,主要的工作是主机工程师的工作,dba只需配合即可,停机时间为当库、切存储、起库的时间。

缺点是要求新老库都是同一平台,是相同的数据库版本。三、利用data guard迁移:用dg我们不仅可以用来做容灾,物理的dg我们还可以作为迁移的方式。

操作方法:可见://。oracleblog。

/study-note/dg-created-by-rman/或者://。 oracleblog。

/study-note/create-dg-by-rman-one-datafile-by-one-datafile/或者其他相关网文。注意switch over之后,可以将dg拆掉,去掉log_archive_dest_ 2、FAL_SERVER、FAL_CLIENT、standby_file_management参数。

另外还要注意如果用rman做dg,注意手工添加tempfile。优缺点:优点是停机时间短,停机时间为switch over的时间。

缺点:主机必须双份、存储必须双份。四、用rman做迁移: rman比较适合于跨文件系统的迁移,如同平台下的不同文件系统。

操作方法: 1。停第三方的归档备份,如legato或dp 2。

backup数据库:在一次周末的课程试验中,频繁的看到 Data file init write等待事件。

Oracle与SQLServer之间的数据迁移要注意什么

等多种方式,要从ORACLE提取SQL中的数据,大都是通过透明网关来实现的。

在异构数据抽取过程中,最好采用SQL92标准的语法编写SQL代码,同时要注意不同数据库之间数据类型的转换关系,如ORACLE的日期类型用DATE、SQL用Datetime等。一关于ORACLE的透明网关配置 ORACLE安装时(9i),将TRANSPARENT GATEWAY FOR MSSQL选中,在ORACLE主目录\BIN中,有个tg4msql.exe程序,它是透明网关程序啦,同时在主目录中还有tgrmsql的一个目录,ORACLE_HOME\tg4msql\admin目录中的inittg4msql.ora就是需要进行配置才能在ORACLE中连接SQL。

1如何配置透明网关呢?打开inittg4msql.ora:# HS init parameters xzh代表SQL服务名,pubs代表要访问的SQL数据库。 HS_FDS_CONNECT_INFO="SERVER=xzh;DATABASE=pubs" HS_FDS_TRACE_LEVEL=OFF HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER 2监听的配置oracle_home\work\admin\Listiner.ora LISTENER=(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL= TCP)(HOST= xzh)(PORT= 1521)))(ADDRESS_LIST=(ADDRESS=(PROTOCOL= TCP)(HOST= xzh)(PORT= 1527))))) SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME= xzh.world)(ORACLE_HOME= D:\oracle\ora92)(SID_NAME= xzh))(SID_DESC=(GLOBAL_DBNAME= tg4msql)(PROGRAM= tg4msql)(SID_NAME= tg4msql)(ORACLE_HOME= D:\oracle\ora92)))。

Oracle数据库数据迁移包括哪些内容

操作方法为:在新库建立好owner和表空间,停老库的应用,在老库执行:$ exp user/pwd owner=XXX file=exp_xxx.dmp log=exp_xxx.log buffer=6000000,导入dmp文件到新库,在新库执行如下命令:$ imp user/pwd fromuser=XXX touser=XXX file=exp_xxx.dmp log=imp_xxx.log ignore=y.优缺点:优点是可以跨平台使用;缺点是停机时间长,停机时间为从exp到网络传输到新库,再加上imp的时间。

怎样简化第三方数据库向Oracle数据库11g的迁移

Oracle SQL Developer是甲骨文公司免费提供的数据库开发工具,可帮助用户简化开发工作,提高编制和调试SQL和PL/SQL代码的效率。

现在,这个免费工具又增加了方便从第三方数据库向Oracle数据库迁移的新功能。甲骨文公司软件开发副总裁Michael Hichwa说:“自推出Oracle SQL Developer以来,我们一直致力于增加这个产品的功能,以满足开发人员社区的需求。

有了Oracle SQL Developer 1。2版,开发人员用一个工具软件,就既可以浏览第三方数据,又能以最低风险经济、无缝地将第三方数据迁移到Oracle数据库中。

1。2版极大地简化了数据、表格和存储程序从非Oracle数据库向Oracle数据库的迁移,有助于确保平滑迁移。

” Oracle SQL Developer迁移工作台实现了向Oracle数据库的自动迁移很久以来,甲骨文一直提供独立的迁移工作台工具,以帮助数据库开发人员从非Oracle数据库向Oracle数据库迁移。Oracle SQL Developer 1。

2版集成了一个更加强大的迁移工作台工具,即Oracle SQL Developer迁移工作台(Oracle SQL Developer Migration Workbench)。这个迁移工作台为数据库开发人员提供了单一的工具和环境,他们可以用这个工作台浏览第三方数据、迁移数据库对象和数据并浏览迁移后的数据库,从而降低从第三方数据库向Oracle数据库迁移所需的时间、成本以及有关风险。

Oracle SQL Developer迁移工作台具有广泛的数据库迁移功能。用户可用这个工作台迁移单个表格或几个数据库。

用户连接在数据库上时也可以进行迁移,或者用户可以生成项目表,将其作为迁移项目的组成部分,并用Oracle SQL Developer的SQL和PL/SQL编制与调试工具修改项目表。 Oracle SQL Developer迁移工作台具有新的语法分析程序,可以百分之百识别T-SQL语法。

该工作台还具有单个语句翻译器,用户可以将任何种类的T-SQL语句粘贴到编辑器中,并将其即时翻译成PL/SQL语句。 Oracle SQL Developer迁移工作台为数据库开发人员提供了两个迁移选项。

用户可以用该工作台附带的实用向导程序进行单步迁移,也可以将迁移过程分成几个部分,以在需要时对各个不同的部分进行统一修改。这个工作台可帮助用户将以下第三方数据库迁移到Oracle数据库:•Microsoft SQL Server(版本7。

0、2000和2005);•Microsoft Access(版本9 7、2000、2002和2003);•MySQL(版本3。 0、4。

0和5。0)。

ABB用Oracle SQL Developer迁移工作台节省时间 ABB是全球领先的工程公司,该公司正在用Oracle SQL Developer 1。2版迁移工作台实现从SQL Server向Oracle数据库的迁移。

世界各地有很多印刷所采用ABB的自动打印解决方案,就资产和价值链优化而言,这套解决方案具有非常多的优点。ABB的业务范围涵盖从页面规划、数字工作流、花轮滚压、印刷自动化直到整个生产过程的总体规划和跟踪。

ABB公司自动印刷业务部设计师Karl Doerig说:“对我们从SQL Server 2005向Oracle数据库的迁移来说,Oracle SQL Developer迁移工作台是一个完美的集成开发环境。我们用这个新的迁移工作台可以在不到两个小时的时间内迁移具有约350个表格和1000个存储过程的SQL Server 2005数据库框架,而且几乎不需要手工编辑工作。

以前完成同样的任务大约需要两天时间,光手动改变输出的说明就有两页纸长。”价格与供货 Oracle SQL Developer的运行版已经可以从Oracle技术网络下载,网址为:://。

oracle。/technology/software/products/sql/index。

。 Oracle SQL Developer可在Linux、Mac OS X和Windows平台上运行,免费提供,任何拥有Oracle数据库许可证的客户都可以获得对Oracle SQL Developer的支持。

有关的条款、条件和限制条件适用。甲骨文还为注册用户免费提供在线论坛,供用户探讨有关Oracle SQL Developer的话题。

Oracle SQL Developer可用于Oracle数据库11g,经过了在企业版、标准版和标准版1上的认证。这个工具软件还可用于Oracle数据库10g的所有版本和Oracle9i数据库第二版。

二、oracle存储过程失效重启后恢复正常

根据oracle数据库的特点和提供的工具,主要方法有以下几种方法:

利用逻辑备份使用import工具丢失数据的表

利用物理备份来通过还原数据文件并进行不完全恢复

利用dbms_logmnr包从redo log文件中恢复

利用flashback特性恢复数据

前提

为了方便使用方法的介绍,上述恢复方法都将基于以下场景进行:系统管理员在前一天晚上11点用export对数据库做了全库逻辑备份,然后对所有数据文件进行了热备份。第二天上午10点,系统管理员在修改表TFUNDASSET的数据时,由于修改语句的条件写错了,导致一批记录(几千条)的ztm字段被修改成了错误的值,而且已经提交。这个表是资产表,相对而言数据变化不频繁。

一、利用逻辑备份使用import工具恢复丢失的数据

export/import是oracle提供的用于对数据库进行逻辑备份的工具。该工具适用于备份那些数据量不大、业务量不多的数据库系统。因为如果在前一天晚上11点用export做了逻辑备份,那么当今天上午10点数据库意外崩溃时,从备份起到数据库崩溃的这段时间里的数据修改操作(包括DDL和DML)都会丢失。如果丢失数据内的表上的数据是相对比较稳定,也就是说该表上基本没有DML操作,例如标准代码表、分区表里的历史数据,那么采用import来导入该表可以比较完整的恢复数据。如果该表是经常变化的业务表,那么这些丢失的数据只能根据业务情况从纸质记录恢复,或者其他途径恢复。

▲示例如下:这个表是一个资产表。相对来说,今天系统运行中修改的数据较少,丢失的数据量可以承受或者可以从别的途径恢复。那就可以用import来恢复。

方法一:

1、把这个表的数据备份到另一个表:

8bef9890242e5d20d09563896cef1471.png

2、删除该表的记录:

625dfa5d5986ca5c37dd5017953407cb.png

3、执行下面的命令:

3754d50cc473bd44236d927f00196d24.png

这个命令中在关键字tables中指定需要导入的表名字,ignore=y表示忽略表已经存在的错误。

4、导入结束后,检查表中的记录,并用适当的方法恢复当天的修改。

方法二:

1、把需要恢复的表导入到另一个用户下面:

33806d1216df5ae9c45890d3d45930ee.png

2、检查数据以后,把原表记录删除:

fe23a8a4602702e951e5ab48a7460e3b.png

3、然后从另一用户表中插入回去:

729976810ef459046df40b791a6ca773.png

4、数据量比较大时可以采用如下方法:

e377d10ff07132f160185cb1ba119cfc.png

二、利用物理备份来通过还原数据文件并进行不完全恢复

如果数据库运行在归档模式下,那么可以通过使用以前的数据文件备份进行还原,然后利用归档日志进行前滚,直到回滚到错误操作的时间点前,然后重置日志文件打开数据库。

可以通过下列方法确认是否是运行在归档模式:

c8406e42aef7ccc8ef232cfdd535e825.png

如果是如上所示,那么就是运行在归档模式了。

▲假定在前一天晚上11点做了全库物理备份,那么可以考虑如下恢复:

1、关闭数据库:

由于数据库的不完全恢复必须在一个关闭的数据库上实施,利用一个旧的数据库的备份还原,然后用日志根据需要逐步前滚,而不能还原一个新的备份,再回退到某个时间点。

通知各客户端数据库将关闭,然后发出:

401f68e89cbfa03388f5913bf5f1ecfd.png

数据库已经关闭。

已经卸载数据库。

ORACLE例程已经关闭。

2、确定错误操作的时间:

可以根据操作员的估计来确定不完全恢复需要前滚停止的时间,也可以利用LogMiner来分析日志文件(这个工具将在后面介绍),找出错误操作的准确时间。

3、还原数据文件:

先对当前的数据库文件进行备份,然后再用以前的最近一次备份覆盖现有数据文件。注意:不覆盖现有的控制文件。

4、基于时间点恢复,启动数据库到装配状态:

8802043c250eb2a060285be160f48c36.png

这样数据库就恢复到了2015年10月20日的9点58分零秒。

然后再利用业务资料补充这段时间内的数据。

三、利用dbms_logmnr包从log文件中恢复

这个包是由Oracle提供,与dbms_logmnr_d包配合使用可以方便地分析联机日志文件和归档日志文件,从这些日志文件中提取出所有对数据库的更改操作。

在使用这个包之前,需要先做一些设置和修改:

1、打开initorcl.ora,修改初始化参数utl_file_dir,设置dbms_logmnr_d包将要使用的数据字典文件的放置目录。

eb6dad504d6f5841641cbd02c5f6dee1.png

然后重启数据库使参数生效。

2、以sys用户连接到数据库执行dbmslmd.sql脚本重建dbms_logmnr_d这个包。

应用Logminer分析重做日志文件的操作主要有以下步骤:

●使用dbms_logmnr_d里的存储过程build创建一个外部数据字典文件;

●使用dbms_logmnr里的存储过程add_logfile添加要分析的日志文件;

●使用dbms_logmnr里的存储过程start_logmnr启动分析;

●查询与dbms_logmnr相关的几个视图来获取日志文件内容;

●使用dbms_logmnr里的存储过程end_logmnr结束分析。

▲下面详细讲述使用的过程

1、使用dbms_logmnr_d里的存储过程build创建一个外部数据字典文件:

a0975e25f5049f1ffdfdd49ad7ae943d.png

2、使用dbms_logmnr里的存储过程add_logfile添加要分析的日志文件到待分析文件列表:

d16ea343204a3a15b29bc6b94985d48d.png

如果没有运行在归档模式,那么由于重做日志文件的循环使用可能导致日志文件被覆盖而无法获取到所要寻找的恢复条目。如果运行在归档模式,则可以通过查看$ORACLE_HOMEadminorclbdump目录下的alert_orcl.log里日志文件归档的时间和错误操作的时间来确定加入哪些归档日志文件到待分析的文件列表中去。

eff89b61175131d3edda456d8d9bc18e.png

注意:执行以上过程时logfilename参数需要写日志文件的全路径,否则会报错。重复以上操作直到把所有需要分析的文件都加到列表中去。这样就可以启动进行分析。

3、使用dbms_logmnr里的存储过程start_logmnr启动分析;

3630359ea5afa57b5ea51c89da5b8c41.png

这样就可以通过下面的查询来获取日志文件的内容了。

4、查询与dbms_logmnr相关的几个视图来获取日志文件内容;

3f8098efdbe50d4b5b4a5311eab6b5d0.png

这样就可以找出要恢复所需的语句。注意:v$logmnr_contents只对执行dbms_logmnr.start_logmnr的会话有效,如果通过其他会话或者使用dbms_logmnr.end_logmnr终止了分析,都将不能访问v$logmnr_contents的数据。如果要使其他会话也能获取到这些数据,可以通过另外建表来实现,如:

create table undo_sql as select* from v$logmnr_contents。

再对undo_sql进行授权,其他用户就可以访问v$logmnr_contents的数据了。

5、使用dbms_logmnr里的存储过程end_logmnr结束分析。

使用完成以后用下面的命令来结束分析活动:exec dbms_logmnr.end_logmnr;

这样就释放了分配给logminer的资源(内存和数据结构)。

从上面的过程可知,如果是更新的数据量比较大,而日志文件比较小,就可能会导致日志文件的切换。如果没有及时去挖掘日志文件(没有运行在归档模式),那么可能会由于日志文件的循环使用而导致数据不可恢复。如果运行在归档模式,也可能由于需要分析的日志文件比较多而时间较长。

四、利用flashback新特性恢复数据

Oracle9i开始提供了闪回查询(Flashback Query)功能,对于误删除或者误更新并且已经commit了的情况提供了简便快捷的恢复方法;而在Oracle提供闪回查询之前,碰到这种情况只能通过备份来进行基于时间点的恢复或者使用logmnr挖掘日志来恢复,无疑这比闪回查询要麻烦而且费时。

使用这个Flashback Query特性的前提条件:

1.数据库必须处于Automatic Undo Management状态。

9d9facd0a8d3e8675284d38f601525d1.png

2.最大可以闪回查询的时间段由UNDO_RETENTION初始化参数(单位为秒)指定

b7a419e2f47bd4d31005ca2d9b4a7c58.png

可以通过ALTER SYSTEM SET UNDO_RETENTION=;来动态修改参数值。

▲如何使用Flashback Query来恢复数据呢?

1.通过SQL

28b1053a806762ec87261e80f0e8751f.png

使用SELECT语句的AS OF来进行闪回查询,语法如下:

使用AS OF关键字来对表,视图或者物化视图进行Flashback Query,如果指定了SCN,那么expr部分必须是一个数字,如果指定了TIMESTAMP,那么expr必须是一个timestamp类型的值。查询结果将返回在指定的SCN或者时间点上的数据。

下面我们使用scott方案来作一个实验。

24547dbf2f8f3515319435d98acc0f10.png

如果想在update的子查询部分使用AS OF,那么该查询只能返回一条记录,否则将会报错。

可以通过添加一个临时表作为中转,然后再作更新,如下:

5605ae591ab357c7148787937df03e17.png

2.通过DBMS_FLASHBACK包来恢复

DBMS_FLASHBACK包提供了以下几个函数:

ENABLE_AT_TIME:设置当前SESSION的闪回查询时间

ENABLE_AT_SYSTEM_CHANGE_NUMBER:设置当前SESSION的闪回查询SCN

GET_SYSTEM_CHANGE_NUMBER:取得当前数据库的SCN

DISABLE:关闭当前SESSION的闪回查询

当将一个SESSION设置为闪回查询模式之后,后续的查询都会基于那个时间点或者SCN的数据库状态,如果SESSION结束,那么即使没有明确指定DISABLE,闪回查询也会自动失效。

当SESSION运行在闪回查询状态时,不允许进行任何DML和DDL操作。如果要用DML操作来进行数据恢复就必须使用PL/SQL游标。

▲示例:

fbaf8acfe357d8f21039d588c8b658df.png

通过上面的例子可以看出,只要这个修改的时间不早于sysdate-(UNDO_RETENTION指定的秒数),就可通过这种方式来恢复数据。

e93c4d7b11cf4e7c8ed9a0d27c79ea80.png

对于问题中的批量数据,可以写个过程来完成获取到更改前的数据:

然后再用这个临时表里的数据来更新TFUNDASSET就可以了。

五、总结

比较以上几种恢复数据的方法的使用过程,我们可以看出:

● exp/imp只适合于数据变化不大的表的数据丢失的情况,即使用这种方法处理后也需要从业务办理资料中修正数据,否则导致数据丢失;

●采用基于时间点的不完全恢复可以恢复丢失的数据,但是需要关关闭数据库,减少系统可用时间,而且也会丢失恢复时间点以后的数据;

●使用LogMiner可以较好的恢复数据,但是要求数据库尽可能运行在归档模式,否则也可能导致数据丢失。好处是不用关闭系统,能够从日志文件中得到所有的数据。

●使用Flashback最方便和简洁,可以直接得到修改前的数据,但是需要依赖系统设置,并且需要占用大量的回滚表空间。

因此选择什么样的方法来恢复数据,取决于你的系统环境和具体情况,不能生搬硬套。采用正确的方法才能最大程度的减少数据的丢失。

当然,最好是不需要用到这些恢复的办法。前提是,你必须做好以下的工作:

1、为不同环境创建不同的数据库用户、不同密码(如果不能用户不同,一定要密码不同);

2、将owner和应用用户分开,并做适度授权;

3、在做DML前,先用同样的条件做查询,看根据结果集是否符合预期。

三、怎么查oracle存储过程更新记录

查oracle存储过程更新记录的方法是

1、版本控制系统:如果你的存储过程是通过版本控制系统(如Git、SVN等)进行管理的,你可以通过版本控制系统的记录来查找存储过程的更新历史。版本控制系统会记录每次提交的变更,包括对存储过程的修改。

2、数据库日志:Oracle数据库中的日志文件(如归档日志、重做日志)记录了数据库的所有操作,包括对存储过程的更新。你可以查询数据库的日志文件,查找特定存储过程的更新记录。这种方法需要对Oracle数据库日志的结构和查询方式有一定的了解。

3、内置表和视图:Oracle数据库提供了一些内置的表和视图,可以用于查找对象的元数据信息,包括存储过程的更新时间和更新者。例如,可以查询ALL_OBJECTS表或DBA_OBJECTS视图,根据对象类型筛选出存储过程,并查找相关的更新信息。