๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ORACLE/ADMIN

[Oracle] Dedicated Server์™€ Shared Server ์ฐจ์ด

by ๐ŸŒปโ™š 2020. 7. 12.

Dedicated Server์™€ Shared Server ์„œ๋ฒ„๋ฐฉ์‹ ์„ค์ •

์‚ฌ์šฉ์ž๋Š” Database์— ์งˆ์˜ํ•˜๊ณ  Database๋Š” ํ•ด๋‹น ์งˆ์˜์— ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณผ์ •์—์„œ ๋‚ด๋ถ€์ ์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ’๊นŒ์ง€ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š”๋ฐ ์„ค์ • ๊ฐ€๋Šฅํ•œ ์„œ๋ฒ„๋ฐฉ์‹์ด ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์‚ฌ์šฉ์ž ๋ณ„๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ „๋‹ด๋งˆํฌํ•ด์ฃผ๋Š” Dedicated Server ๋ฐฉ์‹๊ณผ ๋ฏธ๋ฆฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ธฐ๋™์‹œ์ผœ ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” Shared Process๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

Dedicated Server

Database์— ๋ณ„๋‹ค๋ฅธ ์„ค์ •์„ ํ•˜์ง€ ์•Š๋Š” ๋‹ค๋ฉด Dedicated Server ๋ฐฉ์‹์œผ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์—์„œ ์ฒ˜๋Ÿผ ๊ฐ ์œ ์ € ํ”„๋กœ์„ธ์Šค์—๊ฒŒ 1 ๋Œ€ 1๋กœ ์ „๋‹ด๋งˆํฌํ•ด์ฃผ๋Š” ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ํ–ˆ์„ ๋•Œ Server Process๋ฅผ ์ƒ์„ฑ์‹œ์ผœ Connection์„ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

 

์žฅ์ 

- ๋ช…๋ น ์ฒ˜๋ฆฌ๊ฐ€ ๋น ๋ฅด๋‹ค.

 

๋‹จ์ 

- ๋†€๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ๊ฒจ resource ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. --> ์œ ์ € ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•˜์—ฌ ์•„๋ฌด ์ž‘์—…์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰๋˜์–ด ์žˆ์ง€๋งŒ ์•„๋ฌด๊ฒƒ๋„ ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋Š”๋‹ค.

 

 

Shared Server

Shared Server๋Š” ์€ํ–‰์— ๊ฐ€๋ฉด ๋ฏธ๋ฆฌ ์€ํ–‰์›๋“ค์ด ์ž๋ฆฌ์—์„œ ๋Œ€๊ธฐํ•˜๊ณ  ๋ฒˆํ˜ธํ‘œ๋ฅผ ๋ฝ‘์€ ๊ณ ๊ฐ๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ์€ํ–‰์ฐฝ๊ตฌ์—์„œ ์—…๋ฌด๋ฅผ ๋ณด๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ Server Process์™€ Dispatcher Process๋ฅผ ๊ธฐ๋™์‹œ์ผœ ๋†“๊ณ  User Process๊ฐ€ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ํ–ˆ์„๋•Œ Listener๊ฐ€ ๋ฐ›์•„์„œ Dipatcher์—๊ฒŒ ๋ณด๋‚ด์ค๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์š”์ฒญ์ด ๋“ค์–ด์™”์„ ๋•Œ Dispatcher๊ฐ€ ๋ฐ›์•„์„œ SGA ๋ฉ”๋ชจ๋ฆฌ์— Request Queue์•ˆ์— ์š”์ฒญ ์ˆœ์„œ๋Œ€๋กœ ๋„ฃ์Šต๋‹ˆ๋‹ค.

 

Request Queue์•ˆ์— ์ž‘์—…์ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๊ณ  ๋ฏธ๋ฆฌ ๊ธฐ๋™๋˜์–ด ์žˆ๋˜ Server Process๋“ค์€ ์ˆœ์„œ๋Œ€๋กœ ์ผ์„ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ง„ํ–‰๋˜๋ฉด Dedicated Server์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๋†€๊ณ  ์žˆ๋Š” Server Process์˜ ์ˆ˜๋Š” ์ค„์–ด๋“ค ๊ฒƒ์ด๊ณ  resource์— ๋Œ€ํ•œ ๋‚ญ๋น„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Server Process์—์„œ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์–ด ๊ฒฐ๊ณผ๊ฐ’์„ User Process์—๊ฒŒ ๋ฐ˜ํ™˜ํ• ๋•Œ๋Š” Response Queue๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 1๊ฐœ ๋ฐ–์— ์—†๋Š” Request Queue์™€๋Š” ๋‹ค๋ฅด๊ฒŒ Response Queue๋Š” ๊ฐ Dispatcher๋งˆ๋‹ค ์žˆ์Šต๋‹ˆ๋‹ค. Dispatcher๋Š” Response Queue์— ๋“ค์–ด์˜จ ๊ฒฐ๊ณผ๋ฅผ User Process์—๊ฒŒ ๋ณด๋‚ด์ค๋‹ˆ๋‹ค.

 

