Oracle闪回技术是现代Oracle数据库不可或缺的灾难恢复和数据分析工具包。它通过利用数据库内部的撤销机制和专用日志,提供了远超传统恢复方法的 速度、精度和易用性 。理解不同闪回技术的原理、适用场景、依赖和限制,对于DBA高效地进行数据恢复、审计、排错和保障业务连续性至关重要。根据具体需求(恢复整个库、单个表、查询历史、恢复删除的表)选择正确的闪回技术是关键。
选择哪种闪回技术?
| 场景 | 推荐技术 | 主要依赖 | 是否需要重启DB |
|---|---|---|---|
| 查看过去某个时间点的数据 | 闪回查询 (Flashback Query) | Undo 数据 | 否 |
| 查看一行数据的历史变更记录 | 闪回版本查询 (Version Query) | Undo 数据 | 否 |
| 查看/撤销某个特定事务的更改 | 闪回事务查询 (Txn Query) | Undo 数据 | 否 |
| 恢复误删/误改的单个表 (非DROP/TRUNCATE) | 闪回表 (Flashback Table) | Undo 数据 + ROW MOVEMENT | 否 |
| 恢复意外DROP掉的表 | 闪回删除 (Flashback Drop) | 回收站 (Recycle Bin) | 否 |
| 恢复整个数据库到过去时间点 (大规模损坏) | 闪回数据库 (Flashback DB) | 闪回日志 (Flashback Logs) | 是 (需MOUNT) |
查看闪回区大小
show parameter db_recovery_file_dest_size
扩大闪回区大小
alter system set db_recovery_file_dest_size=4G scope=both;
开启数据库闪回功能:
1. 确保数据库处于归档模式
archive log list
2. 设置闪回恢复区
设置闪回区大小:
SQL> alter system set db_recovery_file_dest_size=30g scope=both;
设置闪回区位置:
SQL> alter system set db_recovery_file_dest='/oracle/soft' scope=both;
设置闪回目标为 5 天,以分钟为单位,每天为 1440 分钟:
SQL>alter system set db_flashback_retention_target = 7200 scope=both;
3. 打开闪回功能
SQL>alter database flashback on;
4. 确认闪回特性已开启
SQL> select flashback_on from v$database;
关闭数据库闪回功能:
SQL>alter database flashback off;
闪回数据库
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
YES
SQL>
SQL>
SQL> select * from v$recovery_file_dest;
NAME
--------------------------------------------------------------------------------
SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
----------- ---------- ----------------- ---------------
E:\app\product\10.2.0\oradata\flashbck 1.0737E+11 2.9558E+10 0 67
SQL>
SQL>
SQL> SELECT oldest_flashback_time FROM v$flashback_database_log;
OLDEST_FLASHBA
--------------
18-12月-18
SQL>
SQL>
SQL> ALTER SESSION SET nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
会话已更改。
SQL> SELECT oldest_flashback_time FROM v$flashback_database_log;
OLDEST_FLASHBACK_TIME
-------------------------
18-12月-2018 23:58:47
SQL>
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
SQL>
SQL> startup mount;
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE 例程已经启动。
Total System Global Area 1.3959E+10 bytes
Fixed Size 2089760 bytes
Variable Size 905972960 bytes
Database Buffers 1.3036E+10 bytes
Redo Buffers 14684160 bytes
数据库装载完毕。
SQL>
SQL>
SQL> flashback database to timestamp to_timestamp('2018-12-20 04:00:00','yyyy-MM-dd hh24:mi:ss');
闪回完成。
SQL>
SQL>
SQL>
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
SQL>
SQL>
SQL> alter database open resetlogs;
数据库已更改。
SQL> select open_mode from v$database;
OPEN_MODE
----------
READ WRITE
SQL>
SQL>
SQL>
SQL> ALTER SESSION SET nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
会话已更改。
SQL> SELECT oldest_flashback_time FROM v$flashback_database_log;
OLDEST_FLASHBACK_TIME
-------------------------
18-12月-2018 23:58:47
编辑推荐:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
