Monthly Archives: April 2024
你真会判断DataGuard的延迟吗?
这是一个比较细节的知识点,但必须要理解这个才能准确判断Oracle ADG的延迟情况。 以前做运维工作时,记得是要同时重点关注v$dataguard_stats视图中的几个字段的值,分别是:NAME、VALUE、TIME_COMPUTED、DATUM_TIME。 本文先不考虑v$dataguard_stats视图没有数值显示的特殊情况,只针对当v$dataguard_stats视图正常显示的情况,如何准确判断Oracle ADG的延迟情况。 其实绝大部分管理过ADG的同学都知道,要重点关注NAME列中的transport lag和apply lag,看这两项在VALUE列中的取值,如果都是0,那基本没问题。 经验多些的同学还会在此基础上多关注TIME_COMPUTED、DATUM_TIME这两列的时间,是否近乎相同,和系统时间有无差异。 曾经遇到有用户在巡检ADG延迟时,只简单关注了前者,看都是0就判断没问题,可实际情况已经有很大的gap,这就是没有同时关注TIME_COMPUTED、DATUM_TIME的结果。 而若只关注TIME_COMPUTED、DATUM_TIME,却忽略掉NAME列中的transport lag和apply lag取值,这样也同样会可能造成误判。 如果说给建议就是要都关注,当然,有经验的DBA还会各种查其他信息加以证明,但这也不在本文讨论范围。如果只谈v$dataguard_stats视图,很多用户心里是没底的,因为不清楚细节,为什么会有各种表现情况呢? 通过查阅官方文档,其实在这些字段的描述上也不够精确,容易造成误解。 所以,本文就构建这样的动手实验环境,来帮助大家通过上手实践来具体观察典型场景,加深理解。 场景1: TIME_COMPUTED、DATUM_TIME二者时间近似,且都随系统时间变化 这种情况,无法判定ADG是否延迟。 ADG的传输链路正常,但是ADG备库的MRP进程很可能出现问题,或者不是实时应用导致ADG延迟。 下面开始动手实践构造这类场景的测试用例: MRP进程异常crash,这里使用kill进程的命令来模拟,一段时间后再去查看ADG延迟的情况: PHYSICAL STANDBY @DB0913_DG -> SYS @CDB$ROOT> set time on 03:04:32 PHYSICAL STANDBY @DB0913_DG -> SYS @CDB$ROOT> @dg SOURCE_DBID … Continue reading
难道AI不知道tnsnames.ora的instance_name配置吗?
事情是这样,给某客户培训构建hands-on实验环境时,因测试环境有限,在同一环境做了一套ADG环境; 数据库是单实例,版本19.21,使用了多租户选件; 其中一个测试的PDB,名为demo1,其中建好测试用户jingyu,遇到的问题是: 使用sqlplus连接时,会随机连接到主库或者备库。 排查定位也很简单,因为这样的环境,监听lsnrctl status可以看到对应的服务下,是存在两个实例的,一个是主库,一个是ADG备库,但是,修改配置tnsnames.ora时,指定具体实例的语法怎么写,AI误导我走了弯路。 监听服务如下: Service “demo1.sub00000000000.xxvcn.xxxxxxvcn.com” has 2 instance(s). Instance “DB0913”, status READY, has 1 handler(s) for this service… Instance “DB0913_DG”, status READY, has 1 handler(s) for this service… tnsnames.ora配置如下: DEMO1 = (DESCRIPTION = (ADDRESS = (PROTOCOL … Continue reading
超简单:必须要掌握的运维小妙招
常言道:生产运维无小事!尤其针对黑屏操作,相信不少客户都有自己的血泪史。 比如操作系统rm命令误删掉了关键系统数据… 比如执行关库操作后才发现连错了数据库… 除了对生产要有敬畏之心,做关键操作之前反复多确认,多人复核,其实还可以借助一些小妙招来减少紧张和焦虑情绪。 我们给客户做hands-on实验演示时,也可以通过这些小妙招来加快演示速度,同时能让观众更清楚Demo环境。 Oracle的小妙招 MySQL的小妙招 Oracle的小妙招 sqlplus界面优化 默认情况下,sqlplus连接到数据库,并不会清楚显示必要信息,只有默认的SQL> 有经验的运维人员做关键操作时,比如关闭数据库,会习惯性的确认当前连接的数据库是否正确。 同时,建议设置glogin.sql文件,示例如下: cd $ORACLE_HOME/sqlplus/admin/ vi glogin.sql 添加新内容如下: define gname=idle column global_name new_value gname set heading off set termout off col global_name noprint select upper (sys_context (‘userenv’, ‘DATABASE_ROLE’) || ‘ @’ … Continue reading