Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Julian Dyke Independent Consultant © 2005 Julian Dyke SGA Internals Web Version juliandyke.com.

Similar presentations


Presentation on theme: "1 Julian Dyke Independent Consultant © 2005 Julian Dyke SGA Internals Web Version juliandyke.com."— Presentation transcript:

1 1 Julian Dyke Independent Consultant © 2005 Julian Dyke SGA Internals Web Version juliandyke.com

2 © 2005 Julian Dyke juliandyke.com 2 Agenda  Introduction  SGA  Granules  Fixed SGA  Buffer Cache  Shared Pool  Permanent Areas  Heaps  Subheaps  Library Cache  Reserved Area  Log Buffer  Conclusion

3 © 2005 Julian Dyke juliandyke.com 3 Introduction  Examples based on  32 bit architecture  Red Hat 2.1 AS  Oracle 9.2.0.4  Single (non-RAC) instance  Examples affected by  Oracle version  Operating system  Single instance / RAC  Architecture (32/64)  Parameters

4 © 2005 Julian Dyke juliandyke.com 4 Word Length  Word length can be  32 bit - 4 byte pointers  64 bit - 8 byte pointers  Also affects  size of some integer variables e.g. int  word alignment  When moving from 32 bit to 64 bit Oracle recommends doubling  SHARED_POOL_SIZE  SHARED_POOL_RESERVED_SIZE  LARGE_POOL_SIZE

5 © 2005 Julian Dyke juliandyke.com 5 Double Linked Lists - Insertion  Frequently used in SGA structures  Each element includes pointers to next and previous elements  Requires 8 bytes (32 bit systems) or 16 bytes (64 bit systems) 5544308055845C5452175AC0 Head Tail 5000F430 55443080 5000F430 55845C54 52175AC0 STOP

6 © 2005 Julian Dyke juliandyke.com 6 Double Linked Lists - Deletion  Double linked lists are more efficient for  insertion  deletion 5544308055845C54 Head Tail 5000F43052175AC0 5000F430 55443080 5000F430 55845C54 52175AC0 STOP

7 © 2005 Julian Dyke juliandyke.com 7 Memory Areas  An Oracle process includes the following memory areas  Executable  PGA/Session Heap  Shared Libraries  SGA  Stack 08048000 0AAA28C0 40000000 50000000 584A4000 Executable PGA Session Heap Shared Libraries SGA Stack STOP

8 © 2005 Julian Dyke juliandyke.com 8 Shared Memory  Shared memory can be dumped to trace file using ORADEBUG SETMYPID ORADEBUG IPC $ sqlplus /nolog SQL> CONNECT SYS/ AS SYSDBA Connected SQL> ORADEBUG SETMYPID Statement processed SQL> ORADEBUG IPC Information written to trace file SQL> ORADEBUG TRACEFILE_NAME /var/opt/oracle/admin/LX092001/udump/lx092001_ora_9824.trc

9 © 2005 Julian Dyke juliandyke.com 9 Area #0 `Fixed Size' containing Subareas 0-0 Total size 000000000006e5cc Minimum Subarea size 00000000 Area Subarea Shmid Stable Addr Actual Addr 0 0 163840 0x00000050000000 0x00000050000000 Subarea size Segment size 000000000006f000 0000000008800000 Area #1 `Variable Size' containing Subareas 1-1 Total size 0000000008000000 Minimum Subarea size 00400000 Area Subarea Shmid Stable Addr Actual Addr 1 1 163840 0x0000005006f000 0x0000005006f000 Subarea size Segment size 0000000008391000 0000000008800000 Area #2 `Redo Buffers' containing Subareas 2-2 Total size 00000000000a3000 Minimum Subarea size 00000000 Area Subarea Shmid Stable Addr Actual Addr 2 2 163840 0x00000058400000 0x00000058400000 Subarea size Segment size 00000000000a3000 0000000008800000 Area #3 `skgm overhead' containing Subareas 3-3 Total size 0000000000001000 Minimum Subarea size 00000000 Area Subarea Shmid Stable Addr Actual Addr 3 3 163840 0x000000584a3000 0x000000584a3000 Subarea size Segment size 0000000000001000 0000000008800000 ORADEBUG IPC - Example Area #0 `Fixed Size' containing Subareas 0-0 Total size 000000000006e5cc Minimum Subarea size 00000000 Area Subarea Shmid Stable Addr Actual Addr 0 0 163840 0x00000050000000 0x00000050000000 Subarea size Segment size 000000000006f000 0000000008800000 Area #1 `Variable Size' containing Subareas 1-1 Total size 0000000008000000 Minimum Subarea size 00400000 Area Subarea Shmid Stable Addr Actual Addr 1 1 163840 0x0000005006f000 0x0000005006f000 Subarea size Segment size 0000000008391000 0000000008800000 Area #2 `Redo Buffers' containing Subareas 2-2 Total size 00000000000a3000 Minimum Subarea size 00000000 Area Subarea Shmid Stable Addr Actual Addr 2 2 163840 0x00000058400000 0x00000058400000 Subarea size Segment size 00000000000a3000 0000000008800000 Area #3 `skgm overhead' containing Subareas 3-3 Total size 0000000000001000 Minimum Subarea size 00000000 Area Subarea Shmid Stable Addr Actual Addr 3 3 163840 0x000000584a3000 0x000000584a3000 Subarea size Segment size 0000000000001000 0000000008800000 OS Specific Fixed Area Variable Area Redo Buffers STOP

