downstream環境下archive程式停止傳輸日誌
環境:
oracle 10.2.0.5 + solaris 10
問題描述:
A和B兩個資料庫之間透過stream技術同步部分表的資料,同事反映B庫上的downstream hung 在過去某個時間點,狀態為waiting for redo ....這種情況是由於日誌沒有從A資料庫傳過來造成的(具體原因未在該文討論)
現在要解決的問題是如何讓oracle繼續傳送日至.
問題分析:
downstream需要的日誌是透過archive程式傳輸的.
檢視A資料庫引數log_archive_max_processes,我們看到資料庫配置了最多8個archive程式
SQL> show parameter log_archive_max_processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_max_processes integer 8
select * from v$managed_standby;
PROCESS PID STATUS CLIENT_P CLIENT_PID
--------- ---------- ------------ -------- ----------------------------------------
CLIENT_DBID GROUP# RESETLOG_ID THREAD# SEQUENCE#
---------------------------------------- ---------------------------------------- ----------- ---------- ----------
BLOCK# BLOCKS DELAY_MINS KNOWN_AGENTS ACTIVE_AGENTS
---------- ---------- ---------- ------------ -------------
ARCH 4001 OPENING ARCH 4001
73286670 N/A 394551950 1 965523
1826817 137 0 0 0
ARCH 4003 OPENING ARCH 4003
73286670 N/A 394551950 1 965519
1669121 1763 0 0 0
ARCH 4005 CLOSING ARCH 4005
73286670 N/A 394551950 1 953814
4128769 268 0 0 0
ARCH 28489 CLOSING ARCH 28489
73286670 2 394551950 1 965517
2195457 1973 0 0 0
ARCH 4297 CONNECTED ARCH 4297
73286670 N/A 0 0 0
0 0 0 0 0
ARCH 28499 OPENING ARCH 28499
73286670 N/A 394551950 1 965520
2195457 1973 0 0 0
ARCH 28504 OPENING ARCH 28504
73286670 N/A 394551950 1 965522
1378305 953 0 0 0
ARCH 28508 OPENING ARCH 28508
73286670 N/A 394551950 1 965521
1456129 879 0 0 0
查詢archive程式狀態可看到其中有5個程式是在OPENING狀態,理論上是可以傳送日誌的.但為什麼不工作呢?
透過truss命令檢視程式系統呼叫狀況,發現archive程式4003處於sleeping狀態:
oracle $ truss -p 4003
/13: lwp_park(0x00000000, 0) (sleeping...)
/17: lwp_park(0x00000000, 0) (sleeping...)
/3: lwp_park(0x00000000, 0) (sleeping...)
/12: lwp_park(0x00000000, 0) (sleeping...)
/2: kaio(6, 0x00000000, 0xFFFFFFFF7AB4A300, 0x00000010, 0xFFFFFFFF7AB4BF98, 0xFFFFFFFF7B900A00) (sleeping...)
為什麼會出現這種狀態呢? 推測是因為發生異常後,archive程式掛起,可能需要一定時間或者是其他程式的喚醒才能讓其繼續工作.但這只是推測,為了不無限期得等待下去,通常會採用一些人為干預措施.
比如,我們可將log_archive_dest_state_引數設定為defer,然後再設定為enable,透過這種方式來喚醒archive程式繼續工作.經驗表明,這種方法很多時候是可以解決問題的.但很不幸,這次沒有生效.
接下來,可採用修改log_archive_max_processes引數的方式,將其值從原來的8改為10,這樣,資料庫會新建2個archive程式,新建程式通常是可以正常工作的.
SQL> select * from v$managed_standby;
PROCESS PID STATUS CLIENT_P CLIENT_PID
--------- ---------- ------------ -------- ----------------------------------------
CLIENT_DBID GROUP# RESETLOG_ID THREAD# SEQUENCE#
---------------------------------------- ---------------------------------------- ----------- ---------- ----------
BLOCK# BLOCKS DELAY_MINS KNOWN_AGENTS ACTIVE_AGENTS
---------- ---------- ---------- ------------ -------------
ARCH 4001 OPENING ARCH 4001
73286670 N/A 394551950 1 965523
1826817 137 0 0 0
ARCH 4003 OPENING ARCH 4003
73286670 N/A 394551950 1 965519
1669121 1763 0 0 0
ARCH 4005 CLOSING ARCH 4005
73286670 N/A 394551950 1 953814
4128769 268 0 0 0
ARCH 28489 CLOSING ARCH 28489
73286670 2 394551950 1 965517
2195457 1973 0 0 0
ARCH 4297 CLOSING ARCH 4297
73286670 7 394551950 1 965728
471041 1610 0 0 0
ARCH 28499 OPENING ARCH 28499
73286670 N/A 394551950 1 965520
2195457 1973 0 0 0
ARCH 28504 OPENING ARCH 28504
73286670 N/A 394551950 1 965522
1378305 953 0 0 0
ARCH 28508 OPENING ARCH 28508
73286670 N/A 394551950 1 965521
1456129 879 0 0 0
ARCH 6090 WRITING ARCH 6090
73286670 N/A 394551950 1 965523
550913 2048 0 0 0
ARCH 6092 WRITING ARCH 6092
73286670 N/A 394551950 1 965524
120833 2048 0 0 0
10 rows selected.
從v$managed_standby檢視看到,新建的兩個程式為WRITING狀態,表明archive開始寫資料了. truss跟蹤可以看到這一點, B節點上也開始寫新的日誌了.
dtci-ndancnr01:oracle $ truss -p 6090
/1: write(19, "7FDA\0\006\0\0\0\0\001\0".., 32730) = 32730
/1: write(19, "7FDA\0\006\0\0\0\0\0\0\0".., 32730) = 32730
/1: write(19, "7FDA\0\006\0\0\0\0\0 H\0".., 32730) = 32730
/1: write(19, "7FDA\0\006\0\0\0\0\006D9".., 32730) = 32730
/1: write(19, "7FDA\0\006\0\0\0\0\0 B [".., 32730) = 32730
/1: write(19, "7FDA\0\006\0\0\0\0\0\0\0".., 32730) = 32730
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27243841/viewspace-769453/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RAC環境下的redo日誌組重建
- DataGuard日誌傳輸模式模式
- 從alert日誌看Oracle 11g Datagurad日誌傳輸(下)Oracle
- DG 日誌傳輸監控
- OGG Integrated Mode(downstream方式)環境搭建
- 【RAC】RAC環境下歸檔日誌格式約定
- archive log 歸檔日誌Hive
- oracle DG 日誌傳輸小結Oracle
- SQL Server 事務日誌傳輸SQLServer
- linux下如何增量增量傳輸mysql binlog日誌LinuxMySql
- oracle archive log 歸檔日誌OracleHive
- 【RAC】Oracle RAC叢集環境下日誌檔案結構Oracle
- SpringBoot多環境日誌配置Spring Boot
- Oracle archive log 歸檔日誌管理OracleHive
- 7 Redo Transport Services 日誌傳輸服務
- MySQL如何傳輸二進位制日誌MySql
- 雲原生環境下的日誌採集、儲存、分析實踐
- 新硬體環境下日誌模組的設計與演進
- 在.NET(正式版)環境下讀寫系統日誌 (轉)
- WebSphere MQ傳輸環境搭建和測試WebMQ
- Oracle 11g Dataguard環境下資料檔案、日誌檔案管理(下)Oracle
- 從alert日誌看Oracle 11g Datagurad日誌傳輸(上)Oracle
- oracle10g DataGuard的日誌傳輸方式Oracle
- 【DataGuard】Oracle DataGuard 日誌傳輸狀態監控Oracle
- rac+dg環境刪除歸檔日誌
- 通過修改log_archive_dest_state_n引數的狀態來控制主庫的日誌檔案傳輸Hive
- C#按照日期輸出程式日誌C#
- ORACLE停止監聽日誌檔案Oracle
- linux 環境下檢視日誌最常用的命令(tail)含例項LinuxAI
- rac環境下修改歸檔路徑,並設定遠端傳輸屬性
- 關於11G DataGuard 日誌傳輸的案例
- 【DataGuard】10GR 日誌傳輸服務引數
- windows下目錄傳送到unix環境Windows
- Oracle 11g Data Guard暫停物理備庫的日誌傳輸(log_archive_dest_state_n的defer引數)OracleHive
- iLogtail和Loggie:K8S環境下日誌收集利器AIK8S
- Oracle 11g Dataguard環境下資料檔案、日誌檔案管理(上)Oracle
- sqlserver關於日誌傳輸log shipping的總結SQLServer
- 由於域名解析引起的dataguard傳輸日誌故障