1. 程式人生 > >oracle主備同步問題

oracle主備同步問題

select Oracle主備 char eset sql ora 不一定 zabbix監控 enc

oracle主備同步

問題描述

ZABBIX近段時間某地區的DB備庫同步異常,在後臺查詢主備是同步的
zabbix監控主備同步的語句為select round((sysdate-controlfile_time)2460) from v$database;該語句在plsql中執行的返回結果為0,
在備庫的secucre crt中執行的結果就會產生同步時間差。而zabbix監控是以secucrt中執行的結果為準的。

原因分析

1、在plsql中執行的結果實際上顯示的是主庫的查詢結果(因為plsql默認連接的是數據庫的VIP)
2、主要原因是這個時間點業務量比較小,導致備庫sysdate-controlfile_time的值變大。

此場地的值如下:
SQL> select sysdate-controlfile_time from v$database;
SYSDATE-CONTROLFILE_TIME

.008125(此值是業務量大時候幾十倍)
SQL> select round((sysdate-controlfile_time)2460) from v$database;
ROUND((SYSDATE-CONTROLFILE_TIME)2460)--------------------------------------- 12


一般正常場地的值如下:

SQL> select sysdate-controlfile_time from v$database;

SYSDATE-CONTROLFILE_TIME

.000046296(此值較小)
SQL> select round((sysdate-controlfile_time)2460) from v$database;

ROUND((SYSDATE-CONTROLFILE_TIME)2460)

0

結論

這個結果出現偏差說明不了問題,因為主備同步不一定是實時的
主備同步巡檢SQL,主備都執行一遍,結果一致就同步正常
select thread#, max(sequence#), to_char(max(FIRST_TIME), ‘yyyy-mm-dd hh24:mi:ss‘) from v$log_history where RESETLOGS_TIME = (select max(RESETLOGS_TIME) from v$log_history) group by thread#;


TIPS:

1、oracle默認時間單位是毫秒:round((sysdate-controlfile_time)2460)
2、主備同步的多角度分析,使用sysdate-controlfile_time會產生誤差,如果歸檔產生的時候發生延遲(比如當前的業務量比較少,沒有達到歸檔產生的門檻)

oracle主備同步問題