现在的位置: 首页 > 综合 > 正文

影像入库解决方案之二

2013年10月09日 ⁄ 综合 ⁄ 共 8391字 ⁄ 字号 评论关闭

Oracle参数介绍

参考ArcGIS帮助-Geodatabases and ArcSDE-Administering ArcSDE geodatabases-Administering ArcSDE for Oracle。(此参数设置对服务器数据库的性能都有一定的参考意义)

表空间(存储)

建议用户根据影象数据量大小创建比用户数据至少大1/3大小的大文件表空间。(因为一般来说影象数据量都比较大,所以根据服务器硬盘存储容量和实际需求尽可能的建立大容量表空间)

CREATE BIGFILE
TABLESPACE "ESRI" DATAFILE 'E:/APP/ESRI/ORADATA/ORCL/ESRI' SIZE 500000M AUTOEXTEND ON NEXT 1000M MAXSIZE UNLIMITED LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO DEFAULT NOCOMPRESS

在用户使用影象数据为影象建立表空间时,建议与SDE表空间分开磁盘建立,如果经常使用影象数据的话尽可能建立影象数据表空间和影象索引表空间分开存储。影像库的Raster Blocks表空间与非Raster Blocks表空间分开存储。

临时表空间的也尽量大些。建议1GB。

注意:上面的建议仅供用户来参考,本文只是从理论上来分析相关问题,在实际运用过程中用户根据自己业务需求,服务器配置,数据量等灵活处理相关问题。

Oracle建立表空间

Create the non raster blocks tablespace

----------------------------------------------------------------------------------------------------------

create tablespace earth datafile ‘d:/oradata/earth.dbf’ size 500M

extent management local uniform size 1M;

Create the raster blocks tablespace

----------------------------------------------------------------------------------------------------------

create tablespace earth_blocks datafile ‘e:/oradata/earth_blocks.dbf’ size 32000M
extent management local segment space management manual uniform size 100M;

SQLServer

Create the SQLServer database large enough to store the entire raster object.

DB2建立表空间

Create a tablespace to store all the non-raster blocks data in.

----------------------------------------------------------------------------------------------------------

create tablespace earth managed by database
using (file ‘d:/earth.dat’ 500000);

Create a tablespace to store the raster blocks table data.

----------------------------------------------------------------------------------------------------------

create long tablespace earth_blocks managed by database
using (file ‘e:/earth_blocks.dat’ 50000000);

Informix

Create the dbspace to store all no raster blocks tables

----------------------------------------------------------------------------------------------------------

onspaces -c -d earth -p d:/earth.dbs -o 0 -s 5000

Create the dbspace(s) to store the raster blocks table

----------------------------------------------------------------------------------------------------------

onspaces -c -d earth_blocks -p e:/earth_blocks.dbs
-o 0 -s 5242880

以下参数设置仅供参考

SGA

SGA=memory*70%

PRE_PAGE_SGA=TRUE

PGA

PGA=memory*20%

BLOCK_SIZE

BLOCK_SIZE至少16KB,推荐使用32KB

OPEN_CURSORS

默认值为300,建议设置为2000以上

SESSION_CACHED_CURSORS

默认值随 Oracle 版本的不同而不同,建议设置为50以上

CURSOR_SHARING

cursor_sharing = exact

CURSOR_SPACE_FOR_TIME

cursor_space_for_time = true

UNDO_MANAGEMENT and UNDO_TABLESPACE

设置UNDO_MANAGEMENT为自动,设置 UNDO_TABLESPACE 存储系统撤销段的表空间名称

SESSIONS

如果需要多用户同时访问中心数据库(大于48),修改ArcSDE默认的连接参数、服务器操作系统注册表参数设置,还有Oracle的Sessions参数

PROCESSES

建议该值是ArcSDE连接数加上25

OPTIMIZER_MODE

Oracle10g和11g的默认值为all_rows

LOG_BUFFER

建议日志缓冲区设置为1MB

DB_BUFFER_CACHE

适度增加该参数的值

REDO LOGFILES

LOG_CHECKPOINT_INTERVAL=0

LOG_CHECKPOINT_TIMEOUT = 0

联机重做日志大小建议至少1GB

SHARED_POOL_SIZE

默认值128MB,推荐值256MB以上

DB_CACHE_SIZE

memory available to SGA = physical RAM * 2/3

memory available to buffer cache= (memory available to SGA - (shared_pool_size + log_buffer)) * 0.9

db_block_buffers= memory available to buffer cache / db_block_size

PGA_AGGREGATE_TARGET

workarea_size_policy = auto

pga_aggregate_target =

Use automatic shared memory management

建议使用自动共享内存管理

Oracle参数设置

查看Oracle参数

1:查看ORACLE_HOME/Database/SPFILEORCL.ORA文件

2:Show Parameter 参数名

orcl.__java_pool_size=16777216

orcl.__large_pool_size=16777216

