ORA-12528
Table of Contents
1 錯誤信息
ERROR:ORA-12528: TNS:listener: all appropriate instances are blocking new connections
2 原因
- 實例未打開(搭建standby時常見)
- 使用動態監聽未配置local_listener引起
3 解決方法
3.1 實例未打開
舉個粟子,使用duplicate 復制數據庫時,目標實例只啟動到nomount狀態。此時,監聽 中對應實例的狀態就是“BLOCKED”. 解決方法是在TSN配置添加特殊標記(UR = A),示例 如下:
TEST_DG = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.10 )(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = halberd) (UR=A) ) )
3.2 監聽相關
3.2.1 動態監聽改為靜態監聽
靜態監聽配置示例如下:
SID_LIST_LISTENER_FOREIGN = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) (PROGRAM = extproc) ) (SID_DESC = (SID_NAME = dbm012) (ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/dbhome_1) (GLOBAL_DBNAME=dbm01) ) ) LISTENER_FOREIGN = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS = (PROTOCOL = TCP)(HOST = 172.24.69.47)(PORT = 1521)) ) )
3.2.2 配置local_listener
使用動態監聽,但是沒有配置local_listener參數。案例解決如下:
-
修改local_listener參數
-- 修改local_listener SYS@halberddg1>show parameter list NAME TYPE VALUE -------------------- ------ ------------------------------ listener_networks string local_listener string remote_listener string SYS@halberddg1>alter system set local_listener='(ADDRESS=(PROTOCAL=TCP)(HOST=10.1.10.131)(PORT=1521))'; System altered. SYS@halberddg1> SYS@halberddg1> SYS@halberddg1> show parameter list NAME TYPE VALUE -------------------- ------ ------------------------------ listener_networks string local_listener string (ADDRESS=(PROTOCAL=TCP)(HOST=1 0.1.61.131)(PORT=1521)) remote_listener string SYS@halberddg1> exit # 修改監聽配置文件(listener.ora),將global_dbname(halberd 改為halberddg1) 部分內容如下: (GLOBAL_DBNAME = halberddg1) (ORACLE_HOME=/tpsys/app/oracle/product/12.1.0.2/dbhome_1) (SID_NAME=halberddg1)
Created: 2019-12-22 Sun 13:19