Oracle连接中的SERVICE_NAME到底是指的什么?是服务器名称吗,还是建立数据库时候的命名,还是什么?

542601362 2014-03-19 06:22:05
之前一直在用sql server数据库,Oracle之前没有用过,今天在做一个功能就是我的一个.net网站想与一个Oracle数据库做连接,Oracle数据库在其他服务器上,我现在用Navicat for Oracle软件可以连接到Oracle数据库,我想着想用C#程序与Oracle数据库做连接,连接时候发现了一些问题:

问1:Oracle连接中的SERVICE_NAME到底是指的什么?是服务器名称吗,还是建立数据库时候的命名,还是什么?

问2:错误提示1:ORA-12504: TNS: 监听程序在 CONNECT_DATA 中未获得 SERVICE_NAME,下图:

源代码:


问3:用其他的软件连接:


问4:网站说我用下面的代码可以获得到SERVICE_NAME,但是两个代码获得的一个是大写一个是小写,不知道是否没区别。这个获得到的是真实的数据库服务器端的SERVICE_NAME吗?



问5:下图:


问6:我服务器上安装了下图的软件,安装这些软件是否可以满足我的需求呢,需求就是.net网站要跟新远程服务器上的Oracle数据库。







问题有点多,希望高人指点,感激不尽!



...全文
56437 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
542601362 2014-03-20
  • 打赏
  • 举报
回复
引用 13 楼 hidanger521 的回复:
[quote=引用 12 楼 z542601362 的回复:] [quote=引用 7 楼 sych888 的回复:] 在客户端配置TNSNAME 监听在服务端启动,是用来监听客户端发起的连接请求的
我如果可以用Navicat for Oracle软件连接到数据库,可以说明服务器端的监听已经开启了吗?[/quote] 其他软件能连接,证明服务器是正常的。。 主机字符串里面写,192.168.1.119:1521/orcl[/quote] 非常感谢提醒,数据库连接的字符串应该写:Data Source=192.168.1.119:1521/orcl; 主机字符串直接写:SERVICE_NAME中配置的一个名称就可以了,终于成功了。感谢。 还要提醒大家一下,如果后安装Oracle9i客户端精简版就会把Navicat for Oracle软件弄的不能用,提示:ORA-12705: Cannot access NLS data files or invalid environment specified 错误 。 网站说去修改注册表里 /HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE ,但是我服务器上根本找不到这个注册表,原因应该就是我先安装的ODTwithODAC11,后来有安装Oracle9i客户端精简版造成的注册表信息变化。   先装了数据库,用net调试的时候没有问题,但是生成网站后,在连接数据库的时候提示说客户端的版本太低(意思就是这个),后又装了一个9i的客户端,之后就把相关服务改成手动,N天之后发现数据库不能正常启动。错误的根源是在不论在安装精简客户端还是服务器端时都会在注册表中添加一些信息,   1、当先安装精简客户端尔后又装服务器端时不会有问题出现,不过精简客户端此时已不再管用。所有的tnsname都以服务器安装的路径为主。   2、但是把顺序反过来就会有错,特别是当者不在相同的目录下的时候。因为此时注册表信息已发生的改变。HKEY_LOCAL_MANCHINE\SOFTWARE\ORACLE,当你把精简客户端卸载的时候这个目录项会被删除。
流浪川 2014-03-19
  • 打赏
  • 举报
回复
引用 12 楼 z542601362 的回复:
[quote=引用 7 楼 sych888 的回复:] 在客户端配置TNSNAME 监听在服务端启动,是用来监听客户端发起的连接请求的
我如果可以用Navicat for Oracle软件连接到数据库,可以说明服务器端的监听已经开启了吗?[/quote] 其他软件能连接,证明服务器是正常的。。 主机字符串里面写,192.168.1.119:1521/orcl
542601362 2014-03-19
  • 打赏
  • 举报
回复
引用 7 楼 sych888 的回复:
在客户端配置TNSNAME 监听在服务端启动,是用来监听客户端发起的连接请求的
我如果可以用Navicat for Oracle软件连接到数据库,可以说明服务器端的监听已经开启了吗?
542601362 2014-03-19
  • 打赏
  • 举报
