Oracle11G_R2中共享服务器模式和专用服务器模式参数解释及设置
sys@MYTESTDB> show parameter
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
shared_servers integer 1
max_shared_servers integer
processes integer 150
shared_server_sessions integer
dispatchers string (PROTOCOL=TCP) (SERVICE=MYTESTDBXDB)
max_dispatchers integer
circuits integer
shared_servers
指定了当instance 启动的时候 shared server process 启动的数量,不要将这个参数设置得太大,否者启动数据库instance 的时候就会花更多时间,Oracle启动过后会根据负载来动态调整shared_servers。如果为0,表示数据库没有启动共享服务模式。 这个参数是配置shared server 必须的,而且只有这个参数是必须的。
如果shared_servers=0,则数据库会运行在dedicated模式下。如果shared_servers>0,数据库会运行在shared模式下,如果没有指定dispatchers参数,则oracle自动根据每种protocol创建一个dispatcher。
max_shared_servers
ORACLE在同一个时刻最大能够使用的 shared server process.不要将这个参数设置小于 shared_servers,如果动态修改shared_servers大于max_shared_servers,ORACLE会覆盖max_shared_servers的值,此时你需要修改max_shared_servers.同时也不能大于processes。这个参数是为了给占用很大资源操作而设的(批处理),为了预留一些process 给DBA任务(rman备份)
shared_server_sesions
指定了总共允许的的 shared server session 的数量。如果设置了这个参数,那么就不要将这个值超过sessions,如果没有设置这个值,那么只要还有空闲的session,就可以被使用。设置这个值是为专有连接预留 user sessions.
dispatchers(调度进程)
配置 dispatcher process .如果不设置这个参数,只要设置了shared_servers,oracle 也会自动设置一个基于tcp协议的dispatcher。还需要查看操作系统支持一个dispatcher能处理多少个connections
SQL> select * from v$dispatcher;
max_dispatchers
设置同一时刻能够同时运行的dispatchers的数量,必须大于等于 dispatchers ,小于processes。这个参数也会被dispatchers覆盖。
关闭调度进程:
首先要查询到DISPATCHERS的NAME: SELECT NAME,NETWORK FROM V$DISPATCHER;
然后关闭调度进程:ALTER SYSTEM SHUTDOWN IMMEDIATE 'D000';
circuits(虚拟回路):指定了virtual circuits 的总数量。
SQL> select * from V$CIRCUIT;
关闭共享模式
将 shared_servers 参数置为0(alter system set shared_servers=0;),那么所有以共享方式连接到数据库都不能成功,但是未释放的共享连接会继续 保持连接,直到断开。如果将 shared_servers 和 max_shared_servers 都设为0(alter system set max_shared_servers=0;),那么共享连接将被终结。所有的共享方式连接都断开了的话,就可以使用 alter system set dispatcher=''; 将dispatcher清除,防止下次启动数据库又打开了共享连接方式。
查看shared_servers参数的值判断oracle是共享模式还是专用模式的方法
sys@MYTESTDB> select a.username, a.sid, a.serial#, a.server, a.paddr, a.status, b.program
2 from v$session a left join v$process b
3 on (a.paddr = b.addr)
4 where a.username = 'SYS'
5 /
USERNA SID SERIAL# SERVER PADDR STATUS PROGRAM
------ --- ------- --------- ---------------- ------ -----------------------------------
SYS 1 7 DEDICATED 000000008808AFD0 ACTIVE oracle@MYTEST.MYTEST.me (TNS V1-V3)
可以看到SERVER字段是DEDICATED,也就是专用服务器模式
另外
如果是dedicated server,则客户端只能创建dedicated server connection
如果是shared server,则客户端能创建dedicated server connection和shared server connection,只要在service name中指定server=dedicated or server=shared.
#############################################################################################################################################################
alter system set dispatchers='(protocol=TCP) (SERVICE=dbposXDB)','(ADDRESS=(PROTOCOL=TCP)(PORT=5001))' sid='*' scope=both;
ALTER SYSTEM SHUTDOWN IMMEDIATE 'D000';
[oracle@rac1 ~]$ sql
SQL*Plus: Release 11.2.0.3.0 Production on 星期三 8月 28 11:26:28 2019
Copyright (c) 1982, 2011, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
SQL> show parameter dispatcher
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dispatchers string (PROTOCOL=TCP) (SERVICE=testdb
XDB)
max_dispatchers integer
SQL> alter system set dispatchers='(protocol=TCP)','(ADDRESS=(PROTOCOL=TCP)(PORT=5001))' sid='*' scope=both;
alter system set dispatchers='(PROTOCOL=TCP) (SERVICE=testdbXDB)' sid='*' scope=both;
系统已更改。
SQL> show parameter dispatcher
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dispatchers string (protocol=TCP), (ADDRESS=(PROT
OCOL=TCP)(PORT=5001))
max_dispatchers integer
SQL>
关闭DISPATCH进程
1 确定要关闭的进程
SELECT NAME, NETWORK FROM V$DISPATCHER;
2 ALTER SYSTEM SHUTDOWN IMMEDIATE 'D002'(DISPATCH NAME);
########################################################################################################################################
Shared server模式中,发现dispatcher process可比Shared server process重要的多; kill一个shared server process,顶多只有attach那个进程的session受影响;如果kill一个dispatcher, 被分配给这个dispatcher的所有session都会自动断开。
查看 v$dispatcher可以看每个dispatcher负责多少session.
ORACLE@SQL> select name,OWNED from v$dispatcher;
NAME OWNED
—- ———-
D000 283
D001 285
D002 282
MTS连接,一直查询v$session.paddr,发现并不会变化,说明session自从创建开始就一直存在于该dispatcher的队列中。DISPATCHER的队列模式为 多对一 模式,多个”事务”,
一个CPU (Dispatcher)
通过查看busy rate和queue time,可以判断是否需要更多的dispatcher进程。
Select name, (busy / (busy + idle))*100
"Dispatcher % busy Rate"
From V$DISPATCHER;
NAME Dispatcher % busy Rate
—- ———————-
D000 3.82924217
D001 3.71514979
SELECT d.name,decode(totalq,0,'No Responses',
wait/totalq) "Average Wait time"
FROM V$QUEUE q, V$DISPATCHER d
WHERE q.type = 'DISPATCHER'
AND q.paddr = d.paddr;
NAME Average Wait time (单位为1/100秒)
—- —————————————-
D001 .013183
D002 .013174
#########################################################################################################################################################
Sun Sep 01 06:00:06 2019
Errors in file /u01/app/oracle/diag/rdbms/testdb/testdb1/trace/testdb1_j000_14330.trc:
ORA-12012: error on auto execute of job "ORACLE_OCM"."MGMT_CONFIG_JOB_2_1"
ORA-29280: invalid directory path
ORA-06512: at "ORACLE_OCM.MGMT_DB_LL_METRICS", line 2436
ORA-06512: at line 1
解决方法2:
如果不使用OCM Collector, 可以从数据库中移除OCM的对象。
SQL> drop user ORACLE_OCM cascade;
OCM 是一个独立的工具,移除OCM 不影响数据库其他功能的使用。
如果不删除OCM 的对象,也可以禁用OCM的jobs,命令如下:
exec dbms_scheduler.disable('ORACLE_OCM.MGMT_CONFIG_JOB');
exec dbms_scheduler.disable('ORACLE_OCM.MGMT_STATS_CONFIG_JOB');
########################################################################################################################################################
Auto-tuning: Shutting down background process GTX1
Solution
1. Its normal for the database to automatically tune the number of these processes based on the workload of XA global transactions.If any application which using XA transaction and connecting to oracle RAC database, is it required.This a normal behavior and you do not have to worry about this error messages. Ignore Them
2. If you are sure that you are not using XA and want to stop these messages.You can disable the GTXn background processes,
then you must set GLOBAL_TXN_PROCESSES to 0 in your parameter file. Setting this parameter to 0 will disable the XA support on an Oracle RAC database.
Please refer -
Oracle? Database Reference
11g Release 2 (11.2)
Part Number E10820-02 -> GLOBAL_TXN_PROCESSES
#########################################################################################################################################################
106测试库出现大量的以下报错
Tue Dec 03 16:19:41 2019
opidcl aborting process unknown ospid (30182) as a result of ORA-2396
Tue Dec 03 16:19:41 2019
opidcl aborting process unknown ospid (30184) as a result of ORA-2396
Tue Dec 03 16:19:41 2019
opidcl aborting process unknown ospid (30186) as a result of ORA-2396
Tue Dec 03 16:21:06 2019
opidcl aborting process unknown ospid (30264) as a result of ORA-2396
Tue Dec 03 16:33:30 2019
opidcl aborting process unknown ospid (30842) as a result of ORA-2396
Tue Dec 03 16:33:30 2019
opidcl aborting process unknown ospid (30852) as a result of ORA-2396
Tue Dec 03 16:33:30 2019
opidcl aborting process unknown ospid (30862) as a result of ORA-2396
Tue Dec 03 16:33:30 2019
opidcl aborting process unknown ospid (30866) as a result of ORA-2396
Tue Dec 03 16:33:30 2019
opidcl aborting process unknown ospid (30860) as a result of ORA-2396
Tue Dec 03 16:33:30 2019
opidcl aborting process unknown ospid (30854) as a result of ORA-2396
Tue Dec 03 16:33:30 2019
opidcl aborting process unknown ospid (30864) as a result of ORA-2396
Tue Dec 03 16:33:30 2019
opidcl aborting process unknown ospid (30850) as a result of ORA-2396
在$ORACLE_HOME/network/admin/sqlnet.ora文件中添加
SQLNET.INBOUND_CONNECT_TIMEOUT = 0
在$ORACLE_HOME/network/admin/listener.ora文件中添加
INBOUND_CONNECT_TIMEOUT_LISTENER = 0
进一步观察是否还有报错
############################################################################################################
session超时设置
在$ORACLE_HOME/network/admin/sqlnet.ora文件中添加
SQLNET.EXPIRE_TIME=60
TRACE_LEVEL_SERVER = 16
TRACE_FILE_SERVER = SERVER
TRACE_DIRECTORY_SERVER= /u01/app/oracle/network/trace
TRACE_TIMESTAMP_ SERVER = ON
TRACE_UNIQUE_SERVER = ON
DIAG_ADR_ENABLED=OFF
##################################################################################################################
禁用11gr2的统计信息自动收集功能
SQL> select client_name,status from DBA_AUTOTASK_CLIENT;
CLIENT_NAME STATUS
---------------------------------------------------------------- --------
auto optimizer stats collection ENABLED
auto space advisor ENABLED
sql tuning advisor ENABLED
启动
begin
DBMS_AUTO_TASK_ADMIN.ENABLE(client_name => 'auto optimizer stats collection',
operation => NULL,
window_name => NULL);
end;
/
关闭
begin
DBMS_AUTO_TASK_ADMIN.DISABLE(client_name => 'auto optimizer stats collection',
operation => NULL,
window_name => NULL);
end;
/
SQL> begin
2 DBMS_AUTO_TASK_ADMIN.DISABLE(client_name => 'auto optimizer stats collection',
3 operation => NULL,
4 window_name => NULL);
5 end;
6 /
PL/SQL procedure successfully completed.
SQL> select client_name,status from DBA_AUTOTASK_CLIENT;
CLIENT_NAME STATUS
---------------------------------------------------------------- --------
auto optimizer stats collection DISABLED
auto space advisor ENABLED
sql tuning advisor ENABLED
SQL>
##############################################################################################################
Errors in file /u01/app/oracle/diag/rdbms/rac/rac1/trace/rac1_j001_17184.trc:
ORA-12012: error on auto execute of job "SYS"."BSLN_MAINTAIN_STATS_JOB"
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "DBSNMP.BSLN_INTERNAL", line 2073
ORA-06512: at line 1
看似是ORACLE 的作业没有运行,查了一圈发现由于 DBSNMP没有执行权限引起
解决方案:
查看dbsnmp是否拥有执行sys.dbms_job的权限
select * from dba_tab_privs where table_name='DBMS_JOB';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY
--------------- ---------- -------------------- ---------- ---------- --------- ---------
PUBLIC SYS DBMS_JOB SYS EXECUTE NO NO
EXFSYS SYS DBMS_JOB SYS EXECUTE NO NO
SYSMAN SYS DBMS_JOB SYS EXECUTE NO NO
APEX_030200 SYS DBMS_JOB SYS EXECUTE NO NO
OWBSYS SYS DBMS_JOB SYS EXECUTE NO NO
2.授予dbsnmp用户执行sys.dbms_job权限
GRANT EXECUTE ON sys.dbms_job to DBSNMP;
SQL> select * from dba_tab_privs where table_name='DBMS_JOB';
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRANTABLE HIERARCHY
--------------- ---------- -------------------- ---------- ---------- --------- ---------
PUBLIC SYS DBMS_JOB SYS EXECUTE NO NO
DBSNMP SYS DBMS_JOB SYS EXECUTE NO NO
EXFSYS SYS DBMS_JOB SYS EXECUTE NO NO
SYSMAN SYS DBMS_JOB SYS EXECUTE NO NO
APEX_030200 SYS DBMS_JOB SYS EXECUTE NO NO
OWBSYS SYS DBMS_JOB SYS EXECUTE NO NO
Oracle11G_R2中共享服务器模式和专用服务器模式参数解释及设置的更多相关文章
- Java中HashMap 初始化时容量(参数)如何设置合适?
问题引入 注:本文代码源自java 9. 阿里的插件对于初始化HashMap时,调用无参构造方法,提示如下: 那么问题来了,如果已知需要向 map 中 put n次,那么需要设定初始容量为多少? 单纯 ...
- HearthBuddy中_settings.txt的更详细参数解释
https://tieba.baidu.com/p/5275382967 默认的配置不是很合理,花了点时间读了下silverfish(也就是兄弟用的AI)的代码后也尝试修改了些参数,有没有效果仁者见仁 ...
- Redis相关的内核参数解释与设置
参数 somaxconn /proc/sys/net/core/somaxconn 对于TCP连接,Client和Server连接需要三次握手来建立连接,Server端监听状态会由LISTEN切换为E ...
- 专用服务器模式&共享服务器模式
连接ORACLE服务器一般有两种方式:专用服务器连接(dedicated server)和共享服务器连接(shared server).那么两者有啥区别和不同呢?下面我们将对这两者的区别与不同一一剖析 ...
- 内存中 OLTP - 常见的工作负荷模式和迁移注意事项(二)
----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<In-Memory OLTP – Comm ...
- Java中的GOF23(23中设计模式)--------- 工厂模式(Factory)
Java中的GOF23(23中设计模式)--------- 工厂模式(Factory) 在给大家介绍工厂模式之前,我想和大家聊聊面向对象的那点事,在这里,引入三个概念. 开闭原则(Open Close ...
- iOS中常见的设计模式——单例模式\委托模式\观察者模式\MVC模式
一.单例模式 1. 什么是单例模式? 在iOS应用的生命周期中,某个类只有一个实例. 2. 单例模式解决了什么问题? 想象一下,如果我们要读取文件配置信息,那么每次要读取,我们就要创建一个文件实例,然 ...
- PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结
前 言 OOP 学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1 PHP中的抽象 ...
- 详解 Java 中的三种代理模式
代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这里使用 ...
随机推荐
- react-native android/ios 手动/自动 修改版本号
目录 一 手动操作 1.Android 2.IOS 二 自动从配置文件读取并写入相应的地方 1.package.json配置版本 2.Android: 3.IOS 添加sell代码 当版本迭代时候要修 ...
- Spring Boot 结合Spring Data结合小项目(增,删,查,模糊查询,分页,排序)
本次做的小项目是类似于,公司发布招聘信息,因此有俩个表,一个公司表,一个招聘信息表,俩个表是一对多的关系 项目整体结构: Spring Boot和Spring Data结合的资源文件 applicat ...
- 批量修改bilibili客户端下载视频文件名
代码已上传:Github 起因 昨天晚上从B站电脑客户端下了一个分集视频 但是下载后的视频是这样的: 视频名是这样的: 这样既不直观又不美观,就算把视频文件放到一个文件夹内,连续看视频时也不容易记住看 ...
- ZOJ2770-Burn The Linked Camp(火烧连营Orz 差分约束-线性约束+最长路(OR反向最短路))
It is well known that, in the period of The Three Empires, Liu Bei, the emperor of the Shu Empire, w ...
- layim手机版嵌入app
感觉记忆力不行了,才做了就有点忘了.先简单做下记录... 遇到的问题 需要类似微信的语音发送功能 前端发送给后端,在mogodb中用二进制存储.后端取到数据发送给我的也是blob.前端拿到数据就变了. ...
- 支持100+业务线、累计发布17万次|宜信容器云的A点与B点(分享实录)
宜信公司从2018年初开始建设容器云,至今,容器云的常用基本功能已经趋于完善,主要包括服务管理.应用商店.Nginx配置.存储管理.CI/CD.权限管理等,支持100+业务线.3500+的容器运行.伴 ...
- 进程-(process)、线程-(Thread)
进程和线程之间的区别: 内存之间的区别: 进程之间不可以共享内存空间,每个进程都有各自独立的内存空间: 线程之间则是可以共享一个进程里的内存空间: 通信机制方面的区别 默认情况下,进程之间很难互通的, ...
- Test1016
T1 kom (容斥 \((1s32M)\) 给出\(N\)个互不相同的正整数,统计共有多少对数,它们有公共的一个数字(不一定在同一位置上) 输入 第一行一个正整数 \(N (1 ≤ N ≤ 1 00 ...
- MySql数据库之连接查询
在MySql数据库中连接查询分为以下几种方式: 1.内连接查询 内连接查询通过关键字 inner join 关键字来实现,通过代码实现: select * from 表1 inner join 表2 ...
- 爬虫(十):AJAX、爬取AJAX数据
1. AJAX 1.1 什么是AJAX AJAX即“Asynchronous JavaScript And XML”(异步JavaScript和XML)可以使网页实现异步更新,就是不重新加载整个网页的 ...