ORACLE DG介绍(物理无实例)

DG是dataguard,也叫standby,是oracle提供的一种容灾解决方案,只有企业版可用,标准版是不能用的,DG最多可以有一个主节点,9个从节点。可分为逻辑和物理两类,这里注意区分一下,逻辑的是通过redo转换成SQL语句,然后再standby上执行该SQL语句实现的同步,物理standby是接受主节点的redo数据后,以介质恢复的方式进行同步,这是这两者的本质区别。

DG的三种模式:
最大保护:主节点事务提交前,redo写入在线日志,而且从节点也要写入到standby redolog中,并且保证在从库中至少一个节点可用,在主节点才提交事务,注意,最大保护模式,从节点故障,主库会被shutdown。

最高性能:这种模式,主节点随时提交事务,事务提交时,redo至少写入一个从节点,但是写入不一定同步。

最高可用性:这种模式和最大保护有点类似,不同的是,从库故障,主库不会shutdown,而是转为最高性能模式,从库恢复后,转回最高可用性模式。

物理standby只能read only打开,此时只接受redo,不应用redo。应用redo,就不能打开。11G,可以以open read only模式打开,继续应用redo.所以大部分时间,物理standby都是在mount状态。
逻辑standby正常情况下就是read write模式,而且由于是应用sql语句实现同步,所以物理结构可以不一致。

硬件以及操作系统需求:
主库和从库运行的操作系统平台必须相同,版本可以有差异,数据库安装路径可以不同。主从服务器的配置差异最好不要太大,要不切换角色的时候,配置差的切换后,性能会有影响。
主库必须是归档模式,并且force logging模式,从库可以是非force logging。一个主节点,可以有逻辑从节点,可以有物理从节点,但是时区和时间设置必须一致,否则同步会出现问题。

相关参数:
DB_NAME:DG中所有数据库都相同
DB_UNIQUE_NAME:为每一个数据库指定唯一的名称。
LOG_ARCHIVE_CONFIG:该参数用来控制从远端数据库接收或发送REDO数据,通过DG_CONFIG属性罗列同一个Data Guard中所有DB_UNIQUE_NAME(含Primary数据库和Standby数据库),以逗号分隔,SEND/NOSEND属性控制是否可以发送,RECEIVE/NORECEIVE属性控制是否能够接收。例如:log_archive_config='DG_CONFIG=(PRIMARY_P,STANDBY_S)'
LOG_ARCHIVE_DEST_n:归档文件的生成路径,例如:log_archive_dest_1='LOCATION=/opt/oracle/archive/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PRIMARY_P'
LOG_ARCHIVE_DEST_STATE_n:指定参数值为ENABLE,允许redo 传输服务传输redo 数据到指定的路径,LOG_ARCHIVE_DEST_n对应使用。
FAL_SERVER:指定一个数据库SID,通常该库为primary 角色
FAL_CLIENT:指定一个数据库SID,通常该库为standby 角色
LOG_ARCHIVE_MAX_PROCESSES:指定归档进程数量,默认4.可以指定1-30.
STANDBY_FILE_MANAGEMENT:如果primary 数据库数据文件发生修改(如新建,重命名等)则按照本参数的设置在standby 中做相应修改。设为AUTO 表示自动管理。设为MANUAL表示需要手工管理.

实施步骤:
1.主节点启用force logging,设置归档模式
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
alter database force logging;
取消:alter database no force logging;
2.如果没有密钥文件,需要用orapwd创建一下:
orapwd file= password= entries= force= nosysdba=
说明:
file 创建的密码文件
password 创建的口令(sys用户)
entries=MAX_USER 口令文件中可以存放的最大用户数。即拥有sysdba和sysoper身份登陆的用户数
force=(Y/N) 强制覆盖已存在的密码文件
nosysdba= sysdba用户不可以登陆
例如:
orapwd file=$ORACLE_HOME/dbs/testpwd.ora password=testoracle entries=1 force=y
3.主库创建standby controlfile和pfile
alter database create standby controlfile as 'controlfile.ctl';
create pfile='xxxx' from spfile;
4.热备
主库:
SQL> select 'alter tablespace '||name||' begin backup;' from v$tablespace;

'ALTERTABLESPACE'||NAME||'BEGINBACKUP;'
-------------------------------------------------------------
alter tablespace SYSTEM begin backup;
alter tablespace SYSAUX begin backup;
alter tablespace UNDOTBS1 begin backup;
alter tablespace TEMP begin backup; ---这个不需要copy文件
alter tablespace TBS_MRPMUSIC begin backup;
alter tablespace TBS_WAPMUSIC begin backup;
alter tablespace TBS_MUSICTEST begin backup;
alter tablespace TBS_MRPMUSIC_IDX begin backup;
记得copy完,end backup
5.复制数据文件,控制文件,参数文件,密码文件到备库。
6.配置standby数据库
配置监听
配置tnsnames.ora
7.启动standby
修改好参数文件后,启动到nomount
startup nomount pfile='xxxx'; --nomount
ALTER DATABASE MOUNT STANDBY DATABASE; --启动到mount
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION; --启用redo应用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION; --启用redo实时应用
8.停止standby
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CALCEL;--停止redo应用
shutdown immediate;

