cmd
--管理员身份打开
sqlplus / as sysdba
--管理数据库
shu immediate;
--独占方式开始
startup mount
--修改日期模式
alter database archivelog; --开始DB闪回
alter database flashback on; --开启数据库
alter database open; --查看数据库的归档模式及闪回是否启用
select log_mode,open_mode,flashback_on from v$database;
ARCHIVELOG READ WRITE NO --FLASHBACK_ON为NO,则表示闪回特性尚未启用 --she设置闪回参数 alter SYSTEM set db_recovery_file_dest_size=500M;
alter system set db_recovery_file_dest='D:\app\flashdb'; 
alter system set db_flashback_retention_target=30; --设定保留时间为半小时 --查看闪回参数
show parameter db_recovery ;

-- 查看数据库运行状态
select status from v$instance;

-- 给T_USER赋予所有权限
grant all privileges to T_USER
----查看闪回
select * from v$flashback_database_stat; --查看sga中分配的闪回空间大小
select * from v$sgastat where name like 'flashback%';

闪回测试

常用指令

--查看闪回支持的时间
SELECT
Begin_time,--闪回最早支持时间
end_time,--闪回最晚支持时间
flashback_data,--闪回的数据大小
db_data,--数据库大小
redo_data --,--操作记录大小
estimated_flashback_size --
FROM
v$flashback_database_stat; 2018-02-23 09:28:34
2018-02-23 09:50:46
827392
1253376
386560 -- 查看闪回占用空间大小
SELECT
*
FROM
v$sgastat
WHERE
name LIKE 'flashback%'; --查看闪回记录
SELECT
oldest_flashback_scn ,--允许返回的最早的SCN
oldest_flashback_time ,--允许返回的最早的时间点
retention_target ,
flashback_size / 1024 / 1024 flhbck_siz,
estimated_flashback_size / 1024 / 1024 est_flhbck_size
FROM
v$flashback_database_log; 1095821
2018-02-23 08:35:05
1
11.71875
0

dbflashback.bat

echo 进入sqlplus
sqlplus / as sysdba @dbflashback.sql

dbflashback.sql

shutdown immediate;
startup mount;
flashback database to timestamp to_timestamp('2018-02-23 10:29:00','yyyy-mm-dd hh24:mi:ss');
alter database open resetlogs;
quit;

查询表历史资料

    SELECT a."ID",a."Name" from "TUser"  AS OF TIMESTAMP  to_timestamp('2018-02-23 11:30:04','yyyy-mm-dd hh24:mi:ss')  a;

遇到的问题:

1.ORA-01139: RESETLOGS 选项仅在不完全数据库恢复后有效

alter database open; --启动数据库

2.ORA-01466: 无法读取数据 - 表定义已更改

如果查询表历史资料的时间戳,在table的结构(目前发信删除字段有影响,添加字段没有影响,查询出来资料新增字段值为Null)改变之后,则回报ORA-01466异常。

--------------------------------------------------------------------------------------

1.使用sqlplus实现闪回

可以接受一个时间标记或一个系统改变号实参

sqlplus几种常用的闪回数据库方法

FLASHBACK [STANDBY] DATABASE [<database_name>]  TO [BEFORE] SCN <system_change_number>   --基于SCN闪回

FLASHBACK [STANDBY] DATABASE [<database_name>]  TO [BEFORE] TIMESTMP <system_timestamp_value>--基于时间戳闪回

FLASHBACK [STANDBY] DATABASE [<database_name>]  TO [BEFORE] RESTORE POINT <restore_point_name>--基于时点闪回

如下面的示例:

SQL> flashback database to timestamp('2010-10-24 13:04:30','yyyy-mm-dd hh24:mi:ss');

SQL> flashback database to scn 918987;

SQL> flashback database ro restore point b1_load;

a.基于时间戳闪回

SQL> select count(1) from usr1.tb1;   --查询用户usr1下表tb1中的记录数

COUNT(1)

----------

404944

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') tm from dual;  --获得系统当前的时间

TM

-------------------

2010-10-24 13:04:30

SQL> drop user usr1 cascade;     --删除帐户usr1,同时帐户usr1下的所有对象将被删除

