重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3285|回复: 0
打印 上一主题 下一主题

[备份恢复] 基于时间点的闪回

[复制链接]
跳转到指定楼层
楼主
发表于 2019-4-8 16:21:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jiawang 于 2019-4-8 16:23 编辑

1.查看数据库的归档模式及闪回是否启用
SQL> select log_mode,flashback_onfrom v$database;
LOG_MODE     FLASHBACK_ON
------------ ------------------
NOARCHIVELOG NO       *FLASHBACK_ONNO,表示闪回模式未打开*
SQL> select flashback_on,log_modefrom v$database;
FLASHBACK_ON      LOG_MODE
------------------ ------------
NO                NOARCHIVELOG
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area  609624064 bytes
Fixed Size                  2283664 bytes
Variable Size             230688624 bytes
Database Buffers          369098752 bytes
Redo Buffers                7553024 bytes
数据库装载完毕。
SQL> alter database archivelog;
数据库已更改。
SQL> alter database flashback on;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL> archive log list;
数据库日志模式           存档模式
自动存档             启用
存档终点           USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列    131
下一个存档日志序列  133
当前日志序列          133
SQL>

2.查看及设置闪回目录、闪回目录空间大小
SQL> showparameter db_recovery
NAME                               TYPE        VALUE
----------------------------------------------- ------------------------------
db_recovery_file_dest               string     D:\oracle\product\10.2.0\flash
                                              _recovery_area
db_recovery_file_dest_size          big integer 2G
SQL> show parameter db_flashback
NAME                               TYPE        VALUE
----------------------------------------------- ------------------------------
db_flashback_retention_target       integer     1440

3.创建测试表
SQL> createtable  test1 as select * fromdba_objects;
表已创建。
SQL> createtable  test2 as select * from test1;
表已创建。
验证:
SQL>  select count(*) from test1;
  COUNT(*)
----------
     84554
SQL>  select count(*) from test2;
  COUNT(*)
----------
     84554

4.truncatetest2
SQL>  set time on
15:35:04 SQL>select sysdate from dual;
SYSDATE
-------------------
2019-04-0815:35:17
15:35:17SQL>  truncate table test2;
表被截断。
5.使用时间点恢复表test2
15:35:48 SQL>shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
15:38:30 SQL>startup mount exclusive;
ORACLE 例程已经启动。
Total SystemGlobal Area  609624064 bytes
Fixed Size                  2283664 bytes
VariableSize             230688624 bytes
DatabaseBuffers          369098752 bytes
RedoBuffers                7553024 bytes
数据库装载完毕。

15:41:45 SQL>flashback database to timestamp(to_date('2019-04-08 15:35:17','yyyy-mm-ddhh24:mi:ss'));
闪回完成。

6.闪回之后必须使用resetlogs打开数据库
15:42:43 SQL> alter database open ;
alter database open
*
1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS NORESETLOGS 选项

15:44:05 SQL> alterdatabase open resetlogs;
数据库已更改。

验证表tests2数据
15:45:06 SQL> select count(*)from test2;
COUNT(*)
----------
    84554


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-5-20 06:14 , Processed in 0.121928 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表