当前位置:甜馍馍地理信息网 >> 地理信息系统GIS >> 空间数据库 >> 正文 >>  [阅读资讯:GIS空间数据库ORACLE参数设置中心]

GIS空间数据库ORACLE参数设置中心

[ 来源:互联网 | 时间:2007年10月11日 | 收藏本文 ] 【

数据库参数的合理设置是数据库稳定、安全运行的基础,特别在构建数据库时,配置好各初始参数,对以后数据库的运行、优化都有着重要的作用。ORACLE参数繁多复杂,针对GIS数据库的特点,本文仅对一些重要参数的设置进行了讨论,其他参数的设置还要结合具体情况而定。

目前,用于GIS数据库的平台主要有Oracle,Sql Server,Sysbase,Db2等。Oracle凭借其自身的优点——⑴现在世界上流行的GIS平台,例如:ArcInfo、MapInfo、MicroStation GeoGraphics、GeoMedia、AutoCad Map等都支持Oracle的数据存储标准。Oracle作为Open GIS标准的具体实现,在地理信息平台的发展中具有很好的前景;⑵Oracle数据库平台管理方式先进、性能卓越稳定,数据库设计简洁;⑶Oracle数据库平台可以同时对属性数据和空间数据进行很好的管理——成为国内GIS行业运用得最多的数据库平台。

GIS数据库和数据库平台的选择
GIS数据库是某区域内关于一定地理要素特征的数据集合,主要涉及对图形和属性数据的管理和组织。与其它数据库相比GIS数据库有着自身的一些特点:⑴ GIS数据库不仅有与一般数据库数据性质相似的地理要素的属性数据,还有大量的空间数据,即描述地理要素空间分布位置的数据,且这两种数据之间具有不可分割的联系;⑵ 地理信息系统是一个复杂的巨系统,用多种数据来描述资源环境。即使是一个极小的区域,数据量大;⑶ 数据库的更新周期比较长,且不是适时更新,它更多的是提供查询作用。上述特点,决定了建立GIS数据库时,一方面应该遵循和应用通用数据库的原理和方法,另一方面还必须采取一些特殊的技术和方法,来解决其它数据库所没有的管理空间数据的问题。

结合GIS数据库的特点和ORACLE平台在GIS中运用的优点,本文讨论在Win2000系统下,基于ORACLE平台GIS数据库的一些重要参数的设置(对其它系统应用请酌情考虑)。

ORACLE平台GIS数据库的运行简述
Oracle数据库是由一个例程(Instance)和存储在硬盘上的文件组成的。Oracle例程是由进程和内存结构组成的。服务器进程(Server Process)从SGA与Oracle客户端交互,比如ArcSDE。它负责处理用户提交的SQL语句以及读写用户数据。后台进程(Background Process)代表服务器进程与组成数据库的物理文件交互。
通过Oracle服务端程序,ArcSDE使用giomgr进程与数据库交互。每个ArcSDE服务都有一个giomgr进程在监听用户的连接请求、清理断开的用户进程。每个连接ArcSDE的客户端应用程序都被指定一个gsrvr进程,该进程由giomgr生成。通过Oracle服务端程序,gsrvr提交用户所有的数据库查询及编辑的请求。在操作系统中,Oracle将对象逻辑地存储在一个或多个数据文件所支撑的表空间内。对于不同类型的数据,在Oracle中一般都分配给它们各自独立的表空间 。

Oracle参数用于设置例程和数据库的特征,Oracle9i提供了200多个可视参数,100多个隐形参数。小女子暂且将数据库的设置主要包括为五大项:内存、归档、跟踪文件和数据库存储。

1. 内存

首先要注意两个问题:1.除去OS和一些其他开销,能给ORACLE使用的内存有多大? 2:oracle的操作系统是64bit还是 32 bit?如果操作系统是32bit,通常 SGA有 1.7G 的限制。解决的基本原则是: data buffer可以尽可能的大,shared_pool_size 要适度,log_buffer 通常3MB就差不多了。


