定義
實例(SID)是操作系統中訪問數據庫所需要的一系列的進程和內存的集合。即使沒有任何數據文件,實 例也可以啟動。但是要想訪問數據庫,必須把數據庫文件加載進實例中。實例和數據庫的區別可以簡單概括為:實例是臨時的,它只在相關的進程和內存集合存在時 存在,而數據庫是永久的,只要文件存在它就存在。一個實例只能對應一個數據庫,但是一個數據庫可以由多個實例對應(如RAC)。RAC就是多個實例同時打開一個數據庫文件的系統,在結構上是多台機器,每台機器運行一個實例,每個實例都打開同一個數據庫 (這個是用磁盤共享技術實現的),這些實例之間需要同步高速緩存,這樣保證多個實例是完全一致的,不會相互沖突乃至覆蓋。
SERVER_NAME參數是由oracle8i開始引進的。在8i以前,使用SID來表示標識數據庫的一個實例,但是在Oracle的並行環境中,一個 數據庫對應多個實例,這樣就需要多個網絡服務名,設置繁瑣。為了方便並行環境中的設置,引進了Service_name參數,該參數對應一個數據庫,而不 是一個實例,而且該參數有許多其它的好處。該參數的缺省值為Db_name. Db_domain,即等於Global_name。一個數據庫可以對應多個Service_name,以便實現更靈活的配置。該參數與SID沒有直接關 系,即不必Service name 必須與SID一樣,而sid是數據庫實例的名字,每個實例各不相同。
JDBC連接配置
- 使用service_name,配置方式:jdbc:oracle:thin:@//<host>:<port>/<service_name>
- 使用SID,配置方式:jdbc:oracle:thin:@<host>:<port>/<SID>
- 使用SID,配置方式:jdbc:oracle:thin:@<host>:<port>:<SID>
鑒於以上情況,建議使用第一種連接字符串