本文来源于:secooler  的 《【Shared Server Mode】测试调整shared_servers参数对数据库的影响

关于Shared Server模式的配置方法请参见文章《【Shared Server Mode】“专有服务器模式”调整为“共享服务器模式
  shared_servers参数是个可以动态调整的参数,我们观察一下这个参数调整对系统后台Shared Server进程启动的影响以及对数据库的影响。

1.调整shared_servers参数之前后台Shared Server进程启动情况

  1 sys@secdb> show parameter shared_servers
2 NAME TYPE VALUE
3 ---------------------------------------- -------------------- -----------
4 max_shared_servers integer
5 shared_servers integer 0
6 secdb@secdb1 /home/oracle$ ps -ef | grep ora_s0 | grep -v grep
7 #此处没有任何返回内容,表明服务器上没有启动任何Shared Server进程

2.在数据库中调整shared_servers参数调整为10

  1 sys@secdb> alter system set shared_servers=10;
2 System altered.
3 sys@secdb> show parameter shared_servers
4 NAME TYPE VALUE
5 ---------------------------------------- -------------------- -----------
6 max_shared_servers integer
7 shared_servers integer 10

3.调整shared_servers参数之后后台Shared Server进程启动情况

  1 secdb@secdb1 /home/oracle$ ps -ef | grep ora_s0 | grep -v grep
2 oracle 1596 1 0 13:41 ? 00:00:00 ora_s000_secdb
3 oracle 1598 1 0 13:41 ? 00:00:00 ora_s001_secdb
4 oracle 1600 1 0 13:41 ? 00:00:00 ora_s002_secdb
5 oracle 1602 1 0 13:41 ? 00:00:00 ora_s003_secdb
6 oracle 1604 1 0 13:41 ? 00:00:00 ora_s004_secdb
7 oracle 1606 1 0 13:41 ? 00:00:00 ora_s005_secdb
8 oracle 1608 1 0 13:41 ? 00:00:00 ora_s006_secdb
9 oracle 1610 1 0 13:41 ? 00:00:00 ora_s007_secdb
10 oracle 1613 1 0 13:41 ? 00:00:00 ora_s008_secdb
11 oracle 1615 1 0 13:41 ? 00:00:00 ora_s009_secdb

可见,此时后台进程随即启动了10个后台Shared Server进程。

4.再次将shared_servers参数调整为0,观察后台Shared Server进程是否会自动关闭

  1 sys@secdb> alter system set shared_servers=0;
2 System altered.
3
4
5 # 调整参数过程中可以使用如下脚本监控后台Shared Server进程启动情况
6 $ while :; do ps -ef | grep ora_s0 | grep -v grep; sleep 1; done
7 # 观察大约结果16秒左右的时间,后台Shared Server进程同时退出,不再有输出信息。
8

5.试问,这个参数可以无限的调大么

答案当然是否定的!这里与数据库最大可以启动的最大进程数相关,也就是与数据库processes参数的大小相关。数据库的总启动进程数不能超过processes参数值。

  1 #测试如下。
2 #1)尝试将shared_servers调整为200
3 SQL> alter system set shared_servers=200;
4 System altered.
5 #2)当系统后台Shared Server进程陆续启动到ora_s099_secdb时,alert警告日志中记录了如下错误
6 Sun May 22 17:59:11 2011
7 Process S174 died, see its trace file
8 failed to start shared server, er=0
9 #3)重启数据库时的报错信息
10 sys@secdb> shutdown immediate;
11 Database closed.
12 Database dismounted.
13 ORACLE instance shut down.
14 sys@secdb> startup;
15 ORA-24324: service handle not initialized
16 ORA-24323: value not allowed
17 ORA-00020: maximum number of processes (%s) exceeded
18 #4)此时alert警告日志内容
19 Sun May 22 18:05:42 2011
20 Process S185 died, see its trace file
21 failed to start shared server, er=0
22 #这里提示的内容是当Oracle尝试启动第185个Shared Server进程时出现了错误。
23 #5)此时查看一下服务器后台进程的总数
24 secdb@secdb1 /home/oracle$ ps -ef | grep ora_ | grep -v secgc | grep -v grep | wc -l
25 198
26 #此时与secdb实例有关的数据库后台进程已经启动了198个。
27 #导致此故障的原因浮出水面:此时数据库实例中processes参数设置的值是200,当Shared Server进程过大导#致总进程数超过了这个限制,最终导致了这个故障的发生。

