英語不是我的母語,請理解使用Oracle SQLDeveloper時,SID和服務名稱有什麼不同?
當我嘗試登錄像通過的SQLDeveloper系統/密碼SYSDBA到Oracle(Linux版)(窗口)
它失敗時,通過服務名稱,並返回ORA-0131:權限不足
但SID?成功通過
有什麼分歧?以及如何連接服務名稱?
英語不是我的母語,請理解使用Oracle SQLDeveloper時,SID和服務名稱有什麼不同?
當我嘗試登錄像通過的SQLDeveloper系統/密碼SYSDBA到Oracle(Linux版)(窗口)
它失敗時,通過服務名稱,並返回ORA-0131:權限不足
但SID?成功通過
有什麼分歧?以及如何連接服務名稱?
托馬斯凱特beatifully解釋的區別:
服務名稱是更靈活的比SID會。
數據庫可以使用一個或多個服務名稱向偵聽器動態註冊。實際上,多個數據庫可以使用相同的服務名稱向偵聽器註冊(請考慮一個集羣環境,其中您有多個實例,所有實例都是同一個數據庫)。
另一方面,數據庫具有單個SID。一個單一的SID轉到單個數據庫。這是一種純粹的1:1關係。
服務是多對多的關係。
服務名稱與動態註冊一起使用 - 數據在啓動後與監聽器註冊。一旦這樣做,你可以連接。
隨着SID - 這更像是告訴聽衆:「我希望你能連接到這個特定的數據庫,我所知道的‘地址’,在這裏你走」
與服務 - 你問聽衆讓您可以聯繫可以爲您的請求提供服務的數據庫,即使用該服務註冊的數據庫。
這裏的更多信息,https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1508737000346067364
類似的問題被問在堆棧中斷6年前,How SID is different from Service name in Oracle tnsnames.ora
在您的測試環境,玩弄tnsnames.ora
和listener.ora
。 AFAIK,從12c開始,Oracle只使用service_name
,因爲它靈活並且有許多關係。如果我發現它不正確,我將從文檔中進行交叉驗證。
感謝@Glenn的編輯。事實上,這是***許多對一般***的關係。但是,作爲一個結論,我特別針對OP的案例說了一對多。 – 2014-09-21 15:48:32
哇謝謝@Lalit庫馬爾B但我不使用tnsnames.ora和listener.ora我沒有安裝Oracle客戶端 – Vert 2014-09-22 17:51:17
關於'tnsnames.ora'和'listener.ora',這取決於您是否連接到數據庫本地或通過網絡。 – 2014-09-22 17:54:14
不知道你在問什麼。請顯示您嘗試執行的命令等。 – OldProgrammer 2014-09-21 13:19:02
我的Oracle數據庫版本是什麼? – 2014-09-21 15:15:13
默認情況下,sysdba角色未被授予「系統」帳戶。當你指定'SID'(客戶端和服務器在同一臺計算機上)並連接成'sysdba'時,你將使用OS認證 - 只要操作系統用戶在DBA組中,oracle用戶名和密碼就會被忽略。當你使用'service name'並連接成'sysdba'時,密碼文件將被使用,如果'sysdba'角色沒有被授予該用戶(用戶不在密碼文件中),你會得到'ORA- 0131'錯誤。 – 2014-09-21 15:21:00