场景7  Data Guard

官方文档 :Oracle Data Guard Concepts and Administration

用于数据容灾,通过主备库同步(主库将redo日志传送到备库,一个主库可对应多个备库(30)),实现异地容灾

1. 构建测试库

2. 构建读写分离的环境

3. 实现滚动升级

4. 数据备份

数据容灾 :

1. 基于存储复制

2. 基于逻辑卷复制(镜像)

3. 基于应用(redo log)

redo log : DML/DDL, 记录数据块变化,用于recovery

RAC 高可用性,一个库可用多个实例来访问

Golden Gate : 更灵活,成本更高

物理备库 :收到redo日志后,直接做recovery

逻辑备库 :收到redo日志后,通过logminer抽取日志中sql, 执行sql

1. physical dg : 相当于主库的克隆,相同的名字,相同的id,支持主库所有的应用,在open状态下只读 read only(Active)可将所有写的操作放在主库上,所有读的操作放在备库上

2. logical dg : 和主库是两个独立的数据库,不同的名字,不同的id, 可以open到读写read write状态,(部分DDL操作及数据类型不受支持,如 lob, 一般可用于建立物化视图,建立辅助索引,升级

1. physical dg的构建

2. 保护模式的切换(最大保护,最佳性能(默认),最高可用性)

3. snapshot dg

4. dg 切换

5. broker (FSF) 自动切换

最大保护模式maximum protection(同步方式sync传送日志) :备库RFS确认后(ack),主库才能完成提交任务,若主库一直收不到确认(默认10分钟),则自动shutdown abort, 因此该模式需要至少两个以上的备库,可以保证数据零丢失(主备库间无任何数据差异),但对生产环境影响 较大,网络必须快,备库不能有问题,不然影响主库

LNS (log network service) : 主库发送日志

RFS (receive file service) :备库接收日志,写入本地standby redo log files

最佳性能模式maximum performance(异步方式async传送日志):不需备库确认日志收到后,主库就能完成提交,若redo日志传送失败,且主库已发生日志切换,可讲archive log传送给备库

最高可用性模式maximum availability(同步方式传送日志):备库RFS确认后(ack),主库才能完成提交任务(最大保护模式),若主库一直收不到确认(默认10分钟),则自动转换成最佳性能模式,恢复正常后,又自动转换成最大保护模式

MRP (media recover process) : 介质恢复进程

LSP (logical standby coordinator process) : 逻辑

eg :

desc v$database

select name, force_logging from v$database;

alter database force logging;

archive log list;

搭建DG :

1. 修改初始化文件

eg :

show parameter spfile;

create pfile from spfile;

cd $oracle_home/db

vi init.ora

GAP : 日志间隙

FAL_SERVER :

DB_FILE_NAME_CONVERT=‘/u01/app/oracle/oradata/shdb/‘, ‘/u01/app/oracle/oradata/prod/‘, ‘/u01/app/oracle/oradata/shdb/‘, ‘/u02/app/oracle/oradata/prod/‘

LOG)FILE_NAME_CONVERT=…

数据文件路径转换 :主备库数据文件路径不一致

eg :

select name from v$datafile;

select member from v4logfile;

eg :

startup force gnomon pfile=‘ORACLE_HOME/dbs/initprod.ora’;

show parameter name

show parameter log

create spoil from file;

startup force mount;

alter database create standby controlfile as ‘/home/oracle/std_control01.ctl’;

su -oracle

tail -f /u01/app/oracle/diag/

vi etc/hosts

ping …

cd $ORACLE_HOME/dbs

ls

scp initprod.ora enmo:$ORACLE_HOME/dbs/initshdb.ora

scp orapwprod enmo:$ORACLE_HOME/dbs/orapwshdb

scp /home/oracle/std_control

cd /u01/app/oracle/oradata/prod

scp *.dbf enmo:/u01/app/oracle/oradata/shdb

备库:

mkdir -p /u01/app/oracle/oradata/shdb

