Oracle数据库的安装和Oracle Client的安装都比较简单,但是我在安装完了之后出现了连接问题,无论怎么配置Net Configuration Assistant和Net Manger都无法解决。
我的解决思路:
1.客户端如何连接服务端:既然采用的是C/S模式,肯定要校对服务端和客户端的配置是否是否一致。
2.和连接相关的配置文件:服务端的配置文件默认放在dbhom_1(数据库的主目录)\NETWORK\ADMIN下,是listener.ora;而客户端的配置文件类似,放在client_1(客户端的主目录)\network\admin下,是tnsname.ora,和sqlnet.ora。如果出现文件缺失,可以在同一文件夹下的example中复制一份模板,然后更改。要是权限不允许,右击文件属性,在安全栏下编辑文件的操作权限为完全控制。
3.如何配置:一种配置方式就是用Net Configuration Assistant和Net Manger这两个工具,不过我是先用的工具,修改无果就直接修改的文件。其实主要校对主机名,到底是loclhost、127.0.0.1、还是自己主机的ip。
//服务端的listener.ora
SID_LIST_LISTENER = //这里的配置可以在服务端的Net Manger中的监听一栏中看到
(SID_LIST =
(SID_DESC = //第一个实例
(GLOBAL_DBNAME = 你自己的数据库的名字) //是服务端的全名
(ORACLE_HOME = D:\oracle11g\oracle_server\product\11.2.0\dbhome_1) //主目录
(SID_NAME = ORCL)
)
(SID_DESC = //第二个实例
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\oracle11g\oracle_server\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\oracle11g\oracle_server\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
)
LISTENER = //监听的地址
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 这里非常重要 )(PORT = 1521)) //非常主要的就是HOST,一定要记住,等会客户端也要用到这里
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
==========================================================================================================================
//client的tnsname.ora
ORCL = //服务
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 这里很重要)(PORT = 1521)) //这里的host一定要和服务端listener处的host保持一致。
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 你自己数据库的名字) //这里要和服务端的一样
)
)
我的host就是出现了不一致的问题,不过改过来就好了。
开始并不知道到底是客户端没配置好,还是服务端没配置好,于是在cmd下用了几个命令检测:
1.lsnrctl 进入界面,输入status查看了服务端的监听状况,services看监听进程的状况。里面还有其他指令,help可以查看这些指令。
2.tnsping orcl(我配置的服务名,上面的Client的tnsname.ora可以看到),若是不成功,就会报错;成功会有如下显示
已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 你自己的host)(PORT =
1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = 你自己数据的全名)))
OK (20 毫秒)
注意:建议还是使用localhost,因为如果改成(自己主机的ip,或是主机名),那样https://localhost:1588/em登陆就会出现问题。所以建议还是使用localhost。