由于主庫切換歸檔路徑導致的 Oracle DG 無法同步問題的解決過程

由于主庫切換歸檔路徑導致的 Oracle DG 無法同步問題的解決過程

在上一篇文章中,由于 Oracle 數據庫的歸檔日志空間耗盡導致客戶端無法連接數據庫。在解決的過程中臨時修改了歸檔路徑。后來通過修改參數db_recovery_file_dest_size的值解決了問題。
但該操作導致DG無法與主庫同步。本文給出了該問題的解決思路與方法。

使用如下兩條命令開啟數據庫同步:

alter database recover managed standby database cancel;  -- 停止同步
alter database recover managed standby database using current logfile disconnect from session;  -- 開啟同步

查看主庫的進程:

SQL> select process, status, sequence# from v$managed_standby;PROCESS   STATUS	SEQUENCE#
--------- ------------ ----------
ARCH	  CLOSING	   116083
ARCH	  OPENING	   116057
ARCH	  CLOSING	   116085
ARCH	  CLOSING	   116053
LNS	  WRITING	   116086

查看備庫的進程:

SQL> select process, status, sequence# from v$managed_standby;PROCESS   STATUS	SEQUENCE#
--------- ------------ ----------
ARCH	  CLOSING	   116085
ARCH	  CLOSING	   325777
ARCH	  CONNECTED		0
ARCH	  CLOSING	   325778
MRP0	  APPLYING_LOG	   325395
RFS	  IDLE			0
RFS	  IDLE			0
RFS	  IDLE		   116086
RFS	  IDLE			0
RFS	  IDLE			0
RFS	  IDLE			0
RFS	  IDLE		   32577912 rows selected.

發現主庫的進行和備庫的進程大都是正常的,但是 MRP0SEQUENCE#RFSSEQUENCE#差異較大。在主庫中寫入數據,發現不能同步。比如在主庫的表中添加數據,才從庫中查詢不到。在主庫上多次執行alter system switch logfile;命令切換日志,問題仍然不能解決。

由于時間太晚,操作暫停。

==========================================================================================

第二天(7月27日)上午十點,遠程連接服務器查看備庫的進程。

==========================================================================================

發現了下列異常(MRP0進程的狀態變成了WAIT_FOR_GAP):

SQL> select process, status, sequence# from v$managed_standby;PROCESS   STATUS	SEQUENCE#
--------- ------------ ----------
ARCH	  CLOSING	   325842
ARCH	  CLOSING	   325843
ARCH	  CONNECTED		0
ARCH	  CLOSING	   116143
RFS	  IDLE			0
RFS	  IDLE			0
RFS	  IDLE			0
RFS	  IDLE			0
RFS	  IDLE		   116144
RFS	  IDLE			0
MRP0	  WAIT_FOR_GAP	   116056
RFS	  IDLE			0
RFS	  IDLE		   32584413 rows selected.

