今天跟大家介绍一下ArcSDE日志文件表,一直都想好好研究一下这块,因为基本上不太受大家重视,感兴趣的用户不是很多,但是一旦出现多用户并发查询或者版本操作的时候,这个东西就显得非常重要了,而且根据不同的用户场景设定不同的日志类型,对相关效率也是很有帮助的。

注意:我们所说的ArcSDE日志文件表与经常提到的ArcSDE日志文件是不一样的,因为在ArcSDE创建库、启动服务、升级出现问题都会建议用户查看%SDEHOME%/etc里面的日志文件,这些记录了相关的日志信息,但是我们今天所阐述的是ArcSDE日志文件表。

什么是ArcSDE日志文件表

企业级地理数据库使用日志文件表来维护所选记录的列表。每次选择指定大小的内容时会将记录写入日志文件表以供应用程序之后使用,对版本化数据库执行协调或提交,或者在客户端应用程序中完成离线编辑检出。日志文件表中存储了所选要素的 ObjectID,这样便可重新显示这些要素。支持信息的更快速分析和处理。

在 ArcGIS 中,默认情况下,如果选择集包含 100 或 100 条以上记录,则会使用日志文件表。100 个要素这个阈值可在注册表中设置。可对此阈值进行更改。

注意:Esri 不建议进行此操作。没有任何证据表明更改此阈值可改善性能,对其进行更改反而可能造成性能问题。

ArcSDE 日志文件有四种类型:

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

共享日志文件

共享日志文件将由以相同用户身份连接的所有会话所共用。如果有多个用户与同一个用户帐户连接,则所有这些会话均会将记录插入同一日志文件数据表或者从同一日志文件数据表中删除记录。

何时使用共享日志文件

如果存在多个并发会话并且每个会话都使用单个 DBMS 用户帐户进行连接,则使用共享日志文件(推荐使用这种方法建立与地理数据库的连接)。

可能不想使用共享日志文件的情况

如果使用相同的登录信息建立了多个连接(例如使用通过相同的登录信息生成多个连接的 ArcIMS 服务时),则不需要使用共享日志文件。这将导致 SDE_LOGFILE_DATA 表存在争用和等待时间。在这些情况下,需要使用基于会话的日志文件。

为共享日志文件创建的表

用于该选项的日志文件表是 SDE_LOGFILES 和 SDE_LOGFILE_DATA。这些日志文件表在用户首次做出超出选择阈值的选择时在连接用户的方案中创建。对于 ArcGIS for Desktop,这个阈值是 100 个记录。

SDE_LOGFILES 存储所创建的每个选择集(日志文件)的相关信息。此表中的 logfile_name 列和 logfile_id 列唯一地标识了日志文件的名称,而 logfile_id 列则将日志文件记录链接到 SDE_LOGFILE_DATA 表。SDE_LOGFILE_DATA 表包含所选记录的 logfile_data_id 和要素标识符。

选择集被清除后,会立即删除所有记录,以防止 SDE_LOGFILE_DATA 表变得过大。SDE_LOGFILES 表将在用户的会话结束时被截断。SDE_LOGFILE_DATA 和 SDE_LOGFILES 将保留在用户的方案中。

使用共享日志文件的设置

在 SERVER_CONFIG 表中,需要进行下列设置来创建共享日志文件表:

  • MAXSTANDALONELOGS = 0
  • ALLOWSESSIONLOGFILE = FALSE
  • LOGFILEPOOLSIZE = 0

用于控制共享日志文件表和索引的存储的设置

对于 Oracle,以下参数控制着共享日志文件表和索引的存储:

  • LD_INDEX_DATA_ID
  • LD_INDEX_ROW_ID
  • LD _STORAGE
  • LF_INDEXES
  • LF_STORAGE

有关这些参数的说明,请参阅 Oracle DBTUNE 配置参数。

共享日志文件所需的权限

