在 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 動態註冊。
$ORACLE_HOME/network/admin/listener.ora 存在,否則執行 netca 建立。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
lsnrctl reload 或 lsnrctl restart。在連線描述符中加入 (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) # 關鍵參數
)
)
NOMOUNT,PMON 未起,無法註冊 → 監聽視為「無適當實例」拒絕連線。listener.ora 已知實例清單,無需 PMON。# 再次測試連線
tnsping SCMPRD02
RMAN> connect auxiliary sys/Oracle@SCMPRD02
# 應成功進入 RMAN 提示符
完成資料庫復原後,記得將備援庫 ALTER DATABASE MOUNT 並啟用 DataGuard Broker 或手動配置 Redo 傳輸。


Linux 強制卸載檔案系統:umount 失敗時的完整解決方案
CentOS 6.5 使用 yum 快速部署 LAMP 環境:EPEL、Remi 源與安全設定
Ubuntu 啟用 IPv6 兩大實用方法(Miredo / GW6C)
Linux exit vs _exit 系統調用差異全解析:緩衝區清理、atexit 與進程終止機制
Linux 升级内核与配置 Video4Linux 驱动实现摄像头视频采集
雙系統 Ubuntu 無法掛載 Windows 分區?安裝 ntfs-3g 並修復檔案系統
Ubuntu 14.04/14.10 睡眠喚醒後滑鼠鍵盤失靈解決方案:重裝 xserver-xorg-input-all