Oracle数据库误删数据恢复指南:备份、闪回与策略解析

创始人
2024-12-18 07:40:29
0 次浏览
0 评论

pl/sql,Oracle数据库中,不小心delete数据并提交后如何恢复被删数据?

1、如果是刚刚删除的,有两种方法:首先使用showparameterundo命令查看undo_retention数据库参数当前的设置。
显示如下:undo_managementstringAUTOundo_retentioninteger10800undo_suppress_errorsbooleanFALSEundo_tablespacestringUNDOTBS1undo_retention,10800的单位是秒。
那是3个小时。
更改Undo_retention参数的默认设置:ALTERSYSTEMSETundo_retention=10800SCOPE=BOTH;方法一:通过Oracle提供的flashback函数:execdbms_flashback.enable_at_time(to_date('2007-07-2310:21:00','yyyy-mm-ddhh24:mi:ss'));setserveroutputonDECLAREr_temphr.job_history%ROWTYPE;CURSORc_tempISSELECT*FROMhr.job_history;BEGINOPENc_temp;dbms_flashback.disable;LOOPFETCHc_tempINTOr_temp;EXITWHENc_temp%NOTFOUND;insertintohr.job_history(EMPLOYEE_ID,JOB_ID,START_DATE,END_DATE)values(r_temp.EMPLOYEE_ID,r_temp.JOB_ID,r_temp.START_DATE,r_temp.END_DATE);commit;ENDLOOP;CLOSEC_temp;END;方法2,insertintohr.job_historyselect*fromhr.job_historyasoftimestampto_timestamp('2007-07-2310:20:00','yyyy-mm-ddhh24:mi:ss');此方法功能简单,易于掌握。
该时间是您误操作之前的时间。
最好离误操作较近,因为Oracle在回滚保留段中存储的数据时间是有时间限制的,由undo_retention参数决定。
2.如果它已被删除一段时间,但您有相对较新的数据库备份,请从备份中恢复它。
创建新数据库,恢复备份,导出表数据,然后导入到当前数据库。
3、如果已经删除一段时间了,并且没有备份,但是数据在写入表的同时又写入了其他一些相关表,则尝试从其他表中获取数据并通过编写SQL语句将其添加到已删除的表中。

oracle数据库报1489

