Oracle 闪回归档(Flashback Database)
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)的更多相关文章
- Oracle 闪回特性(FLASHBACK DATABASE)
--===================================== -- Oracle 闪回特性(FLASHBACK DATABASE) --======================= ...
- Oracle 闪回归档(Flashback Data Archive)
--检查权限 SELECT * FROM dba_sys_privs WHERE privilege LIKE '%FLASH%'; --设置权限 GRANT dba TO testuser;--设置 ...
- oracle闪回(flashback)的部分实用操作(彻底删除的除外)
一.数据delete并且commit提交之后的闪回 (一):根据时间来恢复:1.查询数据库当前时间(目的是为了检查数据库时间是否与你电脑时间相近,避免时间不同而将数据恢复到错误时间点)select ...
- Oracle闪回技术(Flashback)
闪回技术有闪回表.闪回删除.闪回查询.闪回事务查询.闪回事务.闪回数据库.闪回数据归档.其中,闪回查询.闪回事务查询用来“观察”过去:闪回数据归档并不是一个独立的功能,其功能是扩展闪回查询的时间窗口: ...
- Oracle闪回(FlashBack)数据库
Flashback Database功能非常类似与RMAN的不完全恢复,它可以把整个数据库回退到过去的某个时点的状态,这个功能依赖于Flashback log日志.比RMAN更快速和高效,因此Flas ...
- Oracle 闪回
Oracle 闪回特性(FLASHBACK DATABASE) 本文来源于:gerainly 的<Oracle 闪回特性(FLASHBACK DATABASE) > -========== ...
- Oracle闪回flashback
参考资料:Using Oracle Flashback Technology Oracle 11g的新特性闪回操作 闪回查询 闪回查询 闪回版本查询 闪回事务查询 闪回数据 闪回表 闪回删除 闪回数据 ...
- 6. Oracle闪回特性
Oracle 闪回 (flashback)是9i版本提供的新特性.这一特性:其他数据库(PostgreSQL,Mysql)是羡慕不已.对数据恢复提供非常便捷的方式.闪回技术通常用于快速简单恢复数据库中 ...
- Oracle 闪回总结
一.闪回查询(Flashback Query)1.闪回查询技术1.1 闪回查询机制 闪回查询是指利用数据库回滚段存放的信息查看指定表中过去某个时间点的数据信息,或过去某个时间段数据的变化情况,或 ...
随机推荐
- POJO、Bean和JavaBean
本文总结自: https://blog.csdn.net/chenchunlin526/article/details/69939337 POJO (plain pld java object) 一个 ...
- c++ 关键字extern(声明)和定义的区别
extern : extern int i; // declares but does not define i int i; //declares and defines i ...
- Cocos2d-x项目移植到WP8系列之七:中文显示乱码
原文链接:http://www.cnblogs.com/zouzf/p/3984628.html C++和C#互调时经常会带一些参数过去例如最常见的字符串,如果字符串里有中文的话,会发现传递过去后变成 ...
- log4j2.xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <!--日志级别以及优先级排序: OFF > FATAL ...
- 实现利用公钥私钥免密码登录Linux服务器
原理 客户端生成公钥私钥,把公钥拷贝给linux服务器,用自己的私钥连接服务器.实现如下: 如果是两台Linux服用器A和B,A来实现免密码登录B A执行ssh-keygen -t rsa 就会在/r ...
- 【BZOJ1854】游戏[SCOI2009](神奇贪心+并查集)
这道题和今年GDKOI的Day2T2很像(然而gdkoi的题用网络流可以A,这道题只能拿30). 网址:http://www.lydsy.com/JudgeOnline/problem.php?id= ...
- Ubuntu 安装mysql
ubuntu上安装mysql非常简单只需要几条命令就可以完成. 1. sudo apt-get install mysql-server 2. apt-get isntall mysql-clie ...
- js字符串和数组的相互转化
一.数组转字符串 需要将数组元素用某个字符连接成字符串,示例代码如下: var a, b; a = new Array(0,1,2,3,4); b = a.join("-"); 二 ...
- JavaScript数组和函数的使用
数组 数组:一个有顺序,有长度的数据集合 作用:存储大量数据 一.数组的定义 1.构造函数法:使用构造函数法的时候,都会使用new关键字 var arr=new Array(): 当长度为0 的时候, ...
- sikiA计划问题记录
1.有时候在场景中创建光源会有一条虚线 解决方法:禁用锯齿 edit - project setting - quality - anti aliasing