share_pool_size:它指定共享池的大小,共享池包含:共享游标、存储的过程、控制结构和并行执行消息缓冲区等对象,较大的值用于改善多用户系统的性能,但不能盲目将shared_pool_size设置过大,因为shared_pool_size 过大会增加管理负担和latch 的开销,超过500M可能是危险的,达到1G可能造成CPU的严重负担,甚至导致系统瘫痪。建议值设置可在200MB~350MB之间。如果shared_pool_size 超过350M还命中率不高,可以试着从应用上找原因。
log_buffer : 日志缓冲区的变化记录的容量接近1MB或它的内容已经达到容量的1/3时,日志缓冲管理器调用LGWR(日志写进程)来完成写入重做日志组的工作。因此建议设置在3MB~5MB之间。
large_pool_size : 指定大型池的分配堆的大小,它可被共享服务器用作会话内存,用作并行执行的消息缓冲区以及用作RMAN备份和恢复的磁盘I/O缓冲区。如果不设置MTS, large_pool_size在10MB~30MB就可以了;若设置MTS,就需要依据 session最大数量和 sort_ares_size 等参数增大large_pool_size 值。注意,一般是不必使用MTS,尤其在同时在线用户数小于500的情况下。
java_pool_size : 它用于存放java代码,若不使用java,建议设置为30M,将来数据库开发工作进行时,这个参数可以再调整。
pga_aggregate_target:指定连接到例程的所有服务器进程的目标PGA总内存。在启用自动设置工作区之前将此参数设置为一个正数。这部分内存不驻留在SGA中。数据库将此参数值用作它所使用的目标PGA内存量。设置此参数时,将SGA从可用于Oracle例程的系统内存总量中减去。然后可将剩余内存量分配给pga_aggregate_target。此参数的默认值是“未指定”,它表示完全禁用对工作区的自动优化,建议设置为10MB。
Date Buffer Cache:它主要为高速缓存指定标准块大小的缓冲区,在做了前面的设置后,凡可以提供给oracle的内存,都应该data buffer = (db_block_size * db_block_buffers)。
pre_page_sga:这是一个根据平台而定的参数,如果该参数为TRUE,将把所有的SGA页装载到内存中,以便使该例程迅速达到最佳性能状态。这将增加例程启动和用户登录的时间,但在内存充足的系统上能减少缺页故障的出现,建议设置为TRUE。
sort_area_size:因为GIS数据库要提供查询的数据一般都比较大,建议设置成1M-3M。这样,假定oracle的操作系统是 32 bit ,服务器RAM大于2G ,建议:
shared_pool_size + data buffer +large_pool_size + java_pool_size < 1.6G

2. 归档
从数据库备份的角度考虑,选择归档日志模式,并自动归档。GIS数据库要存放海量的栅格数据和矢量数据,仅对栅格数据而言,录入数据库的每个象素都被日志缓冲区作为一条记录读入,LGWR进程是不断写入联机重做日志文件,同时ARCn进程不断的来执行自动归档到指定的位置,随着录入像素的增加,归档文件的数据量也不断增加,显然,这样的增长是不可思议的。所以,建议当数据库大批量导入数据时,采用非归档模式。导入后对数据做全备份,跟据需要,可以再改成自动归档模式。

