Oracle的实例管理

Oracle的实例管理

5.1 目标

本节中,您应该能够:

  • 启动/关闭Oracle实例
  • 检视用来设定Oracle实例的参数
  • 管理Oracle实例的内存组件

 

5.2 Oracle实例管理

一台Oracle Database服务器包含了一个Oracle实例与一个Oracle数据库。而一个Oracle实例则是由许多内存区与后台进程组成。

一个Oracle数据库包含了数据文件、控制文件及重做日志文件。

 

您必须先启动实例,如此使用者才能存取数据库。启动数据库实例时,会读取初始化参数文件以设定实例、配置内存区以及启动后台进程。

 

如果已经启动实例,而且也开启了数据库,使用者就能存取数据库。

5.3 Oracle内存结构

与Oracle实例相关连的基础内存结构包括:

系统全局区(SGA): 由所有服务器与后台进程共用。

程序全局据(PGA): 每台分服务器及后台进程专用;每个后台进程都有一个PGA。

 

系统全局区(SGA)

“系统全局区”是一个共用的内存区,其中包含实例信息与控制信息。

SGA是由下列信息结构组成:

  • 数据库缓冲区(Database buffer cache): 包含从数据库取得的数据库副本。储存在数据库中的信息,必须从磁盘中加以读取,并且带到内存中,才能加以检视或修改。
  • 重做日志文件缓冲区(Redo log buffer): 将重做信息置入缓冲区(用于实例恢复),直到重做信息能被写入到磁盘中的实体重做日志文件为止。
  • 共享池(Shared pool): 可以让使用者共用SQL语句。
  • 大池(Large pool): 用于缓冲I/O要求及”恢复管理员(RMAN)”备份缓冲区的可选区
  • Java池(Java pool): 用于所有特定于Java程序及Java虚拟机(JVM)内的信息

 

使用Oracle Enterprise Manager (EM) 或SQL*Plus启动实例时, 会显示分配给SGA的内存。

如果使用动态SGA基础架构,就可以在不关闭实例的情况下,变更数据库缓冲区、共享池、大池以及Java池的大小。

Oracle Database 包含自动共享内存管理功能,它能大幅简化SGA内存的管理工作。您可以使用SGA_TARGET初始化参数,来指定实例可用的SGA内存总量,而且Oracle服务器会自动在各种组件之间分配SGA内存,以确保能最大效率地使用内存。共享池、Java池、数据库缓冲池、大池都可以参与自动共享内存管理。

预先设定数据库的内存参数事先已经使用合适的设定调整过。不过随着您的数据库使用量的扩增,您可能会觉得有必要再次变更内存参数的设定。

Oracle提供警示及建议程序来找出内存大小问题,并协助您决定内存参数的最适合的值。

 

程序全局区(PGA)

“程序全局区”是一个内存区域,其中包含每台服务器进程信息与控制信息。所谓的数据库进程是一个用来服务客户端要求的系统进程或执行线程。每个服务器进程都有其专用的PGA,此PGA是在服务器进程启动时建立。对PGA的存取,专属于该服务器进程,而且只能由代表它的Oracle程序来读取和写入。

 

5.4 Oracle进程

当您呼叫应用程序或Oracle工具,例如Enterprise Manager时, Oracle服务器就会建立一个用户进程来执行您的应用程序。Oracle服务器也会建立服务器进程来处理连接至实例的用户进程的请求。

另外,Oracle服务器也会为实例建立一组后台进程,这组后台进程不管是彼此或是和操作系统之间都会进行互动,以管理内存结构、执行I/O以将数据写入到磁盘以及执行一般常规管理。

 