SQL> conn scott/tiger;           --使用scott 帐户登陆

SQL> create table tb_emp as select * from emp;  --新创建表tb_emp

SQL> shutdown immediate;        --关系系统

SQL> startup mount ;             --重新到mount状态

SQL> flashback database to timestamp  --实施闪回

2  to_timestamp('2010-10-24 13:04:30','yyyy-mm-dd hh24:mi:ss') ;

SQL> alter database open resetlogs;

SQL> select count(1) from usr1.tb1;    --帐户usr1及其对象tb1被成功闪回

COUNT(1)

----------

404944

SQL> select count(1) from scott.tb_emp;   --闪回成功后,在闪回点之后修改的数据全部丢失

select count(1) from scott.tb_emp

*

ERROR at line 1:

ORA-00942: table or view does not exist

b.基于SCN号闪回

SQL> select current_scn from v$database;   --获得当前的SCN号

CURRENT_SCN

-----------

918987

SQL> drop table usr1.tb1;   --删除用户usr1下的表tb1

SQL> alter system checkpoint;    --手动执行检查点

SQL>  select file#,checkpoint_change# from v$datafile;

FILE# CHECKPOINT_CHANGE#

---------- ------------------

5             921478

SQL> shutdown abort;

SQL> startup mount;

SQL> flashback database to scn 918987;

SQL> select count(1) from usr1.tb1;

COUNT(1)

----------

404944

c.基于时点闪回

SQL> create table t(id int,col varchar2(20));   --创建表t

SQL> insert into t values(1,'ABC');

SQL> insert into t values(2,'DEF');

SQL> commit;

SQL> create restore point bef_damage;    --创建闪回点

SQL> insert into t values(3,'GHI');

SQL> select ora_rowscn,id,col from t;   --查看表t的记录

ORA_ROWSCN         ID COL

---------- ---------- --------------------

1874406          1 ABC

1874406          2 DEF

1874406          3 GHI

SQL> shutdown immediate;

SQL> startup mount exclusive;

SQL> flashback database to restore point bef_damage;  --实施时点闪回

SQL> alter database open resetlogs;

SQL> select * from t;   --闪回成功后,闪回点之后的数据丢失

ID COL

---------- --------------------

1 ABC

2 DEF

2.使用RMAN进行flashback database

使用RMAN进行闪回数据库的几种常用办法

RMAN> flashback database to scn=918987;

RMAN> flashback database to sequence=85  thread=1;

SQL> create table scott.tb_emp as select * from scott.emp;

SQL> select count(1) from scott.tb_emp;

COUNT(1)

----------

14

SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') tm from dual;

TM

-------------------

2010-10-24 13:59:38

SQL> drop table scott.tb_emp;

SQL> shutdown abort;

SQL> startup mount;

RMAN>  flashback database

2> to time="to_date('2010-10-24 13:59:00','yyyy-mm-dd hh24:mi:ss')";

SQL> select count(1) from scott.tb_emp;

COUNT(1)

----------

14

查询视图:v$recovery_file_dest将显示闪回区的使用情况

SQL> select name,space_limit/1024/1024 sp_limt

2   ,space_used/1024/1024 sp_usd,space_reclaimable/1024/1024 sp_recl,

3  number_of_files num_fils from v$recovery_file_dest;

NAME                                             SP_LIMT     SP_USD    SP_RECL   NUM_FILS

--------------------------------------------- ---------- ---------- ---------- ----------

/u01/app/oracle/flash_recovery_area                 2048 472.070313 380.671875         18

可以将某些表空间排除在闪回之外

SQL> alter tablespace users flashback off;

SQL> select name,flashback_on from v$tablespace where ts#=4;

NAME            FLA

--------------- ---

USERS           NO

如果需要对上述表空间启用闪回功能,则需要在mount模式下对该表空间进行开启该功能。

http://blog.csdn.net/leshami/article/details/6100429

