oracle新人提问,要修改表里的数据时,怎么备份表?万一出错,又怎么恢复备份?希望举例说明
修改单个表时,一般不做数据库级别的备份,一般都是直接备份这张表,有如下两种方法:
表比较小时,一般是直接复制这张表,如:create table a_bak as select * from a;
表比较大的时候,可以使用expdp或者exp导出进行备份;
如果没有备份,又出问题时可以考虑使用闪回(闪回表或者是事务等),实在是没有办法时采用闪回数据库。
其实oracle恢复表,用常规的备份恢复(如RMAN)还是比较麻烦的,当然还有第三方备份恢复软件也可以使用。
最基本的是,对数据库进行操作时,要谨慎,不要执行不明白的操作,修改数据是可以使用savepoint来暂时对为提交的数据进行建立回滚点,好了就说这么多。
一个朋友写的语句
select * into bak_a from a,这种可以么,如果可以定为第三种办法,你列举的方法1、2和这个3,在数据错误时怎么恢复备份的数据?
select * into bak_a from a 和create table a_bak as select * from a这语句都是对表进行复制,可以。
第一种的话,你发现表中数据不对了你直接就可以用SQL语句将备份表的数据update到目标表,如果实在不行你可以直接利用备份表重建目标表(删了再重建,利用上面那语句),有需要的话要重建索引。
第二种的话,你可以直接利用impdp将数据导入到目标表(有可能要清空目标表)
falshback 我就不想多讲了,一下讲不清
你自己去查资料吧,这个很简单,但是一下有讲不清楚。
2021-03-27 广告