您的位置:首页 > 数据库

[置顶] 【实验-视频过程】闪回数据库Flashback database

2015-10-08 21:06 633 查看

一、打开闪回数据库

1、确保数据库处于归档模式,如果为非归档模式,将数据库转换成归档模式

SQL> select name,log_mode from v$database;

NAME      LOG_MODE
--------- ------------
ORCL      NOARCHIVELOG
SQL> select flashback_on from v$database;

FLASHBACK_ON
-------
NO


设置为归档模

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0
Connected as SYS


档日志的路径

alter system set log_archive_dest_1='location=D:\oracle\product\10.2.0\flash_recovery_area\ORCL\ONLINELOG';

alter system set log_archive_dest_2='location=D:\oracle\product\10.2.0\flash_recovery_area\ORCL\LOG2';


查看结果

show parameter log_archive_dest;

SQL> show parameter log_archive_dest;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest                     string
log_archive_dest_1                   string      location=D:\oracle\product\10.2.0\flash_recovery_area\ORCL\ONLINELOG
log_archive_dest_10                  string
log_archive_dest_2                   string      location=D:\oracle\product\10.2.0\flash_recovery_area\ORCL\LOG2
log_archive_dest_3                   string
log_archive_dest_4                   string
log_archive_dest_5                   string
log_archive_dest_6                   string
log_archive_dest_7                   string
log_archive_dest_8                   string
log_archive_dest_9                   string


关闭数据库

shutdown immediate


启动数据mount状态:

set ORACLE_SID=ORCL

SQL> startup mount;


修改数据库为归档模式:

SQL> alter database archivelog;


打开数据库,查询:

SQL> alter database open;


修改日志文件命名格式:

SQL> alter system set log_archive_max_processes = 5;

SQL> alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile;


检查是否成功

SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            D:\oracle\product\10.2.0\flash_recovery_area\ORCL\LOG2
最早的联机日志序列     6223
下一个存档日志序列   6225
当前日志序列           6225


切换一下当前日志 归档当前的重做日志文件

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;


系统已更改。

2、设置闪回恢复区

设置闪回区大小:

SQL> alter system set db_recovery_file_dest_size=10g scope=spfile;


设置闪回区位置:

SQL> alter system set db_recovery_file_dest='D:\oracle\product\10.2.0\flash_recovery_area\' scope=spfile;


设置闪回目标为2天,以分钟为单位,每天为1440分钟:

SQL> alter system set db_flashback_retention_target=2880 scope=spfile;


3、打开闪回功能

SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database flashback on;
SQL> alter database open;


4、确认数据库闪回特性已经启用

SQL> select flashback_on from v$database;

FLASHBACK_ON
----------
YES


5、验证闪回数据库功能

alter user scott account unlock;


连接SCOTT用户

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0
Connected as scott


删除表

SQL> drop table emp;

Table dropped


查看当前的SCN

select dbms_flashback.get_system_change_number from dual;


恢复到最老的SCN

SQL> select * from v$flashback_database_log;

OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TIME RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLASHBACK_SIZE
-------------------- --------------------- ---------------- -------------- ------------------------
159498340 2015/10/8 20:06:07                2880       15941632                        0


闪回操作

shutdown immediate;
startup mount;
flashback database to scn 159498340;
alter database open resetlogs;
----
conn scott/tiger;
SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
DEPT                           TABLE
EMP                            TABLE
BONUS                          TABLE
SALGRADE                       TABLE


EMP表恢复成功

二、关闭闪回数据库特性:

SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database flashback off;
SQL> alter database open;


三、按照时间戳来恢复

C:\Users\Administrator>sqlplus sys/oracle as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on 星期四 10月 8 23:05:54 2015

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


修改时间显示格式

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';


查看当前时间

SQL> select sysdate from dual;

SYSDATE
-------------------
2015-10-08 23:07:27


切换scott用户

SQL> conn scott/tiger


删除测试表emp

SQL> drop table emp;


表已删除。

查看删除后的时间

SQL> select sysdate from dual;


SYSDATE
--------------
08-10月-15

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';


会话已更改。注意:切换用户后,要重新设置日期格式

SQL> select sysdate from dual;

SYSDATE
-------------------
2015-10-08 23:08:17


开始闪回数据库 --按照时间

SQL> conn sys/oracle as sysdba
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area 1610612736 bytes
Fixed Size                  2164384 bytes
Variable Size             597490016 bytes
Database Buffers         1006632960 bytes
Redo Buffers                4325376 bytes
数据库装载完毕。

SQL>flashback database to timestamp to_timestamp('2015-10-08 22:07:27','yyyy-mm-dd hh24:mi:ss')  ;


闪回完成

read only 模式的时候可以检查 ,如果不对,回到mount模式接着恢复

SQL> alter database open read only;

数据库已更改。

SQL> select count(*) from scott.emp;

COUNT(*)
----------
14


如果对了,启动数据库完成操作

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area 1610612736 bytes
Fixed Size                  2164384 bytes
Variable Size             597490016 bytes
Database Buffers         1006632960 bytes
Redo Buffers                4325376 bytes
数据库装载完毕。
SQL> alter database open resetlogs;


数据库已更改。

resetlogs后就恢复工作了,不能恢复到resetlogs前面去了

视频参考

http://v.youku.com/v_show/id_XMTM1NTc2NzgyNA==.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: