日期:2013-07-01  浏览次数:20515 次

Windows 2000下的Oracle功用优化需求考虑磁盘I/O、CPU、网络子系统、内存几个子系统,这里着重引见Oracle在Windows 2000环境下的内存调整。

  优化磁盘配置

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

  在磁盘上建立数据文件前首先运转磁盘碎片整理程序

  为了安全地整理磁盘碎片,需关闭打开数据文件的实例,并且停止服务。如果你有足够的连续磁盘空间建立数据文件,那么你就很容易避免数据文件产生碎片。

  不要使用磁盘紧缩

  Oracle数据文件不支持磁盘紧缩。

  不要使用磁盘加密

  加密象磁盘紧缩一样添加了一个处理层降低磁盘读写速度。如果你担心本人的数据可能泄密,就使用dbms_obfuscation包和label security选择性地加密数据的敏感部分。

  不要使用超过70%的磁盘空间

  剩余的磁盘空间存放系统临时数据和作为磁盘碎片整理程序存放两头数据。
  
  使用RAID

  选择硬件RAID超过软件RAID;

  带有硬件RAID控制器;

  日志文件不要放在RAID 5卷上,由于RAID 5读功用高而写功用差。

  把日志文件和归档日志放在与控制文件和数据文件分离的磁盘控制系统。

  分离页面交换文件到多个磁盘物理卷

  跨越至少两个磁盘建立两个页面文件。你可以建立四个页面文件并在功用上受益,确保所有页面文件的大小之和至少是物理内存的两倍。

  优化CPU使用和配置

  取消屏幕保护

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

  把系统配置为使用服务器

  运转控制面板的“系统”,在高级选项卡中设置“功用选项”到“后台程序”,这提供优先权给使用程序,象类似Oracle的服务,反对用户在图形用户界面启动一个笨拙的程序。

  监视系统中耗费中缀的硬件

  耗费CPU中缀和时间的硬件应该避免使用。通常这样的硬件是便宜的由于它把任务载入CPU,而CPU要处理外围的高级功用的硬件,通常需求留意:

  1、支持总线控制的网卡

  2、支持DMA而不支持PIO的磁盘控制器

  使用功用监视器跟踪处理器对象的%Interrupt Time 计数器数值,和这个计数器的基线和标准,然后监视问题。

  3、有利避免中缀的方式是使用硬件RAID控制器代替Windows 2000支持的软件RAID。

  保持最小的安全审计记录

  在公用服务器上运转Oracle

  Oracle是内存耗费大户,不要在执行下列功用的系统上运转Oracle数据库:

  1、主域或备份域控制器(Windows 2000下都称域控制器)

  2、文件服务器

  3、打印服务器
 
  4、近程访问服务器

  5、路由器、代理或防火墙

  不要使用花哨的壁纸(如果使用,要尽量减小壁纸文件大小

  禁止非必须的服务

  最好禁止系统里非必须的服务,如果时而需求某些服务功用,可将启动类型设置为“手动”,要做到这一点首先同网络管理员验证明际的服务需求:

  1、如果你的系统不需求打印机,通常停止这个服务并设置为手动;

  2、停止License Logging Service服务除非你对它有特殊要求;

  3、不应该使用DHCP服务,并禁止它;

  4、不要自动启动你不需求的程序;

  检查菜单“开始/程序/启动”里的内容,删除不需求的程序。

  优化网络配置

  网络配置是功用调整的一项很重要的内容,而且很容易隐藏功用瓶颈。

  配置网卡使用最快速度和无效模式

  这针对自动检测,大多数缺省安装是NIC,如果这是可选的就尽量调整为“全双工”和最大化线速度。

  删除不需求的网络协议

  只保留TCP/IP协议。

  优化网络协议绑定顺序

  在每个网卡上设置主协议,典型地是TCP/IP,到协议列表的顶端。

  为Oracle禁止或优化文件共享

  理想地应该禁止文件共享功用来最小化安全泄露和网络交通,但如果你需求使用文件和打印共享,那么就配置系统中每个网卡的“连接属性”,设置“最大化网络使用程序数据吞吐量”

  内存调优

  内存优化是Windows平台的关键设置,首先了解一下Windows 2000平台的Oracle结构:
 
  基于线程的结构

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

  在服务器上运转的每个使用程序都有一个,而且只要一个进程。进程是使用程序的载体,是用来容纳执行使用程序实际任务的线程的。从用户角度看,进程是不用任何专门工具就可以看到的组件。进程对其他使用程序组件的作用就像容器一样。它持有虚拟的存储空间、数据、系统资源和使用程序设置。虽然线程可以分配、重新分配和释放内存,但是进程接受初始的内存分配,并将它分配到请求内存的所有线程。线程是包含在进程内共享所有进程资源的单个执行路径。它还包含堆栈(存储在内存中的变量和其他数据)、CPU寄存器的形状信息(所以,线程可以恢复它的环境)、和在系统调度程序的执行列表中的一个登录项。每个线程规定了完成任务使用程序需求作的某种任务。

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

  从“开始/程序/管理工具”选择“功用”启动“系统监视器”。留意,“功用”包括两个MMC插件:“系统监视器”和“功用日志和变更”。这时,需求一些被监视的计数器(计数器是一些功用指示器,用于对 Windows 2000的特殊对象进行统计,例如统计特定线程所要求的处理器时间)。单击“添加”按钮(在图中看起来象一个加号),将看到“添加计数器”对话框。首先需求选择想监视的“功用”对象。在包含“进程”对象和“线程”对象的“功用”下拉列表中选择。

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

  内存

  基于线程的结构的确有一些内存限制,由于单个进程由线程组成,而进程的地址空间是受限的,因此很少有空间是机动的。由于Windows 2000仍然是32为操作系统,单个进程地址空间被限制在4GB内,其中一半被操作系统保留,这2GB被OS保留的系统内存也被视为系统地址空间,他包括OS内核编码、硬件笼统层编码(HAL)和需求管理进程和OS交互的不同的其它结构,这2GB的系统地址空间是禁止使用程序进程访问的。因此,Windows 2000标准服务器单个使用程序进程可使用内存空间共2GB。在Windows 2000高级服务器启动文件boot.ini中有/3GB开关,改变这个比例到3GB,这项技术被称作4GB调优(4-gigabyte tuning,或4GT),我们将针对这个问题展开详细讨论。

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

  除了系统中安装的物理内存之外,Windows 2000还使用虚拟内存。这实际上是驻留在硬盘上的内存。但是Windows 2000使得它对使用程序来说,就像是安装在