重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛
标题: 基于时间点的闪回 [打印本页]
作者: jiawang 时间: 2019-4-8 16:21
标题: 基于时间点的闪回
本帖最后由 jiawang 于 2019-4-8 16:23 编辑
1.查看数据库的归档模式及闪回是否启用SQL> select log_mode,flashback_onfrom v$database;
LOG_MODE FLASHBACK_ON
------------ ------------------
NOARCHIVELOG NO *FLASHBACK_ON为NO,表示闪回模式未打开*
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.truncate表test2SQL> set time on
15:35:04 SQL>select sysdate from dual;
SYSDATE
-------------------
2019-04-0815:35:17
15:35:17SQL> truncate table test2;
表被截断。
5.使用时间点恢复表test215: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
| 欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/) |
Powered by Discuz! X3.2 |