问题场景:在工作中开始两台电脑单机开发,后面由于有条件就决定将两台电脑通过一根网线组成一个局域络。于是分别在两台电脑分别设置ip地址。设置ip地址之后电脑重新启动后数据库通过dbvisual工具连接不上,但在命令行能够正常连接。
分析过程:查看所有服务发现该启动的服务都启动了,使用lsnrctl status查看监听状态也正常,从正常连接到非正常连接两种状态唯一的区别就是ip地址从单机状态变成了手动设置。于是我尝试着把掉网线重新把oracle的关键服务重新启动。这样尝试之后发现可以连接成功。于是插上网线继续重新启动服务,发现又连接不上了。经过多次尝试,问题总结为每次重新启动服务或者重新电脑之后又不能连接。重新新建监听之后,数据库又可以连接了,
解决过程:
一、使用NET CONFIGURATION ASSISTANT删除原来的LISTENER,然后重新配置一个LISTENER即可。
注意:需要把原来的监听删除,在新建一个,而不是更新监听。
二、重启数据库服务
三、将TNSNAME.ORA LISTENER.ORA两个问题的host都改成计算机名。文件目录 (F:\oracle\product\10.2.0\db_1\NETWORK\ADMIN)
注意事项:在解决过程中,重启数据库服务或者重启电脑之后不要立即连接数据库,因为数据库服务的启动也需要时间。如果在数据库没有完全启动之前就连接发现连接不上,可能会影响对问题,或者解决方案的错误判断。
知识扩展:oracle安装之后有7个服务它们分别是:
Oracle ORCL VSS Writer Service:Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service)能够让存储基础设备(比如磁盘,阵列等)创建高保真的时间点映像,即映射拷贝(shadow copy)。它可以在多卷或者单个卷上创建映射拷贝,同时不会影响到系统的系统能。(非必须启动)
OracleDBConsoleorcl:Oracle数据库控制台服务,orcl是Oracle的实例标识,默认的实例为orcl。在运行Enterprise Manager(企业管理器OEM)的时候,需要启动这个服务。(非必须启动)
OracleJobSchedulerORCL:Oracle作业调度(定时器)服务,ORCL是Oracle实例标识。(非必须启动)
OracleMTSRecoveryService:服务端控制。该服务允许数据库充当一个微软事务服务器MTS、COM/COM+对象和分布式环境下的事务的资源管理器。(非必须启动)
OracleOraDb11g_home1ClrAgent:Oracle数据库.NET扩展服务的一部分。 (非必须启动)
OracleOraDb11g_home1TNSListener:监听器服务,服务只有在数据库需要远程访问的时候才需要。(非必须启动,下面会有详细详解)。
OracleServiceORCL:数据库服务(数据库实例),是Oracle核心服务该服务,是数据库启动的基础, 只有该服务启动,Oracle数据库才能正常启动。(必须启动)
来源:oschina
链接:https://my.oschina.net/u/1581846/blog/649516