oracle 12c 多线程,Oracle 12c 启用OSM 与 MPMT多线程模式

------- OSM -------

Oracle 从12c开始在 SOLARIS平台上采用 OSM (Optimal Shared Memory) 作为申请SGA内存的默认机制,代替之前的ISM和Dynamic ISM,Solaris从以下版本开始支持OSM:

Oracle Solaris 10 1/13.

Oracle Solaris 11 SRU 7.5 or later.

对于如何启动OSM,引用MOS文档上的描述:"Provided that you are running on a version of Oracle Solaris which contains the OSM feature, OSM will be used to implement the SGA whenever you define MEMORY_MAX_TARGET to a value strictly greater than (and not equal to) MEMORY_TARGET."但是根据实验,两个参数相等时也可以启用。 有两种方法可以检测是否启用OSM。

1.  执行 "ipcs -dm " 查看列“ALLOC”

ALLOC列值中有连字符“-”证明OSM没有启用;如果列值是整型数字证明自用OSM:(例子中为系统启用了OSM)

# ipcs -dm

T         ID      KEY        MODE        OWNER    GROUP      ALLOC

Shared Memory:

m  486539308   0x0        --rw-r-----   racusr    osasm 16777216

m  486539307   0x0        --rw-r-----   racusr    osasm 1358954496

m  486539306   0xd6dbf168 --rw-r-----   racusr    osasm 16777216

m  369098787   0x0        --rw-r-----   crsusr oinstall 658505728

m  369098786   0x78f47b24 --rw-r-----   crsusr oinstall 4194304

2. 用pmap命令结果搜索 osm 关键字,pmap -xs 'ora_pmon' | grep osm

# pmap -xs `ps -ef | grep ora_pmon | grep -v grep | awk \'{print $2}\'` | grep osm

0000000380000000      16384      16384          -      16384   4M rwxs-    [ osm shmid=0x1d00002a ]

0000000400000000     704512          -          -          -    - ---s-    [ osm shmid=0x1d00002b ]

000000042B000000    1327104    1327104          -    1327104   4M rwxs-    [ osm shmid=0x1d00002b ]

0000000480000000      16384      16384          -      16384   4M rwxs-    [ osm shmid=0x1d00002c ]

-------MPMT-------

Unix/Linux中oracle数据库进程采用多进程模式,如我们可以在系统进程列表中看到pmon,smon,dbwr,lgwr,ckpt等oracle系统进程。随着oracle数据库功能增多,进程数量也随之增加,创建进程的开销以及进程上下文切换的开销也越来越大(进程状态切换 switching 是要直接硬件CPU资源),多线程结构中,线程切换在用户空间通过库函数实现,开销不在一个量级。

以下介绍在RAC环境下如何启用多线程模式

1. 如果spfile不在ASM上,保证在每个rac节点中修改参数“threaded_execution=TRUE”;如果spfile在ASM上共享,只需要在一个节点中修改就好

SQL> show parameter threaded

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

threaded_execution                   boolean FALSE

SQL> alter system set threaded_execution=true scope=spfile;

System altered.

2. 重启数据库:

srvctl stop database -d srvctl start database -d 3.在listener.ora中 DEDICATED_THROUGH_BROKER_=ON 保证客户端连接采用多线程模式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值