์žฅ์ 

- resource์˜ ๋‚ญ๋น„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋‹จ์ 

- sql๋ฌธ์žฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ๋น„๊ต์  ๋Š๋ฆฝ๋‹ˆ๋‹ค.

 

์ž‘์—… ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๋” ๊ฑธ๋ฆฌ๋”๋ผ๋„ Resource์— ๋Œ€ํ•œ ๋‚ญ๋น„๋ฅผ ์ค„์ด๋Š ๊ฒƒ์ด ํšจ์œจ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒํ™ฉ์— ๋งž๊ฒŒ Shared Server๋ฅผ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฐฉ์‹์€ ๋ณ‘ํ–‰ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Shared Server ๋ฐฉ์‹์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์—ฐ๊ฒฐ ๋ฐฉ์‹์„ ๋ฏธ๋ฆฌ์„ค์ •ํ•˜์—ฌ ๋น ๋ฅธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ํŠน์ • ์ž‘์—…์€ Dedicated Server ๋ฐฉ์‹์œผ๋กœ ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

 

Dedicated Server, Shared Server ์‹ค์Šต

์‹ค์Šตํ™˜๊ฒฝ

OS : Red Hat Enterprise Linux Server release 6.10
DB : Oracle 11.2.0.1
SID: orcl
hostname : 601d2fce71dc

listener.ora ํŒŒ์ผ์˜ ์„ค์ •์€ ์•„๋ž˜์™€ ๊ฐ™๊ณ  ๋ฆฌ์Šค๋„ˆ์˜ ๋™์  ๋“ฑ๋ก์„ ์œ„ํ•ด local_listener parameter์˜ ๊ฐ’๋„ "" Default ์ƒํƒœ๋กœ ์‹ค์Šต ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

$ORACLE_HOME/network/admin/listener.ora

LISTENER =
 (DESCRIPTION_LIST =
  (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 601d2fce71dc)(PORT = 1521))
  )
 )

 

Dedicated Server ์‹ค์Šต

Dedicate Server๋Š” ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์‹ค ๋ณ„๋‹ค๋ฅธ ์‹ค์Šต์ด ์—†์Šต๋‹ˆ๋‹ค. tnsnames.oraํŒŒ์ผ์— ์—ฐ๊ฒฐ ๋ฐฉ์‹์„ ์„ค์ •ํ•˜๊ณ  Dedicated Server๋กœ ๋“ค์–ด๊ฐ”๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์‹ค์Šต์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

$ORACLE_HOME/network/admin/tnsnames.ora

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 601d2fce71dc)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )


ORCL_D =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 601d2fce71dc)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

 

[oracle@601d2fce71dc ~]$ sqlplus system/oracle@orcl

 

SYSTEM@orcl> 
select 
	server
	,service_name 
from v$session 
where username = 'SYSTEM';

 

์ƒˆ๋กญ๊ฒŒ ์„ธ์…˜์„ ์—ด๊ณ  ์ ‘์†์„ ์‹œ๋„ํ•ด๋ณธ๋‹ค.

[oracle@601d2fce71dc ~]$ sqlplus system/oracle@orcl_d
SYSTEM@orcl_d> 
select 
	server
	,service_name 
from v$session 
where username = 'SYSTEM';

์œ ์ € ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค 1๋Œ€1๋กœ ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

Shared Server ์‹ค์Šต

๋ชฉํ‘œ
- Shared server process ๊ฐœ์ˆ˜๋Š” ์ดˆ๊ธฐ 2๊ฐœ, ์ตœ๋Œ€ 10๊ฐœ ์ƒ์„ฑํ•œ๋‹ค.
- dispatcher ๊ฐœ์ˆ˜๋Š” ์ดˆ๊ธฐ 1๊ฐœ, ์ตœ๋Œ€ 3๊ฐœ ์ƒ์„ฑํ•œ๋‹ค.
- 400๊ฐœ ์„ธ์…˜์„ ๋™์‹œ์— ์—ด ์ˆ˜ ์žˆ๊ณ , ๊ทธ ์ค‘ 5๊ฐœ๋Š” dedicated session์ด ์—ด๋ฆฌ๋„๋ก ์„ค์ •ํ•œ๋‹ค.

 

[oracle@601d2fce71dc ~]$ sqlplus system/oracle
SYSTEM@orcl> show parameter shared_server

 

SYSTEM@orcl> alter system set shared_servers = 2;

shared server process์˜ ์ดˆ๊ธฐ ๊ฐฏ์ˆ˜ ๋ฅผ 2๊ฐœ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

 

SYSTEM@orcl> alter system set max_shared_servers = 10;

shared server process์˜ ์ตœ๋Œ€ ๊ฐฏ์ˆ˜๋ฅผ 10๊ฐœ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

 

SYSTEM@orcl> show parameter shared_server

 

