最近重裝了系統,所有的開發環境需要重新部署一下,因此重新安裝了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