最近由於業務需要,想通過.net直連sap的後台資料庫,我們用的是oracle,對oracle的串連之前沒有接觸過,特別是由於sap實施basis時的文檔不全,對於oracle的資料庫使用者,監聽連接埠等資訊的缺失,造成不少障礙,在此將一些問題和解決方案記錄一下。
1.對於 .net 串連 oracle 請參考 :
http://www.oracle.com/technology/global/cn/pub/articles/cook_dotnet.html
2.當我裝完oracle用戶端(一定要和伺服器版本一致)後想串連後台資料庫時,碰到了問題,我現有的資訊是我只知道我的資料庫主機IP
192.168.1.11
,試了幾次失敗後,我發現要串連 oracle 至少有幾個關鍵資料:SID 資料庫執行個體 ,PORT 資料庫執行個體的監聽連接埠 , 資料庫使用者名稱, 這些都是
在安裝 SAP 時指定的,但由於實施方沒有留下相應文檔,都無從得之.
找到 basis 讓他遠程登入到 sap 主機(Aix系統),此時他可以通過 sqlplus 串連到 oracle ,應該是當初安裝時指定了驗證方式,本機串連時不需要使用者.
OK ,能連上資料庫就好辦了:
首先得到當前的資料庫使用者名稱 命令: show user
.
獲得SID ,資料庫實列名 : select instance_name,
* from v$instance
剩下就是監聽連接埠的問題了,退出 sqlplus 到 aix 命令模式.這個可以通過監聽程式管理工具lsnrctl獲得
命令列輸入 lsnrctl
再輸入 status
此時便顯示監聽程式的相關資訊了.
至此幾個關鍵資訊已獲得,重試 oracle 用戶端串連,成功登入
測試用 sqlplus 串連:
當通過上面步驟成功註冊後在oracle用戶端安裝位置下面的network/admin目錄下會有一個配置tnsnames.ora檔案,此檔案記錄了所有註冊過的串連字串。格式如下:
PRD_192.168.1.12=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS= (PROTOCOL = TCP)(HOST = 192.168.1.12)(PORT = 1522))
)
(CONNECT_DATA=(SID= PRD)
(SERVER= DEDICATED)
)
)
因此我們用 sqlplus 串連時可以採用兩種方式,一種是直接用串連串,一種是用 串連串名 (就是檔案中各個字串的名稱).分別如下:
sqlplussys/password@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.12)(PORT=1522)))(CONNECT_DATA=(SID=PRD)(SERVER=DEDICATED))) AS SYSDBA
sqlplussys/password@PRD_192.168.1.12 AS SYSDBA
附加:
後續發現: (CONNECT_DATA=(SID= PRD) 除了使用 sid 還可以使用 servcie_name (新版本的oracle支援) 方式如: (CONNECT_DATA=(SERVICE_NAME= hsoa.hs-db) , sid 和 servcie_name 都可以通過
lsnrctl status 命令取得