Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 搭建 DataGuard 遇到 ORA-12528?兩種監聽設定解法詳解

編輯:關於 Linux

在 Linux 上搭建 Oracle DataGuard,使用 RMAN 復原備援資料庫時常遭遇 ORA-12528: TNS:listener: all appropriate instances are blocking new connections。根因在於輔助實例處於 NOMOUNT 狀態,PMON 未啟動,無法向動態監聽註冊。本文提供靜態監聽註冊與TNS 連線描述符加參數兩種解法。

錯誤重現情境

RMAN> connect auxiliary sys/Oracle@SCMPRD02
ORA-12528: TNS:listener: all appropriate instances are blocking new connections

先確認監聽存活:

tnsping SCMPRD02
# 回應 OK 代表監聽程序正常運行

解法一:設定靜態監聽註冊

讓監聽直接知道輔助實例存在,不依賴 PMON 動態註冊。

步驟

  1. 確認 $ORACLE_HOME/network/admin/listener.ora 存在,否則執行 netca 建立。
  2. 編輯 listener.ora,在 SID_LIST_LISTENER 區段加入靜態服務:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = SCMPRD02)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = SCMPRD02)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = SCMPRDDB02)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle
  1. 重載監聽:lsnrctl reload 或 lsnrctl restart。

解法二:修改 tnsnames.ora 加入 UR=A

在連線描述符中加入 (UR=A) 告訴監聽「接受未註冊實例的連線」。

修改前

SCMPRD02 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = WELL)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = SCMPRD02)
    )
  )

修改後

SCMPRD02 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = WELL)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = SCMPRD02)
      (UR = A)   # 關鍵參數
    )
  )

原理解析

  • Oracle 11g+ 預設動態監聽:PMON 啟動後主動向監聽註冊服務。
  • RMAN 複製資料庫時,輔助實例僅 NOMOUNT,PMON 未起,無法註冊 → 監聽視為「無適當實例」拒絕連線。
  • 靜態註冊:監聽啟動時讀取 listener.ora 已知實例清單,無需 PMON。
  • UR=A (Use Registered = ANY):允許連線導向未動態註冊的實例,相容舊版行為。

驗證與後續

# 再次測試連線
tnsping SCMPRD02
RMAN> connect auxiliary sys/Oracle@SCMPRD02
# 應成功進入 RMAN 提示符

完成資料庫復原後,記得將備援庫 ALTER DATABASE MOUNT 並啟用 DataGuard Broker 或手動配置 Redo 傳輸。

DataGuard ORA-12528 錯誤畫面

tnsping 測試畫面

Copyright © Windows教程網 All Rights Reserved