chown -R oracle:oinstall /u01/app/oracle/oradata/shdb

mkdir op /dsk1/arch_shdb

chown -R oracle:oinstall /dsk/arch_shdb

recover managed standby database disconnect from session;

recover managed standby database cancel;

主备库切换 :

1. switchover 正常手工切换

2. failover 容灾切换 :主库down了,将备库强制切换成主库

eg :

alter system switch logfile;

select name, dbid, database_role, protection_mode, switchover_status from v$database;

select username, sid from v$session where username is not null;

alter database commit to switchover to standby; (主库切换到备库)

alter database commit to switchover to standby with session shutdown; (主库切换到备库, 强制关闭会话)

shutdown immediate;

startup mount;

select name, dbid, database_role, protection_mode, switchover_status from v$database;

备库 :

select name, dbid, database_role, protection_mode, switchover_status from v$database;

select username, sid from v$session where username is not null;

select name, dbid, database_role, protection_mode, switchover_status from v$database;

alter system kill session; (强制杀掉绘画)

alter database commit to switchover to primary;

alter database open;

recover managed standby database disconnect from session;

select max(sequence#) from v$archived_log;

desc v$archive_dest

select name, database_role, protection_mode, switchover_status from v$database;

snapshot dg : 用于应用测试,建立快照,生成一个还原点,测试期间不能和主库同步,但可以继续接收主库的日志,测试完成后,回到还原点,开始recover

snapshot 保存到 recover area

show parameter recover

alter system set db_recovery_file_dest_size = 2g;

alter system set db_recovery_file_dest = ‘/dsk1’;

alter database convert to snapshot standby;

show parameter recover

show parameter spfile

create spfile from pfile;

startup force mount;

chown -R oracle:dba /dsk1

切换模式 :

shutdown immediate;

startup mount

alter database set standby database to maximize protection;

select name, database_role, protection_mode from v$database;

alter database open;

备库 :

select name, database_role, protection_mode from v$database;

alter database open;

eg :

alter database add standby logfile ‘/u01/app/oracle/oradata/shdb/std_redo01.log’ size 50m;

alter database add standby logfile ‘/u01/app/oracle/oradata/shdb/std_redo02.log’ size 50m;

alter database add standby logfile ‘/u01/app/oracle/oradata/shdb/std_redo03.log’ size 50m;

alter database add standby logfile ‘/u01/app/oracle/oradata/shdb/std_redo04.log’ size 50m;

select member from v$logfile;

select group#, sequence#, status from v$standby_log;

eg :

conn scott/tiger

insert into emp1 select * from emp;

commit

insert into emp1 select * from emp;

select count(*) from emp1;

commit;

主库 :

ifconfig

默认 :MRP只对archive log

eg ;

select group#, sequence#, status from v$standby_log;

recover managed standby database using current logfile disconnect from session; (启动实时应用)

Data Guard Broker

dgmgrl

connect sys/oracle@bjdb

create configuration ‘bjdbcfg’ as primary database is ‘bjdb’ connect identifier is ‘bjdb’;

show configuration

add database ‘shdb’ as connect identifier is shdb maintained as physical;

show configuration

enable configuration; (是Broker生效)

show configuration

edit database ‘bjdb’ set property ‘logxptmode’ = ‘sync’;

edit database ‘shdb’ set property ‘logxptmode’ = ‘sync’;

enable fast_start failover;

show configuration

srvctl (需装GI)

场景7 Data Guard的更多相关文章

  1. 场景3 Data Management

    场景3 Data Management 数据管理 性能优化 OLTP OLAP 物化视图 :表的快照 传输表空间 :异构平台的数据迁移 星型转换 :事实表 OLTP : 在线事务处理 1. trans ...

  2. Data Guard组件等相关介绍

    1.Data Guard组件介绍  Data Guard架构归类为3个主要的组件. Data Guard 重做传输服务  重做传输服务用来将主数据库生成的重做数据传输给备用数据库. Data Guar ...

  3. Data Guard 介绍

  4. 一步一步搭建 Oracle Data Guard

    前言 为什么要写前言,因为我要吐槽一下.作为一个Java后端,搭建Oracle Data Guard真的是一件,嗯,既不专业也不擅长的事情,然而,为什么还是要我来弄? 因为DBA出差了,我们这边急着要 ...

  5. Oracle 19c Data Guard DML Redirection ADG备库上执行DML重定向(未来更好的进行读写分离)

    资料来自官方网站: https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/managing-oracle-data-g ...

  6. Oracle Data Guard的配置

    概述 Oracle Data Guard 是针对企业数据库的最有效和最全面的数据可用性.数据保护和灾难恢复解决方案.它提供管理.监视和自动化软件基础架构来创建和维护一个或多个同步备用数据库,从而保护数 ...

  7. 场景4 Data Warehouse Management 数据仓库

    场景4 Data Warehouse Management 数据仓库 parallel 4 100% —> 必须获得指定的4个并行度,如果获得的进程个数小于设置的并行度个数,则操作失败 para ...

  8. 【原】Configuring Oracle Data Guard In Physical Standby Database

    作者:david_zhang@sh [转载时请以超链接形式标明文章] http://www.cnblogs.com/david-zhang-index/p/5042640.html参照文档:https ...

  9. DG - 开启Active Data Guard

    在配置active data guard之前,phycial standby必须处于以下两个状态之一: (1)standby处于mount状态,并且redo apply正在运行中 (2)standby ...

随机推荐

  1. Maven安装与使用

    1.安装Maven 1)官网下载Maven : http://maven.apache.org/download.cgi,解压下载文件 2)配置环境变量 3)验证是否已经安装成功:打开cmd,输入mv ...

  2. ximalaya

  3. javascript中利用柯里化函数实现bind方法

    柯理化函数思想:一个js预先处理的思想:利用函数执行可以形成一个不销毁的作用域的原理,把需要预先处理的内容都储存在这个不销毁的作用域中,并且返回一个小函数,以后我们执行的都是小函数,在小函数中把之前预 ...

  4. (转)pymysql 连接mysql数据库---不支持中文解决

    往数据库里插入中文时出现异常:UnicodeEncodeError: 'latin-1' codec can't encode characters 就是编码的问题,pymysql默认的编码是lati ...

  5. 转:C/C++程序员简历模板

    https://github.com/geekcompany/ResumeSample/blob/master/c.md 本简历模板由国内首家互联网人才拍卖网站「 JobDeer.com 」提供. ( ...

  6. js中function函数

    function:是具备某个功能的方法,方法本身没有意义,只有执行方法才有价值. function: 1 创建一个函数: 2 执行这个方法: 例: 创建 function 方法名(){ 存放某个功能的 ...

  7. 关于BP网络的一些总结

    背景 前段时间,用过一些模型如vgg,lexnet,用于做监督学习训练,顺带深入的学习了一下相关模型的结构&原理,对于它的反向传播算法记忆比较深刻, 就自己的理解来描述一下BP网络. 关于BP ...

  8. 将1~n个整数按字典顺序进行排序,返回排序后第m个元素

    给定一个整数n,给定一个整数m,将1~n个整数按字典顺序进行排序,返回排序后第m个元素.n最大可为5000000.字典排序的含义为:从最高位开始比较.1开头的数字排在最前面,然后是2开头的数字,然后是 ...

  9. VHDL学习之模块调用

    http://wenku.baidu.com/link?url=SsRPUVQAOKDR8yWfDhQlceCwfZQkI-KQMLFKTDGAh3KAPr2NwEgvj0d_EZjdnsB99Upp ...

  10. C++ 标准库string字符串的截取

    标准库的string有一个substr函数用来截取子字符串.一般使用时传入两个参数,第一个是开始的坐标(第一个字符是0),第二个是截取的长度. #include <iostream> #i ...