如何生成be closed tobrep in gh

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
基于STEP-NC的信息提取系统的研究和实现.pdf77页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
文档加载中...广告还剩秒
需要金币:200 &&
你可能关注的文档:
··········
··········
Abstract ABSTRACT Numericalcontrolled programbasedonconventionalstandardISO6983 a increasinglyexposegood noinformationcanbe manydisadvantage,and
feedbacktothe most CAD/CAM/CAPP.The reasoniSthatnohi important gh level as3D information such SO geometry,processtechnology,andon has
beenincludedintheconventionalNC
StandardCommitteeintroduceanew standard Data InterfaceforNumeric ControlS ,whichiSusedasnewdatainterface
standardofnumericalcontrolled 14649 extendsthe system.STEP―NC is0
currentSTEPstandardintothe areaof applicationmanufacturing.Ithelps
CNC tousedatamodelSof system inthreedimensions products according
withSTEP inorderto NC thecontrolmachines directly outputprograms NC
directly.STEP―NC―basedwillincludethe program process technology
and machining willovercomelotsof of information,which disadvantage
theconventionalISO 6983一basedNC makesinformation program.STEP―NC
bidirectionalbetweenCNCandother CAX eliminateschoke systems,and oftheinformationstream
points betweenCAX. Basedonthenewestinternational standard―STEP―NC.theauthor
studiestheinformationextraction ofSTEP―NC―basedNC system program,
themaincontentsaredescribedasfol lows: l-After theconventionalNC standardISO analyzing 6983,the develop andcourseathomeandabroadhas
background beensummedconci up sely.
Itwas outtheresearchresults pointed and ofSTEP―NC. advantages 2.The and ofSTEPwas produce、developapplication introduced,and
the betweenSTEPand relationship STEP-NCwas out.TheSTEP―NC pointed
datamodelandthestructureofSTEP―NC
wasanal program yzed.Thesystem ofStandardDataAccess
composed Interface SDAI wasthe expounded,and of was studied.
principlelanguagebinding 3.The structure functioningandmainfeatureoftheinformation
extractionbasedonSTEP―NC was the system introduced,and generalplan
of was finished.The system object―oriented was programmingthought inthe hasthe and
正在加载中,请稍后...MR: Matches for: MR=1145272
MathSciNet bibliographic data
Vaně?ek, George, Jr. Brep-index: a multidimensional space partitioning tree.
Solid modeling, I (Austin, TX, 1991).
Internat. J. Comput. Geom. Appl.
no. 3, 243–261.
For users without a
, Relay Station allows linking from MR numbers in online mathematical literature
directly to electronic journals and original articles.
Subscribers receive the added value of full MathSciNet reviews.
Username/Password Subscribers
American Mathematical Society
201 Charles Street
Providence, RIIBM Informix Dynamic Server 11 系统管理(考试 918)认证指南,第
IBM Informix Dynamic Server 11 系统管理(考试 918)认证指南,第
  ER:复制  本节讨论以下主题:  副本定义   主副本   副本集   模板   管理     副本定义  在计划创建副本时,要考虑以下因素:  使用非缓冲的数据库日志记录  启用行级锁来获得更好的目标并发性  决定复制类型 && update anywhere 或主/目标  决定冲突解决规则 && 忽略、总是、时间戳、存储过程  使用冲突解决方法在表中添加 CRCOLS  决定复制的数据的范围 && 行或事务  考虑其他复制选项,比如 ATS、RIS、fullrow、忽略删除、频率、浮点格式  确保表中存在主键  清单 24 中的示例在三个节点上定义一个简单的副本(采用 update anywhere 形式)。注意,列出每个参与服务器的行采用以下格式:&database_name@server_group:table_owner.table_name& &SELECT 语句和可选的 WHERE 子句&:  清单 24. update anywhere 副本的示例  cdr def repl -I -C timestamp -S trans items_rep  
