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 闪回查询机制 闪回查询是指利用数据库回滚段存放的信息查看指定表中过去某个时间点的数据信息,或过去某个时间段数据的变化情况,或 ...
随机推荐
- @MarkFan 口语练习录音 20140415 [MDL演讲口语录音]
Hi,everybody! 今天是2014年4月14日, 现在是晚上十一点零柒分. 一本励志的书,一场振奋人心的演讲,一次推心置腹的谈话, 最多只是在你背后小推你一下,最终决定是否迈出前进的步伐, 以 ...
- R基本画图
参考内容:闻博,R语言的绘图功能及应用案例 https://wenku.baidu.com/view/80f22fa50029bd64783e2c22.html R画图是以函数操作为基本的画图模式. ...
- for update排他锁详解
使用场景: 高并发并且对于数据的准确性很有要求. 落实到mysql就是在事务中使用,只有使用InnoDB时才用,在begin于commit之间使用(只有此引擎支持事务). 本质: 给表或行上个锁以便接 ...
- win10系统下载地址
Win10正式版微软官方原版ISO系统镜像下载: Win10正式版32位简体中文版(含家庭版.专业版) 文件名: cn_windows_10_multiple_editions_x86_dvd_684 ...
- 修改和重置WAMP的phpMyAdmin密码
WAMP是Windows下的Apache+Mysql/MariaDB+Perl/PHP/Python,常用来搭建动态网站或者服务器的开源软件. 1.下载页面:http://www.wampserver ...
- 1.1nginx安装
1.必要软件准备 安装 pcre为了支持 rewrite 功能,我们需要安装 pcre# yum install pcre* //如过你已经装了,请跳过这一步 安装 openssl需要 ssl 的 ...
- nvm工具
nvm工具 nvm简介 nvm是node version manager的简称,是nodeJs的版本管理器,他可以在一台主机上对node的版本进行方便的切换.我尝试了一下window的,但是不行,你可 ...
- 如何在windows上部署war包到tomcat服务器
一. 什么是war包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将很多文件组合成一个压缩文件.war专用在web方面,一个war包可以理解为一个web项 ...
- c++中对齐方式
使用cout<<setiosflags(ios::right)以后, 再调用 cout<<setiosflags(ios::left);无效的, 你可以在调用之前加上一句 co ...
- mac上完整卸载删除:android studio方案
如果你是mac ,你删除as ,删不干净也正常,你会发现安装的时候,前面的东西也在.配置文件在,会导致你以前的错误不想要的东西都在. 废话不多说,复制粘贴!!~~~~~~~~ 第一步: 复制粘贴!! ...