基于ArcSDE的Oracle配置

在关系数据库管理系统(DBMS)中,ArcSDE就像管理地理数据的“大门”,使得DBMS中数据可以快速向ArcMap、ArcCatalog、ArcIMS,以及其它互联网络客户端传输。ArcSDE和DBMS的组合使用,有利于将基于传统文件的矢量,栅格和CAD数据都移植到一个空间数据及属性数据集成的数据库中。这样,所有的空间数据及一般的商业数据都被管理在传统IT框架内,有利于数据的一体化。
ArcSDE支持许多的数据库软件,因此选择配置的方案是很灵活的。当然,客户端应用从ArcSDE获取空间数据的速度快慢的性能取决于多个因素,包括硬件、数据库配置、ArcSDE配置、客户端处理能力和网络带宽等等。本文将对基于Oracle数据库的ArcSDE系统的一些基本运行配置方案进行描述。
1、Oracle及ArcSDE简介
Oracle数据库是由一个例程(Instance)和存储在硬盘上的文件组成的。Oracle例程是由进程和内存结构组成的。服务器进程(Server Process)从SGA与Oracle客户端交互,比如ArcSDE。它负责处理用户提交的SQL语句以及读写用户数据。后台进程(Background Process)代表服务器进程与组成数据库的物理文件交互。构成Oracle这样大容量数据库的是一系列数据文件,其中存储了如表和索引等这样的对象。
通过Oracle服务端程序,ArcSDE使用giomgr进程与数据库交互。每个ArcSDE服务都有一个giomgr进程在监听用户应用的连接请求、清理断开的用户进程。每个连接ArcSDE的客户端应用程序都被指定一个gsrvr进程,该进程由giomgr生成。通过Oracle服务端程序,Gsrvr提交用户所有的数据库查询及编辑的请求。

2、逻辑数据库设计
如何正确配置ArcSDE Oracle数据库,首先要分析这个数据库将的用途。一般地,数据库要么用于联机分析处理(OLAP),要么用于决策支持系统(DSS)。OLAP数据库的特征就是频繁的数据更改,例如典型的插入或更新操作,这对大用户量的数据库是很习以为常的。这样类型的系统包括订单输入系统、订票系统和打卡系统。DSS数据库则有所不同。它可以从大量的数据中产生报表信息。一般来说,OLAP系统的用户群一般都比较大,DSS用户群相对要少得多。
DSS系统的主要特性是能够快速地获取大量的数据。大部分的GIS应用都选用DSS系统,因为它们需要获取用于分析和显示的大量地理数据和属性信息。当然,很多的GIS系统在数据更新时候也可以像OLTP系统那样工作。由于大多数的GIS都采用DSS数据库的配置,因此可以根据相应的应用进行数据库的物理设计和逻辑设计。
逻辑设计的目的就是优化配置数据库,使数据库对象按照其活动性相互分离。比如,表和其索引分离,高活动性表和低活动性表也不要存放在一起。如此配置将会获得运行效率极高、并且易于管理的数据库。
一般情况下,只有表和索引被视为对象,其实还存在其它很多对象,比如视图、序列和同义词等等。在操作系统中,Oracle将对象逻辑地存储在一个或多个数据文件所支撑的表空间内。对于不同类型数据,在Oracle中都应当应该分别给它们各自独立的表空间。比如,典型的ArcSDE配置将提供最少五个表空间用于存储地理数据,它们分别是FEATURE,ATTRIBUTE,SPATIAL_INDEX,ORACLE_INDEX和SDE。每一个表空间都存储ArcSDE和其相关客户端所使用的不同的表或索引。FEATURE表空间用于存储“F[n]”(F表),即ArcSDE创建的要素表。ATTRIBUTE表空间存储包含属性信息的业务表。SPATIAL_INDEX表空间存储“S[n]”(S表),即空间索引表。ORACLE_INDEX表空间存储的是基于要素、属性和空间索引表创建的ORACLE索引。SDE表空间存储ArcSDE系统表。除了上述这些ArcSDE表空间外,Oracle数据库应该至少还包含SYSTEM,ROLLBACK,TEMP和USER表空间,分别用来存储用于ORACLE内部进程的不同对象。

