ArcSDE 日志文件表(二)

基于会话的或独立的日志文件组成的池(Pools of log file tables)
-------------------------------以下为ArcGIS10.1中文帮助---------------

归地理数据库管理员所有的日志文件池

地理数据库管理员可以创建可由其他用户检出和使用的日志文件池。这些日志文件可以是基于会话的日志文件,也可以是独立的日志文件。共享的日志文件不能从 ArcSDE 日志文件池中检出。

使用 ArcSDE 日志文件池可以避免向用户授予在数据库中创建对象所需的权限。

何时使用地理数据库管理员所有的日志文件池

如果无法向用户授予他们在自己的方案中创建日志文件表的权限,则可以使用日志文件池。尽管如此,用户依然需要拥有创建会话或连接到数据库的权限。

在池内使用基于会话的日志文件可以更高效地使用池资源,这是因为基于会话的日志文件可以将多个选择集写入单个表中;而独立的日志文件则需要针对每个具备条件的选择集使用一个表。

何时不使用地理数据库管理员所有的日志文件池

一般来说,使用日志文件池需要的维护略多一些,这是因为您必须估计所需日志文件表的数量,而且还需要调整池的大小或已使用的池的数量。请切记,日志文件池过大或过多可能会对性能产生不良影响

为归地理数据库管理员所有的日志文件池创建的表

SERVER_CONFIG 表中的 LOGFILEPOOLSIZE 参数所设置的值将决定在 ArcSDE 管理用户的方案中所创建的 SDE_LOGPOOL_<table_ID> 表的数量。例如,如果将 LOGFILEPOOLSIZE 设置为 5,则将在地理数据库管理员的方案中创建以下表:

  • SDE_LOGPOOL_1
  • SDE_LOGPOOL_2
  • SDE_LOGPOOL_3
  • SDE_LOGPOOL_4
  • SDE_LOGPOOL_5

地理数据库管理员的方案中还有一个表 SDE_LOGFILE_POOL,该表记录了 ArcSDE 会话的 SDE_ID 和表 ID。SDE_LOGPOOL 表名称中的 <table_ID> 对应于 SDE_LOGFILE_POOL 表的 table_ID 列中的值。

如果您使用的是基于会话的日志文件池,那么所创建的选择超出选择阈值的每个会话都会将一个记录添加到 SDE_LOGFILE_POOL 表,会话也将分配给其中一个 SDE_LOGPOOL_<table_ID> 表。如果额外的日志文件由同一会话创建(例如,ArcMap 会话创建了一个具有 300 个记录的另一个选择集),则新的日志文件(选择集)将添加到同一个 SDE_LOGPOOL 表。

清除日志文件时,检出到会话的 SDE_LOGPOOL 表将被截断。例如,如果 ArcMap 会话中的第二个选择集被清除,则这 300 个记录也将从 SDE_LOGPOOL 表中移除,但是第一个选择集的记录仍将保留。清除第一个选择集时,这些记录将从 SDE_LOGPOOL 表中移除。

如果您使用的是独立的日志文件池,那么每个日志文件(具有所需大小的选择集)都将在 SDE_LOGFILE_POOL 表中创建一个新记录,并使用其中一个 SDE_LOGPOOL 表。例如,如果在一个 ArcMap 会话中,您从存储有企业信息的要素类中选择了 (1),其中所有企业都得到了供应食品的许可,并从存储有雨水道信息的要素类中选择了 (2),其中所有集水池都位于供应食品的某家企业一公里的范围内,那么将有两个记录添加到 SDE_LOGFILE_POOL 表:一个对应于企业的选择集,另一个对应于集水池的选择集。每个选择集都将分配有自己的 SDE_LOGPOOL 表。

日志文件(选择集)清除时,对应的 SDE_LOGPOOL 表也将被截断。

使用归地理数据库管理员所有的日志文件池所需的设置

SERVER_CONFIG 表中专门影响日志文件池的设置是 LOGFILEPOOLSIZE 和 HOLDLOGPOOLTABLES。

正如前面部分提到的那样,要创建日志文件池,请将配置参数 LOGFILEPOOLSIZE 设为您确定需要创建的日志文件的数量(换言之,SDE_LOGPOOL 表的数量)。除了独立的日志文件以外,这个数字应该反映出要连接到服务器的会话数量(如允许)。

