Informix 中地理数据库 (geodatabase) 内的日志文件表
地理数据库使用日志文件表来存储表行的列表。
有关特定日志文件表所需的地理数据库配置的详细信息,请参阅 Informix 的 ArcSDE 日志文件表配置选项。
ArcGIS Desktop 中的日志文件表
ArcGIS Desktop 中无法查看日志文件表。而只会在从 ArcMap 中选择的内容返回一个数量超过 100 的要素集时,创建并填充日志文件表。
IBM Informix 数据库中的日志文件表
首次安装 ArcSDE 并在 Informix 中创建地理数据库时,默认的日志文件配置将使用共享的 ArcSDE 日志文件。共享日志文件将由以相同用户身份连接的所有会话所共用。因此,如果有多个用户与同一个用户帐号相连接,则所有这些会话均会从同一个日志文件数据表中插入和删除记录。日志文件将于首次使用 ArcGIS 创建包含 100 条或多于 100 条记录的选择集时创建。
地理数据库中将显示哪些日志文件表取决于所使用的日志文件配置。
如果 MAXSTANDALONELOGS 设置为大于 0 的数字,并且具有 CREATE TABLE 权限的用户创建了超出要创建的日志文件阈值的选择集,那么将在该用户的方案中创建独立的日志文件表。
sde_sde_logfile_pool 表包含业务表记录(各日志文件的一部分)的列表。此表在创建地理数据库时创建。
sde_sde_logpool_<table_id> 表可由用户检出,并存储为独立日志文件或基于会话的日志文件。<table_id> 是序号。只有在使用归 ArcSDE 管理员所有的日志文件池时,才会显示这些表。
<user_name>_sde_logdata<sde_id>_<#> 表包含业务表记录(独立日志文件的一部分)的列表。<sde_id> 表示会话 ID,<#> 表示独立日志文件顺序。
<user_name>_sde_logfile_data 表包含业务表记录(各日志文件的一部分)的列表。
<user_name>_sde_logfiles 表包含日志文件元数据。
<user_name>_sde_session<sde_id> 表在使用基于会话的日志文件时创建。如果已连接会话创建的选择集超出了应用程序阈值(ArcMap 中为 100 条记录),可使用此表追踪日志文件记录。当会话断开时,将丢弃 <user_name>_sde_session<sde_id> 表。
共享日志文件
如果使用默认的共享日志文件,则将在该 DBMS 用户的方案中为每个 DBMS 用户 ID 创建并存储两个表 - sde_sde_logfiles 和 <user_name>_sde_logfile_data。这些表一经创建完成,就将保留在地理数据库中;但是,当连接中的应用程序删除所有日志文件时,所有日志文件条目也将被删除。
下图及后面几幅图中的虚线表示各表之间的隐含关系。
基于会话的日志文件表
如果将日志文件配置更改为使用基于会话的日志文件,则地理数据库中会显示 sde_sde_logfiles 表、<user_name>_sde_logfile_data 表和 <user_name>_sde_session<sde_id> 表。哪位用户的会话使得这些表得以创建,这些表就将在哪位用户的方案中创建。尽管 <user_name>_sde_logfile_data 表创建完成,但没有在其中填充任何数据。sde_sde_logfiles 表和 <user_name>_sde_logfile_data 表将保留在地理数据库中,但在连接中的应用程序断开连接时,sde_sde_logfiles 表将被截断。当连接中的应用程序不再需要日志文件记录时(对于 ArcMap,这意味着不再有选择集),<user_name>_sde_session<sde_id> 表将被截断,且当会话断开连接时,将丢弃该表。
独立日志文件表
如果使用独立的日志文件,则对于超出会话所设定的选择阈值的每个选择集,会为每个图层都创建一个新的 <user_name>_sde_logdata<sde_id>_<#> 表。同时还会为每个会话都创建 sde_sde_logfiles 和 <user_name>_sde_logfile_data 表,但 <user_name>_sde_logfile_data 表不会填充数据。这两个表都在引起表创建操作的用户的方案中创建。
当连接中的会话不再需要日志文件时,<user_name>_sde_logdata<sde_id>_<#> 表将被截断,且当会话断开连接时,将丢弃这些表。当连接中的应用程序断开连接时,sde_sde_logfiles 表将被截断。
日志文件表池
在创建地理数据库后,将在 ArcSDE 管理员的方案中创建并存储 sde_sde_logfile_pool 表。如果使用一个文件池,并且该文件池由 ArcSDE 管理员拥有的独立或基于会话的日志文件组成,则将使用此表,另外还会在地理数据库中创建 sde_sde_logpool_<table_Id> 表。所创建的 sde_sde_logpool_<table_Id> 表的数量取决于您在 sde_server_config 表中指定的 LOGFILEPOOLSIZE 值。在下面的示例中,LOGFILEPOOLSIZE 被设置为 10;因此将创建 10 个 sde_sde_logpool_<table_Id> 表(ID 从 1 到 10)。
所有针对日志文件池创建的表都在 ArcSDE 管理员方案中创建。
如果将 MAXSTANDALONELOGS 设置为大于 0 的数字,并且可以在数据库中创建表的用户创建的选择集超出了可创建的日志文件阈值,则会在该用户的方案中创建独立的日志文件表。
日志文件的系统表
以下是 ArcSDE 日志文件所使用的表的定义。Informix 表名以存储表的用户方案的用户名开头。
sde_sde_logfile_pool
sde_sde_logfile_pool 表包含当前已检出的日志文件的列表。创建地理数据库时即会创建此表,并且词表归 ArcSDE 管理员所有。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
table_id |
integer |
用于识别日志文件池表 |
NOT NULL |
sde_id |
integer |
识别当前正在使用给定的日志文件池表的 sde 连接。sde_id 是对 process_information 表的 sde_id 列的引用。如果 sde_id 为空,则表示此日志文件池表当前未处于使用中。 |
sde_sde_logpool_<table_id>
=sde_sde_logpool_<table_Id> 表可以由用户检出,它可既可以存储独立的日志文件也可以存储基于会话的日志文件。<TABLE_ID> 是序号。只有在使用归 ArcSDE 管理员所有的日志文件池时,才会显示这些表。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
logfile_data_id |
integer |
识别行 id 所属的日志文件 每当日志文件被截断时,将指定新的 logfile_data_id 以避免代价较大的删除操作。logfile_data_id 是对 sde_logfiles 中的日志文件元数据的引用。 |
NOT NULL |
sde_row_id |
integer |
所记录的业务表行的行 id 或形状 id;日志文件可以记录行 id,也可以记录形状 id。 |
NOT NULL |
<user_name>_sde_logdata<sde_id>_<#>
<user_name>_sde_logdata<sde_id>_<#> 表包含业务表记录的列表,这些记录是独立日志文件的一部分。表的名称包含会话 ID 和独立日志文件顺序。此表归使得此表得以创建的用户所有。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
sde_row_id |
integer |
所记录的业务表行的行 id 或形状 id |
<user_name>_sde_logfile_data
<user_name>_sde_logfile_data 表包含业务表记录的列表,这些记录是各日志文件的一部分。它归使得此表得以创建的用户所有。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
logfile_data_id |
integer |
识别行 id 所属的日志文件;每当日志文件被截断时,将指定新的 logfile_data_id 以避免代价较大的删除操作。通过指定不同的 logfile_data_id 值将 sde_logfile_data 中删除的值也标记为已删除。logfile_data_id 是对 sde_logfiles 中的日志文件元数据的引用。 | |
sde_row_id |
integer |
所记录的业务表行的行 id 或形状 id;日志文件可记录行 id、形状 id 或用户 id。 | |
row_id |
integer |
唯一识别记录,并可移除重复的 <logfile_data_id,sde_row_id> 值 |
<user_name>_sde_logfiles
sde_sde_logfiles 表包含日志文件元数据。它归使得此表得以创建的用户所有。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
logfile_name |
varchar(255) |
日志文件的唯一用户定义(或应用程序定义)名称 |
NOT NULL |
logfile_id |
integer |
用于唯一识别日志文件 |
NOT NULL |
logfile_data_id |
integer |
识别行 id 所属的日志文件 每当日志文件被截断时,将指定新的 logfile_data_id 以避免代价较大的删除操作。 |
NOT NULL |
registration_id |
integer |
业务表的注册 ID,该业务表的 ID 将记录到此日志文件中 |
NOT NULL |
flags |
integer |
可表明日志文件属性的值的位掩码 | |
session_tag |
integer |
连接会话的唯一标识符,例如,可以利用它使指定 ArcSDE 连接清除所有属于其会话的临时日志文件。 | |
logfile_data_db |
varchar(32) |
存储为此日志文件存放 ID 的表的数据库的名称 | |
logfile_data_owner |
varchar(32) |
为此日志文件存放 ID 的表的所有者的名称 | |
logfile_data_table |
varchar(32) |
为此日志文件存放 ID 的表的名称。此表可以是传统 sde_logfile_data 表,也可以是日志池表、会话表或独立的 sde_logdata<sde_id>_<#> 表。 | |
column_name |
varchar(32) |
业务表中要进行记录的列的名称。通常为行 id 或形状 id,但也可以指定一个任意整型列进行记录。 |
<user_name>_sde_session<sde_id>
<user_name>_sde_session<sde_id> 表在使用基于会话的日志文件时创建。如果已连接会话创建的选择集超出了应用程序阈值(ArcMap 中为 100 条记录),可使用此表追踪日志文件记录。当会话断开连接时,将丢弃 <user_name>_sde_session<sde_id> 表。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
logfile_data_id |
integer |
识别行 id 所属的日志文件 每当日志文件被截断时,将指定新的 logfile_data_id 以避免代价较大的删除操作。logfile_data_id 是对 sde_logfiles 中的日志文件元数据的引用。 |
NOT NULL |
sde_row_id |
integer |
所记录的业务表行的行 id 或形状 id;日志文件可以记录行 id,也可以记录形状 id。 |
NOT NULL |
XML 文档中的日志文件表
日志文件表无法存储在 XML 文档中。这意味着,如果将地理数据库方案导出到 XML 工作空间文档中,则在导入方案后,下次用户创建的选择集超出日志文件阈值时,日志文件表将被重新创建。