3、物理数据库设计
通常情况下,并不需要考虑数据库的物理布局。只有当数据库运行遇到性能问题时,物理布局才被考虑到。其实,要配置一个高性能的数据库,正如数据库的逻辑设计中的精心安排一样,数据库文件的物理布局设计必须也要同时进行。在任何Oracle数据库中,I/O争用往往是数据库性能的瓶颈。因此数据文件的物理布局应该始于对数据I/O情况的识别。要减少I/O争用,必须将不同的对象组安排在不同磁盘驱动器和表空间中。
一般情况下,客户端访问的表空间中的表和索引将会占据大量的I/O。在ArcSDE配置中,这种情况在FEATURE、ATTRIBUTE、SPATIAL_INDEX和ORACLE_INDEX表空间中都会出现。如果可能的话,应当将这些表空间的数据文件各自单独存放到不同磁盘中。典型的GIS客户端应用(如,ArcMAP)在普通的会话过程中都会频繁访问这些表空间里的表和索引文件。比如,当用户在ArcMAP中进行缩放或移动操作时,查询语句将提交给ArcSDE,以获取应用程序窗口范围内的要素。执行之一过程的动作是从S表的索引表中获取符合条件的要素标识码。然后通过使用FID字段的索引,从F表中提取相应的要素几何图形。如果查询中还包含属性查询,业务表也将被提取。所以,如果系统存储中每个表空间在物理上都分别存放,对于ArcMap这样的客户端将获得更好的操作性能。
SYSTEM表空间保存Oracle的数据字典,因此应该被安排在活动性适中的磁盘上。每当Oracle对一个SQL语句进行解析的时候,都会检查存放在数据字典中的表。SYSTEM表空间中只存储数据字典是最好的。
ROLLBACK表空间用于维护数据库中数据的一致性。对于数据库中的每个事务处理,Oracle在回退段中生成一个数据的Before Image。它的作用除了提供回退机制以外,还得保证在该事务处理提交之前其它客户端查询的读取一致性(read consistency)。一般来说,给ROLLBACK表空间分配50MB的空间。并且,ROLLBACK表空间应该分割存储到不同的磁盘上。
TEMP表空间用于存储动态由SELECT DISTINCT,UNION和CREATE INDEX等大数据量的排序操作产生的数据。创建TEMP表空间时,一定要记住,创建一个索引需要两倍于该索引存储的空间大小。在ArcSDE数据库中的空间索引中,一般情况下,S表的索引(S_[x])是需要存储空间最大的索引。因此,为TEMP表空间分配的空间至少是该索引存储量大小的两倍。建议把临时表空间与其它表空间物理地分开。
与SYSTEM表空间很相似,SDE表空间是用于存储Oracle数据字典的,这里保存了管理ArcSDE例程的元数据。SDE表空间可以和SYSTEM表空间存放在同一个磁盘上。

4、其它数据库文件
Oracle使用控制文件来保存数据库信息,如数据库标识符、创建日期、表空间名字、数据文件名,以及其它用于数据库正常启动和运行的重要细节信息。在数据库使用过程中,这些文件被Oracle不断更新,因此数据库打开的时候,它必须是可写的。如果由于某些原因导致该文件不可用,数据库将不能够正常运行。由于这个原因,这个控制文件应该包括最少三个镜像。
联机重作(Online redo)日志文件用于记录数据库的所有事务处理操作,这些操作包括:插入,更新和删除。在数据库例程崩溃的时候,Oracle使用这些文件来最小化数据损失。在一个例程崩溃时,Oracle读取这些文件,用以恢复已提交但尚未写入数据文件中的数据。Oracle至少需要两个redo日志文件。一旦一个日志文件写满了,Oracle开始写另一个日志文件。这个处理过程称为日志切换,它会触发检查点事件,而检查点是相当耗资源的。大多数ArcSDE数据库保持静态,随时间推移,数据库一般是变化不大的。为了把日志切换的次数减至最少,一般来说,需要创建两个50兆的联机重作日志文件。重做日志文件的使用频率并非特别高,可以和数据库的其它文件存放在一块。

5、Oracle进程参数配置
数据库例程的配置在很大程度上决定了数据库的性能。在数据库启动的时候,一个系统全局区域(SGA)都会分配,并且数据库的后台进程同时启动。SGA是存放数据库信息的一块内存区域,供数据库用户共享。Oracle后台进程和SGA的组合称为Oracle例程。在启动的时候,Oracle使用init[sid].ora参数文件来配置该进程。
在Oracle上运行ArcSDE数据库的时候,一些关键参数设置是尤其举足轻重的。DB_BLOCK_SIZE和DB_BLOCK_BUFFERS参数控制SGA中BLOCK缓存的大小。在很多情况下,给该缓存分配1/3或更多的系统可用内存。在内存中,BLOCK缓存存储了先前访问过的表和索引数据块,减少系统的I/O需求。将DB_BLOCK_SIZE设置为16,384字节是非常合适的,当这个参数低于8,192字节时,可能会降低数据库性能。DB_BLOCK_BUFFERS参数乘以DB_BLOCK_SIZE,就是BLOCK缓存的总大小。例如,将DB_BLOCK_BUFFERS设置为100,000,并将DB_BLOCK_SIZE设置为16K,那么BLOCK缓存的大小就是1.6G。
ArcSDE和DSS数据库的另外一个重要配置参数,是DB_FILE_MULTIBLOCK_READ_COUNT。该参数决定了在一次读取操作的时候,从硬盘读取的数据量。磁盘I/O过频,将降低系统的性能,磁盘读取的次数越少越好。在DSS数据库中该参数经常被设置成一个很高的值,但是当该参数被设置为8时,ArcSDE似乎能运行得更好。偏高的参数值反而会影响Oracle的执行计划。
共享池(shared pool)是SGA中的一个重要部分,它包括数据字典缓存(data dictionary cache)和库缓存(library cache)。库缓存存储了最近解析过的SQL语句。共享池的大小由SHARED_POOL_SIZE参数控制。推荐设置大小为55MB,最大值为75MB。
SGA的还有一个重作日志缓冲(log buffer),它保存着尚未提交地数据更新。日志缓冲由LOG_BUFFER参数所控制。如果内存空间允许,可以将该参数设置为10MB。

6、结论
以上是基于Oracle的ArcSDE的一些通用配置方案,然而,要让你的空间数据库能够向客户端提供高性能的服务,以上这些是远远不够的,还需要很多很多尝试。作好Oracle数据库物理布局是获得高性能数据库的起点。ArcGIS中国培训中心开设为期五天的ArcSDE Oracle管理员教程,可以为你提供一套完整的空间数据库配置解决方案。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值