10 © 2005 Julian Dyke juliandyke.com 10 V$SGA  Describes sizes of main components in SGA  Used by SHOW SGA command in SQL*Plus NameValue Fixed Size452044 Variable Size83886080 Database Buffers50331648 Redo Buffers667648 SELECT name, value FROM v$sga;  Based from X$KSMSD  X$KSMSD derived from ksmstv_ (ksmst) in Fixed SGA

11 © 2005 Julian Dyke juliandyke.com 11 Shared Global Area  Contains  Fixed SGA  Buffer Pool  Shared Pool Oracle 7.0 and above  Large Pool Oracle 8.0 and above  Java Pool Oracle 8.1.5 and above  Streams Pool Oracle 10.1 and above  Redo buffers  Buffer Pool includes  Default cache  Keep and Recycle cacheOracle 8.0 and above  2K, 4K, 8K, 16K and 32K cacheOracle 9.0.1 and above

12 © 2005 Julian Dyke juliandyke.com 12 Granules  Introduced in Oracle 9.0.1  SGA divided into granules  In Oracle 9.2 granule size dependent on SGA_MAX_SIZE  4 mb SGA_MAX_SIZE <= 128 mb  16 mbSGA_MAX_SIZE > 128 mb  If SGA_MAX_SIZE not set explicitly then defaults to sum of individual pool parameters  SGA_MAX_SIZE cannot be dynamically modified

13 © 2005 Julian Dyke juliandyke.com 13 Granules  Pool parameters rounded up to nearest granule  Each pool occupies one or more granules  Different buffer caches held in separate granules  First "granule" contains  Fixed SGA  Granule directory  Heap headers  Last "granule" contains  Guard pages  Redo buffer  Operating system specific overhead  Remaining space unused

14 © 2005 Julian Dyke juliandyke.com 14 Granules SGA_MAX_SIZE = 128M DB_CACHE_SIZE = 48M JAVA_POOL_SIZE = 20M LARGE_POOL_SIZE = 12M SHARED_POOL_SIZE = 20M 128M 4M Note – shared pool size automatically increased from 20M to 32M Buffer Pool 48M Free 16M Fixed SGA 4M Large Pool 12M Shared Pool 32M Java Pool 20M Redo Buffer 4M STOP

15 © 2005 Julian Dyke juliandyke.com 15 Granule Operations  The following pools can be dynamically resized PoolParameterVersion Shared PoolSHARED_POOL_SIZE9.0.1 and above DefaultDB_CACHE_SIZE9.0.1 and above 2KDB_2K_CACHE_SIZE9.0.1 and above 4KDB_4K_CACHE_SIZE9.0.1 and above 8KDB_8K_CACHE_SIZE9.0.1 and above 16KDB_16K_CACHE_SIZE9.0.1 and above 32KDB_32K_CACHE_SIZE9.0.1 and above KeepDB_KEEP_CACHE_SIZE9.0.1 and above RecycleDB_RECYCLE_CACHE_SIZE9.0.1 and above Large PoolLARGE_POOL_SIZE9.2.0 and above Java PoolJAVA_POOL_SIZE10.1 and above  Streams pool cannot be dynamically resized in Oracle 10.1