由于日志文件表由连接的用户所有,因此用户必须具有创建所需数据对象(如,表)的权限。即使用户具有地理数据库的只读访问权限或 ArcSDE 设置为只读,也同样要求这一点。如果未向用户授予这些权限,则当该用户首次创建大于特定客户端应用程序阈值大小的选择集时,将收到错误消息。不过在为用户创建 SDE_LOGFILES 和 SDE_LOGFILE_DATA 表后,地理数据库管理员可以撤消这些权限。

例如:Ian 是一位城市规划者,他通常只从地理数据库中选择数据,进行一些与其工作相关的分析。因此,他被视为只读用户。但是,如果 Ian 要在该城市的 ArcSDE 地理数据库中创建 SDE_LOGFILES 和 SDE_LOGFILE_DATA 表,则需要拥有在地理数据库中创建表的权限。

不过地理数据库管理员不会授予 Ian 无期限创建表的权限,而是决定以 Ian 的身份登录到地理数据库,做出超出选择阈值的选择,然后撤消 Ian 创建表的权限。

使用 Oracle 中的共享日志文件表需要以下权限:

  • CREATE SESSION
  • CREATE TABLE
  • CREATE SEQUENCE

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

共享的日志文件(Shared log files)实际说明:
默认安装后,SDE用户是没有创建SDE_LOGFILES和SDE_LOGFILE_DATA表,如果SDE用户下的数据选择超过100条记录,那么系统会默认在SDE用户下创建以上两个表,而且有相关的选择ObjectID记录。
1:如果其他数据库用户,在该用户的数据选择超过100条记录,那么系统仍然会在SDE用户下的SDE_LOGFILES和SDE_LOGFILE_DATA表填写选中记录的OBJECTID信息
2:如果使用SDE用户将SDE用户下的数据利用权限分配给User以只读权限,那么以User用户进入数据连接,加载数据,选择超过100条记录,就会报如下错误

[python] view plaincopy print?
  1. There was an error executing the query.
  2. Unable to create logfile system tables:User perhaps lacks permissions or resource to create tables [ORA-01031:权限不足]

该错误说明,User用户没有对SDE用户表有写的权限。

上面提到了,基于共享的日志文件主要应用于不同DBMS用户的并发连接,那么如果是以相同登录信息的并发连接就可以使用基于会话的日志文件类型。
基于会话的日志文件(Session log files)
-------------------------------以下为ArcGIS10.1中文帮助---------------

基于会话的日志文件

基于会话的日志文件数据表专用于单个会话,并可能含有多个选择集(日志文件)。所登录的每个会话都需要一组表以供选择。

何时使用基于会话的日志文件

如果用相同的登录信息与地理数据库建立了多个并发连接,则需要使用基于会话的日志文件。

您何时可能不想使用基于会话的日志文件

如果存在连接到数据库的只读用户,则不能使用基于会话的日志文件。

会话结束时,会话表将从用户的方案中删除。这意味着会话表在需要时必须重新创建;因此,用户必须拥有创建表的权限才能使用基于会话的日志文件表。

为基于会话的日志文件创建的表

将创建三个表:SDE_LOGFILES、SDE_LOGFILE_DATA 和 SDE_SESSION<SDE_ID>。事实上,SDE_LOGFILE_DATA 不在这种情况下使用,但会自动创建出来。SDE_LOGFILES 表存储选择集的相关信息以及附加到 SDE_SESSION 表名称的会话标签 <SDE_ID>。SDE_SESSION 表存储所选集的要素标识符,以及日志文件的 ID。

SDE_LOGFILES 和 SDE_LOGFILE_DATA 表保留在地理数据库中。当连接中的应用程序断开连接时,SDE_LOGFILES 表将被截断。当连接中的应用程序删除日志文件时,SDE_SESSION<SDE_ID> 表将被截断;会话断开连接时,此表将被删除。

使用基于会话的日志文件(非池化)所需的设置

