a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 106|回复: 1

[综合] Oracle辅导:oracle分布式事务介绍

[复制链接]
发表于 2012-8-4 13:54:49 | 显示全部楼层 |阅读模式
根基概念   Local Coordinator:在分布事务中,必需参考其它节点上的数据才能完成自己这部门操作的站点。
8 W  Z' e4 P9 S/ E" ^" H. q  Global Coordinator:分布事务的倡议者,负责协调这个分布事务。' a0 c4 t+ v; _' H3 H; z
  Commit Point Site:在分布事务中,首先执行COMMIT或ROLLBACK操作的站点。一般情形下,应该把存储关头数据的站点作为Commit Point Site。因为Commit Point Site和其它站点纷歧样,年夜来不会进入prepared状况,所以不会存在IN-DOUBT事务。
, w/ c% L2 y4 p1 V  可以设置初始化参数COMMIT_POINT_STRENGTH,在分布式事务中,会按照这 个值的巨细来确定Commit Point Site,分布事物的状况信息也存在该数据库中。一般将关头的数据库作为commit point site ,commit_point_strength值较高的数据库为commit point site,在分布事物中最先提交: p8 u8 M! K* @5 y6 n  x2 ]
  分布式提交的3个阶段9 U- h& J4 U- J% Y! b
  分布事物的两阶段提交分三个过程:& e1 g% `& M2 O& B8 T4 F
  1. 筹备阶段(PREPARE PHASE)
9 r% A7 R8 c7 F  ·当地数据库Global Coordinator向其它数据库发出COMMIT通知2 t( J* i. w5 @# D% H. M
  ·斗劲所稀有据库的SCN号,将最高的SCN号作为分布事物的全局SCN号! M4 d& z' a* y
  ·所稀有据库写在线日志4 @- O7 ^6 N, w7 A
  ·对分布事物改削的表加分布锁,防止被读写( }9 S: A* D) a- q  `! a  J5 B0 W' ^
  ·各数据库向Global Coordinator发出已经筹备好的通知
