oracle data guard --理论知识回顾02

继上一篇

管理影响物理standby的事件

1 创建表空间或数据文件
初始化参数standby_file_management用来控制是否自动将primary数据库增加表空间或数据文件的改动,传播到standby服务器AUTO/MANUAL
AUTO:自动传播到standby
MANUAL:需要手动复制文件到standby,并更新控制文件

SQL> set sqlprompt "primary>"
primary>show parameter standby_file
NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
standby_file_management              string                 AUTO
--select * from v$parameter where name like 'standby%';

2 删除表空间
--对于表空间和数据文件的操作,STANDBY_FILE_MANAGEMENT=AUTO,无须手工干预
3 重命名数据文件
--需要手工干预,STANDBY_FILE_MANAGEMENT=AUTO/MANUAL
在主库rename datafile文件,从库需要手动操作
主库

alter tablespace new_dg2  offline;mv /u01/app/oracle/oradata/hongquan/hongquantest/new_dg2.dbf  /u01/app/oracle/oradata/hongquan/hongquantest/new_dg2_test.dbfalter tablespace new_dg2 rename datafile '/u01/app/oracle/oradata/hongquan/hongquantest/new_dg2.dbf' to '/u01/app/oracle/oradata/hongquan/hongquantest/new_dg2_test.dbf';alter tablespace new_dg2  online;alter system switch logfile;  select name from v$datafile;

备库

  alter database recover managed standby database cancel;mv /u02/app/oracle/oradata/hongquan1/hongquantest/new_dg2.dbf  /u02/app/oracle/oradata/hongquan1/hongquantest/new_dg2_test.dbfalter database recover managed standby database disconnect from session;select name from v$datafile;

4 添加或删除redologs文件

--需要手工干预改文件的删除和创建
无论主库端对日志组或日志文件的操作是否传播到了standby端,也不会影响到standby的运行。
在主库增加或删除redo logs时,一定记得手工同步相关物理standby中的相关设置,保证standby log比primary redolog多一组操作要将STANDBY_FILE_MANAGEMENT=MANUAL
保证standby redologs比online redologs多一组

5垮open_resetlogs的应用

在某些情况下,主库以resetlogs打开数据库,也不会影响dg的配置,standby数据库不需要人工参与,自动应用open resetlogs的操作。
并非所有条件下有这样,在alter database open resetlogs之后,数据库的INCARNATION被重置,此时其standby数据库的
sequence序号也会从头开始,物理standby数据库不需要关注。
在不完全恢复情况下

 

监控primary 和物理standby

###带有enable|disable thread子句的alter database命令
V$THREAD --This view contains thread information from the control file.
###当前数据库角色,保护模式,保护级别,switchover 状态,failover快速启动信息等
select * from v$database;
--LOG_MODE,CONTROLFILE_TYPE,OPEN_MODE,PROTECTION_MODE,DATABASE_ROLE,SWITCHOVER_STATUS,FORCE_LOGGING,FLASHBACK_ON,DB_UNIQUE_NAME
--controlfile_type=CURRENT/STANDBY
--PROTECTION_MODE=MAXIMUM PROTECTION/MAXIMUM AVAILABILITY/RESYNCHRONIZATION/MAXIMUM PERFORMANCE/UNPROTECTED
--DATABASE_ROLE=LOGICAL STANDBY/PHYSICAL STANDBY/PRIMARY
--DATAGUARD_BROKER=ENABLED/DISABLED
###redo log 切换
V$LOG/V$LOGFILE
###重建控制文件,手工执行恢复
alert.log
SQL> select * from v$diag_info;
/u01/app/oracle/diag/rdbms/orcl/orcl/trace
###表空间状态修改(read write/read only,online/offline)
select * from dba_tablespaces;
###创建删除表空间或数据文件
select * from dba_data_files;
###表空间或数据文件offline
select * from dba_tablespaces;
select * from v$recover_file; --This view displays the status of files needing media recovery
###重命名数据文件
select * from v$datafile;
###未被日志记录或不可恢复的操作
select * from v$datafile;
select * from v$database;
###恢复的进程
select * from v$archive_dest_status; --主库
select * from v$archived_log;
select * from v$log_history;
select * from v$managed_standby;
###redo传输的状态和进度
select * from v$archive_dest_status; --主库
select * from v$archive_dest; --主库
select * from v$archived_log; --主库
select * from v$archived_log;
###数据文件自动扩展
/u01/app/oracle/diag/rdbms/orcl/orcl/trace
###执行open resetlogs或clear unarchived logfiles,修改初始化参数
/u01/app/oracle/diag/rdbms/orcl/orcl/trace