查詢 GAP 信息如下:缺少兩個歸檔文件(對應的SEQUENCE#分別為 116056-116057

SQL> SELECT * FROM V$ARCHIVE_GAP;THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
---------- ------------- --------------2	  116056	 116057

基本可以確定昨晚備庫無法同步的原因:

因為昨天修改了歸檔的地址,導致修改歸檔地址之后生成的歸檔文件沒有被傳送到備庫中,備庫無法接收到這些歸檔文件,導致備庫的數據確實,備庫和主庫不一致,導致無法同步。

解決方法如下:

步驟1:進入到主庫中(節點1和節點2同時操作)修改后的歸檔地址,把歸檔日志文件復制到 DG備庫的歸檔目錄中。

結果如下:

[oracle@dghisdb:/archive/DGHISDB/archivelog]$ll
total 4056012
-rw-r----- 1 oracle oinstall  16284160 Jul 26 22:33 1_325744_1109379972.dbf
-rw-r----- 1 oracle oinstall  34625024 Jul 26 22:33 1_325745_1109379972.dbf
-rw-r----- 1 oracle oinstall 351205888 Jul 26 22:33 1_325746_1109379972.dbf
-rw-r----- 1 oracle oinstall 148878848 Jul 26 22:33 1_325747_1109379972.dbf
-rw-r----- 1 oracle oinstall 803595776 Jul 26 22:33 1_325748_1109379972.dbf
-rw-r----- 1 oracle oinstall 426488320 Jul 26 22:33 1_325749_1109379972.dbf
-rw-r----- 1 oracle oinstall     45056 Jul 26 22:33 1_325750_1109379972.dbf
-rw-r----- 1 oracle oinstall    115200 Jul 26 22:33 1_325751_1109379972.dbf
-rw-r----- 1 oracle oinstall  10448384 Jul 26 22:33 1_325752_1109379972.dbf
-rw-r----- 1 oracle oinstall   1524736 Jul 26 22:33 1_325753_1109379972.dbf
-rw-r----- 1 oracle oinstall   1793024 Jul 26 22:33 1_325754_1109379972.dbf
-rw-r----- 1 oracle oinstall     14848 Jul 26 22:33 1_325755_1109379972.dbf
-rw-r----- 1 oracle oinstall   1974784 Jul 26 22:33 1_325756_1109379972.dbf
-rw-r----- 1 oracle oinstall      5120 Jul 26 22:33 1_325757_1109379972.dbf
-rw-r----- 1 oracle oinstall  16760832 Jul 26 22:33 1_325758_1109379972.dbf
-rw-r----- 1 oracle oinstall 734867968 Jul 26 22:33 2_116052_1109379972.dbf
-rw-r----- 1 oracle oinstall 387082752 Jul 26 22:33 2_116054_1109379972.dbf
-rw-r----- 1 oracle oinstall      1024 Jul 26 22:33 2_116055_1109379972.dbf
-rw-r----- 1 oracle oinstall 803034112 Jul 26 22:35 2_116056_1109379972.dbf
-rw-r----- 1 oracle oinstall 260406272 Jul 26 22:35 2_116057_1109379972.dbf
-rw-r----- 1 oracle oinstall    107520 Jul 26 22:35 2_116058_1109379972.dbf
-rw-r----- 1 oracle oinstall 111630848 Jul 26 22:35 2_116059_1109379972.dbf
-rw-r----- 1 oracle oinstall   2964992 Jul 26 22:35 2_116060_1109379972.dbf
-rw-r----- 1 oracle oinstall  32430080 Jul 26 22:35 2_116061_1109379972.dbf
-rw-r----- 1 oracle oinstall    209408 Jul 26 22:35 2_116062_1109379972.dbf
-rw-r----- 1 oracle oinstall   6656512 Jul 26 22:35 2_116063_1109379972.dbf
.......

步驟2:在備庫上注冊archive log,對應的文件為:2_116056_1109379972.dbf2_116057_1109379972.dbf

-rw-r----- 1 oracle oinstall 803034112 Jul 26 22:35 2_116056_1109379972.dbf
-rw-r----- 1 oracle oinstall 260406272 Jul 26 22:35 2_116057_1109379972.dbf

執行如下命令注冊archive log

alter database register logfile '/archive/DGHISDB/archivelog/2_116056_1109379972.dbf';
alter database register logfile '/archive/DGHISDB/archivelog/2_116057_1109379972.dbf';

步驟3:執行注冊日志的命令后重啟數據庫同步。

alter database recover managed standby database cancel;  -- 停止同步
alter database recover managed standby database using current logfile disconnect from session;  -- 開啟同步

然后重新查看備庫的進程:

SQL> select process, status, sequence# from v$managed_standby;PROCESS   STATUS	SEQUENCE#
--------- ------------ ----------
ARCH	  CLOSING	   325842
ARCH	  CLOSING	   325843
ARCH	  CONNECTED		0
ARCH	  CLOSING	   116143
RFS	  IDLE			0
RFS	  IDLE			0
RFS	  IDLE			0
RFS	  IDLE			0
RFS	  IDLE		   116144
RFS	  IDLE			0
MRP0	  WAIT_FOR_GAP	   116059
RFS	  IDLE			0
RFS	  IDLE		   32584413 rows selected.

重新查詢 GAP 信息如下:缺少 5 個歸檔文件(對應的SEQUENCE#分別為 116059-116063

SQL> SELECT * FROM V$ARCHIVE_GAP;THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
---------- ------------- --------------2	  116059	 116063

步驟4:在備庫上注冊archive log,對應的文件為:2_116059_1109379972.dbf2_116063_1109379972.dbf

-rw-r----- 1 oracle oinstall 111630848 Jul 26 22:35 2_116059_1109379972.dbf
-rw-r----- 1 oracle oinstall   2964992 Jul 26 22:35 2_116060_1109379972.dbf
-rw-r----- 1 oracle oinstall  32430080 Jul 26 22:35 2_116061_1109379972.dbf
-rw-r----- 1 oracle oinstall    209408 Jul 26 22:35 2_116062_1109379972.dbf
-rw-r----- 1 oracle oinstall   6656512 Jul 26 22:35 2_116063_1109379972.dbf

執行如下命令注冊archive log

alter database register logfile '/archive/DGHISDB/archivelog/2_116059_1109379972.dbf';
alter database register logfile '/archive/DGHISDB/archivelog/2_116060_1109379972.dbf';
alter database register logfile '/archive/DGHISDB/archivelog/2_116061_1109379972.dbf';
alter database register logfile '/archive/DGHISDB/archivelog/2_116062_1109379972.dbf';
alter database register logfile '/archive/DGHISDB/archivelog/2_116063_1109379972.dbf';

步驟5:執行注冊日志的命令后重啟數據庫同步。

alter database recover managed standby database cancel;  -- 停止同步
alter database recover managed standby database using current logfile disconnect from session;  -- 開啟同步

然后重新查看備庫的進程:

SQL> select process, status, sequence# from v$managed_standby;PROCESS   STATUS	SEQUENCE#
--------- ------------ ----------
ARCH	  CLOSING	   325842
ARCH	  CLOSING	   325843
ARCH	  CONNECTED		0
ARCH	  CLOSING	   116143
RFS	  IDLE			0
RFS	  IDLE			0
RFS	  IDLE			0
RFS	  IDLE			0
RFS	  IDLE		   116144
RFS	  IDLE			0
MRP0	  APPLYING_LOG	   325810
RFS	  IDLE			0
RFS	  IDLE		   32584413 rows selected.

重新查詢 GAP 信息如下:

SQL> SELECT * FROM V$ARCHIVE_GAP;no rows selected

由于 GAP 信息為空,表示已沒有缺少的歸檔日志。

步驟6:重啟備庫

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.Total System Global Area 2.7793E+10 bytes
Fixed Size		    2266504 bytes
Variable Size		 3288337016 bytes
Database Buffers	 2.4495E+10 bytes
Redo Buffers		    7307264 bytes
Database mounted.
Database opened.

啟動數據庫同步:

alter database recover managed standby database using current logfile disconnect

查看備庫的進程信息:發現MRP0進程的狀態已經變成APPLYING_LOG,并且MRP0進程的SEQUENCE#(325845)RFS進程的SEQUENCE#(325845)完全相同。

SQL> select process, status, sequence# from v$managed_standby;PROCESS   STATUS	SEQUENCE#
--------- ------------ ----------
ARCH	  CLOSING	   325844
ARCH	  CONNECTED		0
ARCH	  CONNECTED		0
ARCH	  CLOSING	   116144
RFS	  IDLE			0
RFS	  IDLE			0
RFS	  IDLE		   325845
RFS	  IDLE		   116145
RFS	  IDLE			0
RFS	  IDLE			0
MRP0	  APPLYING_LOG	   32584511 rows selected.

測試發現,在主庫上修改數據,在備庫上立即可以查詢到最新信息。

問題得到解決。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/91063.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/91063.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/91063.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

密碼學與加密貨幣:構建去中心化信任的技術基石與未來挑戰

密碼學是加密貨幣的技術基石,兩者通過數學原理構建去中心化信任體系。以下從技術原理、應用場景及未來挑戰三方面展開分析:一、密碼學基礎:加密貨幣的安全基石非對稱加密體系公鑰與私鑰:基于橢圓曲線密碼學(ECC&#x…

用于 Web 認證的 抗量子簽名——ML-DSA 草案

1. 引言 本文描述了在 Web Authentication (WebAuthn) 中實現無密碼認證(Passwordless authentication)的方法,該方法使用模塊格(Module-Lattice)為基礎的數字簽名標準(ML-DSA),即 …

ubuntu18.04解壓大的tar.gz文件失敗

1. 問題描述 我在vmware的虛擬機裝有petalinux環境,需要解壓downloads_2020.2.tar.gz這個大的壓縮包文件,但是總是失敗,而且過程很漫長 tar: downloads/git2/github.com.vim.vim.git/objects/pack/pack-f7f2e2add0c8972a9141b557ef725c38069…

App拉起:喚醒即達,告別繁瑣操作

在移動互聯網進入存量競爭的今天,“讓用戶少點一次、少等一秒”往往意味著20%以上的轉化率差異。openinstall把這套體驗總結成一套可落地的App拉起方案:一套SDK一組鏈接跳轉規則一個可自定義的落地頁,就能把Web→App的整條動線縮成一次點擊。…

開發指南125-HTML DOM事件

1、onload和onunload在頁面或某個元素加載完成后或離開后觸發事件。2、onchange用于在元素的值發生變化時觸發事件。一般用于<input>, <select>, <textarea>等元素3、onfocus 和 onblur激活或失去焦點時觸發4、onmouseover 和 onmouseout鼠標移入或移除時觸發…

使用redis 作為消息隊列時, 如何保證消息的可靠性

使用Redis作為消息隊列時&#xff0c;如何保證消息的可靠性 在分布式系統中&#xff0c;消息隊列扮演著不可或缺的角色&#xff0c;它能夠有效地實現服務間的解耦和異步通信。Redis憑借其出色的性能&#xff0c;常常被用作輕量級的消息隊列。然而&#xff0c;Redis本質上是一個…

CentOS7 安裝和配置教程

CentOS7 安裝和配置教程第一部分&#xff1a;安裝準備1. 下載CentOS 7鏡像2. 創建安裝介質第二部分&#xff1a;安裝步驟1. 在VMeare上安裝CentOS-7-x86_64-Minimal2. 安裝配置3. 安裝過程第三部分&#xff1a;初始配置1. 首次啟動設置2. 網絡配置3. 防火墻配置第四部分&#x…

clock_getres系統調用及示例

39. clock_getres - 獲取時鐘精度 函數介紹 clock_getres系統調用用于獲取指定時鐘的精度&#xff08;分辨率&#xff09;。它返回時鐘能夠表示的最小時間間隔。 函數原型 #include <time.h>int clock_getres(clockid_t clk_id, struct timespec *res);功能 獲取指定時鐘…

MCU+RTOS調試

1. 引言在做項目時&#xff0c;百分之三十的時間寫代碼&#xff0c;還有百分之70的時間用于調試。本期將以Keil為例進行調試章節的講解&#xff0c;目的在于做出一個標準化的調試步驟&#xff0c;方便大家學習如何調試代碼。內容分為基礎調試、中級調試及進階調試三部分&#x…

Redis的數據淘汰策略是什么?有哪些?

1.監測設置了TTL的數據volatile-lru&#xff1a;淘汰最近最少使用的數據volatile-lfu&#xff1a;淘汰最近使用次數最少的數據volatile-ttl&#xff1b;淘汰將要過期的數據volatile-random&#xff1a;隨機淘汰2.監測全庫數據allkeys-lru&#xff1a;淘汰最近最少使用的數據all…

相控陣波束躍度指向誤差Matlab仿真

波束躍度影響&#xff1a;TR芯片移相器位數、陣元數量、校準后陣元初始相位、TR芯片移相器精度、波控計算精度等。用MATLAB進行TR芯片移相器位數、陣元數量對指向誤差進行仿真。 close all; %線陣波束躍度仿真 20250726 %beam displacement % 波束躍度影響&#xff1a;TR芯片移…

板凳-------Mysql cookbook學習 (十二--------6)

MySQL 8 導入二進制文件(trailer.ogv)操作指南 在MySQL中導入二進制文件(如trailer.ogv視頻文件)通常有幾種方法&#xff0c;我將詳細介紹每種方法的操作步驟。 方法一&#xff1a;使用LOAD_FILE函數導入BLOB字段 這是最直接的方法&#xff0c;適合中小型二進制文件。sql - 1. …

昇思學習營-【模型推理和性能優化】學習心得_20250730

一、權重的加載 模型包含兩部分&#xff1a; base model 和 LoRA adapter 其中base model的權重在微調時被凍結&#xff0c; 推理時加載原權重即可&#xff0c;LoRA adapter可通過PeftModel.from_pretrained進行加載。 二、啟動推理 通過model.generate&#xff0c;啟動推理…

[AI8051U入門第十一步]W5500-服務端

學習目標: 1、連接TCP/IP 2、學習W5500作為服務端代碼一、TCP/IP介紹 TCP/IP 協議棧介紹 TCP/IP(Transmission Control Protocol / Internet Protocol)是互聯網通信的核心協議族,定義了數據如何在網絡中進行傳輸和路由。它由多個協議組成,采用分層架構,確保不同設備之間…

C 標準庫 <time.h> 函數詳解

目錄 概述 1 核心數據類型 1.1 time_t 1.2 clock_t 1.3 struct tm 1.4 size_t 2 核心函數 2.1 時間獲取函數 2.2 時間轉換函數 2.3 時間差計算 2.4 時間格式化函數 3 線程安全版本&#xff08;POSIX 擴展&#xff09; 3.1 函數列表 3.2 時間處理完整示例 4 重要…

基于BEKK-GARCH模型的參數估計、最大似然估計以及參數標準誤估計的MATLAB實現

基于BEKK-GARCH模型的參數估計、最大似然估計以及參數標準誤估計的MATLAB實現。BEKK-GARCH模型是一種多變量GARCH模型&#xff0c;用于估計多個時間序列的條件方差和協方差矩陣。 MATLAB實現BEKK-GARCH模型 1. 準備數據 假設你已經有一個時間序列數據矩陣 returns&#xff0c;每…

TDengine 中 TDgpt 用于異常檢測

介紹 TDgpt 內置時序數據異常檢測模型 TDengine 中定義了異常&#xff08;狀態&#xff09;窗口來提供異常檢測服務。異常窗口可以視為一種特殊的事件窗口&#xff08;Event Window&#xff09;&#xff0c;即異常檢測算法確定的連續異常時間序列數據所在的時間窗口。與普通事件…

統計學08:概率分布

一、隨機變量隨機變量是一個將 隨機事件 映射到 數值 的數學函數&#xff0c;用于描述事件的結果。隨機變量可以是離散的&#xff08;如骰子&#xff09;或連續的&#xff08;如人的身高、體重&#xff09;。1&#xff09;概率質量函數PMF——離散隨機變量P(X x) 對應于某個值…

vue3【組件封裝】消息反饋 S-msgWin.vue (針對父容器對齊,左右居中,可自定義頂部距離)

最終效果成功的提示報錯的提示代碼實現components/SUI/S-msgWin.vue <script lang"ts" setup> const props defineProps({msg: {type: Object,required: true,},top: {type: String,default: "50%",},duration: {type: Number,default: 3000,}, });…

MySQL 8.0.42創建MGR集群

MySQL 8.0.42創建MGR集群 概述 關于MySQL MGR集群的介紹就不在這里做詳細的介紹了&#xff0c;大家可以自己到官網上查看閱讀。在這里主要是實際操作方面的內容 總體結構設計如下圖服務器節點信息序號角色IP地址數據庫端口MGR端口1主節點192.168.56.1043309100612從節點192.168…