要计算日志文件的总数,应该对日志文件池做出设置,请使用下列公式:

  • 如果允许使用会话日志文件,但不允许使用独立的日志文件

    LOGFILEPOOLSIZE = 预期的会话总数

    例如,如果 MAXSTANDALONELOGS 设置为 0,ALLOWSESSIONLOGFILE 设置为 TRUE,并且预计在任何时候与地理数据库的连接数都不会超过 30,则将 LOGFILEPOOLSIZE 设置为 30。

  • 如果允许使用独立的日志文件,但不允许使用会话日志文件

    LOGFILEPOOLSIZE = MAXSTANDALONELOGS * 预期的会话总数

    例如,如果 MAXSTANDALONELOGS 设置为 5,ALLOWSESSIONLOGFILE 设置为 FALSE,并且估计在任何时候与地理数据库的连接数都不会超过 10,则将 LOGFILEPOOLSIZE 设置为 50。LOGFILEPOOLSIZE = 5 * 10。

  • 如果独立的日志文件和会话日志文件都允许使用

    LOGFILEPOOLSIZE = (MAXSTANDALONELOGS + 1) * 预期的会话总数

    例如,如果 MAXSTANDALONELOGS 设置为 8,ALLOWSESSIONLOGFILE 设置为 true,并且估计在任何时候与数据库的连接数都不会超过 20,则将 LOGFILEPOOLSIZE 设置为 180。LOGFILEPOOLSIZE = (8 + 1) * 20。

如果池已用完且需要另一个日志文件表,则 ArcSDE 将尝试在用户的方案中创建该日志文件表。如果无法在用户的方案中创建该日志文件表,则会返回错误。

只要 LOGFILEPOOLSIZE 参数被更改,SDE_LOGPOOL_<table_ID> 表就会被创建或删除。在前面的示例中,当 LOGFILEPOOLSIZE 设置为 180 时,将创建 180 个 SDE_LOGPOOL_<table_ID> 表。如果将 LOGFILEPOOLSIZE 参数更改为 100,则那些表中将有 80 个被删除。

另一个日志文件池参数 HOLDLOGPOOLTABLES 确定 SDE_LOGPOOL 表返回到池的时间,并且可以由其他用户使用。如果 HOLDLOGPOOLTABLES 被设置为 TRUE(默认值),那么在连接会话终止之前,记录将一直保留在 SDE_LOGFILE_POOL 表中,SDE_LOGPOOL 表也将一直处于锁定状态。如果将 HOLDLOGPOOLTABLES 设置为 FALSE,那么只要不再需要选择集,就会释放日志文件表,并截断 SDE_LOGFILE_POOL 表。对于独立日志文件池和基于会话的日志文件池,此行为是相同的。

用于控制归地理数据库管理员所有的日志文件表及其索引池的存储的设置

DBTUNE 表的 LOGFILE_DEFAULTS 关键字下仅存在几个控制 SDE_LOGPOOL<SDE_ID> 表及其索引存储方式的参数。

在 Oracle 中的 ArcSDE 地理数据库中,LD_STORAGE、LD_INDEX_ROWID 和 LD_INDEX_DATA_ID DBTUNE 参数用于设置 SDE_LOGPOOL<SDE_ID> 表及其索引的存储。这三个参数还控制着 SDE_LOGFILE_DATA 表和索引的存储。有关这些参数的说明,请参阅 Oracle DBTUNE 配置参数

要使用日志文件表池,无需设置这些参数;但如果要更改 SDE_LOGPOOL<SDE_ID> 表和索引在数据库中的存储方式,则可对这些参数进行设置。

归地理数据库管理员所有的日志文件池所需的权限

要使用池中的日志文件表,用户只需要能够连接到数据库和使用地理数据库管理员方案中的对象。因此,使用日志文件表池仅需具有 CREATE SESSION 权限。

默认情况下,会授予所有用户 CREATE SESSION 权限;因此如果已从 PUBLIC 中撤消此权限,仅需显式授予该权限即可。

-------------------------------以上为ArcGIS10.1中文帮助---------------

基于会话的或独立的日志文件组成的池(Pools of log file tables)实际操作:

将日志的模型修改为Pool

