最近重装了系统,所有的开发环境需要重新部署一下,因此重新安装了Oracle,结果原来没有问题,这一次又碰到了几个问题(tns12154和tns03505),让我好一搞啊。不过又重新对Oracle加深了一下理解,在这里记录一下,防止下次忘记。
1、系统环境
Oracle11g x64,Client x86,win10专业版系统。
Oracle连接plsql12的x64版和OB10(是32位的)。
2、安装过程
我的电脑所有软件都安装在D盘,Oracle也不例外,分别建立两个文件夹(11g_x64和Client_x86)。
安装完成后,在客户端中新配置一个网络服务localorcl(服务器端的实例/SID是orcl),其他的所有配置都没有做(包括系统环境变量)。
3、碰到的问题
在上述的环境下,如果直接使用cmd来进行tnsping命令会出现以下情况:
(1)tnsping orcl;会报错tns03505。
(2)tnsping localorcl;可以连接成功。
(3)tnsping 127.0.0.1;也可以连接成功。
如果分别使用两个客户端连接软件的话,参数的填写和碰到的情况如下:
(1)plsqlx64位的,在填写Database参数时,必须填写orcl(即服务器的实例名);如果填写client的网络服务名则报错tns12154。
(2)使用OB进行连接,在填写Database时必须填写localorcl(即我自己配置的Client的网络服务名);如果填写服务器的实例名则报错tns12154。
如果把环境变量都配置为客户端的参数(oracle_home、tns_admin),则在使用客户端连接软件连接时Database的值必须填写client的网络服务名。
4、使用ArcGIS创建企业级地理数据库
我这一通安装其实目的是为了使用ArcGIS的SDE库,因此还得转到这个问题上。
在使用Catalog创建企业级地理数据库时,数据库选择Oracle,在填写“数据库实例”这个参数时,必须填写Client中创建的网络服务名,否则无法创建企业级地理数据库。(原因:Catalog使用时必须安装和使用32位客户端,因此在创建时也需要使用这个网络服务名来连接具体的Oracle数据库)
5、总结
其实最主要还是看是哪个软件来连接和使用Oracle数据库,不同的软件或系统在连接时有不同的要求,也就需要不同的连接参数配置。在碰到问题时,搞清楚具体是谁来使用,然后使用相应的连接参数即可。
最后,附环境变量值的具体形式(具体路径根据你自己的安装来修改)
TNS_ADMIN
--D:\OraClient_x86\product\11.2.0\client_1\network\admin
ORACLE_HOME
---D:\Oracle11g_x64\product\11.2.0\dbhome_1
换成Server的地址后,x64的可以连接上,但是需要使用client的服务名来进行连接,而不能直接写orcl
---D:\OraClient_x86\product\11.2.0\client_1
换成client的目录后,ob可以连接上(也必须使用client的服务名进行连接,不能使用orcl),但是x64的又连接不上了
NLS_LANG(根据自己的字符集填写)
--AMERICAN_AMERICA.ZHS16GBK
--SIMPLIFIED CHINESE_CHINA.ZHS16GBK