專用服務器模式和共享服務模式之間的轉換

專用服務器模式和共享服務模式之間的轉換

SQL> startup
ORACLE
例程已經啓動。
數據庫裝載完畢。
數據庫已經打開。
SQL>show parameter spfile
NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                              string      %ORACLE_HOME%\DATABASE\SPFILE%
                                                ORACLE_SID%.ORA
SQL> show parameter shared_server
NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
max_shared_servers                  integer     20
shared_server_sessions              integer     330
shared_servers                      integer     1
shared_servers=1
說明當前數據庫使用共享服務器模式。
   
對於共享服務器模式,如果客戶端在連接的時候tnsname.ora文件指定了
(SERVER = dedicated)的話,說明該客戶端將通過專用服務器模式進行連接。如果沒有指定的話,該客戶端通過共享服務器進行連接。
   
對於專用服務器模式,不論客戶端tnsname.ora文件中是否指定了(SERVER = dedicated),客戶端都將通過專用服務器模式進行連接。可以通過下面進行驗證:
一、數據庫當前模式爲共享服務器模式
1)修改tnsname.ora文件,去掉(SERVER =dedicated),如下:
ORA9I =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =linyuefeng)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ora9i)
    )
  )
2)啓用另外一個SESSION進行連接
SQL> conn brio/brio@ora9i;
已連接。
3)查看brio用戶是通過哪種方式進行連接
SQL> Select username,server From v$session Where username='BRIO';
USERNAME                      SERVER
------------------------------ ---------
BRIO                          NONE
4)修改tnsname.ora文件,增加(SERVER =dedicated),如下:
ORA9I =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =linyuefeng)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = dedicated)
      (SERVICE_NAME = ora9i)
    )
  )
5)啓用另外一個SESSION進行連接
SQL> conn brio/brio@ora9i;
已連接
6)查看brio用戶是通過哪種方式進行連接
SQL> Select username,server From v$session Where username='BRIO';
USERNAME                      SERVER
------------------------------ ---------
BRIO                          DEDICATED
二、數據庫當前模式爲專用服務器模式
1)修改tnsname.ora文件,去掉(SERVER =dedicated),如下:
ORA9I =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =linyuefeng)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ora9i)
    )
  )
2)啓用另外一個SESSION進行連接
SQL> conn brio/brio@ora9i;
已連接。
3)查看brio用戶是通過哪種方式進行連接
SQL> Select username,server From v$session Where username='BRIO';
USERNAME                      SERVER
------------------------------ ---------
BRIO                          DEDICATED

問題1:如何從共享服務器模式轉到專用服務器模式呢?
   
oracle文檔上面說只要把shared_servers參數設置爲0就行了,但經過測試,只是將shared_servers設置爲0是不行的,還需要設置其它兩個參數:max_shared_servers和dispatchers。測試過程如下:
1)只設置shared_servers=0
SQL> alter system set shared_servers=0 scope=both;
系統已更改。
SQL> startup force
ORACLE 例程已經啓動。
Total System Global Area  604578584 bytes
FixedSize                  455448 bytes
VariableSize            285212672 bytes
Database Buffers         318767104 bytes
RedoBuffers                143360 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL> show parameter shared_server
NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
max_shared_servers                  integer     20
shared_server_sessions              integer     330
shared_servers                      integer     0
啓動另外一個session:
SQL> conn brio/brio@ora9i;
已連接。
查看:
SQL> Select username,server From v$session Where username='BRIO';
USERNAME                      SERVER
------------------------------ ---------
BRIO                          NONE

查看Alert.log,發現下面的信息:
starting up 1 dispatcher(s) for network address
'(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
Warning: Shared server clients will hang because SHARED_SERVERS is 0

2)設置max_shared_servers和dispatchers
SQL> alter system set max_shared_servers=0 scope=spfile;
系統已更改。

SQL> alter system setdispatchers='';
alter system set dispatchers=''
*
第 1 行出現錯誤:
ORA-00101: 系統參數 DISPATCHERS 的說明無效

SQL> create pfile='d:\pfile.ora'from spfile;
文件已創建。

SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE
例程已經關閉。

修改D:\pfile.ora文件,修改後如下:
#*.dispatchers='(PROTOCOL=TCP)'
*.shared_servers=0
*.max_shared_servers=0


SQL> startup
ORA-00124: DISPATCHERS specified without MAX_SHARED_SERVERS
注意此處要用pfile來啓動數據庫:
SQL> startup pfile='d:\pfile.ora';
ORACLE 例程已經啓動。
數據庫裝載完畢。
數據庫已經打開。
3)測試
Tnsname.ora文件:
ORA9I =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST =linyuefeng)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ora9i)
    )
  )
SQL> conn brio/brio@ora9i;
已連接。
SQL> Select username,server From v$session Where username='BRIO';
USERNAME                      SERVER
------------------------------ ---------
BRIO                          DEDICATED
可以見到,即使連接串中沒有(SERVER = dedicated),客戶端也是通過專用服務器進行連接。
問題2:如何從專用服務器模式轉到共享服務器模式呢?
1) 修改pfile.ora文件,設置相關參數,如下:
*.dispatchers='(PROTOCOL=TCP)'
*.shared_servers=1
*.max_shared_servers=20
2) 使用pfile文件啓動數據庫
SQL> startup pfile='d:\pfile.ora';
ORACLE 例程已經啓動。
數據庫裝載完畢。
數據庫已經打開。
SQL> show parameter shared_servers
NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
max_shared_servers                  integer     20
shared_servers                      integer     1
SQL> show parameter dis
NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
disk_asynch_io                      boolean     TRUE
dispatchers                         string      (PROTOCOL=TCP)
distributed_lock_timeout            integer     60
max_dispatchers                     integer     5
mts_dispatchers                     string      (PROTOCOL=TCP)
mts_max_dispatchers                 integer     5

如果要使用SPFILE來啓動數據庫,創建一個新的SPFILE,:
SQL> show parameter spfile
NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                              string
SQL> create spfile from pfile='d:\pfile.ora';
文件已創建。
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE
例程已經啓動。
數據庫裝載完畢。
數據庫已經打開。
SQL>show parameter spfile
NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                              string      %ORACLE_HOME%\DATABASE\SPFILE%
                                                ORACLE_SID%.ORA

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章