如何用Oracle归档日志恢复到之前的某个时间点
答案:2 悬赏:70 手机版
解决时间 2021-03-06 19:49
- 提问者网友:浪荡绅士
- 2021-03-06 02:46
如何用Oracle归档日志恢复到之前的某个时间点
最佳答案
- 五星知识达人网友:像个废品
- 2021-03-06 03:07
两种方式
1. 通过scn回复删除并且提交的数据
1.1. 获取当前数据库的scn号
select current_scn from v$database; (切换到sys用户或system用户查询)
查询到的scn号为:1499220
1.2. 查询当前scn之前的scn
select * from 表名 as ofscn 1499220; (确定删除的数据是否存在,如果存在,则恢复数据;如果不是,则继续缩小scn号)
1.3. 恢复数据
flashback table 表名 to scn 1499220;
ORA-08189: cannot flashback the table because rowmovement is not enabled.(ORA-08189: 因为未启用行移动功能, 不能闪回表。)
解决办法:alter tabletable_name enable row movement;
2. 通过时间恢复删除并且提交的数据
2.1. 查询当前系统时间
selectto_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
2.2. 查询删除时间点的数据信息
select * from t_b_Student as of timestampto_timestamp('2017-07-10 14:31:46','yyyy-mm-dd hh24:mi:ss');
2.3. 恢复数据
flashback table t_b_Student to timestampto_timestamp('2017-07-10 14:31:46','yyyy-mm-dd hh24:mi:ss');
1. 通过scn回复删除并且提交的数据
1.1. 获取当前数据库的scn号
select current_scn from v$database; (切换到sys用户或system用户查询)
查询到的scn号为:1499220
1.2. 查询当前scn之前的scn
select * from 表名 as ofscn 1499220; (确定删除的数据是否存在,如果存在,则恢复数据;如果不是,则继续缩小scn号)
1.3. 恢复数据
flashback table 表名 to scn 1499220;
ORA-08189: cannot flashback the table because rowmovement is not enabled.(ORA-08189: 因为未启用行移动功能, 不能闪回表。)
解决办法:alter tabletable_name enable row movement;
2. 通过时间恢复删除并且提交的数据
2.1. 查询当前系统时间
selectto_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
2.2. 查询删除时间点的数据信息
select * from t_b_Student as of timestampto_timestamp('2017-07-10 14:31:46','yyyy-mm-dd hh24:mi:ss');
2.3. 恢复数据
flashback table t_b_Student to timestampto_timestamp('2017-07-10 14:31:46','yyyy-mm-dd hh24:mi:ss');
全部回答
- 1楼网友:思契十里
- 2021-03-06 04:25
oracle中可以利用 rman 还原归档日志到某个时间点:
1、理解还原与恢复
恢复(recover): 将备份之后的归档日志apply到数据库,也就根据归档日志的事务将数据库刷新到特定或最新状态(通常在还原之后操作)。对于归
档日志中那些已提交的事务进行前滚,未提交的事务进行回滚。
还原归档日志: 还原归档日志是位于还原数据库与恢复数据库之间的这么一个过程。它会将那些在备份归档日志时使用delete [all] input方式
删除的归档日志还原到缺省的归档位置。在还原数据库之后,如果要做recover,也就是作介质恢复那就需要用到归档日志。那还原之后进行
recover需要的归档日志在哪里呢?归档日志在指定的归档路径那里,那到底有没有呢?如果有,还原时出现提示,归档日志已经在指定位置。
如果没有,但是备份的归档备份集那里有,也行啊。备份集里包含备份片,也就是打包了归档日志。那既然打包就要解包,解包到缺省路径
或指定路径。这就是还原归档日志。
--演示环境
--为了较好的模拟还原归档日志,我们仅仅使用了一个特定的数据文件进行copy方式备份,然后备份归档日志(备份时删除归档日志)
--接下来破坏数据文件,还原数据文件,还原归档日志文件,恢复日志文件。
[oracle@linux3 ~]$ cat /etc/issue
enterprise linux enterprise linux server release 5.5 (carthage)
kernel \r on an \m
[oracle@linux3 ~]$ sqlplus -v
sql*plus: release 11.2.0.1.0 production
a、备份数据文件及归档日志
rman> list backup of archivelog all; --->列出当前数据库已经备份的归档日志
specification does not match any backup in the repository
rman> list backupset; --->列出当前数据库已存在的备份集
specification does not match any backup in the repository
sql> select username,default_tablespace from dba_users where username='scott'; -->查看用户scott所在的表空间及数据文件
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