Oracle11G_R2中共享服务器模式和专用服务器模式参数解释及设置

[email protected]> 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是共享模式还是专用模式的方法
[email protected]> 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 [email protected] (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‘;

[[email protected] ~]$ 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.

[email protected]> 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

原文地址:https://www.cnblogs.com/ritchy/p/12094260.html

时间: 2024-08-02 22:48:55

Oracle11G_R2中共享服务器模式和专用服务器模式参数解释及设置的相关文章

专用服务器模式&共享服务器模式

连接ORACLE服务器一般有两种方式:专用服务器连接(dedicated server)和共享服务器连接(shared server).那么两者有啥区别和不同呢?下面我们将对这两者的区别与不同一一剖析. 专用服务器模式(dedicated server)模式 在专用服务器模式中,用户进程运行在客户端的机器上,专用服务器进程运行在数据库服务器,用户进程和专用服务器进程是两种不同类型的进程. 对于专用服务器模式,在用户登录时,ORACLE总会创建一个新的服务进程,这通常称为专用服务器配置.这个服务器

PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结

  前  言  OOP  学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1  PHP中的抽象类与抽象方法 1.什么是抽象方法?              没有方法体 {} 的方法,必须使用abstract 关键字修饰.这样的方,我们叫做抽象方法.                    abstract function say(); //    抽象方法 2.什么是抽象类?        

.Net中的几种异步模式

.Net中的几种异步模式 .Net中的几种异步模式基于事件的异步模式(EAP)IAsyncResult接口简单的异步模式--引入lambdaTask手动异步编程的问题 在C# 5.0引入async之前,存在几种异步编程模式,比如Event-based Asynchronous Pattern.IAsyncResult接口.Task等等. 基于事件的异步模式(EAP) private void DumpWebPage(Uri uri) { WebClient webClient = new Web

呃,如何使 .NET 程序,在 64位 系统 中,以 32位 模式运行。

其实最简单的方法就是在解决方案中,把平台设为 x86 就好了哈~   但是今天遇到一个第三方的软件,它调用的一个 dll 是 32位 的,可能它没有测试过在 64位 系统下运行的情况,它在编译时是按默认的配置设为了 Any CPU. 但是在 64位 系统中以默认 64位 模式运行时,再调用 32位 的 dll 就报异常了... 于是想到的一个办法就是让它在 64位 系统中,以 32位 模式运行就好了~   在网上搜了一下,没想到 .NET 本身就提供了这个修改工具,叫做 CorFlags.exe

Android中的系统服务(代理模式)

一,系统启动 Android设备的开机流程总得来分可以分为三部分: 加载引导程序 引导程序bootloader是开机运行的第一个小程序,因此它是针对特定的主板与芯片的.bootloader有很多种,可以使用比较流行的如redboot.uboot.ARMBoot等,也可以开发自己的引导程序,它不是Android操作系统的一部分.引导程序也是OEM厂商或者运营商加锁和限制的地方. 引导程序初始化硬件设备.创建存储器空间的映射等软件运行时所需要的最小环境:加载Linux内核镜像文件(本文只针对Andr

apache中配置php支持模块模式、cgi模式和fastcgi模式

apache中配置php支持模块模式.cgi模式和fastcgi模式 首先安装apache.MySQL和PHP,依次顺序安装. 1.apache.mysql的安装比较简单,略过 2. php的安装,我安装的是php5.3.6内置了php-fpm,所以不需要再单独下补丁了. ./configure –prefix=/usr/local/php5 /--with-mysql=/usr/local/mysql /--enable-fpm--with-apxs2=/usr/local/apache/bi

Android开发中无处不在的设计模式——策略模式

这个系列停更了好久了,差不多可以重新拿起来更一篇了,这篇文章主要介绍策略模式.在这之前,先温习一下前面介绍的4种模式. 设计模式很重要! 设计模式很重要! 设计模式很重要! 重要的事说三遍!!! Android开发中无处不在的设计模式--单例模式 Android开发中无处不在的设计模式--Builder模式 Android开发中无处不在的设计模式--观察者模式 Android开发中无处不在的设计模式--原型模式 接着看下策略模式的定义 策略模式定义了一些列的算法,并将每一个算法封装起来,而且使它

Apache服务器中prefork和worker工作模式

一.多道处理模块MPM介绍 Apache HTTP 服务器被设计为一个功能强大,并且灵活的 web 服务器, 可以在很多平台与环境中工作.不同平台和不同的环境往往需要不同 的特性,或可能以不同的方式实现相同的特性最有效率.Apache 通过模块化的设计来适应各种环境.这种设计允许网站管理员通过在 编译时或运行时,选择哪些模块将会加载在服务器中,来选择服务器特性.        Apache 2.0 扩展此模块化设计到最基本的 web 服务器功能. 它提供了可以选择的多处理模块(MPM),用来绑定

Java中的GOF23(23中设计模式)--------- 工厂模式(Factory)

Java中的GOF23(23中设计模式)--------- 工厂模式(Factory) 在给大家介绍工厂模式之前,我想和大家聊聊面向对象的那点事,在这里,引入三个概念. 开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们如何建立一个稳定的.灵活的系统:一个软件实体如类.模块和函数应该对扩展开放,对修改关闭.说白了就是在这里我的项目写完了,你到改某些功能,就只能添加新的类,不能修改其他的类,在这里也许会有很多的人会说,为什么呀,我举个例子,你做的版本