16 © 2005 Julian Dyke juliandyke.com 16 Granule Views  The following views support dynamic memory management  Introduced in Oracle 9.2  V$SGA_DYNAMIC_COMPONENTS  V$SGA_DYNAMIC_FREE_MEMORY  V$SGA_CURRENT_RESIZE_OPS  V$SGA_RESIZE_OPS  Not always reliable  Introduced in Oracle 10.1  V$SGAINFO

17 © 2005 Julian Dyke juliandyke.com 17 X$KSMGE  Introduced in Oracle 9.2  Describes individual granules ADDRRAW(4) INDXNUMBER INST_IDNUMBER GRANNUMNUMBER GRANTYPENUMBER GRANSTATEVARCHAR2(16) GRANFLAGSNUMBER LOCALITYNUMBER BASEADDRRAW(4) GRANSIZENUMBER GRANNEXTNUMBER GRANPREVNUMBER INVALID (Free) ALLOCATED Granule Address Granule Size Next granule ID Previous granule ID Granule ID 0Free 2Shared Pool 3Large Pool 4Java Pool 5Buffer Pool

18 © 2005 Julian Dyke juliandyke.com 18 Granule Dumps  Granules can be dumped using ALTER SESSION SET EVENTS ‘immediate trace name granulelist level ’  where is Heap Level Null Granule255 Home Granule511 Shared Pool767 Large Pool1023 Java Pool1279 Buffer Cache1535

19 © 2005 Julian Dyke juliandyke.com 19 Fixed SGA  Area containing all fixed variables  Contains pointers to all other structures in SGA  Variable name, type, address and size determined when Oracle executable is linked  Located at start of first granule of SGA Fixed SGA Granule Directory Heap Headers 5001D9E8 5001DF50 50000000 STOP

20 © 2005 Julian Dyke juliandyke.com 20 X$KSMFSV  Externalises name, type, address and size of all variables in fixed SGA ADDRRAW(4) INDXNUMBER INST_IDNUMBER KSMFSNAMVARCHAR2(64) KSMFSTYPVARCHAR2(64) KSMFSADRRAW(4) KSMFSSIZNUMBER Name Type Address Size  SGA can be dumped using ORADEBUG FIXEDSGA

21 © 2005 Julian Dyke juliandyke.com 21 Global Area Dumps  Global areas can be dumped using ALTER SESSION SET EVENTS ‘immediate trace name global_area level ’  where is HeapLevel PGA1 SGA2 PGA + SGA3 UGA4 PGA + UGA5 SGA + UGA6 PGA + SGA + UGA7  More detail is included at levels 0x08 0x10 0x18 (OR)

22 © 2005 Julian Dyke juliandyke.com 22 X$KSMMEM  Externalises contents of all locations in the SGA ADDRRAW(4) INDXNUMBER INST_IDNUMBER KSMMMVALRAW(4) Value Address  Does not work on Windows platforms

23 © 2005 Julian Dyke juliandyke.com 23 Buffer Cache  Buffer Cache includes 12 x 4M granules  Each granule contains 500 buffers  Buffer Cache contains 6000 buffers 51400000 51800000 51C00000 52000000 52400000 52800000 52C00000 53000000 53400000 53800000 53C00000 54000000 DB_CACHE_SIZE = 48M DB_BLOCK_SIZE = 8192 Block Size Buffers Per Granule 4mb16mb 204818757503 40969793916 81925002002 163842531012 32768127509 STOP

24 © 2005 Julian Dyke juliandyke.com 24 Buffer Headers  Each buffer has a buffer header  In 9.2.0.4 buffer headers are 188 bytes  Buffer headers are stored in same granule as buffers  Buffer headers include  Replacement list  Hash list  Pointer to buffer Buffer Headers Granule Buffers STOP

25 © 2005 Julian Dyke juliandyke.com 25 X$BH  Externalises buffer headers ADDRRAW(4) INDXNUMBER INST_IDNUMBER HLADDRRAW(4) BLSIZNUMBER NXT_HASHRAW(4) PRV_HASHRAW(4) NXT_REPLRAW(4) PRV_REPLRAW(4) TS#NUMBER FILE#NUMBER DBARFILNUMBER DBABLKNUMBER OBJNUMBER BARAW(4) CR_SCN_BASNUMBER Hash List Address Block Size Hash List Replacement List Tablespace# Absolute File Number Relative File Number Block Number Object ID Buffer Address