"stores7@g_80s:ems" "select * from items"  
"stores7@g_90s:ems" "select * from items"  
"stores7@g_00s:ems" "select * from items"   清单 25 给出相同的语句,但是这一次定义的是主/目标副本:  清单 25. 主/目标副本的示例  cdr def repl -I -C timestamp -S trans items_rep  
"P stores7@g_80s:ems" "select * from items"  
"R stores7@g_90s:ems" "select * from items"  
"R stores7@g_00s:ems" "select * from items"   清单 26. cdr define replicate 的语法  $ cdr define replicate -x 
usage: cdr define repl [-c server] [-vuiAFIORTm] -C rule(s) [-M master] [-S scope] 
      [-n y/n] [-t] [-a time] [-e intvl] [-f y|n] [-D y/n] repl 
 participant 
 -M    --master=&node&  define master replicate 
 -t    --empty      Empty mastered replicate 
 -n    --name=y|n    mastered replicate name verification 
 -v    --verify     verify the existing replicates using master definition 
 -u    --autocreate   automatically create tables if they do not exists 
 -a time  --at=time     replicate at specified time 
 -c server --connect=server connect to server 
 -e intvl --every=intvl   replicate every intvl minutes 
 -i    --immediate    continuous replication (default) 
 -A    --ats       aborted transaction spooling 
 -C rule[,rule] --conflict=rule[,rule] conflict resolution rule(s) 
 -F    --floatcanon   transfer floating point in canonical form 
               (deprecated) 
 -I    --floatieee    transfer floating point in IEEE form (recommended) 
 -O    --optimize    don't call procedure unless different server 
 -R    --ris       row information spooling 
 -T    --firetrigger   fire triggers when replicating 
 -S scope --scope=scope   scope of conflict resolution (row or trans) 
 -f y|n  --fullrow y|n   Enable/Disable sending of full row for updates 
 -m &primary repl& --mirrors &primary repl&  Define a shadow replicate 
 -D y|n  --ignoredel y|n  do not process any deletes on targets   主副本  什么是主副本(master replicate)?主副本可以保证 ER 环境中服务器之间的一致性。它们具有以下好处:  检查所有参与服务器的表模式是否与主副本定义匹配,从而确保数据完整性  如果表在目标节点上不存在,就自动创建表  允许更改复制的表上的操作  有三种主副本类型:  Normal && 列名不必匹配,但是模式必须匹配  Strict && 所有参与服务器的表必须具有相同的列名和模式性质  Empty && 指定一个参与服务器作为主副本的基础,但是不在副本中包含这个参与服务器  副本集  副本集是几个副本的逻辑集合,可以作为一个单元进行管理。通过使用副本集,可以只用一个命令启动、停止、暂停或继续运行副本集中的所有副本。有两种副本集类型:排他(exclusive)和非排他(non-exclusive)。  排他副本集要求所有副本具有相同的状态和频率设置。属于一个排他副本集的副本不能同时属于其他任何副本集。使用 --exclusive 选项创建排他副本集。  非排他副本集既允许对副本集中的副本进行统一管理,也允许单独管理。这意味着非排他副本集中的副本可以具有不同的状态;非排他副本集本身没有状态。另外,一个副本可以属于多个非排他副本集。  清单 27. cdr define replicateset 的语法
  $ cdr define replicateset -x 
usage: cdr define replicateset [-c server] [-i ] [-e hh:mm] [-a day.hh:mm] [-x ] 
     ReplSetName repl 
 -a time  --at=time     replicate at specified time 
 -c server --connect=server connect to server 
 -e intvl --every=intvl   replicate every intvl minutes 
 -i    --immediate    continuous replication (default) 
 -X    --exclusive    Exclusive Replset.   模板  模板是副本集的一种特殊形式,可以帮助在新的 ER 节点上部署副本,包括自动地创建表和数据同步。在构建模板时,ER 会为每个表创建空的主副本,并包含在副本集中。可以分别列出每个表,也可以只提供要使用的数据库名,这样就会包含这个数据库中的所有表。在完成模板之后,必须使用 cdr realize template 命令进行实例化或实现。实现模板之后,ER 会执行以下操作:  如果数据库在目标节点上不存在,就自动创建数据库  如果表在目标节点上不存在,就自动创建表  表同步/填充  清单 28. cdr define template 的语法
  $ cdr define template -x 
usage: cdr define template TemplateName -C rule(s) -M server [-S scope] 
         [-c server] [-xaAFIORTX] [-D y|n] 
          -d database [-f file]|[Table(s)] 
 -C rule[,rule] --conflict=rule[,rule] conflict resolution rule(s) 
 -S scope --scope=scope   scope of conflict resolution (row or trans) 
 -M    --master=&node&  define master replicate 
 -c server --connect=server connect to server 
 -A    --ats       aborted transaction spooling 
 -F    --floatcanon   transfer floating point in canonical form 
               (deprecated) 
 -I    --floatieee    transfer floating point in IEEE form (recommended) 
 -O    --optimize    don't call procedure unless different server 
 -R    --ris       row information spooling 
 -T    --firetrigger   fire triggers when replicating 
 -D y|n  --ignoredel y|n  do not process any deletes on targets 
 -X    --exclusive    Exclusive template. 
 -d    --database=&name& database to be used to obtain the table info 
 -a    --all       include all tables in template 
 -f    --file=&name&   file to obtain the list of table participants   清单 29 中的示例在三个节点上为 stores7 数据库设置一个模板。注意:在运行这个命令之前,需要在基表中添加 CRCOLS 列。  清单 29. 为 stores7 数据库创建模板
  cdr define template stores7_template -C timestamp -S trans -M g_80s -A -R  
 -d stores7 call_type catalog cust_calls customer items manufact orders state 
