设为首页 收藏本站
查看: 853|回复: 0

[经验分享] ORACLE DG介绍(物理无实例)

[复制链接]

尚未签到

发表于 2016-7-30 13:37:26 | 显示全部楼层 |阅读模式
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>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-251317-1-1.html 上篇帖子: Oracle 的函数 NVL 和 DECODE 解析 下篇帖子: Materialized View in Oracle
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表