先看一個報錯:
2024-07-10 22:12:21.725 [ERROR] database P0000003511 T0000000000000003696? rafil_list_overlap_consecutive_check failed, rfil(+DMDATA/data/DSC02/arch/ARCHIVE_LOCAL1_0x57843343_EP1_2024-07-10_20-44-40.log)->next_seq(2901) >= next rfil(+DMDATA/data/DSC02/arch/ARCHIVE_REMOTE_0x57843343_EP1_2024-07-10_20-44-58.log)->arch_seq(2898)
2024-07-10 22:12:21.725 [ERROR] database P0000003511 T0000000000000003696? rarch_sync_process, rafil_collect_by_dsc_seqno failed, code=-731
2024-07-10 22:12:21.725 [ERROR] database P0000003511 T0000000000000003696? rarch_local_arch_send, rarch_sync_process failed, code:-731!
在搭建DSC主備的時候,報以上錯誤
rarch_sync_process和rarch_local_arch_send失敗,歸檔同步發送失敗。
錯誤原因:
各節點遠程歸檔路徑(ARCH_INCOMING_PATH)和其他節點的本地歸檔路徑相同
解決辦法:
調整各節點遠程歸檔路徑(ARCH_INCOMING_PATH)不要和其他節點的本地歸檔路徑一致,單獨創建目錄存放遠程歸檔
總結了以下DSC的一些疑問:
DSC的端口都有哪些?DSC主備的端口?哪幾個文件有關聯?
兩節點DSC:
MAL_HOST:MAL_PORT,MAL系統通信,私網地址
DMCSSM:配置dcr_oguid、兩臺CSS的port和IP
DSC主備:
在前面的基礎上加了關于DmWatch的三個端口
MAL_INST_PORT?實例的對外服務端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT?DW監聽其他服務的端口,其他服務(比如monitor)連DW
MAL_INST_DW_PORT?實例監聽DW的端口?
Dmwatcher:配置INST_OGUID,這是守護系統唯一的OGUID,不同于其他OGUID
Dmmonitor:配置MON_INST_OGUID,同上面DW的INST_OGUID
?????????????????MON_DW_IP:MON_DW_PORT,DW的PORT,同MAL_DW_PORT
怎么看是否有gap?看日志線程和apply線程的狀態?
監視器里可以看到主備庫的狀態都是正常的:
ISTATUS為OPEN,INST_OK為OK,WSTATUS(守護進程狀態)為OPEN。
停掉備庫的實例后,WSTATUS變為STARTUP
show一下
啟動備庫
此時fseq:主庫是5487 ?備庫是2920
Flsn:主庫是48066 備庫是48066
主庫插入數據
此時fseq:主庫是5490 ?備庫是2920,主庫增加,備庫沒有變化
Flsn:主庫是48088 備庫是48066,主庫增加,備庫沒有變化
說明有延遲,還沒有同步到備庫,再show
此時Fseq:主庫是5491 ?備庫是2921,備庫有增加
Flsn:主庫是48088 備庫是48088,備庫有增加,且和主庫一致
說明同步正常
通過v$rlog也能看FLSN的大小:
主庫:
備庫:
如果沒有數據守護進程,手動open數據庫,數據會進行同步嗎?
首先,停掉監視器
然后,停掉備庫的DW
再然后,停掉數據庫實例,并啟動數據庫實例到mount
執行以下測試:
然后主庫插入數據,看主備庫的實例日志,standby日志正常發送到備庫,
備庫:LSN有刷新,數據已同步過來。
啟動DW
啟動監視器
狀態完全正常。
重啟機器,會自動啟動?DB會啟動到mount?
install服務腳本執行創建服務后就會開啟開機自啟動
DB的啟動會啟動到mount,但是兩節點不能同時mount,一個節點mount,另一個節點error
如果配置了dmwatcher的服務,重啟機器后,需要DSC兩節點的dmwatcher和備庫的dmwatcher都啟動,DSC狀態正常,兩個節點都OPEN。
日志是怎么傳到standby的,主庫備庫的日志是不是一一對應的?
不是一一對應的。
這里log replay service是將主庫的日志,發送到備庫的內存,
然后備庫生成online redo log和local archivelog,local archivelog的大小、目錄等參數,是按照備庫的dmarch.ini生成的,文件名為STANDBY*.log。