Assembly Language for Beginners

(nextflipdebug2) #1

8.11. ORACLE RDBMS


push ecx ; ECX=0x50
push esi ; ESI=0xce2ffb0, "TNS for 32-bit Windows: Version 11.2.0.1.0⤦
Ç- Production"
call _lxvers ; tracing nested maximum level (1) reached, skipping this⤦
ÇCALL
add esp, 10h
mov edx, [ebp+var_18] ; [EBP-18h]=0x50
mov dword ptr [ebx], 5
test edx, edx ; EDX=0x50
jnz loc_2CE1192
mov edx, [ebp+var_14]
mov esi, [ebp+var_C]
mov eax, ebx
mov ebx, [ebp+var_8]
mov ecx, 5
jmp loc_2CE10F6

loc_2CE127A: ; DATA XREF: .rdata:0628B0B0
mov edx, [ebp+var_14] ; [EBP-14h]=0xc98c938
mov esi, [ebp+var_C] ; [EBP-0Ch]=0xcdfe248
mov edi, [ebp+var_4] ; [EBP-4]=0xc98c938
mov eax, ebx ; EBX=0xcdfe554
mov ebx, [ebp+var_8] ; [EBP-8]=0


loc_2CE1288: ; CODE XREF: kqvrow+1F
mov eax, [eax+8] ; [EAX+8]=0xce2ffb0, "NLSRTL Version 11.2.0.1.0 - Production"
test eax, eax ; EAX=0xce2ffb0, "NLSRTL Version 11.2.0.1.0 - Production"
jz short loc_2CE12A7
push offset aXKqvvsnBuffer ; "x$kqvvsn buffer"
push eax ; EAX=0xce2ffb0, "NLSRTL Version 11.2.0.1.0 - Production"
mov eax, [ebp+arg_C] ; [EBP+14h]=0x8a172b4
push eax ; EAX=0x8a172b4
push dword ptr [edx+10494h] ; [EDX+10494h]=0xc98cd58
call _kghfrf ; tracing nested maximum level (1) reached, skipping this⤦
ÇCALL
add esp, 10h


loc_2CE12A7: ; CODE XREF: kqvrow+1C1
xor eax, eax
mov esp, ebp
pop ebp
retn ; EAX=0
kqvrow endp


Now it is easy to see that the row number is passed from outside. The function returns the string, con-
structing it as follows:


String 1 Usingvsnstr,vsnnum,vsnbanglobal variables.
Callssprintf().
String 2 Callskkxvsn().
String 3 Callslmxver().
String 4 Callsnpinli(),nrtnsvrs().
String 5 Callslxvers().

That’s how the corresponding functions are called for determining each module’s version.


8.11.2X$KSMLRUtable in Oracle RDBMS


There is a mention of a special table in theDiagnosing and Resolving Error ORA-04031 on the Shared Pool
or Other Memory Pools [Video] [ID 146599.1]note:


There is a fixed table called X$KSMLRU that tracks allocations in the shared pool that
cause other objects in the shared pool to be aged out. This fixed table can be used to
identify what is causing the large allocation.
If many objects are being periodically flushed from the shared pool then this will cause
response time problems and will likely cause library cache latch contention problems when
Free download pdf