在 SERVER_CONFIG 表中,要创建所有者不是地理数据库管理员且基于会话的日志文件表,需要进行以下设置:

  • ALLOWSESSIONLOGFILE = TRUE
  • MAXSTANDALONELOGS = 0
  • LOGFILEPOOLSIZE = 0

用于控制基于会话的日志文件表和索引的存储的设置

DBTUNE 表的 LOGFILE_DEFAULTS 关键字下有许多控制日志文件表在数据库中的存储方式或存储位置的参数。不设置这些参数也可使用基于会话的日志文件,但如果要更改 SDE_LOGFILES、SDE_LOGFILE_DATA 和 SDE_SESSION 表和索引在数据库中的存储方式,则可对这些参数进行设置。

对于 Oracle,以下参数控制着基于会话的日志文件表和索引的存储:

  • LD_INDEX_DATA_ID
  • LD_INDEX_ROW_ID
  • LD_STORAGE
  • LF_INDEXES
  • LF_STORAGE
  • SESSION_INDEX
  • SESSION_STORAGE

有关这些参数的说明,请参阅 Oracle DBTUNE 配置参数。

基于会话的日志文件所需的权限

基于会话的日志文件由启动该连接会话的用户所有。这意味着用户需要拥有创建所需数据库对象的权限。

要使用 Oracle 中基于会话的日志文件表,所有用户需要具有以下权限:

  • CREATE SESSION
  • CREATE TABLE
  • CREATE SEQUENCE

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


基于会话的日志文件(Session log files)实际说明:
使用ArcSDE命令将基于共享的日志模型修改为基于会话的日志模式

[python] view plaincopy print?
  1. C:\Users\Administrator>sdeconfig -o alter -v ALLOWSESSIONLOGFILE=TRUE -i sde:oracle11g:orcl2 -u sde -p sde
  2. ArcSDE 10.0  for Oracle11g Build 2004 Fri Jan 13 11:45:40  2012
  3. SDE Server Configuration Tool    Administration Utility
  4. -----------------------------------------------------
  5. Alter SERVER_CONFIG Table. Are you sure? (Y/N): y
  6. Successfully altered SERVER_CONFIG Table.

然后,开启两个都是以SDE用户的ArcMap连接同一数据,然后选中超过100条记录,可以得到如下信息

[python] view plaincopy print?
  1. C:\Users\Administrator>sqlplus sde/sde@orcl2
  2. SQL*Plus: Release 11.2.0.1.0 Production on 星期一 10月 15 15:49:07 2012
  3. Copyright (c) 1982, 2010, Oracle.  All rights reserved.
  4. 连接到:
  5. Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
  6. With the Partitioning, OLAP, Data Mining and Real Application Testing options
  7. SQL> set long 2000
  8. SQL> select sde_id,server_id from process_information;
  9. SDE_ID  SERVER_ID
  10. ---------- ----------
  11. 43       7668
  12. 42       7824
  13. SQL> desc sde_session_42;
  14. 名称                                      是否为空? 类型
  15. ----------------------------------------- -------- ----------------------------
  16. LOGFILE_DATA_ID                           NOT NULL NUMBER(38)
  17. SDE_ROW_ID                                NOT NULL NUMBER(38)
  18. SQL> select count(*) from sde_session_43;
  19. COUNT(*)
  20. ----------
  21. 619

从上面可以得出,看到两个SDE进程,分别是42、43,那么sde用户下会产生两个sde_session_<SDE_ID>的表来存储相关的信息。

上面提到的存储超过100条记录都会在SDE用户下往相关表写信息,那么如果是多用户并发编辑的话,其实SDE用户下这些表的压力是很大的,那么也可以选择在不同的用户下创建自己的存储日志表,就是下面要介绍的独立日志文件类型。
独立的日志文件(Stand-alone log files)
-------------------------------以下为ArcGIS10.1中文帮助---------------

独立日志文件

独立日志文件由会话为应用程序需要存储的每个选择集创建。

何时使用独立的日志文件