cdr realize template stores7_template -u -S g_80s  
 "stores7@g_80s" "stores7@g_90s" "stores7@g_00s"   管理  本节讨论如何管理副本、副本集和模板,包括修改、列出、启动、停止、暂停、继续运行和删除。管理副本和副本集的大多数命令非常相似,所以本节只讨论副本的管理。  修改 ER 副本  可以对现有的副本进行两种修改:   添加或删除参与服务器  修改副本属性  使用以下命令添加或删除参与服务器:  清单 30. cdr change replicate 的语法
  $ cdr change replicate -x 
usage: cdr change repl [-c server] [-a | -d] [-v | -u] replicate participant 
 -c server --connect=server connect to server 
 -a    --add       add participant 
 -d    --del       remove participant 
 -v    --verify     verify the existing replicates using master definition 
 -u    --autocreate   automatically create tables if they do not exists   使用 cdr modify replicate 命令修改副本属性。有一些限制:不能将冲突解决选项从忽略改为非忽略,也不能将非忽略选项改为忽略。  清单 31. cdr modify replicate 的语法
  $ cdr modify replicate -x 
usage: cdr modify repl [-AORT] -C rule(s) [-i] [-a time] [-e min] [-f y|n] 
replicate 
 -a time  --at=time     replicate at specified time 
 -c server --connect=server connect to server 
 -e intvl --every=intvl   replicate every intvl minutes 
 -i    --immediate    continuous replication (default) 
 -A (y/n) --ats       aborted transaction spooling 
 -C rule[,rule] --conflict=rule[,rule] conflict resolution rule(s) 
 -O    --optimize    don't call procedure unless different server 
 -R (y/n) --ris       row information spooling 
 -T (y/n) --firetrigger   fire triggers when replicating 
 -S scope --scope=scope   scope of conflict resolution (row or trans) 
 -f y|n  --fullrow y|n   Enable/Disable sending of full row for updates 
 -D y|n  --ignoredel y|n  do not process any deletes on targets 
 -n    --name=n     mastered replicate name verification   列出 ER 副本  有三种运行 cdr list replicate 命令的方式。如果省略副本名,那么会产生所有已经定义的副本的详细信息。如果使用 brief 选项,就会产生所有副本的参与服务器列表。如果提供副本名,那么产生副本属性的详细列表。  清单 32. cdr list replicate 的语法
  $ cdr list repl -x 
usage: cdr list repl [-c server] [brief|full] [replicate(s)] 
 -c server --connect=server connect to server   启动 ER 副本  根据定义,刚创建的副本是不活跃的。要想启用副本并让 ER 搜索针对这个表的活动的日志,就必须使用 cdr start replicate。可以有选择地在一个或多个节点上启动一个副本,也可以在副本的所有参与节点上启动它。  清单 33. cdr start replicate 的语法
  $ cdr start repl -x 
usage: cdr start repl [-c server] [-S server [-e keep|delete|merge]] 
          replicate [TargetServers] 
 -c server --connect=server connect to server 
 -S server --syncdatasource=server server to be used as a data source for sync 
 -e    --extratargetrows=[keep|delete|merge] handle extra row during sync 
 TargetServers        List of TargetServers to be started. 
               Separate servers in the list by space.   停止 ER 副本  使用 cdr stop replicate 命令停止副本。这个命令将副本的状态设置为 inactive 并删除这个副本的所有发送队列数据。  清单 34. cdr stop replicate 的语法
  $ cdr stop repl -x 
usage: cdr stop repl [-c server] replicate server(s) 
 -c server --connect=server connect to server   暂停 ER 副本  使用 cdr suspend replicate 命令暂停复制副本的数据。在副本暂停时,ER 捕捉对源数据库的修改并在队列中积累这些修改,但是不将捕捉到的数据发送到目标。如果在环境中引用完整性很重要,就不要使用这个命令,因为 ER 无法支持它。而是应该暂停服务器。  清单 35. cdr suspend replicate 的语法
  $ cdr suspend repl -x 
usage: cdr suspend repl [-c server] replicate(s) 
 -c server --connect=server connect to server   继续运行 ER 副本  使用 cdr resume replicate 命令继续运行暂停的副本。  清单 36. cdr resume replicate 的语法
  $ cdr resume repl -x 
usage: cdr resume repl [-c server] replicate(s) 
 -c server --connect=server connect to server   删除 ER 副本  使用 cdr delete replicate 命令从 ER 环境中删除一个副本。ER 会从这个服务器和参与服务器列表中的所有其他节点上删除这个副本的所有引用。根据这个副本的发送队列中的数据量的不同,删除操作可能需要一些时间才能完成。  清单 37. cdr delete replicate 的语法
  $ cdr delete repl -x 
