美文网首页
11.2.0.3物理 Data Guard主备库切换(附加:OR

11.2.0.3物理 Data Guard主备库切换(附加:OR

作者: 戴孛掷5304 | 来源:发表于2017-10-17 15:17 被阅读0次

    背景:


    阅读新闻

    11.2.0.3物理 Data Guard主备库切换(附加:ORA-16139错误的解决)

    [日期:2014-03-25]

    来源:Linux社区

    作者:panfelix

    [字体:大 中 小]

    DG分为主库和备库,我们也猜测其属于primary与standby 之间的互动,那么在primary 和standby 之间的切换:

    然而切换又分为switchover和failovers,前者是无损切换,不会丢失数据,而后者则有可能会丢失数据,并且切换后原primary数据库也不再是该data guard配置的一部分了。

    针对不同standby(逻辑或物理)的处理方式也不尽相同。

    角色转换前的准备工作:

    1检查各数据库的初始化参数,主要确认对不同角色相关的初始化参数都进行了正确的配置。

    2确保可能成为primary数据库的standby服务器已经处于archivelog模式。

    3确保standby数据库的临时文件存在并匹配primary数据库的临时文件

    4确保standby数据库的RAC实例只有一个处于open状态。(对于rac结构的standby数据库,在角色转换时只能有一个实例startup。其它rac实例必须统统shutdown,待角色转换结束后再startup)

    Switchover;

    无损转换,通常是用户手动触发或者有计划的让其自动触发,比如硬件升级,软件升级之类的。通常它给你带来的工作量非常小并且都是可预计的。其执行分两个阶段,第一步, primary数据库转换为tandby角色,第二步,standby数据库(之一)转换为primary角色,primary和standby只是简单的角色互换,

    Failover:

    不可预知原因导致primary 数据库故障并且短期内不能恢复就需要failover。如果是这种切换那你就要小心点了,有可能只是虚惊一场,但如果运气不好又没有完备的备份恢复策略而且primary 数据并非处于最大数据保护或最高可用性模式地话,这种情况下呢丢失数据有可能是难免的,并且如果其故障未能修复,那它甚至连快速修复成为standby 的机会也都失去了;

    在执行failover 之前,尽可能将原primary 数据库的可用redo 都复制到standby 数据库。

    注意,如果要转换角色的standby处于maximum protection模式,需要你首先将其切换为maximum performance模式

    SQL> ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZEPERFORMANCE;

    等standby 切换为新的primary 之后,你可以再随意更改数据库的保护模式。

    maximum protection模式需要确保绝无数据丢失,因此其对于提交事务对应的redo 数据一致性要求非常高,另外,如果处于maximum protection模式的primary数据库仍然与standby数据库有数据传输,此时alter database语句更改standby数据库保护模式会失败,这也是由maximum protection 模式特性决定的。

    一、物理standby的 Switchover

    注意操作步骤的先后,很关键的哟。

    1、检查是否支持switchover 操作--primary 数据库操作。

    2、登陆primary 数据库,查询v$database 视图的switchover_status 列。

    情况(一):存在gap问题

    解决物理standby Gap问题

    SQL> SELECT * FROM V$ARCHIVE_GAP;

    THREAD#LOW_SEQUENCE# HIGH_SEQUENCE#

    ----------- ------------- --------------

    1 7 10

    --到主库查询,确认一下:

    SQL> SELECT NAME FROM V$ARCHIVED_LOG WHERE THREAD#=1AND DEST_ID=1 AND SEQUENCE# BETWEEN 7 AND 10;

    NAME

    --------------------------------------------------------------------------------

    /primary/thread1_dest/arcr_1_7.arc

    /primary/thread1_dest/arcr_1_8.arc

    /primary/thread1_dest/arcr_1_9.arc

    --把这些归档copy到物理standby,并使用ALTERDATABASE REGISTER LOGFILE应用这些归档:

    SQL> ALTER DATABASE REGISTER LOGFILE'/physical_standby1/thread1_dest/arcr_1_7.arc';

    SQL> ALTER DATABASE REGISTER LOGFILE'/physical_standby1/thread1_dest/arcr_1_8.arc';

    SQL> ALTER DATABASE REGISTER LOGFILE '/physical_standby1/thread1_dest/arcr_1_9.arc';

    情况(二):没有gap

    SQL>selects witchover_status from v$database;

    SWITCHOVER_STATUS

    ----------------------------------------

    TO STANDBY

    如果该列值为"TO STANDBY"则表示primary数据库支持转换为standby角色,否则的话你就需要重新检查一下Data Guard配置,比如看看LOG_ARCHIVE_DEST_n之类参数值是否正确有效等等。

    2、启动switchover --primary 数据库操作

    首先将primary 转换为standby 的角色,通过下列语句:

    SQL> alter database commit to switchover to physical standby

    Database altered.

    01:57:06 SQL>shutdown immediate;

    ORA-01092: Oracle instance terminated. Disconnection forced

    SQL>startup mount;

    ORACLE instance started.

    Total System Global Area 417546240bytes

    Fixed Size 2228944bytes

    Variable Size 289410352bytes

    Database Buffers 121634816bytes

    Redo Buffers 4272128bytes

    Database mounted.

    语句执行完毕后,primary数据库将会转换为standby数据库,并自动备份控制文件到trace

    推荐阅读:

    RMAN 配置归档日志删除策略 http://www.linuxidc.com/Linux/2013-11/92670.htm

    Oracle基础教程之通过RMAN复制数据库 http://www.linuxidc.com/Linux/2013-07/87072.htm

    RMAN备份策略制定参考内容 http://www.linuxidc.com/Linu九度快排系统 https://www.190seo.comx/2013-03/81695.htm

    RMAN备份学习笔记 http://www.linuxidc.com/Linux/2013-03/81892.htm

    Oracle数据库备份加密 RMAN加密 http://www.linuxidc.com/Linux/2013-03/80729.htm

    更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

    linux

    12下一页

    ORA-16456错误,由于备库未mount而在主库执行切换,解决办法详解

    ORA-12705: Cannot access NLS data files or invalid environment specified 另类解决方案

    相关资讯

    Data Guard ORA-16139

    物理Data Guard的日常维护 (今 14:44)

    Data Guard高级应用:通过闪回恢复 (09/01/2016 16:26:41)

    手工搭建Data Guard (08/02/2016 20:24:13)

    Oracle Data Guard的配置 (今 14:41)

    Data Guard跳归档恢复的案例 (08/16/2016 11:28:15)

    Data Guard中快速Switchover, (06/18/2016 20:54:44)

    本文评论

    查看全部评论 (0)

    表情: 表情

    姓名:

    匿名

    字数

    同意评论声明

    评论声明

    尊重网上道德,遵守中华人民共和国的各项有关法律法规

    承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    本站管理人员有权保留或删除其管辖留言中的任意内容

    本站有权在网站内转载或引用您的评论

    参与本评论即表明您已经阅读并接受上述条款

    最新资讯

    物理Data Guard的日常维护

    Oracle Data Guard的配置

    Oracle临时表空间的恢复

    Windows下为PHP5.6安装Redis扩展和

    SpringMVC4 注解配置实例

    SpringMVC+Spring+Hibernate 框架整合实例

    Spring注解配置实例

    Linux安装memcached及memcache扩展

    最后一位登月宇航员Gene Cernan去世

    CentOS7下Firewalld防火墙使用实例

    背景:

    阅读新闻

    ORA-12705: Cannot access NLS data files or invalid environment specified 另类解决方案

    [日期:2014-03-25]

    来源:Linux社区

    作者:wgw335363240

    [字体:大 中 小]

    ant 1.8.2部署在241机器,Oracle 11g部署在242机器上,今天用ant 1.8.2 通过oracle驱动向oracle 11g的环境插入数据时报下面的错误:

    builddb:

    BUILD FAILED

    /home/build.xml:10: java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1

    ORA-12705: Cannot access NLS data files or invalid environment specified

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:28

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278)

    at oracle.jdbc.driver.T4CTTIoauthenticate.receiveOauth(T4CTTIoauthenticate.java:785)

    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:362)

    at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:414)

    at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:165)

    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)

    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)

    at org.apache.tools.ant.taskdefs.JDBCTask.getConnection(JDBCTask.java:370)

    at org.apache.tools.ant.taskdefs.SQLExec.getConnection(SQLExec.java:942)

    at org.apache.tools.ant.taskdefs.SQLExec.execute(SQLExec.java:614)

    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)

    at java.lang.reflect.Method.invoke(libgcj.so.7rh)

    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)

    at org.apache.tools.ant.Task.perform(Task.java:348)

    at org.apache.tools.ant.Target.execute(Target.java:390)

    at org.apache.tools.ant.Target.performTasks(Target.java:411)

    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)

    at org.apache.tools.ant.Project.executeTarget(Project.java:1368)

    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)

    at org.apache.tools.ant.Project.executeTargets(Project.java:1251)

    at org.apache.tools.ant.Main.runBuild(Main.java:809)

    at org.apache.tools.ant.Main.startAnt(Main.java:217)

    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)

    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

    Total time: 2 seconds

    根据“ ORA-12705”错误号,发现很多人给出了下面的解决方案:

    .检查以下变量是否设置正确(invalid environment specified)

    NLS_LANG, ORA_NLSxx, or ORACLE_HOME

    2.检查$ORACLE_HOME/nls/data目录中的nlb文件(NLS data files)是否损坏,可以先把文件备份,再从其他相同的环境中copy这些文件

    解决方法1排除了,原因是以前是好好的最近也未曾改过环境变量.

    查找$ORACLE_HOME目录有了惊人的发现,让俺既是惊喜又是振奋,惊喜的是终于发现了NLS目录丢失了,振奋的是自己还有一台机器也安装有Oracle11g. 看来这年头操作系统也靠不近了,不用说copy一份过来。

    根据上述的解决方案,检查oracle服务器(242)机器“NLS_LANG, ORA_NLSxx, or ORACLE_HOME”参数,发现前两个参数没有设置,于是设置这两个参数,设置完后,问题依旧(重启机器后仍然没有解决问题)。

    于是找了第三台机器(记为243机器),在243机器上执行同样的ant脚本,发现可以正确执行。初步怀疑是241机器和243机器的环境变量不同造成的,通过env命令,比较两台机器的环境变量,发现243机器设置了java_home,而241机器没有设置java_home,于是乎快速设置java_home的值(java_home的设置参考: http://www.linuxidc.com/Linux/2014-03/98859.htm )。之后,断掉以前的连接,新建一个连接,执行ant命令,数据插入成功。

    总结:这里走了弯路,主要是ORA-12705的错误给人太多的错误信息了,期间尝试读过jdbc的驱动,没有发现什么特别的问题。在关键信息解决不了问题的时候,笨方法(比较法)往往还是很能凑效的。

    更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

    linux

    11.2.0.3物理 Data Guard主备库切换(附加:ORA-16139错误的解决)

    MySQL权威指南学习笔记

    相关资讯

    ORA-12705

    本文评论

    查看全部评论 (0)

    表情: 表情

    姓名:

    匿名

    字数

    同意评论声明

    评论声明

    尊重网上道德,遵守中华人民共和国的各项有关法律法规

    承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    本站管理人员有权保留或删除其管辖留言中的任意内容

    本站有权在网站内转载或引用您的评论

    参与本评论即表明您已经阅读并接受上述条款

    最新资讯

    Oracle官方并行逻辑备份工具mysqlpump

    MySQL 5.7 mysqlpump 备份工具说明

    MySQL5.7.11 mysqlpump 多线程逻辑备份工具

    MySQL 5.6 XtraBackup 全量和增量的备份和

    基于XtraBackup 2.3.5 的 MySQL全量备份与

    Chrome OS 现可支持简易密码解锁

    NSA的代码遭到教授的嘲笑

    Fedora 25将默认使用Wayland

    Nagios 监控 SNMP 温度计

    JavaScript函数定义与函数作用域详解

    背景:

    阅读新闻

    Linux下设置Java Home

    [日期:2014-03-25]

    来源:Linux社区

    作者:Linux

    [字体:大 中 小]

    添加JAVA_HOME/JRE_HOME环境变量:

    编辑用户目录下(root用户的目录为/root)的.bashrc或.profile文件。如果你想在所有用户的shell下都生效,就编辑/etc/profile文件。同样都是加入以下内容:

    export JAVA_HOME=/home/jdk1.6.0_17

    export JRE_HOME=$JAVA_HOME/jre

    export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

    linux

    在树莓派上获取天气预报

    使用IntelliJ IDEA 12创建Maven多模块项目

    相关资讯

    Linux下设置Java Home

    本文评论

    查看全部评论 (0)

    表情: 表情

    姓名:

    匿名

    字数

    同意评论声明

    评论声明

    尊重网上道德,遵守中华人民共和国的各项有关法律法规

    承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    本站管理人员有权保留或删除其管辖留言中的任意内容

    本站有权在网站内转载或引用您的评论

    参与本评论即表明您已经阅读并接受上述条款

    最新资讯

    Nagios 监控 SNMP 温度计

    JavaScript函数定义与函数作用域详解

    Java培训:对象和类

    Java培训:基本数据类型

    Java培训:变量类型

    Java培训:增强for循环、switch

    Java培训:Number类、Character类

    Python 操作消息队列

    Python迭代器和生成器

    Spark源码分析之SparkContext概述

    相关文章

      网友评论

          本文标题:11.2.0.3物理 Data Guard主备库切换(附加:OR

          本文链接:https://www.haomeiwen.com/subject/osyduxtx.html