flashback Oracle数据表和数据库闪回

一、闪回数据表

闪回表是基于撤销数据来实现的,撤销表空间的参数:

1、undo_management

  有两个参数值:auto、manual(默认)

  manual:系统启动后使用rollback segment存储undo信息;

  auto:使用UNDO 表空间,这时undo_tablespace必须要指定一个UNDO 表空间

2、undo_tablespace

  指定存放undo的表空间。

3、undo_retention

  undo数据保存的期望时间,单位为秒。如果undo表空间充足,保存时间则会达到设置的期望值;如果undo表空间不足,则会提前覆盖。

 

执行闪回表命令的语法:

flashback table [schema.]<table_name> to

{

[before drop [rename to table] | [scn | timestamp] expr [enable | disable] triggers ]

}

 

  • schema : 模式名,一般就是指用户
  • to timestamp : 系统时间戳
  • to scn: 系统更改好,可以从flashback_transaction_query 数据字典中查询 示例: flashback table temp to scn 25025971;
  • [enable | disable] triggers:标识恢复以后触发器的状态,默认为disable状态
  • to before drop: 表示恢复到被删除之前
  • rename to table: 表示更换表名

二、闪回数据库

闪回恢复区配置

SELECT * FROM v$parameter t WHERE UPPER(t.NAME) LIKE 'DB_RECOVERY_FILE_DEST%';

或者show parameter DB_RECOVERY_FILE_DEST

 

 

闪回数据库必须在归档模式才能使用

查看日志模式:archive log list;

或者select name,log_mode from v$database;

 

修改为归档模式:

shutdown immediate;

startup mount;

alter database archivelog;

 

通过DB_FLASHBACK_RETENTION_TARGET指定可以在多长时间内闪回数据库。(单位分钟)

alter system set db_flashback_retention_target=7200;

在MOUNT状态下使用ALTER DATABASE FLASHBACK ON 命令启动闪回数据库功能

alter database flashback on;

 

 

打开数据库,查看日志模式:

 

设置归档日志目录:参考:http://blog.itpub.net/25744374/viewspace-732083/

 

LOG_ARCHIVE_DEST:指定归档文件存放的路径,该路径只能是本地磁盘,默认为’’。

LOG_ARCHIVE_DEST_n:默认值为’’。Oracle最多支持把日志文件归档到10个地方,n从1到10。归档地址可以为本地磁盘,或者网络设备。

DB_RECOVERY_FILE_DEST:指定闪回恢复区路径。

三者关系:

1、 如果设置了DB_RECOVERY_FILE_DEST,就不能设置LOG_ARCHIVE_DEST,默认的归档日志存放于DB_RECOVERY_FILE_DEST指定的闪回恢复区中。可以设置LOG_ARCHIVE_DEST_n,如果这样,那么归档日志不再存放于DB_RECOVERY_FILE_DEST中,而是存放于LOG_ARCHIVE_DEST_n设置的目录中。如果想要归档日志继续存放在DB_RECOVERY_FILE_DEST中,可以通过如下命令:alter system set log_archive_dest_1=’location=USE_DB_RECOVERY_FILE_DEST’;

2、 如果设置了LOG_ARCHIVE_DEST,就不能设置LOG_ARCHIVE_DEST_n和DB_RECOVERY_FILE_DEST。如果设置了LOG_ARCHIVE_DEST_n,就不能设置LOG_ARCHIVE_DEST。也就是说,LOG_ARCHIVE_DEST参数和DB_RECOVERY_FILE_DEST、LOG_ARCHIVE_DEST_n都不共存。而DB_RECOVERY_FILE_DEST和LOG_ARCHIVE_DEST_n可以共存。

3、 LOG_ARCHIVE_DEST只能与LOG_ARCHIVE_DUPLEX_DEST共存。这样可以设置两个归档路径。LOG_ARCHIVE_DEST设置一个主归档路径,LOG_ARCHIVE_DUPLEX_DEST设置一个从归档路径。所有归档路径必须是本地的。

4、 如果LOG_ARCHIVE_DEST_n设置的路径不正确,那么Oracle会在设置的上一级目录归档。比如设置LOG_ARCHIVE_DEST_1=’location=C:\archive1’,而OS中并没有archive1这个目录,那么Oracle会在C盘归档。

修改归档日志位置

alter system set log_archive_dest_1='location=E:\app\archiveLog';

 

闪回数据库:

查询v$flashback_database_log 视图获取oldest_flashback_scn的值

select oldest_flashback_scn,oldest_flashback_time from v$flashback_database_log;

 

先关闭数据库,再打开到mount状态,执行数据库闪回到具体scn,再用resetlogs打开数据库

shutdown immediate;

startup mount;

flashback database to scn 25025971;

alter database open resetlogs;

 

查看数据库当前scn

select current_scn from v$database;

scn与具体时间点的转化

select timestamp_to_scn(to_timestamp('2020-05-13 22:55:38.000','YYYY-MM-DD HH24:MI:SS.ff3')) from dual;

select to_char(scn_to_timestamp(25025971),'YYYY-MM-DD HH24:MI:SS.ff3') from dual;

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值