26 © 2005 Julian Dyke juliandyke.com 26 Shared Pool 56400000 56800000 56C00000 57000000 57400000 57800000 57C00000 58000000 Shared Pool includes  Permanent Area  Segmented Arrays  Library Cache  Row Cache  Reserved Area Shared Pool occupies  8 x 4M granules = 32M  SHARED_POOL_SIZE = 20M STOP

27 © 2005 Julian Dyke juliandyke.com 27 V$SGASTAT  Describes sizes of individual components in SGA PoolNameValue fixed sga452044 buffer cache50331648 log buffer656384 shared poolenqueues51680 shared poolsessions91656 shared poollibrary cache1480240 shared pooldictionary cache1614976 shared poolfree memory19746760 large poolfree memory12582912 java poolfree memory20971520 SELECT pool, name, value FROM v$sgastat;

28 © 2005 Julian Dyke juliandyke.com 28 Permanent Areas SELECT ksmchptr, ksmchsiz FROM x$ksmsp WHERE ksmchcls = 'perm'; AddressSize 5641F0003967868 5681F0002718736 56AB6C10905116 56C1F004063188 5701F0004067328 56400000 56800000 56C00000 57000000 57400000 57800000 57C00000 58000000  Allocated at instance startup  Contain structures such as  processes  sessions  segmented arrays STOP

29 © 2005 Julian Dyke juliandyke.com 29 Sessions  Array of sessions stored in shared pool permanent area  Allocated at instance startup  Number of elements specified by SESSIONS parameter  In Oracle 9.2 each element is 2412 bytes  Session array externalised by  X$KSUSE  General information  Used by V$SESSION  X$KSUSESTA  Statistics  Used by V$SESSTAT  X$KSUSECST  Current Waits  Used by V$SESSION_WAIT

30 © 2005 Julian Dyke juliandyke.com 30 Sessions X$KSUSE V$SESSION X$KSUSECST V$SESSION_WAIT X$KSUSESTA V$SESSTAT Array of Pointers struct ksusg ksusga_ STOP

31 © 2005 Julian Dyke juliandyke.com 31 Segmented Arrays  Used to store arrays of objects  Array too large to fit in granule  Array may grow dynamically  Objects using segmented arrays include  enqueues (locks)  enqueue resources (resources)  transactions  transaction branches  Segmented arrays managed recursively by segmented array  Segmented arrays externalised in X$KSMDD

32 © 2005 Julian Dyke juliandyke.com 32 Segmented Arrays Call Enqueues Enqueue Resources Segmented Array Header Segmented Array Segmented Array Header Segmented Array STOP

33 © 2005 Julian Dyke juliandyke.com 33 X$KSMDD  Externalises segmented array headers ADDRRAW(4) INDXNUMBER INST_IDNUMBER NAMEVARCHAR2(30) ELEMENTS_CHUNKNUMBER ITEMS_PTNUMBER INITENTRIESNUMBER NUMENTRIESNUMBER CURENTRIESNUMBER NUMCHUNKSNUMBER ELEMSIZENUMBER FLAGSNUMBER HEAPRAW(4) SECONDARYRAW(4) Name of array Address of parent heap Number of chunks

34 © 2005 Julian Dyke juliandyke.com 34 Heaps  A heap consists of one or more extents  Each heap extent occupies a single granule  Each extent contains one or more chunks  Each heap has a header containing  list of used chunks  list of free chunks Extent 0 Extent 1 Extent 2 Heap Header Free List Chunks STOP

35 © 2005 Julian Dyke juliandyke.com 35 Chunks  Chunks contain  header  body  Size of chunk header dependent on chunk type  16 bytes <= size <= 32 bytes  Chunks chained through extent  Chunks can be  permanent  recreatable  freeable  free Extent Extent Header Chunk Header Chunk Body STOP