usage: cdr delete repl [-c server] replicate(s) 
 -c server --connect=server connect to server   ER:冲突解决  当多个数据库服务器试图同时更新同一行时(更新的时间戳是相同的 GMT 时间),就会发生冲突。ER 必须判断出要复制的新数据。为了解决冲突,必须指定冲突解决规则和规则的事务范围。本节讨论以下主题:  方法   影子对象   ATS 和 RIS 文件   练习   解决方案     方法  有五个不同的冲突解决选项,它们的表现各不相同。下面的表总结了这些方法:  表 7. 冲突解决选项
规则描述Ignore(忽略)ER 不尝试解决冲突。Time stamp(时间戳)应用时间戳最近的行或事务。SPL routine(SPL 例程)ER 使用一个用 SPL(Stored Procedure Language)编写的例程来判断应该应用的数据。Time stamp with SPL routine(结合使用时间戳与 SPL 例程)如果时间戳相同,那么 ER 就调用 SPL 例程来解决冲突。Always-apply(总是应用)ER 不尝试解决冲突,总是把源数据应用于目标。
表 8. 忽略冲突解决
目标是否存在键值?插入更新删除No应用源记录丢弃源记录丢弃源记录Yes丢弃源记录应用源记录应用源记录
表 9. 时间戳冲突解决
表 10. &总是应用& 冲突解决
目标是否存在键值?插入更新删除No应用源记录将行作为 upsert 应用将行应用于影子表Yes将行作为 upsert 应用,覆盖现有行应用行删除行
  副本范围  副本的范围(事务或行)定义 ER 如何对故障做出反应。故障可能由冲突、锁问题等造成。如果范围是 &row&,那么只有单独的行失败;但是,如果范围是 &transaction&,那么整个事务都将失败。  影子对象  为了解决冲突,需要了解两种影子对象:  影子列  影子表  影子列  对于使用时间戳或存储过程冲突解决选项的所有表,复制过程使用影子列实现冲突解决。这些列也称为 CRCOLS 或冲突解决列。它们由两个字段组成,cdrserver 和 cdrtime。cdrserver 是一个惟一 ID,表示行的源服务器 id。cdrtime 是一个时间戳,表示在源服务器上执行提交的时间。   影子表  ER 创建影子表(即删除表)来存储已经删除的行,直到删除操作完全传播出去为止。影子表包含删除的行的完整拷贝(包括影子列)。只要冲突解决类型不是忽略,那么在创建副本时,就会创建影子表。在 syscdr 数据库的 &deltabdef& 表中包含复制的表和影子表之间的关系。  ATS 和 RIS 文件  Aborted Transaction Spooling  如果一个事务无法应用,ER 就会从接收队列中删除失败的事务,并在指定的 ATS 目录中写入一个文件,其中包含整个事务的详细信息。只在整个事务失败的情况下,执行 ATS spooling。每个失败的事务被写到 ATS 配置参数指定的目录中的一个外部文件中。ATS 和 RIS 文件的默认位置是 /tmp。ATS 文件名的格式是 ats.targetServername.sourceServername.threadId.timestamp.sequence,其中各个部分的含义如下:  targetServername && 接收这个事务的 ER 服务器的名称  sourceServername && 发送这个事务的 ER 服务器的名称  threadId && 处理这个事务的线程  timestamp && 创建 ATS 文件时 cdrtime 的值  sequence && 对于每个文件递增的惟一整数  示例:  ats.test1.test3.D_1.:23:42.4  ats.test2.test3.D_1.:23:41.4    Row Information Spooling  在插入转换为更新和更新转换为插入时,ER 将失败的行错误记录在 RIS 文件中。另外,如果用来解决冲突的存储过程失败了,那么用返回码生成一个 RIS 文件。RIS 文件名的格式与 ATS 文件名相同。下面是一些示例:  ris.test1.test3.D_1.:23:42.3  ris.test2.test3.D_1.:23:41.3  练习  这个练习实践复制和冲突解决方面的操作。通过这个练习,您应该能够看到 ER 如何用时间戳和忽略选项处理冲突。  练习:执行以下步骤:  表 11. 冲突解决练习
步骤描述1定义下面的表:
清单 38. 创建 rocket 表
  CREATE table rocket( 
 rocket_id int, 
 rocket_name char(20), 
 rocket_cost money(10,2), 
 launch_date datetime year to second, 
 primary key (rocket_id,rocket_name)) 
2定义一个副本,这个副本在系统的其他节点上创建这个表。这个副本包含以下属性:
  时间戳冲突解决选项  事务范围  ATS 和 RIS 错误日志记录3启动副本并插入以下行:
清单 39. 插入行
  insert into rocket values (10,"Gemini",,today); 