如果您不需要向所有数据库用户均授予在地理数据库中创建表的权限,那么您可以使用独立的日志文件表。

独立的日志文件表的一个优点是:清除选择集时,存储该选择的 SDE_LOGDATA 表将被截断而不是被删除。截断操作的执行速度要快于删除操作,这是因为前者无需发出内部结构化查询语言 (SQL) 语句。不过,还没有太多实例可以说明这种性能提升的价值高于为每个图层创建并存储单个日志文件表的成本。

何时不使用独立的日志文件

如果存在连接到数据库的只读用户,则不能使用独立的日志文件。中断连接时,SDE_LOGDATA<SDE_ID> 表将从用户的方案中删除。每次超过某个图层的选择阈值时,都必须重新创建它们。因此,如果用户将要连接到地理数据库,您不能移除这些用户的 CREATE 权限。

为独立的日志文件创建的表

对于会话创建的超出选择阈值的每个选择集,将为每个图层创建一个新的 SDE_LOGDATA<SDE_ID> 表。这么做可以消除对 SDE_LOGDATA 表的争用。不过,由于为每个选择集都会创建新表并且新表将在会话断开时删除,因此会生成大量的 CREATE TABLE 和 DROP TABLE SQL 语句。

对于每个连接,都将在用户的方案中创建 SDE_LOGFILES 和 SDE_LOGFILE_DATA 表。SDE_LOGFILES 表用于存储选择集属性,但不使用 SDE_LOGFILE_DATA 表。

当图层不再需要选择集时,SDE_LOGDATA<SDE_ID> 表将被截断。当会话断开时,将删除 SDE_LOGDATA<SDE_ID> 表。即使用户断开连接以后,SDE_LOGFILES 和 SDE_LOGFILE_DATA 表仍然保留在用户的方案中;不过,SDE_LOGFILES 表将被截断。

使用独立日志文件(非池化)所需的设置

SERVER_CONFIG 表中指定可创建的独立日志文件数量的参数为 MAXSTANDALONELOGS。MAXSTANDALONELOGS 的默认设置为 0,因此,如果要使用独立日志文件,必须将 MAXSTANDALONELOGS 数值设置为允许每个用户创建的独立日志文件数。

要创建所有者不是地理数据库管理员的独立日志文件表,需要进行以下设置:

  • MAXSTANDALONELOGS = <任何用户都可创建的 SDE_LOGDATA<SDE_ID> 表的最大数量>
  • LOGFILEPOOLSIZE = 0

在会话的配额(由 MAXSTANDALONELOGS 服务器配置参数定义)用完以前,将一直使用独立的日志文件。当用户用完独立的日志文件时,换言之,当应用程序需要同时创建的选择集(日志文件)数量超出 MAXSTANDALONELOGS 允许的值时,ArcSDE 将尝试创建基于会话的日志文件,但前提是将 ALLOWSESSIONLOGFILE 设为 TRUE。如果 ArcSDE 无法创建基于会话的日志文件,则将尝试创建共享日志文件。如果共享日志文件也无法创建并且独立的日志文件也已用完,那么 ArcSDE 将返回错误。

有关日志文件类型使用顺序的示例的信息,请参阅 ArcSDE 日志文件按照何种顺序使用?

用于控制独立日志文件表和索引的存储的设置

DBTUNE 表的 LOGFILE_DEFAULTS 关键字下有许多控制日志文件表在数据库中的存储方式或存储位置的参数。不设置这些参数也可使用独立日志文件,但如果要更改 SDE_LOGFILES、SDE_LOGFILE_DATA 和 SDE_LOGDATA 表和索引在数据库中的存储方式,则可对这些参数进行设置。

对于 Oracle,以下参数控制着独立日志文件表和索引的存储:

  • LD_INDEX_DATA_ID
  • LD_INDEX_ROW_ID
  • LD_STORAGE
  • LF_INDEXES
  • LF_STORAGE
  • SESSION_INDEX
  • SESSION_STORAGE

