轉載位址:http://blog.csdn.net/kellyseeme/article/details/8959980
1、shared server和dedicated server連接配接方式比較
shared server 連接配接方式
dedicated server 連接配接方式
2、shared server process
在伺服器上進行ps -ef| grep shared進而得到所有的oracle背景程序如下:
[html] view plain copy
- oracle 4476 1 0 19:18 ? 00:00:00 ora_pmon_shared
- oracle 4478 1 0 19:18 ? 00:00:00 ora_psp0_shared
- oracle 4480 1 0 19:18 ? 00:00:00 ora_mman_shared
- oracle 4482 1 0 19:18 ? 00:00:01 ora_dbw0_shared
- oracle 4484 1 0 19:18 ? 00:00:01 ora_lgwr_shared
- oracle 4486 1 0 19:18 ? 00:00:03 ora_ckpt_shared
- oracle 4488 1 0 19:18 ? 00:00:02 ora_smon_shared
- oracle 4490 1 0 19:18 ? 00:00:00 ora_reco_shared
- oracle 4492 1 0 19:18 ? 00:00:02 ora_cjq0_shared
- oracle 4494 1 0 19:18 ? 00:00:04 ora_mmon_shared
- oracle 4496 1 0 19:18 ? 00:00:00 ora_mmnl_shared
- oracle 4498 1 0 19:18 ? 00:00:00 ora_d000_shared
- oracle 4500 1 0 19:18 ? 00:00:00 ora_s000_shared
- oracle 4520 1 0 19:18 ? 00:00:00 ora_qmnc_shared
- oracle 4535 1 0 19:18 ? 00:00:00 ora_q002_shared
- oracle 4537 1 0 19:18 ? 00:00:00 ora_q003_shared
- oracle 15255 1 0 23:36 ? 00:00:00 ora_j000_shared
在用戶端連接配接oracle資料庫時,不會配置設定新的程序
用戶端程式先連接配接到監聽,然後監聽程式通過排程器d000将任務放倒request Queue中,然後由空閑的共享程序s000來進行處理,處理完成之後把結果放倒response Queue中,然後排程器程序d000将結果傳回給用戶端程式
在伺服器端用sqlplus連接配接的程序
[html] view plain copy
- oracle 16046 15677 0 May19 ? 00:00:01 oracleshared (DESCRIPTION=(LOCAL=YES)(ADDRESS=
- (PROTOCOL=beq)))
當在遠端指定用DEDICATED方式連接配接時,也會配置設定一個單獨的使用者程序進行連接配接,如下
用戶端的tnsnames.ora檔案中,在connect_data中添加一行,(SERVER = DEDICATED),進而指定用DEDICATED方式進行連接配接,連接配接的程序如下
[html] view plain copy
- oracle 16584 1 0 00:08 ? 00:00:00 oracleshared (LOCAL=NO)
2、dedicated server process
常見程序如下:
[html] view plain copy
- oracle 17596 1 0 00:37 ? 00:00:00 ora_pmon_dedicated
- oracle 17598 1 0 00:37 ? 00:00:00 ora_psp0_dedicated
- oracle 17600 1 0 00:37 ? 00:00:00 ora_mman_dedicated
- oracle 17602 1 0 00:37 ? 00:00:00 ora_dbw0_dedicated
- oracle 17604 1 0 00:37 ? 00:00:00 ora_lgwr_dedicated
- oracle 17606 1 0 00:37 ? 00:00:00 ora_ckpt_dedicated
- oracle 17608 1 0 00:37 ? 00:00:00 ora_smon_dedicated
- oracle 17610 1 0 00:37 ? 00:00:00 ora_reco_dedicated
- oracle 17612 1 0 00:37 ? 00:00:00 ora_cjq0_dedicated
- oracle 17614 1 0 00:37 ? 00:00:00 ora_mmon_dedicated
- oracle 17616 1 0 00:37 ? 00:00:00 ora_mmnl_dedicated
- oracle 17618 1 0 00:37 ? 00:00:00 ora_d000_dedicated
- oracle 17620 1 0 00:37 ? 00:00:00 ora_s000_dedicated
- oracle 17639 1 0 00:38 ? 00:00:00 ora_qmnc_dedicated
- oracle 17661 1 0 00:38 ? 00:00:00 ora_q001_dedicated
- oracle 17663 1 0 00:38 ? 00:00:00 ora_q002_dedicated
- oracle 18086 1 0 00:50 ? 00:00:00 ora_j000_dedicated
用戶端連接配接進去之後,伺服器會給你配置設定一個新的程序,在不指定或者指定為dedicated連接配接方式之後,程序如下:
[html] view plain copy
- oracle 18194 1 1 00:52 ? 00:00:00 oraclededicated (LOCAL=NO)
伺服器登陸連接配接程序如下:
[html] view plain copy
- oracle 18215 18214 1 00:53 ? 00:00:00 oraclededicated (DESCRIPTION=(LOCAL=YES)(ADDRESS=PROTOCOL=beq)))
當指定為shared方式連接配接dedicated server時,會出現如下錯誤:
[html] view plain copy
- C:\Users\Administrator>sqlplus system/[email protected]
- SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 20 15:56:47 2013
- Copyright (c) 1982, 2010, Oracle. All rights reserved.
- ERROR:
- ORA-12520: TNS: 監聽程式無法為請求的伺服器類型找到可用的處理程式
- 請輸入使用者名:
說明,如果服務連接配接方式為dedicated server,那麼就不能使用shared server的連接配接方式來進行連接配接,但是如果是開啟了shared server方式,那麼還是可以使用dedicated server方式來進行連接配接的
小結論如下:
1. 如果是dedicated server,則用戶端隻能建立dedicated server connection
2. 如果是shared server,則用戶端能建立dedicated server connection和shared server connection,隻要在service name中指定server=dedicated or server=shared.
[html] view plain copy
- (1)A dedicated server process, which services only one userprocess
- (2)A shared server process, which can service multiple userprocesses
3、如何在dedicated server模式中,不出現D000和S000程序
[html] view plain copy
- SQL> show parameter dispatcher
- NAME TYPE
- ------------------------------------ ----------------------
- VALUE
- ------------------------------
- dispatchers string
- (PROTOCOL=TCP)
- max_dispatchers integer
- SQL> alter system set dispatchers = '' scope=both;
- System altered.
- SQL> show parameter shared_server
- NAME TYPE
- ------------------------------------ ----------------------
- VALUE
- ------------------------------
- max_shared_servers integer
- shared_server_sessions integer
- shared_servers integer
- 1
- SQL> alter system set shared_servers = 0 scope=both;
- System altered
然後再檢視資料庫的程序的時候,就不會出現D000程序和S000程序了
為何建立的是專有模式的資料庫,資料庫卻自動配置了dispatchers參數,暫時無解!!!!