地理数据库管理员可以创建可由其他用户检出和使用的日志文件池。这些日志文件可以是基于会话的日志文件,也可以是独立的日志文件。共享的日志文件不能从 ArcSDE 日志文件池中检出。
使用 ArcSDE 日志文件池可以避免向用户授予在数据库中创建对象所需的权限。
如果无法向用户授予他们在自己的方案中创建日志文件表的权限,则可以使用日志文件池。尽管如此,用户依然需要拥有创建会话或连接到数据库的权限。
在池内使用基于会话的日志文件可以更高效地使用池资源,这是因为基于会话的日志文件可以将多个选择集写入单个表中;而独立的日志文件则需要针对每个具备条件的选择集使用一个表。
一般来说,使用日志文件池需要的维护略多一些,这是因为您必须估计所需日志文件表的数量,而且还需要调整池的大小或已使用的池的数量。请切记,日志文件池过大或过多可能会对性能产生不良影响。
SERVER_CONFIG 表中的 LOGFILEPOOLSIZE 参数所设置的值将决定在 ArcSDE 管理用户的方案中所创建的 SDE_LOGPOOL_<table_ID> 表的数量。例如,如果将 LOGFILEPOOLSIZE 设置为 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 中撤消此权限,仅需显式授予该权限即可。
基于会话的或独立的日志文件组成的池(Pools of log file tables)实际操作:
将日志的模型修改为Pool
C:\Users\Administrator>sdeconfig -o alter -v MAXSTANDALONELOGS=0 -i sde:oracle11g:orcl2 -u sde -p sde
ArcSDE 10.0 for Oracle11g Build 2004 Fri Jan 13 11:45:40 2012
SDE Server Configuration Tool Administration Utility
-----------------------------------------------------
Alter SERVER_CONFIG Table. Are you sure? (Y/N): y
Successfully altered SERVER_CONFIG Table.
C:\Users\Administrator>sdeconfig -o alter -v ALLOWSESSIONLOGFILE=TRUE -i sde:oracle11g:orcl2 -u sde -p sde
ArcSDE 10.0 for Oracle11g Build 2004 Fri Jan 13 11:45:40 2012
SDE Server Configuration Tool Administration Utility
-----------------------------------------------------
Alter SERVER_CONFIG Table. Are you sure? (Y/N): y
Successfully altered SERVER_CONFIG Table.
C:\Users\Administrator>sdeconfig -o alter -v LOGFILEPOOLSIZE=3 -i sde:oracle11g:orcl2 -u sde -p sde
ArcSDE 10.0 for Oracle11g Build 2004 Fri Jan 13 11:45:40 2012
SDE Server Configuration Tool Administration Utility
-----------------------------------------------------
Alter SERVER_CONFIG Table. Are you sure? (Y/N): y
Successfully altered SERVER_CONFIG Table.
SQL> select sde_id,server_id from process_information; SDE_ID SERVER_ID ---------- ---------- 64 1052 65 7804 SQL> select * from sde_logfile_pool; TABLE_ID SDE_ID ---------- ---------- 1 64 2 65 3 SQL> select count(*) from sde_logpool_1; COUNT(*) ---------- 2260 SQL> select count(*) from sde_logpool_2; COUNT(*) ---------- 1141 SQL> select count(*) from sde_logpool_3; COUNT(*) ---------- 0 SQL> select * from sde_logpool_1 where rownum<3; LOGFILE_DATA_ID SDE_ROW_ID --------------- ---------- 2147483646 112 2147483646 123
在版本操作中,比如注册版本、或者版本协调或者提交有时候会报如下错误:
Unable to create logfile system tables. User perhaps lacks permissions or resources to create tables我们可以修改日志模式为池化模式即可
建议您使用 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
-------------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
------------------------------------------------------------------------------------------------------