回复
引用 9 楼 hidanger521 的回复:
[quote=引用 5 楼 z542601362 的回复:] 还有个问题是我没有在我的服务器上安装oracle 服务端,也没有网上说的listener.ora文件,不知道会不会有影响。
只有服务器短有监听。。客户端不需要监听。。 客户端就是通过监听程序才到服务器的。。 所以我们在连接数据库时候,配置的server name。需要指定端口。。这个端口就是监听的端口。。 比如说,192.168.168.168:1521/sid 意思就是我要连接168这台机器上的sid数据库,通过1521端口进入。。[/quote] 不知道你是否用过这个软件(下图),我现在用Navicat for Oracle软件输入连接信息后是可以正常连接上的,但是用这个软件就一直提示这个错误(下图), 下面是tnsnames.ora中的配置信息,ip肯定是正确的,SERVICE_NAME = orcl我不确定是否正确,也试过大写的ORCL,我用Navicat for Oracle软件连接数据库后,执行两个查询语句select instance_name from v$instance; select name from v$database;返回的是orcl 和 ORCL 。 # TNSNAMES.ORA Network Configuration File: C:\oracle\ora90\network\admin\tnsnames.ora # Generated by Oracle configuration tools. #sample #DATABASENAME = # (DESCRIPTION = # (ADDRESS_LIST = # (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) # ) # (CONNECT_DATA = # (SERVICE_NAME = servicename) # ) # ) ORACLE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.119)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) ORACLEBCV = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.119)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) REPORT = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.119)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) )
CT_LXL 2014-03-19
  • 打赏
  • 举报
回复
引用 4 楼 z542601362 的回复:
[quote=引用 1 楼 zlloct 的回复:] [quote=引用 楼主 z542601362 的回复:] 问题有点多,希望高人指点,感激不尽!
service_name 为orcl, 你TNS文件中定义的服务名为ORACLE,尝试连接ORACLE试试 [/quote] 如何尝试链接ORACLE呢?之前没用过ORACLE,不知道你说的是什么意思。[/quote] 你在TNS文件中定义的服务名字就叫ORACLE啊,所以你直接TNSPING ORACLE,系统会指定到你定义的服务名ORACLE所对应的实例名orcl,其实就是一个域名解析的过程啊
流浪川 2014-03-19
  • 打赏
  • 举报
回复
引用 5 楼 z542601362 的回复:
还有个问题是我没有在我的服务器上安装oracle 服务端,也没有网上说的listener.ora文件,不知道会不会有影响。
只有服务器短有监听。。客户端不需要监听。。 客户端就是通过监听程序才到服务器的。。 所以我们在连接数据库时候,配置的server name。需要指定端口。。这个端口就是监听的端口。。 比如说,192.168.168.168:1521/sid 意思就是我要连接168这台机器上的sid数据库,通过1521端口进入。。
sych888 2014-03-19
  • 打赏
  • 举报
回复
http://blog.chinaunix.net/uid-22864942-id-113496.html
sych888 2014-03-19
  • 打赏
  • 举报
回复
在客户端配置TNSNAME 监听在服务端启动,是用来监听客户端发起的连接请求的
流浪川 2014-03-19
  • 打赏
  • 举报
回复
tnsnames配置的名字。 ip:端口/sid 主机名:端口/sid
542601362 2014-03-19
  • 打赏
  • 举报
回复
还有个问题是我没有在我的服务器上安装oracle 服务端,也没有网上说的listener.ora文件,不知道会不会有影响。
542601362 2014-03-19
  • 打赏
  • 举报
回复
引用 1 楼 zlloct 的回复:
[quote=引用 楼主 z542601362 的回复:] 问题有点多,希望高人指点,感激不尽!
service_name 为orcl, 你TNS文件中定义的服务名为ORACLE,尝试连接ORACLE试试 [/quote] 如何尝试链接ORACLE呢?之前没用过ORACLE,不知道你说的是什么意思。
542601362 2014-03-19
  • 打赏
  • 举报
回复
引用 1 楼 zlloct 的回复:
[quote=引用 楼主 z542601362 的回复:] 问题有点多,希望高人指点,感激不尽!
service_name 为orcl, 你TNS文件中定义的服务名为ORACLE,尝试连接ORACLE试试 [/quote] ORACLE数据库是在其他服务器上,我是想连接上面的数据库,这个命令是不是要在ORACLE的服务器上去执行啊?我登陆不了哪台服务器,我目前只能用Navicat for Oracle软件连接上。
gleiyu 2014-03-19
  • 打赏
  • 举报
回复
建立数据库时候有个SID的,这个SID可以配置多个服务名。 看楼主的SID应该是ORCL,用命令tnsping orcl看下
CT_LXL 2014-03-19
  • 打赏
  • 举报
回复
引用 楼主 z542601362 的回复:
问题有点多,希望高人指点,感激不尽!
service_name 为orcl, 你TNS文件中定义的服务名为ORACLE,尝试连接ORACLE试试

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