Linux下oracle数据库连接问题

来源:互联网 发布:虚拟炒股软件 编辑:程序博客网 时间:2024/05/17 15:39

早阵子在centos下装好了oracle数据库 参考这篇 ,但是连接的时候出了问题

问题描述:
linux主机监听程序已经启动 如下信息

[root@template10 ~]# lsnrctl statusLSNRCTL for Linux: Version 11.2.0.1.0 - Production on 07-6月 -2016 17:54:27Copyright (c) 1991, 2009, Oracle.  All rights reserved.正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=template10)(PORT=1521)))LISTENER 的 STATUS------------------------别名                      LISTENER版本                      TNSLSNR for Linux: Version 11.2.0.1.0 - Production启动日期                  07-6月 -2016 17:51:21正常运行时间              00 小时 35 秒跟踪级别                  off安全性                    ON: Local OS AuthenticationSNMP                      OFF监听程序参数文件          /data/app/oracle/product/11.2.0/network/admin/listener.ora监听程序日志文件          /data/app/oracle/diag/tnslsnr/template10/listener/alert/log.xml监听端点概要...  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))服务摘要..服务 "orcl11g" 包含 1 个实例。  实例 "orcl11g", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执行成功[root@template10 ~]# netstat -apn |grep 1521tcp        0      0 :::1521                     :::*                        LISTEN      2203/tnslsnr        tcp        0      0 ::ffff:127.0.0.1:1521       ::ffff:127.0.0.1:64758      TIME_WAIT   -                   tcp        0      0 ::ffff:127.0.0.1:1521       ::ffff:127.0.0.1:64737      TIME_WAIT   -                   [root@template10 ~]# /etc/init.d/iptables stop

客户端:
C:\Users\Administrator>telnet 112.xx.xx.xx 1521
正在连接112.xx.xx.xx…无法打开到主机的连接。 在端口 1521: 连接失败

注:telnet win7下默认不可用需要开启
能ping通 112.xx.xxx.xx

112.xx.xx.xx 为服务器IP 地址栏访问时nginx主页

连接时 ORA-12541: TNS: 无监听程序

晚点研究

如果有童靴遇到过解决了还望告知 不甚感激!

连接centos下oracle数据库
远程连接linux下oracle数据库
linux下数据库允许远程连接
linux下oracle数据库监听开启防火墙关闭但无法连接提示 ORA-12541: TNS: 无监听程序
连接远程linux服务器下oracle数据库 ORA-12541: TNS: 无监听程序
以上是换了又换的搜索关键字

百度到
问题在于listener.ora文件 admin 用户没有读权限

修改了listener.ora文件 权限 问题依旧

又有说listener.ora文件 host 改为计算机名 改了以后 问题依旧

还是得从问题根源入手
百度到Oracle三个配置文件 listener.ora 、sqlnet.ora 、tnsnames.ora 区别
1. sqlnet.ora—– 作用类似于linux 或者其他unix 的nsswitch.conf 文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串。
例如我们客户端输入
sqlplus sys/oracle@orcl
假如我的sqlnet.ora 是下面这个样子
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)
那么,客户端就会首先在tnsnames.ora 文件中找orcl 的记录. 如果没有相应的记录则尝试把orcl 当作一个主机名,通过网络的途径去解析它的 ip 地址然后去连接这个ip 上GLOBAL_DBNAME=orcl 这个实例,当然我这里orcl 并不是一个主机名
如果我是这个样子
NAMES.DIRECTORY_PATH= (TNSNAMES)
那么客户端就只会从tnsnames.ora 查找orcl 的记录, 括号中还有其他选项,如LDAP 等并不常用。

刚刚服务器上登陆的是莫名其妙

ORA-01031: insufficient privileges

之前一直是好的。这期间只改了admin下的两个配置文件。而且改之前是备份了的。恢复备份之后报这个错。检查了权限问题。

[oracle@template10 root]$ llls: 无法打开目录.: 权限不够[oracle@template10 root]$ cd ~[oracle@template10 ~]$ ll总用量 4drwxrwxrwx 2 oracle dba 4096 66 15:13 response[oracle@template10 ~]$ sqlplus /nologSQL*Plus: Release 11.2.0.1.0 Production on 星期二 67 22:14:21 2016Copyright (c) 1982, 2009, Oracle.  All rights reserved.SQL> connect sys as sysdba     输入口令: 已连接到空闲例程。SQL> 

难道是因为不在oracle用户的目录下执行的连接?? 不应该啊,再试了下不管在哪个目录切换到oracle用户都可以连接了 期间只是重启了两次服务器 可能是改了listener.ora么

