一 前言
1、一次华丽的oracle数据库宕机事件,首先监听与服务均正常启动着,所有的连接显示TNC错误,但sqlplus正常连接,无法登录用户。
2、sqlplus/nolog 重启数据库,显示ORA-00119和ORA-00132错误,打开oracle日志显示未找到 'LISENER-XXXX'。
3、so综上 监听服务为何配置出现错误导致数据库无法连接,重启数据库服务也开启不了对应监听服务。
二 方案
重新配置监听
1、使用oracle管理工具(Net Configuration Assistant)进行配置监听(略)
2、修改监听配置文件
(1)查看监听配置文件并备份
安装目录:{请根据安装配置路径寻找}
D:\app\product\11.2.0\server\NETWORK\ADMIN
server为oracle主目录不同安装环境不一样
需要修改的配置文件:
listener.ora 监听配置文件(服务器)
tnsnames.ora 监听命名配置文件(客户端)
listener.ora模板
##sid配置(不使用sid 可去除)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\app\oracle\product\11.2.0\server)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\app\oracle\product\11.2.0\server)
(PROGRAM = extproc)
)
)
##本地监听配置
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
##本地ipc协议配置 可去除
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
##关键配置
(ADDRESS = (PROTOCOL = TCP)(HOST = '计算机全名')(PORT = 1521))
)
)
DEFAULT_SERVICE_LISTENER = (XE)
##计算机全名获取方式: 桌面-》我的电脑-》右击属性-》计算机名、域或工作组设置-》计算机名##
##DEFAULT_SERVICE_LISTENER = (XE) 不知具体作用##
tnsnames.ora模板
##远程sid注册配置(可去去除)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
##远程服务注册
XE_LISTENER=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 目标计算机全名or目标ip )(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
## XE_LISTENER为客户端监听名(可自定义) XE为服务名 ##
## 远程服务注册中 当服务与客户端同一主机时可使用计算机全名##
(2)按照配置检查并修改上述配置文件
1 window + R 打开 services.msc (服务列表)
2 重启OracleServiceXE (服务先重启)
3 重启OracleXETNSListener (监听后重启)
4 window + R 打开 cmd
5 sqlplus/no log
6 startup
##XE为tnsnames.ora 中servername##
##有许多数据库名字为ORCL##
cms提示实例已经重启即可