remote_listener 與 local_listener
我們以例項來說明這兩種監聽。
假設我們有乙個雙節點集群:host1 和 host2, 其 vip 分別為 host1_vip 和 host2_vip。此集群上執行乙個 rac 資料庫 (orcl);其中,例項1(orcl1)位於 host1 上,shili2 (orcl2)位於 host2 上。
兩個監聽,listener_host1 在 host1 上執行,listener_host2 在 host2 上執行。
listener_host1 可以看作是例項 orcl1 的本地監聽(local listener),而對同乙個例項 oracl1,listener_host2 可以看作是遠端監聽 (remote listener)(因為監聽和資料庫例項不在同乙個機器上執行)。
類似地,listener_host2 可以看做是例項 orcl2 的本地監聽(local listener),orcl1 的遠端監聽(remote listener)。
我們模擬真實環境,在兩個例項中,我們都設定兩個引數 local_listener 和 remore_listener。
orcl1.local_listener=(address of listener_host1)
orcl1.remote_listener=(addresses of both listener_host1 and listener_host2)
orcl2.local_listener=(address of listener_host2)
orcl2.remote_listener=(addresses of both listener_host1 and listener_host2)
(如你所見,簡單起見,我們在 remote listener 的設定中,我們把兩個監聽都用起來了。當然你也可以只用乙個,orcl1.remote_listener=(addres of listener_host2) 。)
有了這樣的設定,集群中的兩個監聽就都能識別兩個例項和兩個主機了(也就能夠感知主機負載和例項負載了),也就可以對是否將客戶端的連線請求**給另乙個負載較輕的節點做出判斷了。這就是伺服器端負載均衡所用的機制。
客戶端的 tnsnames 設定通常使用兩個主機的兩個 vip(也就是說,可連線到兩個主機中的任何一台)。所以,如果客戶端嘗試用第乙個 ip 位址( listener_host1)連線資料庫,假使 host1 比 host2 負載更重,那麼監聽 listener_host1 知道在 host2 上執行的另外乙個例項負載較輕。此時,監聽 listener_host1 會給客戶端傳送乙個帶有重定向指令的資料報,要求客戶端重新嘗試連線到 listener_host2,以與建立資料庫連線。當然,這些對使用者來說都是透明的。
沒有這種遠端監聽(remote listener)的設定,每個監聽就只能識別其本地例項,客戶端只能連線到在監聽程式所在的主機上執行的例項。此時,就只有客戶端的負載均衡,而未實現伺服器端的負載均衡。
Orlace 資料庫連線的那些事兒 客戶端(三)
關於 tnsping 後面我們會 可能會發生的各種連線錯誤。但在這之前,我們先來快速瀏覽一下 oracle 的乙個實用工具 tnsping。我們將 tnsping 能做什麼,不能做什麼,並揭漏一些有關 tnsping 的傳言。tnsping 工具用來判斷 oracle net 網路上的乙個服務是否可...
資料庫的那些事
一 常用的sql命令 1.select 獲取資料 2.update 更新資料 3.delete 刪除資料 4.insert into 插入新資料 5.create database 建立新資料庫 6.alter database 修改資料庫 7.create table 建立新錶 8.alter t...
資料庫設計的那些事
1,表和字段的設計規範,當然每個公司有其自己的規範 1 要有可讀性 eg studentaddress,不要設計成stuaddress 2 表意性 eg student,不要設計成ch1 3 盡量不要縮寫 eg studentaddress,不要設計成stuadd 2,字段型別的選擇 在進行資料庫資...