ITPub博客

首页 > 数据库 > Oracle > Oracle 12c 启用OSM 与 MPMT多线程模式

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

原创 Oracle 作者:deepalley 时间:2014-04-14 23:32:23 0 删除 编辑
------- 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 保证客户端连接采用多线程模式。

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

请登录后发表评论 登录
全部评论

注册时间:2014-02-25

  • 博文量
    6
  • 访问量
    62063