6.故障处理方法

故障处理策略:通过调整pfile间接调整spfile的方法调整错误设置的shared_servers参数内容。

  1 #1)此时尝试immediate方式停止数据库是无法完成的
2 secdb@secdb1 /home/oracle$ sqlplus / as sysdba
3 SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 22 18:22:06 2011
4 Copyright (c) 1982, 2005, Oracle. All rights reserved.
5 Connected.
6 NotConnected@> shutdown immediate;
7 ORA-24324: service handle not initialized
8 ORA-24323: value not allowed
9 ORA-00020: maximum number of processes (%s) exceeded
10 #2)只能通过abort方式强制终止数据库实例
11 secdb@secdb1 /home/oracle$ sqlplus / as sysdba
12 SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 22 18:25:55 2011
13 Copyright (c) 1982, 2005, Oracle. All rights reserved.
14 Connected.
15 NotConnected@> shutdown abort;
16 ORACLE instance shut down.
17 #3)连接到数据库生成pfile
18 secdb@secdb1 /home/oracle$ sqlplus / as sysdba
19 SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 22 18:32:02 2011
20 Copyright (c) 1982, 2005, Oracle. All rights reserved.
21 Connected to:
22 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
23 With the Partitioning, OLAP and Data Mining options
24 sys@secdb> create pfile from spfile;
25 File created.
26 #4)调整pfile中错误设置的参数
27 secdb@secdb1 /home/oracle$ vi $ORACLE_HOME/dbs/initsecdb.ora
28 ……省略其他内容……
29 *.processes=200
30 ……省略其他内容……
31 *.shared_servers=200
32 ……省略其他内容……
33 将上面的shared_servers参数调整为“0”
34 #5)生成spfile并启动数据库
35 secdb@secdb1 /home/oracle$ sqlplus / as sysdba
36 SQL*Plus: Release 10.2.0.1.0 - Production on Sun May 22 18:38:19 2011
37 Copyright (c) 1982, 2005, Oracle. All rights reserved.
38 Connected to an idle instance.
39 NotConnected@> create spfile from pfile;
40 File created.
41 NotConnected@> startup;
42 ORACLE instance started.
43 Total System Global Area 314572800 bytes
44 Fixed Size 1219184 bytes
45 Variable Size 104859024 bytes
46 Database Buffers 205520896 bytes
47 Redo Buffers 2973696 bytes
48 Database mounted.
49 Database opened.
50 #故障处理完毕。

7.小结

本文给出了测试调整shared_servers参数对数据库的影响,重点给出了由于shared_servers参数设置过大导致数据库无法启动的故障。对数据库的管理和维护是一个系统工程,需要DBA全面衡量和探究后给出优化策略。
Good luck.
secooler
11.05.22
-- The End --

