基于Solaris sparc的Oracle调优


一、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

相关内容