有关这些参数的说明,请参阅 Oracle DBTUNE 配置参数。

独立日志文件所需的权限

使用独立的日志文件表的用户帐户必须拥有创建所需数据库对象的权限。与共享日志文件不同的是,日志文件表创建完以后,您无法撤消用户的权限,这是因为每次会话创建一个足够大的选择时,每个图层都将创建一个新的用户所有的表。

要使用 Oracle 中的独立日志文件表,所有用户需要具有以下权限:

  • CREATE SESSION
  • CREATE TABLE
  • CREATE TRIGGER
  • CREATE SEQUENCE
  • CREATE PROCEDURE

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

独立的日志文件(Stand-alone log files)实际操作:
将ArcSDE日志模式转换为独立的日志模式

[python] view plaincopy print?
  1. C:\Users\Administrator>sdeconfig -o alter -v MAXSTANDALONELOGS=3 -i sde:oracle11g:orcl2 -u sde -p sde
  2. ArcSDE 10.0  for Oracle11g Build 2004 Fri Jan 13 11:45:40  2012
  3. SDE Server Configuration Tool    Administration Utility
  4. -----------------------------------------------------
  5. Alter SERVER_CONFIG Table. Are you sure? (Y/N): y
  6. Successfully altered SERVER_CONFIG Table.
  7. C:\Users\Administrator>sdeconfig -o alter -v ALLOWSESSIONLOGFILE=FALSE -i sde:oracle11g:orcl2 -u sde -p sde
  8. ArcSDE 10.0  for Oracle11g Build 2004 Fri Jan 13 11:45:40  2012
  9. SDE Server Configuration Tool    Administration Utility
  10. -----------------------------------------------------
  11. Alter SERVER_CONFIG Table. Are you sure? (Y/N): y
  12. Successfully altered SERVER_CONFIG Table.

从数据库的角度可以查看

[python] view plaincopy print?
  1. SQL> select sde_id,server_id from sde.process_information;
  2. SDE_ID  SERVER_ID
  3. ---------- ----------
  4. 51       5316
  5. 49       1856
  6. SQL> select count(*) from bbb.sde_logdata49_1;
  7. COUNT(*)
  8. ----------
  9. 1004
  10. SQL> select count(*) from sde.sde_logdata51_1;
  11. COUNT(*)
  12. ----------
  13. 367

从上图可以看出,如果使用独立日志模式,那么在加载相关用户下的数据进行超过100条记录的选中,就会在该用户下创建相关的表,而且根据用户的连接进程(SDE_ID)来创建不同的表。

其实大部分情况也可以使用最后一种日志模式,基于会话的或独立的日志文件组成的池来代替
ArcSDE 日志文件表(二) - ArcGIS技术研究 - 博客频道 - CSDN.NET http://t.cn/zT8wk60
-------------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
------------------------------------------------------------------------------------------------------