1.自我成长领域【url=http//ido.3mt.com.cn/Article/201408/show3831489c11p1.html】国外哪些机构认可高考成绩[/url]很多人使用其他数据【url=http//bbs.17173.com/thread-8082687-1-1.html]国外哪些机构承认高考成绩?当你转成绩[/url]使用Orac[url=http//wwwdocin.com/p-917045899.html]国外哪些机构认可高考成绩[/url],你会发现Orac[url=http://dzh.mop.com/47303747.html]去美国读本科周期[/url]字段类型自动增加,就像[url=http//www.xici.net/d209781397.htm]如何去美国升学[/url]不断增长的字段类型和主流数据库等mysql、sqlserver、db2等主流数据库都有相应的自动增长字段类型。
Oracle官方的解决方案是使用sequence,比较灵活,可以指定增长区间等参数。
虽然它最终可能达到与其他数据库相同的效果,但它是原创的。
一个简单的数据类型就可以解决问题,但是在Oracle中需要在插入的时候添加一个序列,就需要使用sequence.nextval。
这个地方看起来兼容Oracle数据库很不方便。
通用系统,需要自己设计一个自动生长的字段。
解决方案是添加一个专门的表来保存自动增长字段的表名和字段名,每次添加新记录时记录值加1。
然后取出来使用。
2.安装Oracle是出了名的复杂,尤其是在非Windows系统上。
Oracle的安装文档网上到处都能找到,但是很多人还是花了很多时间才安装成功。
如果你想创建一个RAC系统,那么。
情况更复杂。
我们还看到Oracle降低了安装复杂性。
11g的安装已经比8i、9i方便了。
最令人惊讶的是Oracle坚持创建Java安装界面。
很多朋友因为JavaGUI的问题而安装失败。
我认为Oracle考虑到了Java的跨平台能力,选择使用Java来开发安装程序,以统一界面。
这样就不需要开发多个软件包。
但是,您有没有发现,安装后,服务器上的Oracle数据库管理大部分都失效了?它是命令行,几乎从不使用GUI。
Oracle的安装实际上可以被简化。
对于操作系统变量和环境变量的安装程序应该能够自动处理,软件包依赖性检测可以提供人性化的提示。
非Windows系统上的GUI使安装更容易,但我想如果启动了Oracle的GUI,我基本上会单击“下一步”,安装它,然后在创建库后更改相关设置。
3.OuterJoin外连接(左连接、右连接、全连接)在标准SQL语法中有明确定义,但Oracle的语法与常态。
这是有历史原因的。
概念,不支持全外连接,Oracle的语法e是:select*fromt1,t2wheret1.id=t2.id(+)(+)用来表示外连接,但是大多数人一开始会想到乍一看,这是正确的连接语法。
事实上,这相当于Oracle中的左连接,到目前为止我仍然有时会弄错左和右。
幸运的是,Oracle9i添加了对标准外连接的语法支持。
然而,大多数Oracle数据库用户仍然使用传统的SQL语法。
主要原因可能是使用传统语法,还是用传统语法比较好,而SQL标准语法还不够成熟,还存在一些bug。
,ETC。
4.键入VARCHAR2。
看着VARCHAR2这个名字,我以为有一种新的VARCHAR类型。
事实上,它是Oracle中唯一的可变长度字符类型。
我不知道为什么叫VARCHAR2。
由于历史原因,VARCHAR在Oracle中也可以使用,但是VARCHAR只是VARCHAR2的同义词,并且在官方文档中推荐大家使用VARCHAR2。
VARCHAR2类型的最大长度始终为11g中的4000字节。
我不知道为什么这个上限这么小。
很多需求会超过4000,只能使用lob来处理。
但是Oracle的lob比较复杂,效率也比较低。
性能,因此有些系统甚至在表中创建多个varcahr2(4000)字段来表示字段的内容。
其他数据库中varchar类型的最大长度为4000以上,包括8KB、32KB、64KB。
5.NUMBER类型:10g以上”NUMBER类型是Oracle中唯一的数字类型,可以用来表示整数和小数。
range对我们来说就足够了Oracle也支持INTEGER语法,但INTEGER不支持。
不是NUMBER的同义词。
我不明白为什么Oracle没有专门的整数类型。
NUMBER类型很灵活,但是存储空间大,性能不好,可以用4个字节来表示。
平均在6个字节的存储上执行指数或对数运算,这将与标准浮点性能相差50倍。
幸运的是,Oracle10g已经有了。
添加了高效的浮点类型binary_float和binary_double,补偿了浮点性能问题。
Oracle在pl/sql语法中有一个专用的整数pls_integer,但是pls_integer不能用作字段类型。
6、DATE类型Oracle主要有两种日期类型,日期和时间戳。
从字面来看,认为date代表日期,timestamp可以存储时间。
但实际上,日期类型可以表示日期和时间。
时间戳可以更精确地存储时间。
为什么日期不称为日期时间?Oracle没有只存储日期的类型,因此可以使用2-4个字节,但Oracle的日期类型需要它。
7个字节来存储。
7.物化视图Materializedview在Oracle官方文档中好像翻译为物化视图,物化视图是国内的俗称。
一提到视图,你立刻就会想到它只是视图的一种类型,而且只是数据库中的一些定义,但实际上,物化视图并没有与普通视力有很大关系。
它看起来更像是一张桌子。
,保存的是实际数据,存储参数可以和表一样设置,也可以和表一样使用(select、insert、update、delete)。
其他数据库中也有类似物化视图的解决方案。
DB2称为具体化查询表。
SQLServer有索引视图,但索引视图只起到优化作用,与Oracle的物化视图不一样。
8.用户和SCHEMAschema的概念在很多数据库中并没有统一的定位。
有些数据库可能有多个数据库,每个数据库有多个模式。
Oracle中的模式有点奇怪,因为Oracle只有一个数据库的概念。
,所以schema有点类似于其他数据库的数据库。
我们一般都明白。
解决方案是模式(数据库)与用户没有直接关系。
Schema是安全认证的逻辑概念,只与权限相关。
然而,Oracle用户和模式之间的关系与其他数据库不同。
匹配schema,无法修改,不方便管理schema权限。
例如,希望一个用户能够访问另一个模式中所有对象的权限,这是非常不方便的。
这个设计也是Oracle独有的,估计Oracle也不会改变。
9、在客户端安装客户端。
给我一个几百M大小的软件有这么复杂吗?还有,为什么安装完客户端后还需要配置TNS呢?我直接提供数据库连接信息(ip+端口)。
+数据库名称)不起作用。
Oracle的TNS设置长期以来一直让开发人员头疼,尤其是在C/S软件分发给客户使用的场景下。
安装客户端不方便,而且还需要配置TNS,安装时要经常检查。
故障诊断。
检查TNS配置是否正确。
很多时候您不小心选择了错误的TNS名称并连接到了错误的数据库,导致数据意外删除。
由于客户端软件体积巨大,有的专门设计了简单的客户端安装软件,只有几M或几十M。
还有的开发了不需要客户端的插件,可以集成到软件中并发布。
可见Oracle客户端的安装配置并不是一般人能够接受的。
幸运的是,现在很多应用程序都是B/S系统。
OracleSQLDEVELOPER不需要配置客户端。
使用jdbc连接Oracle似乎让世界安静了很多。
10.管理和开发工具。
大多数数据库系统都有比较正式、全面的数据库管理工具,尤其是微软的产品。
不过,Oracle自己的管理工具还没有最终确定。
8i使用EnterpriseManager,9i使用JAVA。
10g采用WEB重写。
现在11g官方推荐使用OracleSQLDEVELOPER进行开发,B/S架构的OE进行管理和监控。
我一直以为Oracle官方的开发管理工具太不专业了,而且比其他第三方工具有用得多。
PlsqlDeveloper和Toad预计将成为Oracle管理人员和开发人员最常用的工具,其次是sqlplus。
OracleSQLDEVELOPER是用JAVA开发的。
它的功能很强大,可以使用JDBC连接来管理任何数据库,但是仍然不专业,使用起来不方便。
一些10gOEM公司已经开始使用它。
其监控功能应该不错,但无法应付开发。
这是产品定位的问题。
我希望有一天Oracle能够拥有像SQLSERVER这样强大的开发和管理工具。
以上是我个人认为是Oracle不满的一部分。
从9i到11g,我们也可以看到Oracle在增强功能、系统可用性和数据类型性能方面都有所提高,但仍然存在问题。
还有很大的改进空间。
这并不妨碍Oracle成为当今最先进的关系数据库系统。
其并发处理机制、锁管理、数据字典、性能监控与统计、多种优化方法、在线管理、RAC高可用架构等。
优于其他人。
数据库。
短时间内无法超越。
热门文章
1
SQL2000数据库备份压缩技巧:优化空... 怎么将SQL2000中的较大的备份数据库压缩变小更改数据库属性-选项-恢复模型很...

