※天道酬勤※

§水至清则无鱼,人至察则无徒§
posts - 65, comments - 11, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

一、优化磁盘配置
  Oracle是一个磁盘I/O强烈的应用,要确保你恰当地配置磁盘和文件系统:


不要使用磁盘压缩
  Oracle数据文件不支持磁盘压缩。

不要使用超过70%的磁盘空间
  剩余的磁盘空间存放系统临时数据和作为磁盘碎片整理程序存放中间数据。

分离页面交换文件到多个磁盘物理卷
  跨越至少两个磁盘建立两个页面文件。你可以建立四个页面文件并在性能上受益,确保所有页面文件的大小之和至少是物理内存的两倍。

取消屏幕保护
  屏幕保护吸取大量的CPU资源而且提供的是对数据库服务器毫无意义的用处,特别要禁止3GL屏幕保护,如果你必须使用屏幕保护就用空屏幕减少CPU使用。

监视系统中消耗中断的硬件
  消耗CPU中断和时间的硬件应该避免使用。通常这样的硬件是便宜的因为它把工作载入CPU,而CPU要处理外围的高级性能的硬件,通常需要注意:
  1、支持总线控制的网卡
  2、支持DMA而不支持PIO的磁盘控制器
  使用性能监视器跟踪处理器对象的%Interrupt Time 计数器数值,和这个计数器的基线和标准,然后监视问题。
  3、有利避免中断的方式是使用硬件RAID控制器代替Windows 2000支持的软件RAID

在专用服务器上运行Oracle
  Oracle是内存消耗大户,不要在执行下列功能的系统上运行Oracle数据库:
  1、主域或备份域控制器(Windows 2000下都称域控制器)
  2、文件服务器
  3、打印服务器
  4、远程访问服务器
  5、路由器、代理或防火墙
  不要使用花哨的壁纸(如果使用,要尽量减小壁纸文件大小)

配置网卡使用最快速度和有效模式
  这针对自动检测,大多数缺省安装是NIC,如果这是可选的就尽量调整为全双工和最大化线速度。

优化网络协议绑定顺序
  在每个网卡上设置主协议,典型地是TCP/IP,到协议列表的顶端。


  四、内存调优
  内存优化是Windows平台的关键设置,首先了解一下Windows 2000平台的Oracle结构:
基于线程的结构
  Windows2000是基于线程的结构,相反,Unix操作系统是基于进程的结构。这意味着Windows中更多的应用,包括Oracle在内,是以带有多个线程的单个进程的形式执行,这种基于线程的结构的确给Window2000带来优势——更容易共享内存。内存空间为每个进程分配,进程间共享内存很笨拙,要使用附加编码,线程是进程的子集,使用比进程少得多的内存。特定进程的所有线程共享同样的进程内存空间,同一进程的线程间共享内存比不同进程共享内存要快,这给基于线程的结构很大优势,更有效。

  使用Task Manager的主要问题是看不到任何线程。Task Manager被设计成从进程层将应用程序作为整体看待。当然还可以使用性能监视器来监视Windows下的Oracle内存使用。

  进程观察器(Process Viewer)是比较容易检查线程和进程的方法之一。可以在 Windows 2000 Support Tools Windows 2000 Resource Kit内找到一些工具。Windows 2000 Support ToolsWindows 2000的一部分,但是并不自动安装。支持安装的Windows Installer文件在%CDROM%\\SUPPORT\\TOOLS\\目录下。只要在2000RKST.MSJ上右击,并从context菜单上选择安装即可。

  保留的内存是分配给线程的内存并且留作将来使用,但没有实际使用的内存。因为没有实际使用,因此它对其它进程仍然有效。但是,因为它已经被分配,它仍然由对拥有线程的进程的总的内存限制产生,因此,保留内存的计算针对2GB3GB的限制,并且进程保留的和使用的内存的总和不能超过这个限制。

  (二)AWEWindows 2000
  AWE允许你使用系统中任何附加的超过4GB的内存,为了体现这个优势,你必须有超过4GB的内存,必须有Pentium Pro或更新的处理器,必须运行Windows 2000高级服务器或Windows 2000数据中心服务器,不需要特殊的驱动程序,因为Windows 2000已经支持AWE

  (三)AWEOracle
  可以确定,Oracle8i所有发行号版本和Oracle9i发行号2只允许你为数据库块缓冲区配置超过4GB限制的内存空间,因此,要为用户连接释放标准进程地址空间的内存(低于3GB界限的内存)、PGA内存和组成SGA的不同内存缓冲池。

  在Oracle9i发行号2中,参数DB_BLOCK_BUFFERS被参数DB_CACHE_SIZE所代替,这样就改变了原来指定缓冲区块数到指定缓冲区字节数,同样,也解释了在Oracle9i发行号2的一个数据库中支持多个数据库块大小。无论用哪种办法,如果你设定参数USE_INDIRECT_BUFFERS=TRUE,你将只能定义和使用单个数据库块大小和块缓冲区(就象在9i以前的发行号中),因此,如果缺省数据库块大小是4k8k或其它,而设置DB_2k_CACHE_SIZE是不允许的。

  (四)解决与AWE相关的内存问题
  需要注意的是每个4GB界限以上的块缓冲区需要在常规地址空间保留大约200字节的缓冲区头,因此,在上面的例子中,我们大约有312000个缓冲区头指向扩展地址空间的缓冲区,缓冲区头大约占80MB常规内存空间,如果数据库块很小,那么这个数量会相当高,因此,必须确保这些缓冲区头、AWE_WINDOW_MEMORY、和所有Oracle.exe进程的内存需求,包括编码、SGA其它组件、PGA内存和每个用户连接栈都适合Oracle.exe进程的常规3GB虚拟地址空间。

  象前面所说的那样,/PAE开关只用于系统有超过4GB物理内存的时候,但如果系统内存少于4GB时,也可模仿这项功能。在boot.ini文件中设置MAXMEM参数的值,如下面例子,设为2GB,意味着任何2GB以上的内存都将保留为AWE内存。
  multi(0)disk(0)rdisk(0)partition(1)\\WINNT=\"Microsoft Windows 2000 Advanced
  Server\" /fastdetect /PAE /MAXMEM:2048

只有注册用户登录后才能发表评论。