在第一次配置Oracle的時候,我總是失敗,那是因為我對Oracle還不太瞭解,只是按照書上的步驟去操作,至於為什麼,不得而知,終於有閒置時間,便好好的研究了下。
Oracle資料庫是網路資料庫,一個oracle資料庫對於客戶機來說就是一個服務,一個資料庫是用一個服務名(Srver Name)來標識的,它是資料庫的邏輯表示,是資料庫呈現給客戶機的連結方式。
在安裝資料庫的時候,會讓大家輸入SID和全域資料庫名,一個資料庫的全域資料庫名是由資料庫名和資料庫網域名稱組成: 資料庫名.資料庫網域名稱,這個全域資料庫名就是服務名,它由初始化參數檔案中的DB_NAME和db_domain兩個參數共同表示,而在伺服器端得Listener。ora檔案中的server_NAME表示。
網路服務名是資料庫字用戶端的名稱,邏輯的表示資料庫的別名。它用來協助用戶端準確的連結到指定的服務(資料庫),這個被儲存在客戶機的tnsname.org檔案中(transparent Network Substrate)。oracle用網路描述符作為客戶機訪問資料庫的路徑,我們可以知道,只要牽扯到網路訪問,這個描述符裡應該有伺服器的地址,在網路上表示伺服器的地址? 訪問協議?主機名稱?連接埠號碼?訪問方式(oracle伺服器分為專用進程,共用進程)
gis =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = zuiyirenjian)(PORT = 1521))(注意我的host是我的電腦名稱,可以寫成ip地址的)
)
(CONNECT_DATA =
(SERVER = DEDICATED)(串連方式專用方式)
(SERVICE_NAME = zuiyirenjian.com)(全域資料庫名)
)
)
應為這裡串連描述符太長了,如果我們串連的時候寫這麼長的,難免很出錯,所以我們可以一個簡短的來代替這個連結描述符,我用的是gis,那麼這個gis就代替了我的連結描述符,我們把這個叫做網路服務名,有問題嗎?從上面可以看書,只要串連描述符不變,我可以配置好幾個網路服務名,這有問題嗎?
我們知道網路會話是通過監聽程式建立的,它是運行在伺服器上的一個進程,在Listener。ora檔案中可以看到相關資訊。
listener.ora 檔案裡面的內容如下:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = zuiyirenjian)(PORT = 1521))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
)
)
既然是監聽,那就要監聽某一個連接埠和某台伺服器上的資訊,所以上面的主機名稱和連接埠號碼要和tnsname中一樣,說錯了應該是後者和前面一樣,應為我們肯定先佈建服務端,然後用戶端,呵呵。
在這裡多說一句,ip地址可以協助我們找到網路上的電腦,但是能幫我們找到具體的服務嗎?我們知道一台電腦上可以有多個伺服器,IIS,TOMCAT等等,如果把ip比作一幢樓房,而每一個服務相當於這幢樓的一個房間,每個房間可以有不同的號碼,類似於連接埠號碼,所以通過ip+連接埠號碼就可以找到這個服務,就想我們找某個房間,首先要找這個房間所在的樓的地址,然後在找房間號。