监控恢复进度

1 查看进程的活动状态

standby > select process,client_process,sequence#,status from v$managed_standby;
ARCH    ARCH    1846    CLOSING
ARCH    ARCH    0    CONNECTED
MRP0    N/A    1847    APPLYING_LOG
RFS    UNKNOWN    0    IDLE
RFS    UNKNOWN    0    IDLE
RFS    LGWR    1847    IDLE
RFS    UNKNOWN    0    IDLE
--
PROCESS:进程名称,如ARCH\RFS\MRP0等
CLIENT_P:对应的primary数据库中的进程,如ARCH\LGWR等
SEQUENCE#:归档序号
STATUS:进程的当前状态,常见的有:ALLOCATED:整准备连接primary库ATTACHED:正在连接primary库CONNECTED:已连接到primary库IDLE:空闲中RECEIVING:归档文件接收中OPENING:归档文件处理中CLOSING:归档文件处理完,收尾中WRITING:REDO数据库写想归档文件中WAIT_FOR_LOG:等待新的redo数据中WAIT_FOR_GAP:归档有中断,正等待中断的那部分redo数据APPLYING_LOG:应用redo数据中
数据库开了1个归档进程,使用ARCH同步传输方式与物理standby通信,已经接收并收尾处理1846号日志,正在应用1847号日志

2 检查redo应用进度

standby > select dest_name,archived_thread#,archived_seq#,applied_thread#,applied_seq#,db_unique_name,destination from v$archive_dest_status where status='VALID';
LOG_ARCHIVE_DEST_1    1    1846    0    0    cadbk    C:\app\Administrator\fast_recovery_area\cadbk\ARCHIVELOG
LOG_ARCHIVE_DEST_2    0    0    0    0    CAD    cad_192.168.19.97
STANDBY_ARCHIVE_DEST    1    1846    1    1846    NONE    C:\app\Administrator\fast_recovery_area\cadbk\ARCHIVELOG

3 检查归档文件路径和创建信息

standby > select name,creator,sequence#,applied,completion_time from v$archived_log;
C:\APP\ADMINISTRATOR\FAST_RECOVERY_AREA\CADBK\ARCHIVELOG\1_1845_976879612.ARCH    ARCH    1845    YES    2019/6/26 6:04:33
C:\APP\ADMINISTRATOR\FAST_RECOVERY_AREA\CADBK\ARCHIVELOG\1_1846_976879612.ARCH    ARCH    1846    IN-MEMORY    2019/6/26 8:17:32

4 查询归档历史

standby > select first_time,first_change#,next_change#,sequence# from v$log_history;
--查询到最后应用的归档文件
standby > select thread#,max(sequence#) as "last_applied_log" from v$log_history group by thread#;
thread#  last_applied_log
1    1846
--也可以通过v$archived_log中的app列表获得相同的功能
standby > select thread#,sequence#,applied from v$archived_log;
1    1844    YES
1    1845    YES
1    1846    IN-MEMORY

5 查看物理standby数据库未接收的日志文件
在primary端获取,日志文件的发送是通过log_archive_dest_n参数来控制,因此只需要对比本地生成的归档和远端生成的归档的差异即可

primary > select local.thread#,local.sequence# from  (select thread#,sequence# from v$archived_log where dest_id=1) localwhere local.sequence# not in(select sequence# from v$archived_log where dest_id=2 and thread#=local.thread#);

监控日志应用服务

1 查询当前数据库的基本信息

standby > select database_role,db_unique_name,open_mode,protection_mode,protection_level,
switchover_status from v$database;
PHYSICAL STANDBY    cadbk    READ ONLY WITH APPLY    MAXIMUM PERFORMANCE    MAXIMUM PERFORMANCE    NOT ALLOWED
--查询failover后快速启动的信息
standby > select fs_failover_status,fs_failover_current_target,fs_failover_threshold,
fs_failover_observer_present from v$database;

2 查询当前redo应用和redo传输服务的活动状态