36 © 2005 Julian Dyke juliandyke.com 36 X$KSMSP  Externalises chunks in the shared pool ADDRRAW(4) INDXNUMBER INST_IDNUMBER KSMCHIDXNUMBER KSMCHDURNUMBER KSMCHCOMVARCHAR2(16) KSMCHPTRRAW(4) KSMCHSIZNUMBER KSMCHCLSVARCHAR2(8) KSMCHTYPNUMBER KSMCHPARRAW(4) Description of chunk type Address of chunk Size including header Class ●Perm ●Recreate ●Freeable ●Free ●R-Free ●R-Freeable Address of parent Type (recreate only) ●0x18 - KGL Handle ●0x24 - Fixed Allocation ●0x74 - KQR PO ●0x80 - KQR SO ●0xFFF - Extended header

37 © 2005 Julian Dyke juliandyke.com 37 Heap Dumps  Heaps can be dumped using ALTER SESSION SET EVENTS ‘immediate trace name heapdump level ’;  where is HeapSummaryDetail PGA11025 SGA22050 UGA44100 CGA – Current Call88200 CGA – User Call1616400 LGA – Large Pool3232800

38 © 2005 Julian Dyke juliandyke.com 38 Free List  Heap free lists contain 255 buckets  Each bucket contains double linked list to free chunks  Bucket sizes increase in  increments of 4 bytes - 16, 20, 24, 28, 32... 808, 812  increments of 64 bytes - 876, 940, 1004... 3948, 4012  then 4108, 8204, 16396, 32780, 65548  Reduces fragmentation

39 © 2005 Julian Dyke juliandyke.com 39 Free List  Example 16 Heap Header 52 byte chunks 24 byte chunks 20 24 28 32 36 40 44 48 52 56 60 64 Buckets 36 byte chunks

40 © 2005 Julian Dyke juliandyke.com 40 Subheaps  Heaps can contain subheaps  Objects can have up to 10 subheaps  SQL statements include subheaps 0 and 6  Subheaps consist of one or more extents  Subheaps have heap headers  Subheap header format similar to heap header format  Only one freelist containing all free space Subheap Header Free List Extent 0Extent 1Extent 2 Chunk

41 © 2005 Julian Dyke juliandyke.com 41 Subheap Dumps  In Oracle 9.0.1 and below to dump a subheap, first obtain the address of the subheap and convert to decimal 0x56b95c0c = 1454988300  For a summary dump use  For a detailed dump add 1 to the address e.g. ALTER SESSION SET EVENTS ‘immediate trace name heapdump_addr level 1, addr 0x56b95c0c’; ALTER SESSION SET EVENTS ‘immediate trace name heapdump_addr level 2, addr 0x56b95c0c’; ALTER SESSION SET EVENTS ‘immediate trace name heapdump_addr level 1454988300’; ALTER SESSION SET EVENTS ‘immediate trace name heapdump_addr level 1454988301’;  In Oracle 9.2 and above to dump the subheap summary use  For a detailed dump use

42 © 2005 Julian Dyke juliandyke.com 42 Subheap Dumps  Example - dump the SGA using Chunk 56b94dc8 sz= 304 recreate "KGL handles " latch=0x56efd918 Chunk 56b94ef8 sz= 560 freeable "library cache " ds=0x56b95c0c Chunk 56b95128 sz= 540 recreate "KQR PO " latch=(nil) Chunk 56b95344 sz= 540 recreate "KQR PO " latch=0x56d719f4 Chunk 56b95560 sz=1116 freeable "KGLS heap " ds=0x56b96d1c Chunk 56b959bc sz= 20 free " " Chunk 56b959d0 sz= 560 recreate "library cache " latch=(nil) ds 56b95c0c sz=1120 ct= 2 56b94ef8 sz= 560 Chunk 56b95c00 sz= 96 freeable "library cache " ALTER SESSION SET EVENTS ‘immediate trace name heapdump level 2’;  Dump subheap using ALTER SESSION SET EVENTS ‘immediate trace name heapdump_addr level 1, addr 0x56b95c0c’;