orcl.__oracle_base='E:/app/esri'#ORACLE_BASE set from environment

orcl.__pga_aggregate_target=402653184

orcl.__sga_target=1258291200

orcl.__shared_io_pool_size=0

orcl.__shared_pool_size=419430400

orcl.__streams_pool_size=0

*.audit_file_dest='E:/app/esri/admin/orcl/adump'

*.audit_trail='db'

*.compatible='11.1.0.0.0'

*.control_files='E:/app/esri/oradata/orcl/control01.ctl','E:/app/esri/oradata…/orcl/control02.ctl

*.db_block_size=8192

*.db_domain=''

*.db_name='orcl'

*.db_recovery_file_dest='E:/app/esri/flash_recovery_area'

*.db_recovery_file_dest_size=2147483648

*.diagnostic_dest='E:/app/esri'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

*.memory_target=1658847232

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

修改Oracle参数

alter system set sga_max_size=1640M scope=spfile;(Total physical RAM *80%*50%)

alter system set sga_target=1640M scope=spfile;

alter system set pga_aggregate_target=650M scope=spfile;(Total physical RAM *80%*20%)

alter system set pre_page_sga=true scope=spfile;

alter system set shared_pool_size=128M scope=spfile;

alter system set open_cursors=2000 scope=spfile;

……

关闭Oracle数据库

shutdown immediate;

启动Oracle数据库

startup open;

影象SDE数据库存储

SDE影象存储方式

打开SDEHOME/ora10gexe/etc/dbtune.sde文件可以得到Raster的两种存储方式。

ArcGIS10提供了一个新的影像存储ST_Raster。

BLOB方式存储

##DEFAULTS

GEOMETRY_STORAGE "ST_GEOMETRY"

ATTRIBUTE_BINARY "BLOB"

RASTER_STORAGE "BLOB"

ST_GEOM_LOB_STORAGE " STORE AS (

# TABLESPACE

ENABLE STORAGE IN ROW CHUNK 8K RETENTION CACHE

# INDEX (TABLESPACE )

) "

……略去……

RAS_STORAGE "PCTFREE 0 INITRANS 4

# TABLESPACE

STORAGE ( INITIAL 409600)"

RAS_INDEX_ID "PCTFREE 0 INITRANS 4

# TABLESPACE

STORAGE ( INITIAL 409600) NOLOGGING"

BND_STORAGE "PCTFREE 0 INITRANS 4

# TABLESPACE

STORAGE ( INITIAL 409600)"

BND_INDEX_COMPOSITE "PCTFREE 0 INITRANS 4

# TABLESPACE

STORAGE ( INITIAL 409600) NOLOGGING"

BND_INDEX_ID "PCTFREE 0 INITRANS 4

# TABLESPACE

STORAGE ( INITIAL 409600) NOLOGGING"

AUX_STORAGE "PCTFREE 0 INITRANS 4

# TABLESPACE

STORAGE ( INITIAL 409600)"

AUX_INDEX_COMPOSITE "PCTFREE 0 INITRANS 4

# TABLESPACE

STORAGE ( INITIAL 409600) NOLOGGING"

//-----------------单独存储一个表空间--------------------

BLK_STORAGE "PCTFREE 0 INITRANS 4

# TABLESPACE

STORAGE ( INITIAL 409600)"

BLK_INDEX_COMPOSITE "PCTFREE 0 INITRANS 4

# TABLESPACE

STORAGE ( INITIAL 409600) NOLOGGING"

XML_DOC_UNCOMPRESSED_TYPE "CLOB"

END

image

SDO_GEORASTER方式存储

##SDO_GEORASTER

GEOMETRY_STORAGE "SDO_GEOMETRY"

RASTER_STORAGE "SDO_GEORASTER"

ATTRIBUTE_BINARY "BLOB"

RDT_STORAGE "PCTFREE 0 INITRANS 4"

# TABLESPACE

RDT_INDEX_COMPOSITE "PCTFREE 0 INITRANS 4

# TABLESPACE

STORAGE ( INITIAL 409600) NOLOGGING"

UI_TEXT "User Interface text description for SDO_GEORASTER keyword"

COMMENT "Any general comment for SDO_GEORASTER keyword"

END

ST_Raster方式存储

该存储方式感觉是BLOB存储的精简版,由B表、AUX表、BLK表组成。

本文不详细介绍该存储方式。

BLOB影象数据的存储

image

 

image

l Business表:称作业务表,业务表对客户端透明,客户端与栅格数据的交互通过业务表即可完成

l AUX表:称作栅格附录信息表,属于支撑表,用于存储栅格波段的附加信息,如色彩映射和统计值等

l RAS表:称作栅格表,属于支撑表,记录栅格数据的描述信息。

l BND表:称作波段表,属于支撑表,记录栅格数据的波段信息。每幅栅格数据的每一个波段占一条记录。