standby > select process,status,thread#,sequence#,block#,blocks from v$managed_standby;
ARCH    CLOSING    1    1846    90112    347
ARCH    CONNECTED    0    0    0    0
MRP0    APPLYING_LOG    1    1848    1156    102400
RFS    IDLE    0    0    0    0
RFS    IDLE    0    0    0    0
RFS    IDLE    1    1848    1157    2

3 检查应用模式(是否启用了实时应用)

standby > select recovery_mode from v$archive_dest_status where dest_id=1;
MANAGED REAL TIME APPLY ##打开了实时应用

4 data guard事件(v$dataguard_status)
该视图显示那些被自动触发写入alert.log或服务器trace文件的事件

standby > select message from v$dataguard_status;
Media Recovery Waiting for thread 1 sequence 1847 (in transit)
ARC0: Beginning to archive thread 1 sequence 1847 (40070728-40088719)
Media Recovery Waiting for thread 1 sequence 1848 (in transit)
ARC0: Completed archiving thread 1 sequence 1847 (0-0)

调整物理standby端redo数据应用频率
--调整I/O读取能力
-设置recover并行度
在介质恢复或redo应用期间,都需要读取redo log,默认是串行恢复,可以在recover的时候加上parallel来指定并行度。
standby > recover standby database parallel 2;
##建议parallel的值为#cpus*2
注意:该值设置仅对当前环境有效,oracle数据库重启之后,默认情况下并行度会恢复到初始值,
如果dba每次执行很麻烦,要通过初始化参数parallel_max_servers来设置默认的并行度
-加快redo应用频率
设置初始化参数db_block_checking=false能够提高2倍左右的应用效率,该参数设置是否验证数据块的有效性,
对于物理standby数据块,禁止验证基本上开始可以接受(paiarmy数据块强力建议该值为true,默认就是true),
动态参数,修改直接生效,不需要重启数据库
-设置parallel_execution_message_size
如果打开了并行恢复,适当提高初始化参数,比如4096也能提高大概20%左右的性能,增大这个参数可能会占更多内存
-优化磁盘I/O
在恢复期间最大的瓶颈就是I/O读写,要缓解这个瓶颈,使用本地异步I/O并设置初始化参数disk_asynch_io=true会有所
帮助,disk_asynch_io控制数据文件的磁盘I/O是否异步,某些情况下异步I/O能降低数据库文件并行读取,提高整个恢复时间。

转载于:https://www.cnblogs.com/yhq1314/p/11091220.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 8 LongAdders:管理并发计数器的正确方法

我只是喜欢新玩具,而Java 8有很多 。 这次我想谈谈我的最爱之一-并发加法器。 这是一组用于管理由多个线程编写和读取的计数器的新类。 新的API有望显着提高性能,同时仍然使事情变得简单明了。 自从多核架构问世以来人们一直在管理并发计数器&#xff0…

asp: menu 父级选中

最近比较忙,其中一个项目中用到了菜单,结果User比较难搞定,非要什么有父级菜单选中的样式,就像windows的菜单效果差不多的那种,鼠标飘在子结点上,父结点也要保留反白的选中样式,唉,U…

java 内部类 单例_Java单例模式的几种实现

一:静态内部类实现单例模式原理:通过一个静态内部类定义一个静态变量来持有当前类实例,在类加载时就创建好,在使用时获取。缺点:无法做到延迟创建对象,在类加载时进行创建会导致初始化时间变长。public cla…

JS中ptototype和__proto__的关系

学到原型的时候感觉头都大了/(ㄒoㄒ)/~~ 尤其是ptototype和__proto__ 傻傻分不清 通过多番查找资料,根据自己的理解,总结如下: 一、构造函数: 构造函数:通过new关键字可以用来创建特定类型的对象的函数。比如像Obje…

函数与匿名函数

函数与匿名函数一、函数 在计算机科学中,函数是程序负责完成某项特定任务的代码单元,具有一定的独立性。 1.函数的定义 在Python中,函数在定义时需要满足这样的规则: 使用关键字def引导;def后面是函数的名称&#xff0…

[最短路]飞行

题目描述 WFYZ的校园很大,这里生活着很多生物,比如住在钟楼上的的鸽子,其中鸽子冉冉和她的妹妹凝凝白天在不同的地方吃虫,而在晚上她们都回到钟楼休息。她俩是两只懒鸟,于是提出了一个计划,尽量减少她们在飞…

