欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

linux centOs中安装好数据库,客户端用plsql连接oracle

程序员文章站 2022-07-28 22:06:27
原创作品,转载请在文章显眼位置注明出处:https://www.cnblogs.com/sunshine5683/p/10030375.html 首先,回顾上篇 CenOs7安装oracle图文详细过程(02) ,安装好oracle后再服务器端使用sqlplus访问数据库成功,后来客户机访问并没有测 ......

 

原创作品,转载请在文章显眼位置注明出处: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:实例名

 

接着查看实例名:然后填在相应的位置

 linux centOs中安装好数据库,客户端用plsql连接oracle

 为了一行显示,设置行宽

linux centOs中安装好数据库,客户端用plsql连接oracle

linux centOs中安装好数据库,客户端用plsql连接oracle

 

然后退出配置程序,查看监听状态,可以看到监听服务正常

linux centOs中安装好数据库,客户端用plsql连接oracle

此时使用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:无监听程序,此时重启监听

linux centOs中安装好数据库,客户端用plsql连接oracle

然后使用plsql登录,正常登录

linux centOs中安装好数据库,客户端用plsql连接oracle

 

使用tnsping 服务名,正常,不再超时

linux centOs中安装好数据库,客户端用plsql连接oracle

 

到此,客户端连接数据库问题已经全部解决!

附加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 命令无法执行,具体原因还不知道,但是切换用户时候加"-"问题解决,所以此次也列出来了。

linux centOs中安装好数据库,客户端用plsql连接oracle

 

到此,问题全部解决!