Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: AST's in RAC environment

Re: AST's in RAC environment

From: <yong321_at_yahoo.com>
Date: 26 Dec 2004 01:04:14 -0800
Message-ID: <1104051854.445718.111710@z14g2000cwz.googlegroups.com>


Mladen,

Is the debate between you and Gopal only about whether AST is
"something like interrupt"? I guess there must be something more
interesting than just that. I don't have any book on VMS internals. But the authors of "Design and Implementation of 4.3BSD UNIX Operating System" seem to be quite knowledgeable about VAX architecture. They define AST as

IBM HACMP glossary also defines it as an interrup (www.tu-darmstadt.de/hrz/unix/ibm/documentation/HACMP/glossary/glossary.html). Being ignorant of VMS internals, I think it's quite natural to think of an AST as a specific type of interrupt. After all, that's what T means, a trap, or an interrupt (traps and interrupts are different if you're picky). In fact, when I read documents on Metalink that have "AST" in them, I just conveniently substitue "interrupt" for "AST" and it sounds about right. (You'll find numerous Metalink articles by searching for
"AST OPS", no quotes, and checking the Bug and Archived articles
checkboxes)

How do OSes other than VMS such as UNIXes emulate ASTs? Bug:596761 says
"dlm uses sigusr1 to signal the process for ASTs". That was on Siemens
Reliant Unix running Oracle 7.3.3. But process A can send a signal to process B only if A and B can see each other. So the user-defined signals to implement ASTs must be for local ASTs. (Actually, I don't quite understand. If it's local, why do ASTs at all? I did some
"oradebug lkdebug" tests on both 8.1.7 OPS and 10g RAC on Linux. I can
get Locks Pending AST to show a non-zero number if the lock holding and requests are between two instances. But I always get zero if they're from the same instance.) Anyway, to communicate between processes on different nodes, UNIX sockets must be used (see www.ixora.com.au/q+a/misc.htm). Oracle gives a funny name to it, IPC, as if two processes are visible to each other. Well, they are, by way of Oracle application software. But at OS level, they rely on UDP or whatever "oradebug ipc" says.

In case you're interested in exploring, there's an event that sounds relevant, ORA-10430 (enable tracing of global enqueue service AST calls). I haven't tested it. Bugs 3201717 and 3649648 show the levels you can use. Note:112997.1, Bug:1954622, and Bug:558063 (together with Note:61377.1) also look interesting. I see a column ast_event0 in v$ges_blocking_enqueue and v$ges_enqueue (or in OPS, v$dlm_all_locks and v$dlm_locks). But I can't get any value other than 0 in my test on OPS or RAC. There's an "scginq AST call" wait event. I don't see it recorded it in my v$system_event (perhaps I have to enable something first). In 8i, there're more wait events, global cache pending ast(s). In older versions, there may be "lm ast latch" and "dlm cr bast queue latch". Other than oradebug lkdebug, I guess you have to truss (or strace) the shadow process or LCK. And if you're brave, attach gdb to it and step-run each function and watch the behavior in another window where you run sqlplus. If you find anything interesting, let us know. Yong Huang
(yong321 @ yahoo.com) Received on Sun Dec 26 2004 - 03:04:14 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US