Oracle 闪回归档(Flashback Database)的更多相关文章

  1. Oracle 闪回特性(FLASHBACK DATABASE)

    --===================================== -- Oracle 闪回特性(FLASHBACK DATABASE) --======================= ...

  2. Oracle 闪回归档(Flashback Data Archive)

    --检查权限 SELECT * FROM dba_sys_privs WHERE privilege LIKE '%FLASH%'; --设置权限 GRANT dba TO testuser;--设置 ...

  3. oracle闪回(flashback)的部分实用操作(彻底删除的除外)

    一.数据delete并且commit提交之后的闪回 (一):根据时间来恢复:1.查询数据库当前时间(目的是为了检查数据库时间是否与你电脑时间相近,避免时间不同而将数据恢复到错误时间点)select  ...

  4. Oracle闪回技术(Flashback)

    闪回技术有闪回表.闪回删除.闪回查询.闪回事务查询.闪回事务.闪回数据库.闪回数据归档.其中,闪回查询.闪回事务查询用来“观察”过去:闪回数据归档并不是一个独立的功能,其功能是扩展闪回查询的时间窗口: ...

  5. Oracle闪回(FlashBack)数据库

    Flashback Database功能非常类似与RMAN的不完全恢复,它可以把整个数据库回退到过去的某个时点的状态,这个功能依赖于Flashback log日志.比RMAN更快速和高效,因此Flas ...

  6. Oracle 闪回

    Oracle 闪回特性(FLASHBACK DATABASE) 本文来源于:gerainly 的<Oracle 闪回特性(FLASHBACK DATABASE) > -========== ...

  7. Oracle闪回flashback

    参考资料:Using Oracle Flashback Technology Oracle 11g的新特性闪回操作 闪回查询 闪回查询 闪回版本查询 闪回事务查询 闪回数据 闪回表 闪回删除 闪回数据 ...

  8. 6. Oracle闪回特性

    Oracle 闪回 (flashback)是9i版本提供的新特性.这一特性:其他数据库(PostgreSQL,Mysql)是羡慕不已.对数据恢复提供非常便捷的方式.闪回技术通常用于快速简单恢复数据库中 ...

  9. Oracle 闪回总结

    一.闪回查询(Flashback Query)1.闪回查询技术1.1 闪回查询机制    闪回查询是指利用数据库回滚段存放的信息查看指定表中过去某个时间点的数据信息,或过去某个时间段数据的变化情况,或 ...

随机推荐

  1. java内置注解、元注解和自定义注解

    注解的作用: 1.生成文档 2.跟踪代码依赖性 3.编译时进行格式检查 ---------------------------------------------------------------- ...

  2. python局部变量引用问题

    a = [1, 2] b = 'Immutable' def test(): # global b print(a) a.append('asd') b = b + 'asd' # 当只是引用变量b的 ...

  3. Windows10在待机状态时会卡屏的解决方案

    问题:Windows10在待机时,会出现卡屏(鼠标.键盘都无法操作,只能重启电脑),区别于平时我们看得比较多的花屏.蓝屏.黑屏. 原因:经过一段时间的待机,Windows10会进入到降电节能模式,由于 ...

  4. Linux基本常用命令

    说到Linux,它就是基于POSIX和UNIX的多用户,多任务,支持多线程和多CPU的操作系统.它能运行主要的UNIX的工具软件,应用程序和网络协议.它支持32位和64位硬件.linux继承Unix以 ...

  5. 【codevs3012+codevs3037】线段覆盖4+线段覆盖5(DP)

    线段覆盖4网址:http://codevs.cn/problem/3012/ 线段覆盖5网址:http://codevs.cn/problem/3037/ 题目大意:给出一条直线上的一坨线段,每条线段 ...

  6. DelphiXE

    1. http://blog.csdn.net/tp26021340/article/details/45953669 2. 3. 4. 5.

  7. redis 按空间范围查询点位

    GEORADIUS GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC| ...

  8. Redis简介 & 与Memcache的区别

    redis 是一个基于内存的高性能key-value数据库.   Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操 ...

  9. get、post请求的区别

    get.post请求 自己接触前端也是许久时间了,但是对get和post请求的认识也还只是停留在网络上大多数人流传的那样: post比get安全 post可以传大数据,get传的数据量较少: 就这样, ...

  10. python sort() sorted() 与argsort()函数的区别

    1.python的内建排序函数有 sort.sorted两个 sort函数只定义在list中,sorted函数对于所有的可迭代序列都可以定义. for example: ls = list([5, 2 ...