Oracle 中的内存调整
下面给出了有关配置 Oracle 系统全局区 (SGA) 和配置影响 Oracle 用户私有全局区 (PGA) 大小的内存结构的几个基本规则。SGA 是 Oracle 分配并与所有会话共享的一个共享内存块。有关 SGA 的详细信息,请参阅您的 Oracle 版本的 Oracle 概念指南。
- SGA 不得交换。
所创建的 SGA 不得大于服务器物理随机存取存储器 (RAM) 大小的三分之二。虚拟内存必须能够同时满足 SGA 和服务器上所有活动进程的要求。
- 避免页面调度过多。
使用操作系统工具(UNIX 系统上的 vmstat 和 Windows 上的“任务管理器”)检查页面调度是否过多。SGA 过大会导致高度的页面调度。
- 配置足够的虚拟内存。
通常情况下,Oracle 建议交换空间至少为物理 RAM 大小的三到四倍。对 UNIX 上的交换文件或 Windows 上的页面文件的大小要求取决于活动的 ArcSDE 会话数。对于各 ArcSDE 服务(应用程序服务器)会话,系统会启动 gsrvr 进程和相应的 Oracle 进程。要确定这些进程的内存使用量,可在 UNIX 系统上使用 ps –elf 命令或使用 Windows 任务管理器的“进程”选项卡。必须从 Oracle 用户进程中扣除 Oracle SGA 的大小。服务器上运行的 ArcSDE gsrvr、ArcSDE giomgr、Oracle 用户、Oracle 后台、操作系统和所有其他进程的总大小必须符合虚拟内存大小。
对于直接连接到 Oracle 实例的 ArcSDE 客户端应用程序,不存在 gsrvr 进程。另外,如果由于所有客户端应用程序都直接连接到 Oracle 实例而没有使用 ArcSDE 服务,则也不会启动 giomgr 进程。因此,由于不存在 gsrvr 进程,采用直接连接对服务器的内存要求较小。影响内存的参数包括 LOG_BUFFERSHARED_POOL_SIZE、DB_CACHE_SIZE、PGA_AGGREGATE_TARGET、SGA_TARGET 和 WORKAREA_SIZE_POLICY。
有关这些参数的说明和建议的设置,请参阅 Oracle 初始化参数。
- 使用表空间中的具体配额可避免用完所有可用存储空间。
具有创建 Oracle 对象权限的用户(例如 SDE 用户、存储在用户方案中的地理数据库的所有者和数据所有者)可以通过以下两种方法中的一种来访问存储空间:通过获得 UNLIMITED TABLESPACE 系统权限或者通过接受表空间中的具体配额。
具有 UNLIMITED TABLESPACE 权限的用户可分配数据库中任何表空间或所有表空间(包括 Oracle 托管的 SYSTEM 表空间和 SYSAUX 表空间)中的空间,在量上没有限制。这将导致最终用户有意或无意地用完所有可用存储空间,甚至使 Oracle 实例崩溃。因此,最好只有数据库管理员 (DBA) 用户拥有此强大的系统权限。
您应给非 DBA 用户分配一个或多个表空间中的配额,以使这些用户在受控方式下创建 Oracle 对象。例如,可以给 GIS_ADMIN 数据所有者用户授予 GIS_DATA 和 GIS_INDEX 表空间中的配额,但不授予 SYSTEM 和 SYSAUX 表空间中的配额。这样您就可控制数据所有者可创建表和索引的位置,还可选择控制这些对象可使用的空间量。
通常,DBA 给项目实例管理员和数据所有者用户分配各表空间中的无限制配额,或者不分配配额。这样,DBA 就可控制数据的物理存储位置(例如,实现增强数据保护的镜像磁盘阵列),并且可将数据分离到逻辑容器中,数据与系统数据和其他项目和应用程序数据相互独立。无限制配额允许数据所有者根据需要分配其具有访问权限的表空间内的空间。无限制配额普遍适用,因为对数据所有者帐户具有访问权限的用户通常经过额外的培训或具有更多的经验,他们通常比 DBA 更为了解自己的 GIS 数据的存储要求。
如果允许数据编辑人员或数据查看人员创建自己的地理数据库对象(例如,通过地理处理操作的输出创建),则可选择分配这些用户具有写入权限的表空间中的有限制配额。例如,在 GIS_DATA 表空间中,数据查看人员可以具有 100 MB 配额,数据编辑人员具有 500 MB 配额,而数据所有者具有无限制配额。您应该自定义配额分配以满足数据和业务进程的特定需要。