l BLK表:称作栅格分块表,属于支撑表,每个波段的像元值都以分块的形式存在该表中。加载栅格数据时,ArcSDE利用分块参数将栅格(及金字塔)划分为若干块,每一块都以BLOB类型存储于该表中。

l F表:称作封装边界要素表,属于支撑表,这个表中存储了栅格数据的封装边界的几何信息。

l S表:称作封装边界索引表,属于支撑表,这个表中存储了栅格数据的封装边界的几何索引信息。

image

RasterDataset

RasterDataset在SDE库里面的geometry_columns表(F_Geometry_colunm)spatial column为FootPrint。

RasterCatalog

RasterCatalog在SDE库里面的geometry_columns表(F_Geometry_colunm)spatial column为Shape。

共同点

在数据库的存储都是以上面介绍的AUX表、BLK表等存储的。在SDE库里面的raster_columns表中可以查看到针对每一个影像对象的注册ID,那么在数据库里面的可以查找相应的比如SDE_BLK_N(对应注册ID)表数据。

分析数据

--------------------------------------RasterDataset----------------------------------------------

//获得注册ID

SQL> select rastercolumn_id from sde.raster_columns where table_name = 'RRDRR';

RASTERCOLUMN_ID

---------------

6

//查看BLK表的物理存储大小

SQL> select (sum(length(rasterband_id))+ sum(length(rrd_factor))+ sum(length(row

_nbr))+ sum(length(col_nbr))+ sum(length(block_data)))/1024/1024 as "total size

MB" from sde_blk_6;

total size MB

-------------

133.964094

金字塔存储

影像库的金字塔信息就存储在SDE_BLK_N表里面的RRD_字段

SQL> select RRD_FACTOR, count(*) from SDE_BLK_14 group by RRD_FACTOR order by RR

D_FACTOR;

RRD_FACTOR COUNT(*)

---------- ----------

0 9600

1 2400

2 600

3 150

4 54

5 24

已选择6行。

分析:RRD_FACTOR=0为原始数据,数据的金字塔建立了5级。

Giomgr.defs参数设置
RASTERBUFSIZE

ArcGIS9.3.1以前默认的参数为100KB,ArcGIS10默认为200KB,在Load数据时,修改为10MB,然后再加载数据,完成后改为默认值

sdeconfig –o alter –v RASTERBUFSIZE=10240000 –N

影响影象入库效率的因素

硬件

显而易见,服务器和客户端高配置的硬件设施对入库效率影响很大。尤其是多核的CPU主频、大存储的内存设置、硬盘转速等

带宽

如果用户是C/S结构,局域网的带宽也会影响入库效率,无疑千兆网比百兆网效率更高

连接

在入库过程中尽可能的断开除入库连接外的所有连接,尽量减少服务器的与入库无关的运行程序,尽可能的避免一些未知错误。

利用ArcSDE命令进行连接查询

C:/Users/esri>sdemon -o info -I users

ArcSDE Instance esri_sde Registered Server Tasks on lish at Mon Jun 28 14:5

2010

-------------------------------------------------------------------------

S-ID User Host:OS Started

----- -------- -------------------------------- ------------------------

132 TEST lish:Win32:XDR Mon Jun 28 14:04:38 2010

131 TEST lf:Win32:XDR Mon Jun 28 10:30:44 2010

入库方式

建议用户尽量使用ArcCatalog工具进行入库,除非用户需要自定义业务需求进行编程入库,在效率方面肯定没有ArcCatalog工具效率高。

格式选择

参考前面进行的影象数据格式介绍,根据用户业务需求选择合适的数据格式,如果两者选择都可行的话建议用户选择RasterCatalog格式。

1:再数据导入过程中可以进行“断点续传”。也就是说用户可以遇到未知问题时中断入库,继续连接,导入剩下的数据。

2:修改数据比较方便,只需删除需要修改的数据即可。

3:RasterCatalog可以利用ArcToolbox工具DataMangeMentTools

-Raster-RasterDataset-RasterCatalog To RasterDataset工具可以转换到RasterDataset。

其他设置

根据上面介绍的表空间的设置和存储,Giomgr.defs参数进行相关设置。

如果Windows操作系统,尽可能的关闭屏幕保护。

做好处理日志和错误处理,便于检查,保证数据完整性。

导入数据后再统一执行建立金字塔、数据统计、数据拉伸等操作。

耐心等待

影像数据量都是非常巨大的,有的几十GB甚至上百GB,所以说耐心等待无疑对数据影象数据入库非常重要,好多用户都是忍受不了系统的假死状态中途利用任务管理器杀掉进程导致入库失败。如果数据量大(TB级别)的话,入库时间可能比较长,但判断假死状态应该查看服务器端的(服务器为Windows操作系统下,C/S结构)任务管理器CPU状态、内存变化、网络使用率等数据,而不是查看客户端的状态。

抱歉!评论已关闭.