2
高效掌握:CMD命令轻松启动、关闭及登录... 如何用cmd命令快速启动和关闭mysql数据库服务开发中经常使用MySQL数据库...

3
SQL字符串处理技巧:单引号使用与转义标... SQL语句中,字符串类型的值均使用什么符号标明?单引号如果字符串内有单引号,请小...

4
Windows环境下Redis安装指南与... redis安装windowsredis基本简介与安装安装Redis首先需要获取安...

5
深度解析:Redis性能优势与局限性,助... redis有哪些优缺点?Redis的全称是RemoteDictionary.Se...

6
深入解析:MySQL数据库的特性与应用 mysql是什么MySQL是一个关系数据库管理系统。MySQL是一个开源关系数据...

7
MySQL命令行操作指南:轻松启动和登录... 用命令行方式启动和登录mysql服务的方法1.启动MySQL服务1打开命令行窗口...

8
Linux Redis后台启动教程:配置... linux怎么启动redis1、首先,为了管理方便,将Redis文件中的conf...

9
MySQL浮点数与Decimal类型详解... MySQL中的float和decimal类型有什么区别小数类型可以准确地表示非常...

10
C语言实现输入10个整数并找出最大最小值... C语言从键盘输入任意的10个整数,从中找出最大值和最小值并输出代码:#inclu...