43 © 2005 Julian Dyke juliandyke.com 43 Subheap Dumps HEAP DUMP heap name="library cache" desc=0x576193c4 extent sz=0x224 alt=32767 het=16 rec=9 flg=2 opc=2 parent=0x5000002c owner=0x5761826c nex=(nil) xsz=0x224 EXTENT 0 addr=0x57615130 Chunk 57615138 sz= 312 perm "perm " alo=260 Chunk 57615270 sz= 76 freeable "kgltbtab " Chunk 576152bc sz= 76 freeable "kgltbtab " Chunk 57615308 sz= 76 freeable "kgltbtab " EXTENT 1 addr=0x57616a88 Chunk 57616a90 sz= 512 perm "perm " alo=512 Chunk 57616c90 sz= 28 free " " EXTENT 2 addr=0x57618254 Chunk 5761825c sz= 172 perm "perm " alo=172 Chunk 57618308 sz= 36 free " " Total heap size = 1288 FREE LISTS: Bucket 0 size=0 Chunk 57616c90 sz= 28 free " " Chunk 57618308 sz= 36 free " " Total free space = 64 UNPINNED RECREATABLE CHUNKS (lru first): PERMANENT CHUNKS: Chunk 57615138 sz= 312 perm "perm " alo=260 Chunk 57616a90 sz= 512 perm "perm " alo=512 Chunk 5761825c sz= 172 perm "perm " alo=172 Permanent space = 996 Extent 0 Extent 1 Extent 2 Free List

44 © 2005 Julian Dyke juliandyke.com 44 X$KSMHP  Externalises chunks in a subheap ADDRRAW(4) INDXNUMBER INST_IDNUMBER KSMCHDSRAW(4) KSMCHCOMVARCHAR2(16) KSMCHPTRRAW(4) KSMCHSIZNUMBER KSMCHCLSVARCHAR2(8) KSMCHTYPNUMBER KSMCHPARRAW(4) KSMCHOWNRAW(4) Address of parent heap Address of data segment Description of chunk type Address of chunk Size including header Class ●Perm ●Free

45 © 2005 Julian Dyke juliandyke.com 45 X$KSMHP SQL> SELECT COUNT(*) FROM x$ksmhp; 0 rows SQL> SELECT COUNT(*) FROM x$ksmhp WHERE ksmchds = HEXTORAW ('5755E798'); COUNT(*) -------- 1 SQL> SELECT kglobhd6 FROM x$kglob WHERE kglnaobj = 'SELECT SUM(c1) FROM t1' AND kglhdadr != kglhdpar; KGLOBHD6 -------- 5755E798 SQL> SELECT COUNT(*) FROM x$ksmhp; COUNT(*) -------- 0 STOP

46 © 2005 Julian Dyke juliandyke.com 46 Library Cache  Database objects  Tables  Views  Packages  Functions  Shared cursors  SQL statements  Anonymous PL/SQL block  Stored PL/SQL procedures and functions  Java stored procedures  Methods

47 © 2005 Julian Dyke juliandyke.com 47 Library Cache  For example SELECT SUM(c2) FROM t1 WHERE c3 = 42 AND c4 < 2004; 0SELECT STATEMENT 10SORT (AGGREGATE) 21TABLE ACCESS (BY INDEX ROWID) OF 'T1' 32INDEX (RANGE SCAN) OF 'I2' CREATE TABLE t1 ( c1 NUMBER, c2 NUMBER, c3 NUMBER, c4 NUMBER ); CREATE INDEX i1 ON t1 (c1); CREATE INDEX i2 ON t1 (c3); STOP

48 © 2005 Julian Dyke juliandyke.com 48 Library Cache struct kgsms ksmgsg_ Heap Library Cache KGLHD Anonymous List KGLHD 512 x 1 word pointers 256 x DLL headers Library Cache Object Handle 512 x 256 = 131072 buckets STOP

49 © 2005 Julian Dyke juliandyke.com 49 Library Cache Object - Parent 16 x 1 word pointers KGLHD Parent Object KGLNA SELECT SUM (c2) FROM t1 WHERE c3 = 42 AND c4 < 2004 Parent Name Child Handle KGLHD Child 1 Child 2 Heap 0 KGLOB X$KGLOB Parent Handle KGLHD STOP

50 © 2005 Julian Dyke juliandyke.com 50 Library Cache Object - Child KGLHD Child Handle Child Object SELECT Statement Heap 6 KGLOB Subheap Header Heap 0 Subquery Header Statistics etc X$KGLOB STOP

51 © 2005 Julian Dyke juliandyke.com 51 Library Cache - Statement Subquery Header Operation Explain Plan SORT (AGGREGATE) Explain Plan Operation TABLE ACCESS (BY INDEX ROWID) Operation INDEX (RANGE SCAN) STOP