insert into rocket values (20,"Apollo13",,today); 
insert into rocket values (30,"Ramjet",,today); 
insert into rocket values (40,"Ramjet2",,today);
4暂停副本5在两个服务器上执行以下更新。一定要按照这里的次序执行更新(首先执行 T1)。
清单 40. 执行更新
  (T1) 在服务器 A 上 
 UPDATE rocket set rocket_cost =  
 where rocket_cost =  and rocket_name = "Gemini"; 
(T2) 在服务器 B 上 
 UPDATE rocket set rocket_cost =  
 where rocket_cost =  and rocket_name = "Gemini";
6继续执行副本。在两个服务器上 Gemini 的成本值是相同的吗?值为多少?在哪里进行冲突探测?在哪里执行冲突解决?在每个服务器上查询数据库来证实您的猜测。7检查是否生成了任何日志消息。每个服务器上应该会生成一个日志消息。是什么导致生成 ATS 和 RIS 文件?  解决方案  解决方案:应该执行以下步骤:  表 12. 冲突解决解决方案
步骤描述1定义下面的表:
清单 41. 创建 rocket 表
  CREATE table rocket( 
 rocket_id int, 
 rocket_name char(20), 
 rocket_cost money(10,2), 
 launch_date datetime year to second, 
 primary key (rocket_id,rocket_name)) 
2定义一个副本,这个副本在系统的其他节点上创建这个表。这个副本包含以下属性:
  时间戳冲突解决选项  事务范围  ATS 和 RIS 错误日志记录  清单 42. 为 rocket 表定义副本
  cdr def repl -M g_80s -n n -u -C "timestamp" -S tran -A -R rocketrep  
"stores7@g_80s:informix.rocket" "select * from rocket"  
"stores7@g_90s:informix.rocket" "select * from rocket" 
定义副本的语句产生以下输出:
清单 43. 检验 rocket 表的副本
  $ ./def_rocketrep.sh 
Verification of stores7@g_80s:informix.rocket started 
Verification of stores7@g_80s:informix.rocket is successful 
Verification of stores7@g_90s:informix.rocket started 
Creating table... 
create table informix.rocket ( 
 rocket_id integer, 
 rocket_name char(20), 
 rocket_cost money(10,2), 
 launch_date datetime year to second, 
 primary key (rocket_id, rocket_name)) with CRCOLS lock mode  
Verification of stores7@g_90s:informix.rocket is successful 
3启动副本并插入以下行:
清单 44. 启动副本
  cdr start repl rocketrep 
清单 45. 在 rocket 表中插入行
  insert into rocket values (10,"Gemini",,today); 
insert into rocket values (20,"Apollo13",,today); 
insert into rocket values (30,"Ramjet",,today); 
insert into rocket values (40,"Ramjet2",,today);
4暂停副本:
清单 46. 暂停副本
  cdr suspend repl rocketrep 
检查 onstat -g cat 的输出,副本的状态应该是 SUSPENDED。5在两个服务器上执行以下更新。一定要按照这里的次序执行更新(首先执行 T1)。
清单 47. 执行更新
  (T1) 在服务器 A 上 
 UPDATE rocket set rocket_cost =  
 where rocket_cost =  and rocket_name = "Gemini"; 
(T2) 在服务器 B 上 
 UPDATE rocket set rocket_cost =  
 where rocket_cost =  and rocket_name = "Gemini";
6继续执行副本 && cdr resume repl rocketrep。在两个服务器上 Gemini 的成本值是相同的吗?值为多少?在哪里进行冲突探测?在哪里执行冲突解决?在每个服务器上查询数据库来证实您的猜测。
清单 48. 更新的结果
  on server A 
 rocket_id rocket_name      rocket_cost launch_date     
     10 Gemini         $  00:00:00 
     20 Apollo13        $  00:00:00 
     30 Ramjet         $  00:00:00 
     40 Ramjet2        $  00:00:00 
on server B 
 rocket_id rocket_name      rocket_cost launch_date     
     10 Gemini         $  00:00:00 
     20 Apollo13        $  00:00:00 
     30 Ramjet         $  00:00:00 
     40 Ramjet2        $  00:00:00 
如果先在服务器 B 上运行更新,然后是服务器 A,那么结果可能不一样。7检查是否生成了任何日志消息。是什么导致生成 ATS 和 RIS 文件?
清单 49. 消息日志文件
  15:28:51 CDR CDRD_3: transaction aborted (One or more rows in a 
transaction defined with tx scope were rejected) with sql error 0 isam 
error 0. 
15:28:51 CDR CDRD_3: failed transaction spooled to file 
/informix/ats-ris/boy/ats.g_80s.g_90s.D_3.:28:51.2 
清单 50. ATS 文件内容
  $ more ats.g_80s.g_90s.D_3.:28:51.2 
