ITPub博客

首页 > 数据库 > Oracle > [20160830]使用共享服务模式的弊端.txt

[20160830]使用共享服务模式的弊端.txt

原创 Oracle 作者:lfree 时间:2016-08-30 08:52:34 0 删除 编辑

[20160830]使用共享服务模式的弊端.txt

--使用专用服务器与共享服务模式的区别,有许多文章介绍,专用服务器是1:1,而共享服务模式可以1对多,这样可以减少服务器对内存资源
--的占用.但是共享服务模式存在一些弊端的,一旦某个session执行很慢,这样就会影响其他用户的回话.

--通过例子来说明:

1.环境:
SCOTT@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

2.建立共享服务连接模式:
78S =
(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.78)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = SHARED)
      (SERVICE_NAME = book)
  )
)

3.建立测试:
SCOTT@book> show parameter shared_server
NAME                   TYPE    VALUE
---------------------- ------- ------
max_shared_servers     integer
shared_server_sessions integer
shared_servers         integer 1

SCOTT@book> show parameter dispatchers
NAME            TYPE    VALUE
--------------- ------- -------------------------------------
dispatchers     string  (PROTOCOL=TCP) (SERVICE=book,bookXDB)
max_dispatchers integer

SCOTT@book> alter system set max_shared_servers=1;
System altered.

--这样仅仅建立一个shared_servers.
--建立连接,注意都以共享连接模式:
--session 1:
SCOTT@78s> @ &r/spid
       SID    SERIAL# SPID       PID  P_SERIAL# C50
---------- ---------- ------ ------- ---------- --------------------------------------------------
       222        125 48628       20          1 alter system kill session '222,125' immediate;

--执行如下:
select count(*) from emp,emp,emp,emp,emp,emp,emp,emp;

--session 2:
$ rlsql scott/book@78s
SQL*Plus: Release 11.2.0.4.0 Production on Tue Aug 30 08:44:38 2016
Copyright (c) 1982, 2013, Oracle.  All rights reserved.

--可以发现挂起。必须等待session 1执行完成才能完成登录。

--session 1:
SCOTT@78s> select count(*) from emp,emp,emp,emp,emp,emp,emp,emp;
  COUNT(*)
----------
1475789056

--也就是一个session 执行很慢会影响其他以共享模式登录会话的操作。

--session 2:
SCOTT@78s> @ &r/spid
       SID    SERIAL# SPID       PID  P_SERIAL# C50
---------- ---------- ------ ------- ---------- --------------------------------------------------
       223         39 48628       20          1 alter system kill session '223,39' immediate;

4.继续测试:
--session 1:
SCOTT@78s> select count(*) from emp,emp,emp,emp,emp,emp,emp,emp;
--等!

--session 2:
SCOTT@78s> select sysdate from dual ;
--挂起。

--如果语句执行很慢,也会影响其他会话。

5.继续观察:
--如果你仔细观察发现前面2个会话的spid一样都是48628。
SCOTT@book> select saddr,sid,paddr,status,server from v$session where sid in (222,223);
SADDR                   SID PADDR            STATUS   SERVER
---------------- ---------- ---------------- -------- ---------
00000000854B75C0        222 00000000859191C8 INACTIVE NONE
00000000854B44E0        223 00000000859191C8 INACTIVE NONE

--2个session 的paddr一样。
--session 1执行:
SCOTT@78s> select count(*) from emp,emp,emp,emp,emp,emp,emp,emp;
--慢!


SCOTT@book> select saddr,sid,paddr,status,server from v$session where sid in (222,223);
SADDR                   SID PADDR            STATUS   SERVER
---------------- ---------- ---------------- -------- ---------
00000000854B75C0        222 000000008591A280 ACTIVE   SHARED
00000000854B44E0        223 00000000859191C8 INACTIVE NONE

--还可以发现sid=222,status=ACTIVE,SERVER=SHARED.执行完成后在观察:

SCOTT@book> select saddr,sid,paddr,status,server from v$session where sid in (222,223);
SADDR                   SID PADDR            STATUS   SERVER
---------------- ---------- ---------------- -------- ---------
00000000854B75C0        222 00000000859191C8 INACTIVE NONE
00000000854B44E0        223 00000000859191C8 INACTIVE NONE

总结:
1.使用共享服务模式,执行sql语句一定要快,否则可能影响其他相同模式登录的会话。
2.有事务激活,会话STATUS=ACTIVE,server从NONE=>SHARED.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2124172/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4014
  • 访问量
    7991435