8.failover和switchover
failover:主节点故障,激活从节点,替代服务。
switchover:主从角色互换,比如硬件升级。
物理switchover:
主节点:
select switchover_status from v$database; --如果是TO STANDBY,那么可以主节点可以转换为备节点。
alter database commit to switchover to physical standby with session shutdown;
shutdown immediate;
startup mount;
备节点:
select switchover_status from v$database; --如果是to primary,那么可以切换为主节点。
alter database commit to switchover to primary; --注意转换的时候不能处于open read write模式。
alter database open;
物理failover:
检查归档日志是否连续:
备节点:
SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP; --如果没有记录,那么正常,如果有记录,那么需要把归档日志从主节点复制到从节点。
select distinct thread#,max(sequence#) over(partition by thread#) a from v$archived_log;这个是检查归档是否完整。
alter database recover managed standby database finish force;--启动failover
alter database commit to switchover to primary; --转换为主节点。
alter database open;
做fialover其实说明主节点已经不可用,在最大保护和最高可用模式下,直接failover即可,不需要再检查归档,因为这时候主节点可能已经无法打开了。
9.以read only模式打开standby
alter database recover managed standby database cancel; --取消redo应用
alter database open; --打开
alter database recover managed standby database disconnect from session; --恢复到redo应用,不需要shutdown,启用redo应用即可。

<wbr style=""><div style=""><strong style="line-height:25px">10.模式切换:</strong></div> <div style="">maximize protection ---&gt; maximize availability ----&gt; maximize performance</div> <div style="">当在把dataguard的保护级别按这上面的顺序减低的时候,不需要primary库在mount状态,primary在open状态就可以直接执行保护模式更改命令</div> <div style="">maximize protection &lt;--- maximize availability &lt;---- maximize performance</div> <div style="">当在把dataguard的保护级别按这上面的顺序升高的时候,需要primary库在mount状态,如果在open更改会报错误</div> <div style="">select DATABASE_ROLE,open_mode,PROTECTION_MODE,PROTECTION_LEVEL from v$database; --查看保护模式</div> <div style="">切换主库保护模式的语法:</div> <div style="">ALTER DATABASE SET STANDBY DATABASE</div> <div style="">TO MAXIMIZE {PROTECTION | AVAILABILITY | PERFORMANCE }</div> <div style=""><br style="line-height:25px"></div> <div style="">SQL&gt; alter database set standby database to maximize performance;</div> <div style="">SQL&gt; alter database set standby database to maximize availability;</div> <div style="">SQL&gt; alter database set standby database to maximize protection;</div> <div style="">以上都是在主库操作,备库会随之改变。</div> </wbr>
### Oracle实例 Data Guard 配置 #### 一、环境准备 为了成功配置 Oracle实例 Data Guard,需满足特定的前提条件。Primary 数据库应处于归档模式并开启 FORCE LOGGING 功能以保障所有操作均记录 REDO 日志从而确保这些变更能够被复制至 Standby 数据库[^2]。 ```sql ALTER DATABASE ARCHIVELOG; ALTER DATABASE FORCE LOGGING; ``` 此外,在同一 Data Guard 架构下的各个数据库间 `COMPATIBLE` 参数值应当保持一致,这有助于防止因版本差异引发的潜在问题。 #### 二、创建物理 standby 数据库 建立物理 standby 数据库的过程涉及几个关键步骤: 1. **备份 primary 数据库** 利用 RMAN 工具制作一份完整的 backupset 或者 image copy 备份文件集。 2. **传输备份数据到目标主机** 将上述获得的备份资料拷贝至打算部署 standby 实例的目标机器之上。 3. **恢复 standby 数据库但不开放访问** 执行必要的命令使新设立的 standby 节点基于接收到的备份重建自身结构却暂时维持关闭状态等待进一步指示。 4. **设置监听器和服务名映射** 修改 TNSNAMES 文件定义好两端之间的网络连接路径以便后续管理工具识别定位各节点位置关系。 5. **激活 Data Guard Broker (DGMGRL) 并注册两个站点** 运行 DGMGRL 命令行界面完成对整个保护群组以及成员身份信息登记手续。 6. **验证配置有效性** 发送测试流量检验链路畅通性和同步机制运作状况直至确认无误为止。 #### 三、日常管理和维护活动 对于已经投入使用的单实例 Data Guard 系统而言,定期开展如下几项常规性的监督作业十分必要: - 检查 Redo Apply Service 是否正常运转; - 查看 Alert Log 记录寻找异常事件线索; - 对比双方 SCN 序列号差距评估延迟程度; - 更新参数文件适应业务需求变化趋势; #### 四、故障排查技巧 当遇到问题时可参照以下建议着手解决: - 当发现 apply process hang住的情况,尝试重启该进程或者重新启动整个 standby instance 来解除僵局现象; - 如果碰到 redo transport failure 错误提示,则应该核查 network connectivity status 排除通信障碍因素干扰; - 若是碰见 log sequence mismatch 报告,则可能意味着某些重要的 archive logs 缺失不见,此时需要从源端找回丢失部分加以补充完善; - 关注 alert log 中有关 checkpoint 和 thread checkponit 的警告信息,它们往往暗示着底层存储层面存在隐患亟待处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值