参考这篇

Tnsnames.ora中对应service_name ,SQLPLUS>;show parameter service_name; 进行查看
改成了

[root@template10 admin]# vim tnsnames.ora # tnsnames.ora Network Configuration File: /data/app/oracle/product/11.2.0/network/admin/tnsnames.ora# Generated by Oracle configuration tools.#LISTENER_ORCL =#  (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))orcl=  (DESCRIPTION=    (ADDRESS=(PROTOCOL=TPC)(HOST=template10)(PORT=1521)(KEY=EXTPROC1521))    (CONNECT_DATA=      (SERVER = DEDICATED)      (SERVICE_NAME=orcl11g.us.oracle.com)    )  )

template10 是我改的主机名

想不通的是linux服务器防火墙都关了。联通云门户里面安全组规则也开放了1521端口。Windows下telent 连接
无法打开到主机的连接。 在端口 1521: 连接失败 1521端口无法访问
这是为什么呢?或许解决了这个问题,问题就解决了!

今天终于解决这个问题了和昨天猜想的一样!
联通云门户里开放1521端口还需要在路由上配置转发!这是关键的地方!其实早应该想到的!究其原因还是因为对云主机的不熟悉。不管怎样当看到下面这个场景还是很激动的!毕竟难忘的经历折腾了好久。
这里写图片描述

最后贴一下服务器上的配置。 template10 是改了后的主机名 为什么改名是因为云主机的主机名是一样的。百度到说无监听是因为listener.ora 文件中Host值不为主机名。那个0.0.0.0:1521和127.0.0.1:1521有影响的文章。好像都是转的同一篇的。具体也不知道是不是真的有影响。
如何修改linux主机名顺便说一下

[root@template10 admin]# vi /etc/sysconfig/networkNETWORKING=yesHOSTNAME=template10  改成你想要的名字

还要改host文件。一开始我也不知道linux的host文件在哪里。可能很多初学者都不知道。值得说一下 linux下的host文件位置 /etc/hosts

[root@template10 admin]# vi /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  template10 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6~        

template10 加上。reboot 重启一下 hostname 查看主机名

[root@template10 admin]# hostnametemplate10

改名结束

listener.ora 文件

[root@template10 admin]# cd /data/app/oracle/product/11.2.0/network/admin/[root@template10 admin]# vim listener.ora ADR_BASE_LISTENER = /data/app/oracleSID_LIST_LISTENER=  (SID_LIST=    (SID_DESC=      (SID_NAME=orcl11g)      (ORACLE_HOME=/data/app/oracle/product/11.2.0)      (GLOBAL_DBNAME = orcl11g)    )  )LISTENER =  (DESCRIPTION=    (ADDRESS=(PROTOCOL=TCP)(HOST=template10)(PORT=1521))  )~        

tnsnames.ora 文件

[root@template10 admin]# vim tnsnames.ora   6n# tnsnames.ora Network Configuration File: /data/app/oracle/product/11.2.0/network/admin/tnsnames.ora# Generated by Oracle configuration tools.#LISTENER_ORCL =#  (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))orcl=  (DESCRIPTION=    (ADDRESS=(PROTOCOL=TPC)(HOST=template10)(PORT=1521)(KEY=EXTPROC1521))    (CONNECT_DATA=      (SERVER = DEDICATED)      (SERVICE_NAME=orcl11g.us.oracle.com)    )  )orcl11g=  (DESCRIPTION=    (ADDRESS=(PROTOCOL=TPC)(HOST=template10)(PORT=1521)(KEY=EXTPROC1521))    (CONNECT_DATA=      (SERVER = DEDICATED)      (SERVICE_NAME=orcl11g)    )  )~                                                                                                                                  ~         

sqlnet.ora 文件

[root@template10 admin]# vim sqlnet.ora # sqlnet.ora Network Configuration File: /data/app/oracle/product/11.2.0/network/admin/sqlnet.ora# Generated by Oracle configuration tools.#NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)#sqlnet.authentication_services=(NONE)#SQLNET.AUTHENTICATION_SERVICES=(ALL) #这里说什么linux下要设置成ALL 或者不设置#REMOTE_LOGIN_PASSWORDFILE=(exclusive)ADR_BASE = /data/app/oracle

ps昨天发现有某网站赤裸裸抄袭我这篇还没完成的博客阅读量还很大。汗颜!有些错误信息我会更正后更新博客。希望早期不成熟的经历过程不要误导他人。博主也是本着乐于分享的精神仅供参考,希望有帮助到遇到类似问题的童鞋,不要像我一样瞎折腾,能少走弯路!

0 0