3. 文件位置
这里的“文件”特指:件初始化参数文件(pfile),永久性初始化参数文件(spfile),跟踪用户进程跟踪文件(udump),后台进程跟踪文件(bdump),核心转储跟踪文件(cdump)。这些可以设置指定的地址,也可以用系统默认地址。
4. 数据库存储
数据库存储是指对应于操作系统下的物理文件命名、位置、大小等设置。部分文件在上面已经单独讲述过,以下主要讲述控制文件、重做日志组、数据块大小、回滚段及数据文件。
(1)控制文件
Oracle数据库至少有一个控制文件,在数据库创建时生成。控制文件记录了数据库所有文件的控制信息,包括文件的名字、文件的位置等信息。它是极其重要的二进制文件,数据库发生任何物理改变时都将被Oracle系统自动更新。控制文件对于Oracle9i的系统运行非常重要,因此在建立数据库时,系统会默认建立3个完全一致的控制文件,它们之间相互镜像,命名分别为“control01.ctl”、“control02.ctl”、“control03.ctl”。但由于3个文件都处于默认的同一路径下,因此安全性并不是很好。建议将不同的控制文件部署到不同的磁盘下,以防磁盘损坏,并备份控制文件以便追踪。
(2)重做日志组
重做日志组主要用于当数据库出现故障时进行恢复,每个Oracle数据库都至少具有两组以上联机重做日志组,以供数据库循环调用。每个日志组有1个或多个组员,组员之间为镜像关系,Oracle为每个重做日志文件分配一个唯一的日志序列号以便对其进行标识。系统默认包括3组,每组组员为1,但组员为1是非常危险的,特别是当该日志组的状态为Current时,如果组唯一的组员出现了损坏,将会导致Oracle Server运行终止。因此建议多元化每个日志组,并且将同一个日志组的不同日志组员放到不同的磁盘上,以防止磁盘损坏。每个文件大小可用默认值100MB。
(3) 数据块大小
数据块是Oracle中的最小的逻辑存储单元。数据块的大小由db_block_size参数决定,其尺寸应该设置成OS系统的整数倍,该大小在数据库创建时一经设定便不能更改,除非重建数据库。考虑GIS数据库中数据的要素表和分块表都是大对象型数据,数据块设置大些可以避免行链接,提高查询速度,因此建议db_block_size大小为8KB或16KB。
(4) 回滚段
每个数据库包含一个或多个回滚段,它是包含在数据文件中的逻辑结构。无论事务何时处理修改数据块,回滚段将记录数据块更改之前的信息状态,在数据库恢复以撤销任何未提交的更改(从重做日志提交到数据文件)期间,Oracle可以使用回滚段中的信息使数据处于一致状态。建议在undotbs表空间建立多个的回滚段对象,并设置在启动的参数文件中,供数据库系统调度使用。回滚段的大小设置一般应以针对数据库发出的最一般的事务处理的大小来设置,建议回滚段表空间设置为500 M。
(5) 数据文件
数据文件是整个数据库中最基本的文件,数据库中的所有数据都是存储在数据文件中。每个Oracle数据库包含多个表空间,每个表空间又至少含有一个数据文件。GIS数据库不仅包括SYSTEM表空间,INDEX表空间,TOOLS表空间,UNDOTBS表空间,TEMP表空间这五个数据库基本的表空间,还包括一个或多个专门存放GIS数据的表空间。考虑到GIS数据库后期可能会结合各种数据集自身的特点,对不同特征的数据集单独备份,建议建立存放不同特征数据集的表空间。如省级的GIS数据库,可以建立多个表空间,来分别存放DOM、DEM、DRG、DLR及元数据等其他数据。
GIS数据库日常工作主要是提供数据的查询,并经常需要对查询的数据排序,因此temp表空间的数据文件应设置得大点,建议设置为100MB~200MB。其它几个基本表空间数据文件可设置为默认大小。对于存放GIS数据的表空间数据文件,建议将大小设置接近数据库的物理文件的最大值。Oracle的物理文件最大只允许4194303个数据块(datablock),数据文件的最大值为4194303 * db_block_size/1024/1024 MB,下面列表说明不同数据块数据库所能支持的最大物理文件大小:
数据块的大小 物理文件的最大值
20488191 MB
409616383 MB
819232767 MB
1638465535 MB
Oracle数据库的物理文件可以设置成自动增长的类型, 这样数据库在需要更多空间时, 物理文件会按设定的增长量自动增长到指定的最大值,其优点是保证不会因为分配数据区域(extent)失败而终止应用。若不设定最大值, 数据文件可能会增长到某个极大值,当超过一定的极限值, ORACLE数据库将会出现内核错误并崩溃。

【推荐本文】 【打印本页】 【返回顶部
最新文章
推荐文章