一、RAC 中cluster wait time高问题
1.设置LMS进程为FX 60,不要过多调整lms进程的数量
注:在Solaris 10 Update 10之后,以及Solaris 11,才可以设置进程的优先级。可以通过看/etc/release看其版本。如Oracle Solaris 10 1/13 是表示Solaris 10 Update 11,可参考:Oracle Solaris 10 Update版本及其历史
Oracle Solaris 10 1/06 (Update 1) U1
Oracle Solaris 10 6/06 (Update 2) U2
Oracle Solaris 10 11/06 (Update 3) U3
Oracle Solaris 10 8/07 (Update 4) U4
Oracle Solaris 10 5/08 (Update 5) U5
Oracle Solaris 10 10/08 (Update 6) U6
Oracle Solaris 10 5/09 (Update 7) U7
Oracle Solaris 10 10/09 (Update 8) U8
Oracle Solaris 10 9/10 (Update 9) U9
Oracle Solaris 10 8/11 (Update 10) U10
Oracle Solaris 10 1/13 (Update 11) U11
2. UDP的参数:
In /etc/system
set ip:ip_squeue_bind = 0
二、在大型系统中,startup启动慢,加载sga慢。
1.为了加速sga内存加载,可以加大并发加载内存的模式:(注:默认为最大16个并发,下面的改成了32个并发),修改/etc/system中的参数:
set vmtask_ntasks_max = 0x20
2.或者直接在线修改:
echo “vmtask_ntasks_max /W 0x20” | /bin/mdb -kw
在测试环境中,在T3-4的机器上,加载450G的SGA,如果默认16个并发,需要60秒,如果用64个并发,只需要20秒左右。
三、log file sync问题
log file sync等待较多,但是log file parallel write等待时间不多。
可以用prstat -p <PID_OF_LGWR>-v 检查lgwr的cpu使用情况,如%sys的比例,如LAT的latency。
1. 降低每个信号量的process数:
# projadd -U oracle -K "process.max-sem-nsems=(priv,64,deny)" user.oracle
# projmod –a -K "process.max-sem-nsems=(priv,64,deny)" user.oracle
# prctl -n process.max-sem-nsems -r -v 64 -i process <PID>
2.提高lgwr的进程优先级到FX 60
# priocntl –c FX -m 60 -p 60 -s `/usr/bin/pgrep -f ora_lgwr`
3. 给lgwr以独占的方式使用cpu
# #Create Processor Set
# psrset –c 56-63
# #Turn off all but one CPU in the processor set
# psradm –f 57-63
# #Bind the lgwr to the processor set
# psrset –b 1 `pgrep –f ora_lgwr`
# #Mark the CPU as non-interruptible
# psrset –f 56
四、db file sequential/parallel read等待过高的问题。
1. 还是如上面的方式,使用processor sets来独占CPU。
2.确认IO已经均匀分布在每个可用的controllers/channels/ports上
3.在SAN环境中,考虑使用多路径MPXIO
4.使用Database Smart Flash Cache:
- db_flash_cache_file = <+flashdg/FlashCacheFile>
- db_flash_cache_size = <flashpoolsize>
参考:CON1741_Mcintosh-Top 10 Database Performance Tips for SPARC Systems Running Oracle Solaris.pptx