【Shared Server Mode】测试调整shared_servers参数对数据库的影响的更多相关文章

  1. Oracle Dedicated server 和 Shared server(专用模式 和 共享模式) 说明(转)

    一.  官网说明 在DBCA 建库的时候,有提示让我们选择连接类型,这里有两种类型:专用服务器模式和共享服务器模式.默认使用专用模式.如下图: Oracle 官方文档对这两种文档的说明如下: Abou ...

  2. oom_kill_process造成数据库挂起并出现found dead shared server

    这篇博客是上一篇博客Oracle shutdown immediate遭遇ORA-24324 ORA-24323 ORA-01089的延伸(数据库挂起hang时,才去重启的),其实这是我们海外一工厂的 ...

  3. JVM性能优化--JVM参数配置,使用JMeter简单测试配合说明参数调优

    一.JVM参数配置 1.常见参数配置 -XX:+PrintGC 每次触发GC的时候打印相关日志 -XX:+UseSerialGC 串行回收 -XX:+PrintGCDetails 更详细的GC日志 - ...

  4. [20180123]测试SQLNET.EXPIRE_TIME参数.txt

    [20180123]测试SQLNET.EXPIRE_TIME参数.txt --//曾经写过一篇linux内核网络参数测试tcp_keepalive,链接http://blog.itpub.net/26 ...

  5. Oracle shared server模式连接ORA-12519

    设置了shared server连接,dispatcher进程和shared server进程都没有问题listener.ora文件配置如下:LSNR2=  (DESCRIPTION=    (ADD ...

  6. 在sql server中建存储过程,如果需要参数是一个可变集合怎么处理?

    在sql server中建存储过程,如果需要参数是一个可变集合的处理 原存储过程,@objectIds 为可变参数,比如 110,98,99 ALTER PROC [dbo].[Proc_totalS ...

  7. (转)DB2性能优化 – 如何通过调整锁参数优化锁升级

    原文:http://blog.51cto.com/5063935/2074306 1.概念描述 所谓的锁升级(lock escalation),是数据库的一种作用机制,为了节约内存的开销, 其会将为数 ...

  8. maven 测试写入JRE参数

    项目在测试时碰到一个问题,就是JVM加载参数的问题. web项目本身在注入配置信息的时候,读取的是本地的配置文件,但是配置文件的位置是卸载tomcat 里面配置的JAVA_OPTS里面的. 问题出现了 ...

  9. SQL SERVER 2008配置Database Mail –用SQL 数据库发邮件

    SQL SERVER 2008配置Database Mail –用SQL  数据库发邮件 https://blogs.msdn.microsoft.com/apgcdsd/2011/06/28/sql ...

随机推荐

  1. excel数据 入库mysql 和 mysql数据 导入excel文件

    1.excel数据入库mysql 首先准备excel文件, 标红的地方需要留意,一个是字段名所在行,一个表名对应页: 然后私用mysql工具 navicat, 选择数据库,然后导入文件, 选中相应ex ...

  2. Coursera, Deep Learning 5, Sequence Models, week2, Natural Language Processing & Word Embeddings

    Word embeding 给word 加feature,用来区分word 之间的不同,或者识别word之间的相似性. 用于学习 Embeding matrix E 的数据集非常大,比如 1B - 1 ...

  3. git操作本地仓库基本使用教程

    1.创建仓库 mkdir learngit 2.初始化 cd learngit git init 3.添加文件(把要提交的所有修改放到暂存区(Stage)) git  add 文件 4.提交到仓库(以 ...

  4. Socket TCP客户端和服务器的实现

    import java.io.*; import java.net.Inet4Address; import java.net.InetSocketAddress; import java.net.S ...

  5. JAVA进阶3

    间歇性混吃等死,持续性踌躇满志系列-------------第3天 1.局部内部类 局部内部类是指在类的方法中定义的内部类,它的作用范围也是在这个方法体内. class SellOutClass{ p ...

  6. A - Arcade Game Gym - 100814A (概率思维题)

    题目链接:https://cn.vjudge.net/contest/285964#problem/A 题目大意:每一次给你你一个数,然后对于每一次操作,可以将当前的数的每一位互换,如果互换后的数小于 ...

  7. python基础知识~备份还原功能设计

    一 相关模块设计 1 配置文件管理模块 configparser    1 config-value不要加引号 2 linux系统执行命令模块 subprocess   1 shell=True代表命 ...

  8. wx小程序-音频视频!

    1.音乐的启动跟暂停 dom里面图片切换的另一种方法 通过变量 改变路径 2.监听 在onload里面 3.定义了一个全局变量 然后在但页面中获取 app.js 单页面中 app.js 的三个生命周期

  9. linux系统 之 curl命令

    1,curl命令 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工 ...

  10. shell编程 之 传递参数到脚本里

    1 传递参数的基本格式 在脚本的需要参数的地方写$1,$2,$3...$n,运行的时候带参数运行就相当于是专递参数进shell脚本里了,比如: ./t1.sh 1 2 #!/bin/bash echo ...