TXH RIS file:/informix/ats-ris/boy/ris.g_80s.g_90s.D_3.:28:51.1 
has also been created for this transaction 
========== 
TXH Source ID:90 / Name:g_90s / CommitTime:07-06-09 15:26:40 
TXH Target ID:80 / Name:g_80s / ReceiveTime:07-06-09 15:28:51 
TXH Number of rows processed when transaction was aborted:1 
TXH One or more rows in a transaction defined with tx scope were rejected 
TXH CDR:14 (Error: Failed conflict resolution rule) / SQL:0 / ISAM:0 
---------- 
RRH Row:1 / Replicate Id: 5242884 / Table: stores7@informix.rocket / 
DbOp:Update 
RRS 90 (g_90s)| (07/06/09 15:26:40) 
RRD 10|Gemini|| 00:00:00 
清单 51. RIS 文件内容
  $ more ris.g_80s.g_90s.D_3.:28:51.1 
TXH Source ID:90 / Name:g_90s / CommitTime:07-06-09 15:26:40 
TXH Target ID:80 / Name:g_80s / ReceiveTime:07-06-09 15:28:51 
---------- 
RRH Row:1 / Replicate Id: 5242884 / Table: stores7@informix.rocket / 
DbOp:Update 
RRH CDR:14 (Error: Failed conflict resolution rule) / SQL:0 / ISAM:0 
LRS 80 (g_80s)| (07/06/09 15:28:32) 
LRD 10|Gemini|| 00:00:00 
RRS 90 (g_90s)| (07/06/09 15:26:40) 
RRD 10|Gemini|| 00:00:00 
========== 
TXH Transaction aborted 
TXH ATS file:/informix/ats-ris/boy/ats.g_80s.g_90s.D_3.:28:51.2 
has also been created for this transaction 
  ER:监视  本节讨论以下主题:  概述   onstat   syscdr 数据库     概述  本节主要关注应该 监视什么,而不是可以 监视什么。可以收集的信息量非常大,无法在本教程中全面讨论。所以本节只讨论经常出现问题的领域,以及在深入研究之前需要检查的领域。问题常常只与一个服务器相关,比如日志文件写满、引擎停止运行或连接问题。尽管实际问题可能只发生在一个服务器上,但是应该分别检查每个 ER 服务器。请记住,ER 是在 IDS、操作系统和网络之上建立的。这些部分都可能导致 ER 出现问题。确定问题出现在某个服务器上之后,就要深入研究 ER 的数据流。  onstat  表 13 列出了对于 Enterprise Replication 比较重要的 onstat 选项。本节后面会详细讨论那些粗体显示的选项:  表 13. ER onstat 选项
onstat功能描述onstat -g cat全局编目记录 ER 内部状态和活动的内存结构onsat -g ddr 搜索和重放位置扫描日志页面并决定要复制的日志记录onsat -g grp分组器在提交事务之前持有事务、压缩事务、对事务进行排队以便发送onsat -g nif 网络接口功能处理每个连接的数据包压缩和发送/接收线程onsat -g dss数据同步统计在目标实例上重放复制的数据,处理冲突解决,数据映射onsat -g rcv接收统计信息和数据同步摘要接收和发送队列器、全局编目和数据同步组件的消息onsat -g rqm 队列信息维护 ER 使用的消息队列(SENDQ、CNTRLQ、ACKQ、SYNCQ、RECVQ)
  onstat -g ddr  这个命令查看三个重要的逻辑日志位置,从而判断 ER 的表现。这些位置由逻辑日志惟一 ID 和逻辑日志位置指定。这些位置是:  当前 ID / 位置 && 应用程序线程插入新的逻辑日志记录的位置  搜索 ID / 位置 && ER 当前在逻辑日志中正在 &搜索& 的位置  重放 ID / 位置 && 如果暂停的话,ER 重新启动 &搜索& 的位置  清单 52. 'onstat -g ddr' 的输出
  $ onstat -g ddr 
IBM Informix Dynamic Server Version 11.10.FC1   -- On-Line (Prim) -- Up 16 days 
18:50:41 -- 196608 Kbytes 
DDR -- Running --  
# Event Snoopy  Snoopy  Replay  Replay  Current Current 
Buffers  ID   Position ID   Position  ID   Position 
528   11    643018  11    4f3070  11    644000  
Log Pages Snooped: 
   From   From   Tossed 
   Cache   Disk (LBC full) 
   5992    612      0 