总之,有许多后台进程,但随着数据库所使用的功能而定,并不会全部出现。最长见的后台处理进程为:

  • 系统监视器(SMON): 实例启动后如果发生错误,负责进行实例恢复工作。
  • 进程监视器(PMON): 当用户进程失败时,通过清除缓存和释放进程所使用的资源,来执行进程恢复。
  • 数据库写入器(DBWn): 从数据库缓冲区将经过修改的区域写入磁盘中的文件。
  • 检查点(CKPT): 在检查点传送信号给DBWn, 并且更新数据库的所有数据文件及控制文件,以指示最近的检查点。当出现检查点时,所有确认的交易所造成的变更,都会被写入磁盘中数据文件。

日志写入器(LGWR): 将重做日志项目写入到磁盘中。

归档进程(ARCn): 在日志文件已满或发生日志切换时,将重做日志文件复制到归档存储区中。归档进程只有在数据库为ARCHIVELOG模式下,而且启用了自动化归档时,才会出现。

 

5.5 启动实例和开启数据库

您可以执行下列三个步骤来启动Oracle实例,以让数据库可供整个系统使用:

  1. 启动实例。
  2. 挂载数据库。
  3. 开启数据库。

您可以使用Enterprise Manager或SQL*Plus startup命令来执行这些步骤。在您启动实例时,会读取服务器参数文件(spfile)或初始化参数文件以决定初始化参数值。然后会配置SGA,并启动后台处理进程。

挂载数据库之后,会开始读取控制文件,并检查数据文件是否一致。在挂载阶段,您可以执行特定的管理功能和恢复操作。

当数据库开启时,会读取和开启重做日志文件和数据文件。在这样的状态下,数据库即可供使用者存取。

注意: 数据库文件会在”管理数据库存储结构”章节中更详细讨论。

 

5.6 使用Enterprise Manager来启动实例

 

通过执行下列步骤,您可以使用Enterprise Manager来启动实例和开启数据库:

  1. 从您的浏览器呼叫Enterprise Manager,登陆需要提供主机登陆名及密码。
  2. 在“数据库(Database)”首页按一下”启动 (Startup)”来启动实例,如果当前数据库实例已经启动,则这个按钮则为”关闭(Shutdown)“。
  3. 在“启动/关闭:指定主机和目标数据库用户名密码信息(Startup/Shutdown: Specify Host and Target Database Credentials)”页面,指定操作系统使用者名称与密码,在此处也一并指定数据库使用者与密码。按一下”确定(OK)”。

  1. 在“启动/关闭:确认(Startup/Shutdown: Confirmation)”页面按一下”是(Yes)”。
  2. 接下来会显示”启动/关闭:活动信息(Startup/Shutdown: Activity Information)”页面。在实例启动之后,会显示”登陆数据库(Login to Database)”页面。
  3. 请输入使用者名称与密码来登陆数据库。

 

5.7 使用Windows Services来启动实例

您可以使用Windows Services程序来启动和关闭Oracle实例。如果要存取您的Oracle数据库,您必须先启动下列三项服务:

  • OracleService<SID>: 您的Oracle Database实例
  • Oracle<oracle_home><SID>TNSListener: 让客户端能连接到数据库的监听器
  • Oracle<oracle_home><SID>DBConsole: Enterprise Manager dbconsole处理作业,能让客户端连接到Enterprise Manager。

请执行下列步骤来启动Oracle服务:

  1. 在“控制台”中选择系统管理工具 > 服务。会出现您系统上所有可用的服务。
  2. 找出之前描述过的三项Oracle服务。
  3. 在每个服务名称上按一下右键,再选择 “启动“来启动服务。您也可以从”执行”功能表来选择”启动“。您可以按两下服务来检视”服务内容“页面,在此页面中您可以”启动“或”停止“服务,还能选择”启动类型“。

 

5.8 检查和修改初始化参数

 

当您启动数据库实例时,会先读取一个初始化参数文件。总共有两种参数文件:

服务器参数文件(Server parameter file): 这是比较偏好的一种初始化参数文件。它是二进制文件,可以由数据库服务器来写入及读取,而且不能手动编写。这个参数文件会常驻于执行Oracle的服务器上,从关闭到启动这段期间仍会存在。这个文件通常被称为spfile。

