ORACLE给出01729解决方案(oracle_01729)
ORACLE给出01729解决方案
ORACLE数据库在日常使用过程中会出现各种错误,其中错误代码01729是比较常见的一个错误,该错误提示数据库连接“listener”无法监听到来自客户端的请求。对于使用ORACLE数据库的开发者们,了解该错误及其解决方案显得尤为重要。
错误01729的原因有很多,比如网络问题、IP地址变化、端口号变化、防火墙等。以下是一些解决方案:
1. 检查目标数据库实例是否在监听器监听的清单里。
检查监听器监听的清单:
$ lsnrctl status
检查监听器监听的数据库实例和端口:
$ lsnrctl services
如果目标数据库实例不在监听器清单里面,那么需将其手动添加。
LISTENER =
(DESCRIPTION_LIST = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) )
)SID_LIST_LISTENER =
(SID_LIST = (SID_DESC =
(SID_NAME = PLSExtProc) (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:${ORACLE_HOME}/bin/oracle:${ORACLE_HOME}/lib:${ORACLE_HOME}/jlib")
) (SID_DESC=
(GLOBAL_DBNAME=sales.us.acme.edu) (SID_NAME=test)
(ORACLE_HOME=/u02/oracle/product/8.1.7) )
)
上述代码中的GLOBAL_DBNAME=sales.us.acme.edu为该数据库的别名。
重启监听器使设置生效:
$ lsnrctl stop
$ lsnrctl start
2. 确保数据库实例、 listener和客户端之间网络连接正常。
如果是网络连接问题,则需要保证监听器和客户端之间的网络连接正常。可通过以下命令测试数据库服务器的端口:
$ telnet
如果无法连接,则检查防火墙设置、IP地址变化等是否造成该错误。需要注意的是,在进行以上操作时,需要保证所有有关的服务均已启动。
3. 检查监听器端口是否被占用。
监听器监听的端口被占用同样也是引起该错误的一个原因。可以使用以下命令检查端口是否被占用:
$ netstat -an | grep
如果该端口已被占用,则将该端口更改为其他可用的端口,并更新应用程序配置文件、listener.ora文件和tnsnames.ora文件,重启监听器。
4. 确保数据库实例和监听器服务在运行状态。
如果数据库实例和监听器服务未能正常运行,则将无法连接到数据库,从而出现01729错误。使用以下命令检查数据库实例是否在运行状态:
$ ps -ef | grep ora_
使用以下命令检查监听器服务是否在运行状态:
$ lsnrctl status
如果服务未能正常运行,使用以下命令启动服务:
$ sqlplus '/ as sysdba'
SQL> startupSQL> exit
$ lsnrctl start
处理01729错误需要针对性地对相关因素进行排查。以上提供的几种解决方案仅供参考,实际场景应根据个人情况作出相应的调整和判断。