52 © 2005 Julian Dyke juliandyke.com 52 Sort (Aggregate) SORT (AGGREGATE) Output Columns Column Definition Obj =1234 Col=2 Column Alias Alias=C2 Expression Function Expression Op=SUM Column Expression Expression Variable STOP

53 © 2005 Julian Dyke juliandyke.com 53 Table Access (By Index Rowid) Column Definition Obj =1234 Col=2 Column Definition Obj =1234 Col=4 Column Alias Alias=C4 Expression Function Expression Op=LT Column Expression Constant Expression Constant Value=2004 Expression Variable TABLE ACCESS (BY INDEX ROWID) Output Columns Predicate c4 < 2004 Condition Column Definition Obj =1234 Col=ROWID Table Alias Alias=T1 Column Expression Expression Variable ROWID Expression STOP

54 © 2005 Julian Dyke juliandyke.com 54 Index (Range Scan) Column Definition Obj =1234 Col=ROWID Column Definition Obj =1234 Col=3 Column Alias Alias=C3 Expression Array Expression Function Expression Op=EQ Column Expression Constant Expression Constant Value=42 Expression Variable INDEX (RANGE SCAN) Output Columns Predicate c3 = 42 Variable STOP

55 © 2005 Julian Dyke juliandyke.com 55 Shared Pool Reserved Area  Area of memory reserved for large contiguous requests for memory  Reduces fragmentation in shared pool  Only used if no space available in shared pool  Summarised in V$SHARED_POOL_RESERVED  SHARED_POOL_RESERVED_SIZE  specifies size of shared pool in bytes  defaults to 5% of SHARED_POOL_SIZE  _SHARED_POOL_RESERVED_PCT  specifies percentage of shared pool to reserve  defaults to 5%  _SHARED_POOL_RESERVED_MIN_ALLOC  specifies minimum chunk size e.g. 4400

56 © 2005 Julian Dyke juliandyke.com 56 X$KSMSPR  Externalises address, size and class of all chunks in the shared pool ADDRRAW(4) INDXNUMBER INST_IDNUMBER KSMCHCOMVARCHAR2(16) KSMCHPTRRAW(4) KSMCHSIZNUMBER KSMCHCLSVARCHAR2(8) KSMCHTYPNUMBER KSMCHPARRAW(4) Comment ● free memory ● reserved_stopper Address Size in bytes Class ●R-free ●R-freeable

57 © 2005 Julian Dyke juliandyke.com 57 Shared Pool Reserved Area SELECT ksmchcom,ksmchptr,ksmchsiz,ksmchcls FROM x$ksmspr ORDER BY ksmchptr; KSMCHCOMKSMCHPTRKSMCHSIZKSMCHCLS reserved_stopper5640002420R-freeable free memory56400038126900R-free reserved_stopper5641EFEC20R-freeable reserved_stopper5680002420R-freeable free memory56800038126900R-free reserved_stopper5681EFEC20R-freeable reserved_stopper56C0002420R-freeable free memory56C00038126900R-free reserved_stopper56C1EFEC20R-freeable reserved_stopper5700002420R-freeable KSMCHCOMKSMCHPTRKSMCHSIZKSMCHCLS reserved_stopper5640002420R-freeable free memory56400038126900R-free reserved_stopper5641EFEC20R-freeable reserved_stopper5680002420R-freeable free memory56800038126900R-free reserved_stopper5681EFEC20R-freeable reserved_stopper56C0002420R-freeable free memory56C00038126900R-free reserved_stopper56C1EFEC20R-freeable reserved_stopper5700002420R-freeable 56400000 56800000 56C00000 57000000 57400000 57800000 57C00000 58000000 STOP

58 © 2005 Julian Dyke juliandyke.com 58 Log Buffer  2 x 4K guard pages (DEADFACE)  1288 x 512 byte blocks for redo  Each 512 byte includes 16 byte header  Usable redo = 1288 x 496 = 638848 bytes LOG_BUFFER = 524288 Guard Page Header - 16 bytes Body - 496 bytes 58400000 584A2000 STOP

59 © 2005 Julian Dyke juliandyke.com 59 Thank you for your interest For more information and to provide feedback please contact me My e-mail address is: info@juliandyke.com My website address is: www.juliandyke.com


Download ppt "1 Julian Dyke Independent Consultant © 2005 Julian Dyke SGA Internals Web Version juliandyke.com."

Similar presentations


Ads by Google