[python]  view plain  copy
 print ?
  1. <span style="font-family: 'Microsoft YaHei'; ">C:\Users\Administrator>sdeconfig -o alter -v MAXSTANDALONELOGS=0 -i sde:oracle11g:orcl2 -u sde -p sde  
  2.   
  3.   
  4. ArcSDE 10.0  for Oracle11g Build 2004 Fri Jan 13 11:45:40  2012  
  5. SDE Server Configuration Tool    Administration Utility  
  6. -----------------------------------------------------  
  7. Alter SERVER_CONFIG Table. Are you sure? (Y/N): y  
  8.   
  9.         Successfully altered SERVER_CONFIG Table.  
  10.   
  11.   
  12.   
  13.   
  14. C:\Users\Administrator>sdeconfig -o alter -v ALLOWSESSIONLOGFILE=TRUE -i sde:oracle11g:orcl2 -u sde -p sde  
  15.   
  16.   
  17. ArcSDE 10.0  for Oracle11g Build 2004 Fri Jan 13 11:45:40  2012  
  18. SDE Server Configuration Tool    Administration Utility  
  19. -----------------------------------------------------  
  20. Alter SERVER_CONFIG Table. Are you sure? (Y/N): y  
  21.   
  22.         Successfully altered SERVER_CONFIG Table.  
  23.   
  24.   
  25.   
  26.   
  27. C:\Users\Administrator>sdeconfig -o alter -v LOGFILEPOOLSIZE=3 -i sde:oracle11g:orcl2 -u sde -p sde  
  28.   
  29.   
  30. ArcSDE 10.0  for Oracle11g Build 2004 Fri Jan 13 11:45:40  2012  
  31. SDE Server Configuration Tool    Administration Utility  
  32. -----------------------------------------------------  
  33. Alter SERVER_CONFIG Table. Are you sure? (Y/N): y  
  34.   
  35.         Successfully altered SERVER_CONFIG Table.  
  36. </span>  



执行完毕之后,我们在该模式下对一个用户下的两个要素类进行选择,从上图可以得到,在SDE用户下,新创建了一个SDE_LOGFILE_POOL,然后根据用户设置的LOGFILEPOOLSIZE数来建立相应的池表数。比如在User用户下,对两个图层进行超过100条记录的选择,查看相关信息可以得到,在进程表里面的两个SDE_ID,那么在 SDE_LOGFILE_POOL会根据相关SDE_ID来分配Pool表,所以说如果用户的并发选择比较多,可以适当的增加LOGFILEPOOLSIZE数量。
[python]  view plain  copy
 print ?
  1. SQL> select sde_id,server_id from process_information;  
  2.   
  3.     SDE_ID  SERVER_ID  
  4. ---------- ----------  
  5.         64       1052  
  6.         65       7804  
  7.   
  8. SQL> select * from sde_logfile_pool;  
  9.   
  10.   TABLE_ID     SDE_ID  
  11. ---------- ----------  
  12.          1         64  
  13.          2         65  
  14.          3  
  15.   
  16. SQL> select count(*) from sde_logpool_1;  
  17.   
  18.   COUNT(*)  
  19. ----------  
  20.       2260  
  21.   
  22. SQL> select count(*) from sde_logpool_2;  
  23.   
  24.   COUNT(*)  
  25. ----------  
  26.       1141  
  27.   
  28. SQL> select count(*) from sde_logpool_3;  
  29.   
  30.   COUNT(*)  
  31. ----------  
  32.          0  
  33.   
  34. SQL> select * from sde_logpool_1 where rownum<3;  
  35.   
  36. LOGFILE_DATA_ID SDE_ROW_ID  
  37. --------------- ----------  
  38.      2147483646        112  
  39.      2147483646        123  

典型案例:

在版本操作中,比如注册版本、或者版本协调或者提交有时候会报如下错误:

[python]  view plain  copy
 print ?
  1. Unable to create logfile system tables. User perhaps lacks permissions or resources to create tables  
我们可以修改日志模式为池化模式即可
或者参考如下链接: http://support.esri.com/en/knowledgebase/techarticles/detail/34539

ArcSDE 日志文件类型按照何种顺序使用?

建议您使用 DBMS 的默认日志文件设置,但如果更改日志文件的配置参数,请注意存在可能一次使用多种类型日志文件的情况。例如,设置以下参数:

MAXSTANDALONELOGS=20

ALLOWSESSIONLOGFILE=true

LOGFILEPOOLSIZE=0

如果正在使用所有 20 个日志文件,当产生其他日志文件请求时,则会使用基于会话的日志文件。

如果 SQL Server 数据库中有以下设置,则会在 tempdb 中创建基于会话的日志文件表。

MAXSTANDALONELOGS=20

ALLOWSESSIONLOGFILE=true

LOGFILEPOOLSIZE=0

SESSION_TEMP_TABLE=1

同样,如果具有以下设置且同时需要 15 个日志文件,则会使用池中所有 10 个日志文件表,并另外创建 5 个共享日志文件。

MAXSTANDALONELOGS=0

ALLOWSESSIONLOGFILE=true

LOGFILEPOOLSIZE=10

如果 SQL Server 数据库中具有相同的设置且 SESSION_TEMP_TABLE 设置为 1,则首先使用池中的 10 个日志文件表,然后在 tempdb 中创建接下来的 5 个基于会话的日志文件表。


ArcSDE 日志文件表(一) - ArcGIS技术研究 - 博客频道 - CSDN.NET http://t.cn/zTYH8jX

转载地址:http://blog.csdn.net/linghe301/article/details/8076010

-------------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
------------------------------------------------------------------------------------------------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值