Total dynamic log requests: 0        
DDR events queue 
Type  TX id  Partnum Row id    正如在 onstat -g ddr 的输出中看到的,重放位置和搜索位置应该正在向前推进。如果重放位置没有前进,这说明发送队列已满,或者远程服务器关闭。如果搜索位置没有移动,那么可能是 ddr_snoopy 线程出了问题。  如果数据库服务器将要覆盖 ER 还没有处理的逻辑日志,ER 就会进入 DDRBLOCK 模式。在服务器处于 DDRBLOCK 模式期间,尽管用户事务会被阻塞,但是 ER 活动可以继续执行。在此期间,ER 尝试处理事务,从而将重放位置向前推进,避免日志文件被用光。  onstat -g nif  这个命令指出(服务器已知)站点是否连接,并显示发送和接收的字节数。这有助于找到暂停的站点(相对于其他活动站点)。在下面清单 53 中的输出示例中可以看到,站点 g_90s 处于 SUSPEND 状态。这意味着有人在这个站点上运行了 cdr suspend server。如果该服务器离线,这个输出中就不会列出它。(参见 cdr list server 提供的信息。)  清单 53. onstat -g nif 的输出
  $ onstat -g nif 
IBM Informix Dynamic Server Version 11.10.FC1   -- On-Line (Prim) -- Up 16 days 
20:17:51 -- 196608 Kbytes 
NIF anchor Block: fe0a678 
 nifGState    RUN 
  RetryTimeout 300 
CDR connections: 
 Id  Name        State        Version    Sent  Received 
--------------------------------------------------------------------------- 
2000 g_00s        RUN            9    5559     18 
 90 g_90s        RUN,SUSPEND        9    5562     17   有时候,在这个输出中可能看到 &BLOCK& 状态。阻塞状态意味着这个站点无法处理更多的信息,并请求不要再向它发送更多的数据。这个状态应该是临时的,常常只会持续几分钟。如果 BLOCK 状态持续存在,那么要进一步检查这个站点。  onstat -g rqm   这个命令输出五个 ER 队列的相关信息:SENDQ、CNTRLQ、ACKQ、SYNCQ、RECVQ。每个队列有自己的选项,还可以使用以下选项之一查看所有队列的信息:FULL、BRIEF、VERBOSE。清单 54 中的输出示例显示一个队列的所有信息。输出分为五个部分:  队列的活动和摘要信息  队列的进度表  队列中与目标服务器相关的条目的服务器和副本细节  队列中第一个和最后一个事务的细节  正在处理这个队列的线程的细节  清单 54. onstat -g rqm sendq 的输出
  $ onstat -g rqm sendq 
IBM Informix Dynamic Server Version 11.10.FC1   -- On-Line (Prim) -- Up 16 days 
20:46:32 -- 196608 Kbytes 
CDR Reliable Queue Manager (RQM) Statistics: 
RQM Statistics for Queue (0xfdb1028) trg_send 
 Transaction Spool Name: trg_send_stxn 
 Insert Stamp: 6161/0 
 Flags: SEND_Q, SPOOLED, PROGRESS_TABLE, NEED_ACK 
 Txns in queue:       4003 
 Log Events in queue:    0 
 Txns in memory:      4003 
 Txns in spool only:    0 
 Txns spooled:       4001 
 Unspooled bytes:      210 
 Size of Data in queue:   849555 Bytes 
 Real memory in use:    849555 Bytes 
 Pending Txn Buffers:    0 
 Pending Txn Data:     0 Bytes 
 Max Real memory data used: 849555 (1843200) Bytes 
 Max Real memory hdrs used 1206340 (1843200) Bytes 
 Total data queued:     1188006 Bytes 
 Total Txns queued:     6161 
 Total Txns spooled:    4001 
 Total Txns restored:    0 
 Total Txns recovered:   0 
 Spool Rows read:      0 
 Total Txns deleted:    2158 
 Total Txns duplicated:   0 
 Total Txn Lookups:     29232 
 Progress Table: 
 Progress Table is Stable 
 On-disk table name............: spttrg_send 
 Flush interval (time).........: 30 
 Time of last flush............:  
 Flush interval (serial number): 1000 
 Serial number of last flush...: 5 
 Current serial number.........: 5 
Server  Group Bytes Queued   Acked      Sent 
------------------------------------------------------------------------------ 
 001         0 50/b/4e8118/0      -    50/b/4e8118/0 
  90 0x500001         0 50/b/4e8118/0      -    50/b/4e8118/0 
 Traverse handle (0x104f0028) for thread CDRGeval1 at Head_of_Q, Flags: None 
 Traverse handle (0x) for thread CDRGeval0 at Head_of_Q, Flags: None 
 Traverse handle (0x) for thread CDRGeval2 at Head_of_Q, Flags: None 
 Traverse handle (0x) for thread CDRACK_0 at Head_of_Q, Flags: None 
 Traverse handle (0x) for thread CDRACK_1 at Head_of_Q, Flags: None 
 Traverse handle (0x) for thread CDRNrA90 at Head_of_Q, Flags: None 
 Traverse handle (0xfe60028) for thread CDRNsA2000 at Head_of_Q, Flags: None 
 Traverse handle (0x102b9028) for thread CDRNrA2000 at Head_of_Q, Flags: None   syscdr 数据库  IBM Informix Dynamic Server Enterprise Replication Guide 中详细描述了为 ER 添加的所有 SMI(sysmaster 数据库)表。这些 SMI 表是基于 syscdr 数据库的视图,而且可能将几个表组合在一个视图中。在 $INFORMIXDIR/etc/syscdr.sql 中可以找到这些表的模式,在 $INFORMIXDIR/etc/syscdrview.sql 中可以找到在 sysmaster 中创建的视图。  如果 onstat 命令和 cdr 命令的输出之间出现差异,那么可能需要查看这些表。onstat 实用程序总是从共享内存读取信息,而 cdr 实用程序读取全局编目(也称为 syscdr 数据库)。  表 14. syscdr 表
