oracle数据库flashback系列--闪回数据库在dataguard中的使用
很多人在学习flashback database这个oracle技术的时候,都会有一个疑问,就是如果我只有一个数据库作为生产库的话,是否有这样的业务需求导致我们要把数据库闪回到以前的时间点?以及这样做是否值得(当前时间点和闪回目的时间点中间的所有操作将丢失)?
其实抛开这个问题的讨论,在oracle的dataguard环境配置中,对于故障切换后产生故障的主机从新回到dataguard环境,以及处于测试的目的我们人为的激活了备库,flashback
database都可以提供非常好的选择。
下面的例子描述了这样一个场景:
用户需要一个和生产系统一样或者类似的测试环境,但是单纯的搭建一个环境显然是不值得的,对于部署了dataguard环境的生产系统来说,我们可以选择把备库临时激活,以读写的方式打开,用于测试的需要,等测试结束后,把备库通过flashback
database技术闪回到激活之前的时间点,从新的加入到dataguard配置环境中。
第1 步 准备要被激活的物理备数据库。
1 .检查数据库的flashback database模式和闪回日志存放的目录。
SQL> select flashback_on from
v$database;
FLASHBACK_ON
------------------
YES
SQL> show parameter db_recovery_file
NAME
TYPE
VALUE
------------------------------------ -----------
------------------------------
db_recovery_file_dest
string
/u01/app/oracle/flash_recovery_area
db_recovery_file_dest_size
big integer 2G
2 .由于备库在应用日志,所以要取消日志应用,并创建一个激活之前的还原点。
SQL> select process,status from
v$managed_standby;
PROCESS STATUS
--------- ------------
ARCH
CONNECTED
ARCH
CLOSING
MRP0
WAIT_FOR_LOG
RFS
IDLE
RFS
IDLE
RFS
IDLE
6 rows selected.
SQL> recover managed standby database
cancel;
SQL> create restore point test_scn guarantee
flashback database;
Restore point created.
第2 步 准备主数据库
1
.归档当前日志文件。
在主数据库上,切换日志使得还原点(在步骤 1 中创建)的 SCN 将在物理备数据库上被归档:
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
当使用备重做日志文件时,这个步骤是必须的以确保数据库能被正确地闪回到还原点。
2 .延迟指向将被激活的备的日志归档目的地。
SQL> ALTER SYSTEM SET
LOG_ARCHIVE_DEST_STATE_2=DEFER;
System altered.
SQL> show parameter
log_archive_dest_state_2
NAME
TYPE
VALUE
------------------------------------ -----------
------------------------------
log_archive_dest_state_2
string
DEFER
第3 步 激活物理备数据库。
在物理备数据库上,执行下述步骤:
1 .激活物理备数据库并打开到open状态:
SQL> ALTER DATABASE ACTIVATE STANDBY DATABASE;
SQL> ALTER DATABASE OPEN;
第4 步 使用激活的数据库用于报表或测试。
一旦备数据库已经被激活,你能运行报表工具或执行其它测试并激活几天甚至几周,独立于主数据库。
警告:当数据库被激活时,它不从主数据库接收重做数据库并不能提供灾难保护。建议至少有
两个物理备数据库参与配置,使得主数据库保持对数据丢失的保护。
第5 步 回复激活的数据库回到物理备数据库。
在你完成测试之后,你需要重新与主数据库同步激活的数据库。在激活的数据库上执行
下面语句以快速闪回它到保障的还原点并将它重新与主数据库同步:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 314572800 bytes
Fixed
Size
1219160 bytes
Variable
Size
75498920 bytes
Database
Buffers
234881024 bytes
Redo
Buffers
2973696 bytes
Database mounted.
SQL> flashback database to restore point
test_scn;
Flashback complete.
SQL> alter database convert to physical
standby;
Database altered.
SQL> select status from v$instance;
STATUS
------------
STARTED
SQL> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 314572800 bytes
Fixed
Size
1219160 bytes
Variable
Size
75498920 bytes
Database
Buffers
234881024 bytes
Redo
Buffers
2973696 bytes
Database mounted.
SQL> recover managed standby database
disconnect;
Media recovery complete.
第6 步 重新允许归档到物理备数据库目的地。
在主数据库上,执行下面语句来重新允许归档到物理备数据库:
SQL> ALTER SYSTEM SET
LOG_ARCHIVE_DEST_STATE_2=ENABLE;
第7 步
测试dataguard环境工作正常
1.在主库删除表空间usertest,并切换日志
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/db01/system01.dbf
/u01/app/oracle/oradata/db01/undotbs01.dbf
/u01/app/oracle/oradata/db01/sysaux01.dbf
/u01/app/oracle/oradata/db01/users01.dbf
/u01/app/oracle/oradata/db01/example01.dbf
/u01/app/oracle/oradata/db01/usertest01.dbf
6 rows selected.
SQL> drop tablespace usertest including contents
and datafiles;
Tablespace dropped.
SQL> alter system switch logfile;
System altered.
2.在备库观察日志操作是否正确应用,下面的查询可以看到文件应经被删除,说明主库的日志应用到备库。
SQL> select name from v$datafile;
NAME
---------------------------------------------------------------------------------------
/u01/app/oracle/oradata/db01/system01.dbf
/u01/app/oracle/oradata/db01/undotbs01.dbf
/u01/app/oracle/oradata/db01/sysaux01.dbf
/u01/app/oracle/oradata/db01/users01.dbf
/u01/app/oracle/oradata/db01/example01.dbf
oracle数据库flashback系列--闪回数据库在dataguard中的使用的更多相关文章
- Oracle Flashback Technologies - 闪回数据库
Oracle Flashback Technologies - 闪回数据库 根据指定的SCN,使用rman闪回数据库 #查看可以闪回到多久前 SQL> select * from v$flash ...
- Flashback Database 闪回数据库
一. Flashback Database 说明 Flashback Database 功能非常类似与 RMAN 的不完全恢复, 它可以把整个数据库回退到过去的某个时点的状态, 这个功能依赖于 Fl ...
- OCP读书笔记(12) - 执行闪回数据库
闪回数据库使用的是闪回日志,闪回日志存在于闪回目录(也就是快速闪回区中)闪回日志:就是数据块修改之前的镜像,简称前像 1.查看闪回目录的位置:show parameter recovery 如果闪回目 ...
- Oracle Flashback Technologies - 闪回查询
Oracle Flashback Technologies - 闪回查询 查看表中,某行数据的修改记录 #创建一个表,并插入和修改数据 SQL> create table y3(id )); T ...
- Oracle的回收站和闪回查询机制(一)
实际工作中,我们经常会遇到一些情况,误删除某些表或某些表的某些记录,这时候就需要我们将这些记录重新插入进去.如何才能解决这个问题呢? Oracle的Flashback query(闪回查询)为我们解决 ...
- oracle闪回技术总结之闪回数据库
[实施步骤] 步骤一.设置如下的初始化参数: Sql>小时:以分钟为单位 SQL> 点00分左右发现表被删除 切了几个归档 22:00:38SQL>:06:05 SQL> :0 ...
- 【DG】利用闪回数据库(flashback)修复Failover后的DG环境
利用闪回数据库(flashback)修复Failover后的DG环境 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能, ...
- [Flashback]开启数据库闪回数据库功能
Flashback是Oracle中一个重要的功能,想要使用闪回数据库功能,需要将数据库置于闪回数据库的状态. 1.检查数据库是否开启归档状态 SQL> archive log list; Dat ...
- Oracle 12c 新特性之 PDB 级别闪回数据库
在Oracle Database 12.1中,闪回数据库操作仅限于 CDB ,Oracle Database 12.2支持 CDB 与 PDB 数据库的闪回. PDB 的还原点种类:1. normal ...
随机推荐
- MYSQL查询优化:数据类型与效率
这一部分提供了如何选择数据类型来帮助提高查询运行速度的一些指导: 在可以使用短数据列的时候就不要用长的.如果你有一个固定 长度的CHAR数据列,那么就不要让它的长度超出实际需要.如果你在数据列中 ...
- WCF分布式开发常见错误解决(1):An error occurred while attempting to find services at...添加服务引用出错
WCF分布式开发常见错误解决(1):An error occurred while attempting to find services at...添加服务引用出错 当我们在客户端添 ...
- Java图片验证码乱码问题
有时部署到linux服务器上的web项目的图形验证码可能会出现乱码问题 这不是编码格式出错了,而是可能服务器上没有图形验证码中限定的那种字体 比如生成图形验证码的代码: Font font = new ...
- Linux命令行介绍
一.Linux命令行结尾的提示符有“#”和“$”两种不同的符号,代码如下所示: [root@localhost ~]# ls anaconda-ks.cfg Desktop Documents min ...
- DataTable的数据或表结构复制
把datatable的结构全部数据或部分数据复制到一个新的datatabledatatable复制表结构:我们可以使用.clone()方法: DataTable oldDT = GetDataTabl ...
- vue.js自定义指令详解
写在文本前:相信在做vue的项目,你肯定接触了指令,我们常用vue内置的一些指令,比如v-model,v-text,v-if,v-show等等,但是这些内置指令不在本文的讲解范畴,本文想说的是其自定义 ...
- Android--自定义半圆环型进度(带动画)
package com.newair.ondrawtext; import android.animation.ValueAnimator; import android.annotation.Tar ...
- 安卓socket聊天
安卓基于Socket通信(服务器配合) 1.话不多说进入正题,先创建服务端,在Android Studio中创建Java代码,如下图所示: 选择Java Library 需要改名字的自己随意 2.创建 ...
- 多媒体指令(AVX加速数组求和)
#include <stdio.h> #include <intrin.h> #include <iostream> #include <ctime> ...
- java io详解(1)
一.java io结构图 二.java io的开始:文件 三.字节流: 一.java io结构图 流分类: 1.Java的字节流 InputStream是所有字节输入流的祖先,而OutputSt ...