Linux下oracle数据库连接问题
2016-06-07 18:10
429 查看
早阵子在centos下装好了oracle数据库 参考这篇 ,但是连接的时候出了问题
问题描述:
linux主机监听程序已经启动 如下信息
客户端:
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 等并不常用。
刚刚服务器上登陆的是莫名其妙
之前一直是好的。这期间只改了admin下的两个配置文件。而且改之前是备份了的。恢复备份之后报这个错。检查了权限问题。
难道是因为不在oracle用户的目录下执行的连接?? 不应该啊,再试了下不管在哪个目录切换到oracle用户都可以连接了 期间只是重启了两次服务器 可能是改了listener.ora么
参考这篇
Tnsnames.ora中对应service_name ,SQLPLUS>;show parameter service_name; 进行查看
改成了
template10 是我改的主机名
想不通的是linux服务器防火墙都关了。联通云门户里面安全组规则也开放了1521端口。Windows下telent 连接
无法打开到主机的连接。 在端口 1521: 连接失败 1521端口无法访问
这是为什么呢?或许解决了这个问题,问题就解决了!
今天终于解决这个问题了和昨天猜想的一样!
联通云门户里开放1521端口还需要在路由上配置转发!这是关键的地方!其实早应该想到的!究其原因还是因为对云主机的不熟悉。不管怎样当看到下面这个场景还是很激动的!毕竟难忘的经历折腾了好久。
最后贴一下服务器上的配置。 template10 是改了后的主机名 为什么改名是因为云主机的主机名是一样的。百度到说无监听是因为listener.ora 文件中Host值不为主机名。那个0.0.0.0:1521和127.0.0.1:1521有影响的文章。好像都是转的同一篇的。具体也不知道是不是真的有影响。
如何修改linux主机名顺便说一下
还要改host文件。一开始我也不知道linux的host文件在哪里。可能很多初学者都不知道。值得说一下 linux下的host文件位置 /etc/hosts
template10 加上。reboot 重启一下 hostname 查看主机名
改名结束
listener.ora 文件
tnsnames.ora 文件
sqlnet.ora 文件
ps昨天发现有某网站赤裸裸抄袭我这篇还没完成的博客阅读量还很大。汗颜!有些错误信息我会更正后更新博客。希望早期不成熟的经历过程不要误导他人。博主也是本着乐于分享的精神仅供参考,希望有帮助到遇到类似问题的童鞋,不要像我一样瞎折腾,能少走弯路!
问题描述:
linux主机监听程序已经启动 如下信息
[root@template10 ~]# lsnrctl status LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 07-6月 -2016 17:54:27 Copyright (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 正常运行时间 0 天 0 小时 3 分 5 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP 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 1521 tcp 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]$ ll ls: 无法打开目录.: 权限不够 [oracle@template10 root]$ cd ~ [oracle@template10 ~]$ ll 总用量 4 drwxrwxrwx 2 oracle dba 4096 6月 6 15:13 response [oracle@template10 ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on 星期二 6月 7 22:14:21 2016 Copyright (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/t nsnames.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/network NETWORKING=yes HOSTNAME=template10 改成你想要的名字
还要改host文件。一开始我也不知道linux的host文件在哪里。可能很多初学者都不知道。值得说一下 linux下的host文件位置 /etc/hosts
[root@template10 admin]# vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 template10 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 ~
template10 加上。reboot 重启一下 hostname 查看主机名
[root@template10 admin]# hostname template10
改名结束
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/oracle SID_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昨天发现有某网站赤裸裸抄袭我这篇还没完成的博客阅读量还很大。汗颜!有些错误信息我会更正后更新博客。希望早期不成熟的经历过程不要误导他人。博主也是本着乐于分享的精神仅供参考,希望有帮助到遇到类似问题的童鞋,不要像我一样瞎折腾,能少走弯路!
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- Centos6 编译安装Python
- 数据库链接字符串查询网站
- Oracle Containers for J2EE远程安全漏洞(CVE-2014-0413)
- 硬盘安装CentOS 6.2以及添加GRUB启动菜单
- Oracle 10g R2不能使用EM的问题
- 表空间操作
- CentOS 6.2实战部署Nginx+MySQL+PHP
- PreparedStatement中in子句的处理
- VMware下RedHat4.8_64位安装Oracle 10g RAC--简略脚本
- oracle sql日期比较
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- DB2实例管理
- DB2实例管理
- OS block size和Oracle block size,查找OS Blocksize的方法