文本初始化参数文件(Text initialization parameter file:这种初始化参数文件,可由数据库服务器读取,但不能由服务器写入。而且其中的初始化参数设定必须透过文件编辑器来手动设定和变更,才能让它从关闭到启动这段期间仍会存在。

 

5.9 管理内存组件

您可以用下列方式来管理内存组件:

  • 使用自动共享内存管理(Automatic Shared Memory Management)(推荐)
  • Oracle服务器会管理配置共享池、Java池、数据库缓冲区和大池的内存大小。
  • 通过初始化参数,指定要配置到SGA的内存总量。
  • 通过个别的初始化参数,并且使用内存建议程序(Memory Advisor)来管理组件大小。

 

SGA由数个组件组成。。这些组件的大小可以由Oracle服务器透过使用”自动共享内存管理(ASMM)”功能加以管理。或者,您也可以通过设定每个组件大小的初始化参数,手动管理组件大小。

 

5.10 启用自动共享内存管理

 

您可以启用”自动共享内存管理”,让Oracle服务器能够自动调整包括共享池及数据库缓冲区在内的SGA组件大小。

注意:建议您启用”自动共享内存管理”。

要是您在设定数据库时,并未启用这项功能,那么您可以藉由加以启用:

  1. 在“服务器(Server)“页面的”数据库设置(Database

Configuration)”区域按一下”内存设置建议 (Memory Advisors)”。

  1. 按一下”启用(Enable)”。
  2. 接下来会出现”启用自动共享内存管理(Enable Automatic Shared Memory Management)“页面。您可以指定整体SGA大小,或是接受目前的SGA大小。再按一下”确定(OK)”。您可以稍后再透过增加SGA_TARGET初始化参数值,来增加整体SGA大小。如需更多相关资讯,请参阅Oracle Database Administrator’s Guide。

 

5.11 使用手动共享内存管理

 

如果您决定不使用”自动共享内存管理”,您就得为每个SGA组件来手动方式设定。在安装Oracle Database软件和建立数据库时,您必须提供SGA组件设置的值。

万一稍后Oracle服务器通知您发生了与SGA或PGA大小相关的性能问题,您可以使用内存建议程序来决定适当的新设定。内存建议程序能够模拟参数变更的效果。使用内存建议程序,您也可以指定希望Oracle服务器在状态变更时,自动为您调整所有内存参数。建议您使用自动调整。

您可以藉由选择” 服务器(Server)”页面中” 数据库设置(Database Configuration)”区域中”内存设置建议(Memory Advisors)”链接,来访问相关页面。按一下”建议(Advice)“可以呼叫任何一个内存建议程序。也可以按一下”说明(Help)”来查找线上说明,以取得内存建议程序如何运作的其他信息。

 

5.12 检查告警日志

告警日志这个文件里包含了依照之间排列的信息与错误日志。告警日志包括下列项目:

  • 所有发生的内部错误(ORA-600)、数据块损坏错误(ORA-1578)以及死锁错误(ORA-60)的记录。
  • 例如create、alter、drop命令以及startup、shutdown、archivelog命令等管理操作记录。
  • 与共享服务器与调度器进程功能相关的信息及错误。
  • 所有在实例启动时有非预设值的初始化参数数值。

Oracle服务器会将这些作业都记录在告警日志中,作为在操作员主控台(Operator’s console)显示信息的替代方式。如果操作成功,则会在告警日志中写入”completed”信息,并加上时间戳。

在Enterprise Manager中,您可以藉由按一下”数据库(Database)”首页中”相关链接(Related Links)”区域的”告警日志内容(Alert Log Content)”来检查告警日志中的内容。会显示”最近的告警日志项(Most Recent Alert Log Entries)”页面。

 

5.13 总结

在本章节中,您应该已经了解如何:

启动实例和开启数据库,让使用者可以使用数据库。

查看初始化参数值。

管理Oracle实例的内存组件

Comment

*

沪ICP备14014813号

沪公网安备 31010802001379号