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数据库。







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



...全文
56514 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试试
instantclient-basic-windows.x64-11.2.0.3.0.zip
解压到任意目录,在这个目录下建立NETWORK文件夹,接着再这个文件夹下再建立ADMIN文件夹,然后建立tnsnames.ora文件,内容如下: ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) 第一行 ORCL = ,ORCL是服务命名,可以随便定义 第四行 HOST = 127.0.0.1 是要访问数据库的主机名,PORT = 1521 是要访问数据库的端口号 第八行 SERVICE_NAME = orcl 是要访问数据库的服务名,一般是数据库名 这里根据自己的实际情况配置。接着打开PL/SQL,在perference->Connection里面设置OCI Library和Oracle_Home,我的设置是OCI Library=c:\oracleclient\oci.dll,Oracle_Home=c:\oracleclient,c:\oracleclient是刚才解压缩Instant Client的目录 还有最后一个问题,需要设置一个字符集,这样查询出来的数据才不会是乱码,写一个批处理pldev. bat放到pl安装目录下,内容如下: set NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK start PLSQLDev.exe 这个字符集,的是服务器端的字符集,请根据实际情况配置。附查询数据库字符集SQL:select userenv('language') from dual 最后,只要双击这个批处理,再填写帐号和密码就可以了 也可以在电脑里设置NLS_LANG环境变量,就不需要每次都要执行批处理文件
Oracle jdbc连接字符串的方法,官网真香 搞懂Oracle数据库SID 和 SERVICE NAME的区别
SID是Oracle实例名 由初始化参数文件的参数 instance_name决定,但是如果不被定【instance_name没有被定为任何值】,所以实例名称ORACLE_SID决定。 SERVICE_NAME的是listener的全局数据库名:这个名字是由listener.oraGLOBAL_DBNAME参数决定的。这个名字代表的是客户端连接数据库时,tnsnames.oraservice_name参数所对应的值 jdbc连接字符串如何书写:可以用SID,也可以用SERVICE_NAM
oracle服务名地址,Oracle SERVICE_NAME, SID和schema区别
1.SID是Oracle实例名,实例名的是用于响应某个数据库操作的数据库管理系统的名称。实例名是由初始化参数文件的参数instance_name决定的。如果这个参数不被定(即instance_name没有被定为任何值),那么实例的名字由该用户的环境变量ORACLE_SID(注意这里是大写)决定。在windows平台下,则是注册表oracle_sid值决定。SID是Oracle实例的唯一名称...
Oracle db_name / service_name / sid 三者的关系和作用

show parameter service_names
select instance_name from v$instance;
 
db_name是一个实在的物理名称service_name时带有域名的,因为如果两个数据库不再同一个域可以有相同的名称。而sid是数据库的实例名称,它是有SGA和后台进程组成。一个数据库只有一个db_name但是可以有两个实例。每个实例各有自己的SGA和后台进程。 Db_name:对一个数据库Oracle database)
oracleservice_name、sid、tablespace、instance_name几个概念的理解
ORACLEDB_NAME,DB_DOMAIN,GLOBAL_DBNAME,SERVICE_NAMEORACLE_SID,INSTANCE_NAME,SCHAME概念。之前对这些概念有接触,但一直没有彻底理解,今天整理并记录。
Oracle

17,103

社区成员

55,243

社区内容

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

加载中

查看更多榜单
社区公告
暂无公告

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

+ 用AI写文章

深圳SEO优化公司西乡网站设计沙井网站排名优化大芬百度标王光明网站设计模板观澜百姓网标王推广西乡外贸网站建设横岗网络广告推广福田百度seo荷坳百姓网标王推广宝安企业网站改版福田推广网站沙井网络广告推广松岗网站改版坂田网站推广工具罗湖SEO按天计费平湖网站推广南澳网站建设西乡网站开发沙井网络营销永湖网页制作塘坑网站搭建南联网站优化按天计费坂田SEO按天计费惠州网站制作设计东莞网站开发坑梓网站设计大运网站优化坂田关键词按天扣费宝安seo优化布吉百姓网标王推广歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化