Java状态和策略设计模式之间的差异

为了在Core Java应用程序中正确使用状态和策略设计模式,对于Java开发人员清楚地了解它们之间的区别很重要。 尽管状态和策略设计模式的结构相似,并且都基于开放式封闭设计原则,从SOLID设计原则表示为“ O”,但它们在意图上完全不同…

【原创】系统分析师--任重而道远

今天查到了系统分析师的成绩。有坏消息,也有好消息。 坏消息当然就是意料之中的没过了,好消息是我基本上没有花什么时间去准备,但是结果却比想象中的要好。 案例分析这一场过了。基础知识差几分,论文只是及格分的一半&#xf…

XML文档的简易增删查改

dom4j解析一、利用dom4j操作元素节点 1.查询第一本书的书名,并输出到控制台 2.给第一本书添加一个特价节点, 并修改第一本书的售价节点的内容为19.8元 3.删除第二本书的作者节点二、利用dom4j操作属性节点 1.给第一本书添加一个属性,如:出版社…

廖雪峰Java3异常处理-1错误处理-2捕获异常

1捕获异常 1.1 finally语句保证有无错误都会执行 try{...}catch (){...}finally{...} 使用try...catch捕获异常可能发生异常的语句放在try{...}中使用catch捕获对应的Exception及其子类1.2 捕获多个异常 try{...} catch() {...} catch(){...}finally{..} 使用多个catch子句&…

更新数据库

方法一:在对SQL数据库进行更新时,用CommandBuilder对像来自动构建sql命令,来起到更新的作用;这种方法用起来比较方便,具体代码如下: 以下代码都在xp系统下测试通过 环境:vs.net2005 \ sql server 2000\xpus…

在崩溃或断电后测试Lucene的索引耐久性

Lucene有用的事务功能之一是索引持久性 ,它可以确保一旦成功调用IndexWriter.commit ,即使操作系统或JVM崩溃或断电,或者您杀死-KILL JVM进程,重启后索引也将保持完整(未损坏),并将反映崩溃前的…

Bash 脚本 set 命令教程

http://www.ruanyifeng.com/blog/2017/11/bash-set.html set命令是 Bash 脚本的重要环节,却常常被忽视,导致脚本的安全性和可维护性出问题。本文介绍它的基本用法,让你可以更安心地使用 Bash 脚本。 一、简介 我们知道,Bash 执行脚…

Jmeter、postman、python 三大主流技术如何操作数据库?

1、前言 只要是做测试工作的,必然会接触到数据库,数据库在工作中的主要应用场景包括但不限于以下: 功能测试中,涉及数据展示功能,需查库校验数据正确及完整性;例如商品搜索功能 自动化测试或性能测试中&a…

[转][HTML]css属性

1、字体属性(type)font-family(使用什么字体)font-style(字体的样式,是否斜体):normal/italic/obliquefont-variant(字体大小写):normal/small-capsfont-weight(字体的粗细):normal/bold/bolder/lithterfont-size(字体的大小)&…

7-OKHttp使用详解,步骤挺详细的,适合初学者使用!

OKHttp使用详解,步骤挺详细的,适合初学者使用! 一,OKHttp介绍 okhttp是一个第三方类库,用于android中请求网络。 这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和Leak…

变量与递归函数

变量与递归函数一、变量 变量分为全局变量和局部变量。 python中全局变量和局部变量的最大区别在于局部变量只能通过函数去访问,而全局变量可以直接访问。 举个例子: name linxu #全局变量 def change_name():namepython #局部变量print(name) …

使用MOXy 2.5.1快速且有点脏的JSON模式生成

因此,这些天我正在为即将推出的Oracle云服务开发新的REST API,因此我需要做的一件事情就是能够为模型中的bean自动生成JSON模式。 我正在使用MOXy从POJO生成JSON,从EclipseLink 2.5.1版本开始,它现在具有从bean模型生成JSON模式的…

手机端input[type=date]的placeholder不起作用

<div class"input clearfix"><label class"fl">起始日期</label><input class"fl text_date" type"date" name"" value"" placeholder"年/月/日" /></div><div cla…

Python中的TCP编程,实现客户端与服务器的聊天(socket)

参考大神blog:自己再写一个 https://blog.csdn.net/qq_31187881/article/details/79067644转载于:https://www.cnblogs.com/studybrother/p/10306903.html