ArcSDE连接Oracle配置,ArcSDE 系统表的说明

在关系数据库管理系统(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管理员教程,可以为你提供一套完整的空间数据库配置解决方案。

当基于Oracle或是SQL Server安装ArcSde后,一般会生成十几张以GDB_开头的系统表,这些表一般为SDE中数据信息的描述,以下为本人对其中几张主要表的一点理解:
1、GDB_ObjectClasses表:记录所有SDE中注册过的普通表、FeatureClass,一般包括Name和ID字段,Name为在ArcCatalog中所看到的名字,ID为唯一标识,以后关于此对象的所有数据(如F表、S表)信息都以该ID表示;若删除该表中的某条记录,则该记录所对应的表在ArcCatalog中将无法看到。
2、GDB_FeatureClasses表:为所有空间表(FeatureClass)的描述信息,一般包括 ObjectclassID,featuretype,geometrytype,shapeField等字段,objectclassid与 GDB_ObjectClasses中的ID相对应,featuretype为特征类型(如:1为矢量,2为栅格等),geometrytype为空间几何体类型(如:1为点,2为线等),ShapeField为该空间表中空间图形存储的字段名(一般为Shape,在创建时也可定义为别的);若删除该表中的某条记录,则该记录所对应的featureclass在ArcCatalog中将无法看到。
3、GDB_FeatureDataset表:该表记录SDE中FeatureDataset信息,包括Owner,Name等;删除该表中的某条记录,则该记录所对应的featuredataset在 ArcCatalog中将无法看到。
4、GDB_FieldInfo表:为SDE中所有表的字段信息,一般包含ClassID、 FieldName,AliasName,IsEditable等字段,可直接通过操作此表来修改表或featureclass的字段的名称和别名。
5、 GDB_Domains表:SDE中的Domain对象,具体可查看该表结构,若了解Domain,则比较容易理解该表。
6、 GDB_SubTypes表:SDE中的SubType对象,具体可查看该表结构,若了解SubType,则比较容易理解该表。
7、 GDB_RasterCatalogs表:该表记录SDE中的RasterCatalog的元数据信息,一般包含 objectclassid,rasterfield,israsterdataset, 其中,objectclassid与GDB_ObjectClasses中的ID对应,rasterField为在RasterCatalog表中存储 Raster的字段,israsterDataset标识是否为RasterDataset。

另外,SDE中的系统表还有十几张,但和我们应用关系最密切的主要为上面几张,其它的系统表,可以通过Oracle Client或是PL/SQL查看。

你可能感兴趣的:(数据结构,oracle,应用服务器,网络应用,配置管理)