原创作品,转载请在文章显眼位置注明出处:https://www.cnblogs.com/sunshine5683/p/10030375.html
首先,回顾上篇 CenOs7安装oracle图文详细过程(02) ,安装好oracle后再服务器端使用sqlplus访问数据库成功,后来客户机访问并没有测试,接下来就接着,继续学习客户机端连接数据库,过程中同样遇到很多问题,因为是边学边弄,所以可谓是一步一个坎!
一、在客户端安装oracle客户端,我这里服务器在虚拟机上,操作系统是linux,服务器是11g,客户端在Windowsserver2008R2上,版本9i
1、首先在客户机上安装plsql(过程简单,省略)
2、在客户机上安装oracle9i(过程简单,省略),并配置好监听程序
3、启动plsql,连接服务器出现ora-12541 TNS:无监听程序,此处解决方法:
在数据库服务器查看监听服务状态 [oracle@xhq ~]$ lsnrctl status: 显示监听服务,如下
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=adrep)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services --------------------------------------------------------------------->没有监听服务
The command completed successfully
然后在服务器主机上使用命令 netmgr调出配置监听界面,重新配置监听,其中
Global Database Name :数据库名
oracle home directory:安装目录,自动加载,可选择
SID:实例名
接着查看实例名:然后填在相应的位置
为了一行显示,设置行宽
然后退出配置程序,查看监听状态,可以看到监听服务正常
此时使用plsql连接,还是报ora-12541 TNS:无监听程序异常,查阅资料,是防火墙没关,tnsping 实例名(客户端监听配置的名字),同样显示超时然后关闭防火墙:
得知centos从7开始默认用的是firewalld,这个是基于iptables的,虽然有iptables的核心,但是iptables的服务是没安装的。所以只要停止firewalld服务即可:
# sudo systemctl stop firewalld.service && sudo systemctl disable firewalld.service
然后使用plsql连接,显示无监听程序ORA-12541:TNS:无监听程序,此时重启监听
然后使用plsql登录,正常登录
使用tnsping 服务名,正常,不再超时
到此,客户端连接数据库问题已经全部解决!
附加1:
上面关闭防火墙由于使用的不是iptables,如果要改用iptables的话,需要安装iptables服务:
sudo yum install iptables-services
sudo systemctl enable iptables && sudo systemctl enable ip6tables
sudo systemctl start iptables && sudo systemctl start ip6tables
接下来在思考如何不关闭防火墙来连接服务器,还望各位路过的大神指点!
附加2:
在用户之间切换时候注意加 “-”,如su - oracle,如果直接使用su oracle ,导致使用使用lsnrctl status 命令无法执行,具体原因还不知道,但是切换用户时候加"-"问题解决,所以此次也列出来了。
到此,问题全部解决!