加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flashback之flashback database

发布时间:2020-12-15 17:35:08 所属栏目:百科 来源:网络整理
导读:《三思笔记》--读书笔记 flashback database要求数据库在归档模式,且数据库必须启动flashback database和force logging 制约因素: 1,flashback database 用来将数据库中的数据恢复至之前的某个时间点,而非介质恢复,因此不能使用flashback database恢复

《三思笔记》--读书笔记

flashback database要求数据库在归档模式,且数据库必须启动flashback database和force logging

制约因素:

1,flashback database 用来将数据库中的数据恢复至之前的某个时间点,而非介质恢复,因此不能使用flashback database恢复之前被删除的某个数据文件

2,如果控制文件被重建,则在此之前所产生的所有flashback logs通通失效,也就是说不能将flashback databse恢复到控制文件被重建之前

3,不支持对数据库执行过shrink操作后的恢复


flashback database操作示例

1,将数据库启动flashback database和force logging

SQL> conn / as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area  417546240 bytes
Fixed Size                  2228944 bytes
Variable Size             318770480 bytes
Database Buffers           92274688 bytes
Redo Buffers                4272128 bytes
Database mounted.
SQL> alter database flashback on;

Database altered.

SQL> alter database force logging;

Database altered.

SQL> alter database open;

Database altered.

2,检查是否启动了flash recovery area

SQL> conn / as sysdba
Connected.
SQL> show parameter DB_RECOVER

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /u01/oracle/app/oracle/fast_re
                                                 covery_area
db_recovery_file_dest_size           big integer 4122M

3,检查是否启用了归档

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u02/arch_log
Oldest online log sequence     1
Next log sequence to archive   2
Current log sequence           2

4,检查是否启用了flashback database 和force logging

SQL> select flashback_on,force_logging from v$database;

FLASHBACK_ON       FOR
------------------ ---
YES                YES

5,查询当前的SCN

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
                 1806450

6,模拟误删除操作

SQL> conn cindy/cindy;
Connected.
SQL> drop table flash_tbl purge;

Table dropped.

7,重新启动到Mount 状态,然后执行恢复

SQL> conn / as sysdba
Connected.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area  417546240 bytes
Fixed Size                  2228944 bytes
Variable Size             318770480 bytes
Database Buffers           92274688 bytes
Redo Buffers                4272128 bytes
Database mounted.

SQL> flashback database to scn 1806450;

Flashback complete.

至此之后,有两种方式打开数据库

1)alter database open resetlogs

2)另一种方式是先执行alter database open read only打开数据库,然后立刻通过逻辑导出的方式将误操作涉及表的数据导出,再执行recover database命令以重新应用数据库产生的redo,将数据库修复到flashback database操作前的状态,然后再通过逻辑导入的方式,将之前误操作的表重新导入

SQL> alter database open resetlogs;

Database altered.

SQL> conn cindy/cindy;
Connected.
SQL> select * from flash_tbl;

        ID VL
---------- --
         8 G
         9 H
        10 I
        11 J
        12 K
        13 L
        14 M
        15 N
       116 O
       117 P
       118 Q

        ID VL
---------- --
       119 R
       120 S
       201 A1
       202 B1

15 rows selected.
显然数据回来了

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读