ArcSDE 日志文件表(一)相关推荐

  1. db2 修改表空间自增长_db2表空间及日志文件调整

    1.SQLState '57011' and errorCode '-964' 原因:数据库的日志文件已满 解决方法:修改日志文件大小(加大),增加日志文件个数,增加辅助日志文件个数(三个修改参数可以 ...

  2. SQL Server-聚焦事务对本地变量、临时表、表变量影响以及日志文件存满时如何收缩(三十一)...

    前言 接下来我们将SQL Server基础系列还剩下最后几节内容结束,后续再来讲解SQL Server性能调优,我们开始进入主题. SQL Server事务对本地变量影响 事务对变量影响具体是指什么意 ...

  3. 如何使用Oracle的外部表查询警告日志文件

    从Oracle9i版本开始,Oracle的外部表技术(Oracle External Tables)有了很大的增强,通过外部表访问外部数据增强了Oracle数据库和外部数据源进行数据交互能力,对于数据 ...

  4. 删除Mysql数据库的表空间,日志文件

    -- 删除顺序为:表--数据文件--表空间--日志文件 组 truncate table guoxintest2; DROP TABLE guoxintest2; ALTER TABLESPACE t ...

  5. mysql日志文件相关的配置【2】

    1.二进制日志是什么? mysql 的二进制日志用于记录数据库上做的变更. 2.二进制日志什么时间写到磁盘 1.总的来说二进制日志会在释放锁之前就写入磁盘.也就是说在commit完成之前:client ...

  6. Linux 服务器日志文件查找技巧精粹

    用来在日志文件里搜索特定活动事件的工具不下几十种,本文将介绍搜索日志文件时应该采取的策略.然后,通过几个具体示例介绍一些使用grep命令手动搜索日志文件的办法.接下来,我们将看到 logwatch工具 ...

  7. Sql Server实用操作-无数据库日志文件恢复数据库两种方法

    数据库日志文件的误删或别的原因引起数据库日志的损坏 方法一 1.新建一个同名的数据库 2.再停掉sql server(注意不要分离数据库) 3.用原数据库的数据文件覆盖掉这个新建的数据库 4.再重启s ...

  8. MySQL开发 日志文件必备的知识点

    MySQL 日志文件开发必备的知识点 参考来源:juejin.im/post/5b7c0aabf265da438415b9eb 前言 日志文件记录了影响MySQL数据库的各种类型活动,MySQL数据库 ...

  9. mysql二进制日志文件差不多_mysql数据同步-基于二进制日志文件和position复制点的方式...

    mysql的binlog日志有三种格式,分别为statement,mixed,以及row. 1.Statement:每一条会修改数据的sql都会记录在binlog中 优缺点:1)不用记录每一行的变化, ...

最新文章

  1. 如何使cmd的输入和输出重定向到管道中(用这种方法可以将指令写入cmd并抓取输出)
  2. ZedGraph怎样实现将图形右键菜单的打印和页面设置合并为打印的二级子菜单
  3. zookeeper理解
  4. 华为手机的分类有何区别_“鸿蒙”系统能不能玩安卓游戏?如果能,它跟安卓系统有何区别?...
  5. graphpad数据小数点_GraphPad Prism 统计指南 | 关于异常值(Outlier),你真的了解吗?...
  6. 别等找工作时才明白:程序员只会敲代码是不行的!不看后悔!
  7. 零基础学python难吗-零基础入门学习Python技术难不难?
  8. jira api java,如何使用其余api(java)在jira中创建问题?
  9. atoi函数:c\c++中把字符串整数转换为int型整数
  10. ASP.Net 中常用的数据库连接方式
  11. Hibernate组件作为Map索引(四)
  12. [Matlab有限元分析] 1.有限元分析的发展、基本概念和特点
  13. 2345劫持浏览器主页怎么办?以Microsoft Edge为例
  14. 2018怎样发英文外链才能提升谷歌排名
  15. Maven clean基本命令
  16. Type interface com.aiit.mapper.BrandMapper is not known to the MapperRegistry.解决办法
  17. 红豆 2022年3月16日
  18. JavaScript保留小数位数代码
  19. 【转】如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源
  20. 希望计算机专业同学都知道这些宝藏博主

热门文章

  1. 解析XML文件——SAX解析技术
  2. python课程多少钱-天津Python培训班学费多少
  3. 学python心得体会1000字-浅谈我对python的学习感受
  4. 【调剂】湖南工业大学湖南省重点实验室急招生物医学工程、计算机与基础医学相关硕士研究生...
  5. 喜报!Stratifyd荣获WRE“最佳科技创新引领奖”
  6. Retry attempted 10 times without completing, bailing out解决
  7. 程序员常用的博客平台
  8. 知乎登录js逆向及文章爬取js逆向
  9. 华为云WeLink亮相 “特岗青椒计划”开学典礼,助力特岗教师的能力提升
  10. 由快速排序引申而来--如何学习算法