Flashback Database

闪回数据库的体系结构:
一旦启用了闪回数据库,那么修改的块的前镜像就会不时地从database buffer cache 中复制到sga中的另一个存储区-----闪回缓冲区。通过一个新的后台进程---恢复写入器Recovery Writer(RVWR )
将闪回缓冲区的内容写入到闪回日志中。
与重做日志不同的是,闪回日志中记录的并不是记录变化的日志,而是记录完 整块映像的日志。而且,闪回归档日志是不能多路复用的,它们是自动创建和管理的。
当我们执行数据库闪回的时候,oracle会读取闪回日志以提取每个变化数据块的版本,并且将这些版本复制到数据文件中。这些变化是按照逆时针的顺序应用到数据库的,这样做的效果是通过反转DBWR及时回退数据库。
要完成闪回过程,oracle可以使用重做日志,它将把所有的块严格回退到指定时间,因为将所有数据文件同步到相同scn上。最后一个阶段是回滚在那个时间点还没有提交的事务,这与不完全恢复最后一步完全相同。
实际上,闪回数据库在功能上就等价于不完全恢复。
下面来总结一下:首先,要在sga分配一定的内存作为闪回缓冲区,注意,这是自动进行的,我们无法去控制分配的闪回缓冲区的大小,另外,要在磁盘上分配一定的空间来存放闪回日志,同时启动RVWR后台进程支持闪回日志记录。当执行数据库闪回的时候,oracle会使用闪回日志将数据库回退到期望时间点之前的某个时间点,然后利用重做日志以便将数据文件回滚到确切的时间点,然后使用和不完全恢复后一样的方式alter database resetlogs;打开数据库。
那么闪回数据库和不完全恢复相比有什么优势呢?
不完全恢复总是很耗时的,因为总是要进行还原操作,不完全恢复的时间很大程度上和数据库大小是成正比的。
而闪回数据库所需要的时间主要取决于需要撤销的数据量,在常规环境中,这些要撤销的数据量和数据库的总数据量相比是微不足道的。

下面是配置闪回数据库的步骤:
1.首先查看当前数据库是否处于闪回数据库状态:
SYS@orcl 22-OCT-14>select flashback_on from v$database;

FLASHBACK_ON
------------------
NO

2.要开启闪回数据库,那么必须要确保数据库处于归档模式:
SYS@orcl 22-OCT-14>select log_mode from v$database;

LOG_MODE
------------
ARCHIVELOG

3.创建闪回恢复区。闪回恢复区是存放闪回日志的场所,我们除了可以控制闪回恢复区的目录和它的大小以外,不能控制其他。
与之相关的两个参数是 db_recovery_file_destdb_recovery_file_dest_size.
SYS@orcl 22-OCT-14>show parameter db_recovery_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /u01/app/oracle/flash_recovery
                                                 _area
db_recovery_file_dest_size           big integer 3852M

4.设置闪回保留目标时间,改时间是通过参数db_flashback_retention_target设置的,单位是分钟,默认值是1440分钟,即一天。闪回日志是循环使用的,新的数据会覆盖旧的数据,该参数就是决定oracle在重写闪回日志之前要保存闪回数据的分钟数。
SYS@orcl 22-OCT-14>show parameter  db_flashback_retention_target

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target        integer     240

5.干净关闭数据库并且重新加载数据库:
SYS@orcl 22-OCT-14>shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SYS@orcl 22-OCT-14>startup mount;
ORACLE instance started.


Total System Global Area  849530880 bytes
Fixed Size                  1339824 bytes
Variable Size             641732176 bytes
Database Buffers          201326592 bytes
Redo Buffers                5132288 bytes
Database mounted.

6.在加载模式下启用闪回数据库,执行alter database flashback on;
SYS@orcl 22-OCT-14>alter database flashback on;

Database altered.
执行了这个步骤之后,将会启动RVWR进程并且在sga中分配闪回缓冲区。

7.打开数据库:
SYS@orcl 22-OCT-14>alter database open;

Database altered.


SYS@orcl 22-OCT-14>select flashback_on from v$database;

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

[oracle@localhost dbs]$ ps -ef|grep ora_rvwr
oracle   15671     1  0 02:26 ?        00:00:00 ora_rvwr_orcl
oracle   15796 10200  0 02:28 pts/3    00:00:00 grep ora_rvwr

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29800581/viewspace-1307373/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29800581/viewspace-1307373/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值