表名描述hostdef_tabEnterprise Replication 服务器信息(就像 SQLHOSTS)protodef_tab服务器协议信息servdef_tab服务器定义repdef_tab副本定义triggerdef_tabER 触发器定义triggercol_tabER 触发器列partdef_tab副本的参与服务器mastered_replicates_tab主副本描述mastered_syscolumns_tab主副本列mastered_sysxtdtypes_tab主扩展类型mastered_sysattr_tab扩展类型的属性rsncjobdef_tabresync 作业定义表rsncjobdepsresync 作业依赖项rsncprocnames_tabResync 过程名delrepl删除的副本表replsetdef_tab副本集定义replsetpartdef副本集中的副本servroute服务器路由表cdr_errors错误日志gcversion全局编目版本swaploginfo交换日志位置表shadow_event_info影子副本事件表replaytab重放位置表recvcntldup接收控制消息重复探测cdrstatedef_tabCDR 编目状态deltabdef_tab活跃删除表定义cdrviotabdef_tabCDR 违例表定义deltabrep删除表到副本的映射freqdef基于时间的复制频率信息rsncrowstats跟踪 resync 作业的行计数replevents副本暂停/继续运行事件cdr_pcptPostCommit 触发器进度表cdrddlptPostCommit DDL 日志进度表  ER:结合使用 ER 和 HDR  本节讨论以下主题:  SQLHOSTS 需求   SBSPACE 需求   复制 UDT/UDR/Blade 数据     SQLHOSTS 需求    为了结合使用 ER 和 HDR 服务器,HDR 主服务器和从服务器必须属于同一个 ER 服务器组。清单 55 给出一个结合使用 ER 和 HDR 的 SQLHOSTS 文件示例:  清单 55. 使用组语法的 SQLHOSTS 文件
  g_80s group - - i=80 
boy ontlitcp sun-mach4 21340 g=g_80s 
october ontlitcp sun-mach4 21341 g=g_80s 
war ontlitcp sun-mach4 21342 g=g_80s 
uabrs ontlitcp sun-mach4 21343 g=g_80s 
g_90s group - - i=90 
uf ontlitcp sun-mach5 21340 g=g_90s 
jt ontlitcp sun-mach5 21341 g=g_90s 
rh ontlitcp sun-mach5 21342 g=g_90s 
ab ontlitcp sun-mach5 21343 g=g_90s 
g_00s group - - i=2000 
zooropa ontlitcp sun-mach6 21340 g=g_00s 
pop ontlitcp sun-mach6 21341 g=g_00s 
atyclb ontlitcp sun-mach6 21342 g=g_00s 
htdaab ontlitcp sun-mach6 21323 g=g_00s   在这个示例中,服务器 &boy&、&uf& 和 &zooropa& 都是 HDR 主服务器。从服务器是 &october&、&jt& 和 &pop&。  SBSPACE 需求  ER 使用的所有 sbspace 都必须启用日志记录特性。HDR 和 ER 混合环境必须同时满足这两者的最低需求。因此,所有 sbspace 在创建时都需要使用 LOGGING=ON 选项。   复制 UDT/UDR/Blade 数据  如果环境使用用户定义的类型、用户定义的例程和 DataBlade 模块,那么需要执行表 15 所示的步骤:  表 15. 为 ER/HDR 设置 UDT/UDR/Blade 数据
步骤在主服务器上在从服务器上1安装用户定义的类型、用户定义的例程或 DataBlade 模块。安装用户定义的类型、用户定义的例程或 DataBlade 模块。2注册用户定义的类型、用户定义的例程或 DataBlade 模块。   持续复制(Continuous Replication)  本节讨论以下主题:  什么是 Continuous Replication?   它解决什么问题?   RSS 如何帮助维护业务连续性?   SDS 如何帮助维护业务连续性?
&&&主编推荐
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
职称考试题目
招生信息考研政治
网络安全安全设置工具使用手机安全
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&}

我要回帖

更多关于 closed 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信