SYSTEM@orcl> show parameter dispatcher

 

SYSTEM@orcl> alter system set dispatchers='(PROTOCOL=TCP)(dispatchers=1)';

dispatcher์˜ ์ดˆ๊ธฐ ๊ฐฏ์ˆ˜๋ฅผ 1๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

 

SYSTEM@orcl> alter system set max_dispatchers = 10;

dispatcher์˜ ์ตœ๋Œ€ ๊ฐฏ์ˆ˜๋ฅผ 10์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

 

SYSTEM@orcl> show parameter dispatcher

 

SYSTEM@orcl> alter system set sessions=400 scope=spfile;

400๊ฐœ์˜ session์„ ๋™์‹œ์— ์—ด์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

 

SYSTEM@orcl> alter system set shared_server_sessions=395;

๊ทธ ์ค‘์—์„œ 5๊ฐœ๋Š” dedicated server๋กœ ์—ด์ˆ˜ ์žˆ๋„๋ก ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด 400๊ฐœ์˜ session ์ค‘์— 395๊ฐœ์˜ ์„ธ์…˜์„ shared server๋กœ ์ง€์ •ํ•˜์—ฌ ์„ค์ • ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

SYSTEM@orcl> conn / as sysdba
Connected.
SYS@orcl> shutdown immediate;
SYS@orcl> startup;

์ •์  ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ–ˆ์œผ๋‹ˆ ์žฌ์‹คํ–‰ํ•ด์ค๋‹ˆ๋‹ค.

 

SYS@orcl> show parameter sessions

๋ชฉํ‘œ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์„ ์™„๋ฃŒํ–ˆ์œผ๋‹ˆ ํ™•์ธ์ž‘์—…์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

[oracle@601d2fce71dc ~]$ ps -ef | grep ora_[ds]0

d00... : dispatcher

s00... : server process

OS๋‹จ์—์„œ ์˜ฌ๋ผ์™€ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ํ™•์ธํ•˜๋Š” ์ž‘์—…์„ ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ๋œ ์„ธ์…˜์ด ์—†๋Š”๋ฐ๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์„ค์ •๋Œ€๋กœ ์ดˆ๊ธฐ์— 1๊ฐœ์˜ dispatcher์™€ 2๊ฐœ์˜ server process๊ฐ€ ๋„์›Œ์ ธ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ๋Š” ์ง์ ‘ ์—ฐ๊ฒฐ์ž‘์—…์„ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

tnsnames.ora ๋ณ€๊ฒฝ

ORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 601d2fce71dc)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )


ORCL_D =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 601d2fce71dc)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )


ORCL_S =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 601d2fce71dc)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = SHARED)
      (SERVICE_NAME = orcl)
    )
  )

ORCL_S๋ผ๋Š” ์—ฐ๊ฒฐ ๋ณ„์นญ์œผ๋กœ SHARED ๋ฐฉ์‹์˜ ์ ‘์†์„ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

[oracle@601d2fce71dc ~]$ sqlplus system/oracle@orcl_s

 

SYSTEM@orcl_s> 
select 
	server
	,service_name 
from v$session 
where username = 'SYSTEM';

Shared Server ๋ฐฉ์‹์œผ๋กœ ์ ‘์†ํ•œ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์„ธ์…˜์„ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด ๋˜‘๊ฐ™์ด Shared ๋ฐฉ์‹์œผ๋กœ ์ ‘์†ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

[oracle@601d2fce71dc ~]$ sqlplus system/oracle@orcl_s
SYSTEM@orcl_s> 
select 
	server
	,service_name 
from v$session 
where username = 'SYSTEM';

2๊ฐœ์˜ Shared Server๋กœ ์ ‘์†ํ–ˆ์„ ๋•Œ ํ•˜๋‚˜๋Š” NONE์œผ๋กœ ํ‘œ๊ธฐ๋ฉ๋‹ˆ๋‹ค. Shared Server์˜ ๊ฒฝ์šฐ ์ž‘์—…ํ•˜๊ณ  ์žˆ์„ ๋•Œ๋งŒ Shared๋กœ ํ‘œ์‹œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์„ธ์…˜์—์„œ๋Š” ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์ง€ ์•Š์•„ NONE์œผ๋กœ ํ‘œ๊ธฐ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

Dispatcher ํ™•์ธ

SYSTEM@orcl_s> select name, status from v$dispatcher;

 

Shared Server ํ™•์ธ

SYSTEM@orcl_s> select name, status from v$shared_server;

Shared Server process๋“ค์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Shared Server๋กœ ํ•˜๋‚˜์˜ ์„ธ์…˜์— ์ ‘์†ํ•˜์—ฌ EXEC ์ƒํƒœ๋กœ ํ‘œ์‹œ๋˜์—ˆ๊ณ  ๋‚˜๋จธ์ง€ ํ”„๋กœ์„ธ์Šค๋Š” WAIT๋กœ ํ‘œ๊ธฐ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

๋Œ“๊ธ€