6 }% c9 }4 w/ [; B  所有介入分布事物的数据库必需经由上述筹备,才能进入下一阶段。: Y/ D$ A# w# D& Y( _6 T% g# i! B
  2. 提交阶段(COMMIT PHASE)+ |, x/ K5 d; _
  ·当地数据库Global Coordinator通知commit point site首先提交。commit point site提交后,释放其据有的资本,通知Global Coordinator完成提交
7 a! F) ?& A. A2 w9 n& L$ ^8 I  ·当地数据库Global Coordinator通知其它数据库提交
! j7 r5 [2 D  [  {  L. M- Z# z  ·提交节点在日志中追加一条信息,暗示分布事物已经完成提交,并通知Global Coordinator。此时所稀有据库的数据连结了一致性。& N( _1 t" A. c  ^* k# i, {
  3. 注销阶段(FORGET PHASE)$ s- ^) P% @  {# _% g# `
  ·当地数据库Global Coordinator通知commit point site所稀有据库已经完成提交
/ {9 `2 J  a5 e+ ~7 P0 R) D& ~  ·commit point site断根分布事物的记实和状况信息,并通知Global Coordinator
8 v( ?: z& V8 a$ Y& J8 U  ·Global Coordinator断根当地分布事物的记实和状况信息
9 F! b% z  t' V3 r6 R$ T  此时分布事物的两阶段提交全数完成。* s: p: b" N% A1 F5 D- u: F0 L
  如不美观两阶段提交完成之前,数据库或收集呈现异常,应用就会报错,分布事物处于IN_DOUBT状况。一旦数据库或收集恢复正常,系统(RECO PROCESS)会自动措置IN_DOUBT状况的分布事物。有些情形需要打点员手工措置IN_DOUBT状况的分布事物:
0 A0 ~9 G; S: _' r5 K2 p  ·IN_DOUBT状况的分布事物,将关头表锁住,造成应用不能正常工作
* [6 J: q; Z( u  两个主要的视图0 i  t% D7 W) @1 e
  DBA_2PC_PENDING:列出所有的悬而未决的事务﹐此视图在末填入悬而未决的事务之前是空的﹐解决这后也被清空。
) J* m; @, x9 t  LOCAL_TRAN_ID: ~; V6 E, i9 D0 F/ j
  当地事务标识﹐名目为integer.integer.ingeger。
0 X' Q& E; N& Y) E, q$ Y0 N3 r% Z3 J  当一个毗连的local_tran_id和global_tran_id不异时﹐那么该节点是该事务的全局协调器。" X7 s1 R+ M+ m; @& M
  GLOBAL_TRAN_ID
  o0 F& b) h1 j/ h4 d  全局事务标识,名目为﹕global_db_name.db_hex_id.local_tran_id,其中db_hex_id是用来标识数据库八字符的十六进制数﹐公共事各id在分布式事务的每个节点都是不异的。( L& x$ a; R$ ]5 G' Q+ Y6 \- M& v0 v
 “YES”意味着一部门事务已经在一个节点上提交﹐而在另一个节点上被回滚。
8 M2 G+ ]2 ^2 Z; d& m8 U* u$ S  TRAN_COMMENT
" A6 i7 h, k/ s  事务的注释﹐或者如不美观使用了事务命名﹐当事各被提交时﹐事务的名字就会呈此刻此处3 d" j  |4 g$ ]2 h* J- m
  已提交的事务的全局提交数
6 ^9 C" l  h/ i7 u/ T  DBA_2PC_PENDING的STATE列的声名
( L, T" t# E* X7 D  i$ |( k  Connecting
6 m/ U) L( M* D; u/ }- ?
" U: W+ L7 K3 ?; i" ^  }3 [" X  凡是情形下﹐只有全局协调器和当地协调器才使用这个条目﹐节点在能够抉择它是否能够筹备好之前﹐要收集来自于其它数据库处事的信息。
回复

使用道具 举报

 楼主| 发表于 2012-8-4 13:54:50 | 显示全部楼层

Oracle辅导:oracle分布式事务介绍

</p>  节点已准好﹐可能或者也可能没有将已筹备好的动静通知当地协调器﹐但此时﹐该节点还没有领受到提交的请求﹐仍连结着准许备好的状况﹐节制着提交事务所必需的任何当地资本。; X0 o6 F+ c% o- C; j) s0 s: b
  节点(任何类型)已经提交了事务﹐但该事务所包含的其它节点可能并没有提交﹐也就是该事务在一个个或多个其它节点上仍然是悬而未决 。
' R, q) |1 @4 g8 q1 h2 s  Forced commit
! Y" Y: R0 v7 d& b6 y  DBA进行判定后﹐可以强行提交未决的事务﹐如不美观一个事务由DBA在当地节点进论说动提交时﹐发生此项目$ v8 v* l* `' ~  S9 p7 y
  Forced abor(rollback)
8 e" u& {' V+ @: j  ~( q; B% T. R  DBA进行判定后﹐可以强行回滚未决的事务﹐如不美观一个事务由DBA在当地节点进论说动回滚时﹐发生此项目& K+ c- Q! z+ u; ~8 G! e, a9 S
  DBA_2PC_NEIGHBORS:列出所有获得的(年夜远程客户)和送出的(给远程处事器)悬而未决的事务﹐也暗示理当地节点是不是事务的提交点站点。
! ]& I) @6 H% N- l0 ^  LOCAL_TRAN_ID- {4 R+ Y* j. H  @- J! H0 n
  对获得事务来说指当地节点信息的客户数据库的名称﹔对送出的事务来说指用于访谒远程处事器上信息的数据库链接的名称4 I. q& h/ z6 k6 u2 m) r0 h! r
  DBuser_owner$ F1 \) x: V/ c; t( Z
  对获得事务来说指远程数据库链接用于毗连的当地账户﹔对于送出事务来说指该数据库链接的拥有者。" x% q" O0 j# n# l: j* l6 P- h
  INTERFACE
3 `# w# N6 C# n2 }  ‘C’代表提交信息﹐’N’暗示已筹备好状况的一条动静或是一条请求只读提交的请求。
" e( h( p7 C+ B  当’IN_OUT’为OUT时﹐’C’暗示该毗连的远程的站点是提交点站点,而且知道是提交仍是间断。’N’暗示当地节点正在通知远程节点﹐说它已筹备好。
" k( c* c% x# ?6 `5 l) g6 X  当’IN_OUT’为IN时﹐‘C’暗示当地节点或送出的远程的一个数据库是提交点站点﹐’N’暗示当地节点正在通知远程节点﹐说它已筹备好。
/ c1 i6 y+ C0 F0 H5 V  措置明日挂事务的一般轨范
! K7 X- H. I1 u; E- T2 r0 Z  1、 搜检alert文件,发现近似下面error:7 I4 [2 u$ t3 y7 E3 b
  ORA-1591 "lock held by in-doubt distributed transaction %s". ]# h) Y$ S* m* g/ i& |3 u8 l
  ORA-2062 "distributed recovery received dbid x, expected y"
9 @# c* D  e: y5 J0 A/ s  ORA-2068 "following severe error from %s%s"
) l# O' g/ j6 S- |( f, y" N- U  2、 确认收集是否正常、dblink是否valid、v$dblink和gv$dblink中发芽当前是否在使用分布式事务。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-16 10:28 , Processed in 0.186229 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表