Contention on index block splits  consuming significant database time

Hi Guys,
can anybody suggest on how to remove Contention on index block splits,this is giving so many issues on my production DB,the CPU usage shots up and application hangs for few minutes.
DB is 10.2.0.3 and OS is IBM AIX 5.3

I found this.. it might be useful
One possibility is that this is caused by shared CBC latching peculiarities:
1) during normal selects your index root block can be examined under a
shared cache buffers chains latch.
So as long as everybody is only reading the index root block, everybody can
do it concurrently (without pinning the block). The "current holder count"
in the CBC latch structure is just increased by one for every read only
latch get and decreased by one on every release. 0 value means that nobody
has this latch taken currently.
Nobody has to wait for others for reading index root block in all read only
case. That greatly helps to combat hot index root issues.
2) Now if a branch block split happens a level below the root block, the
root block has to be pinned in exclusive mode for reflecting this change in
it. In order to pin a block you need to get the corresponding CBC latch in
exclusive mode.
If there are already a bunch of readers on the latch, then the exclusive
latch getter will just flip a bit in the CBC latch structure - stating it's
interest for exclusive get.
Every read only latch get will check for this bit, if it's set, then the
getters will just spin instead, waiting this bit to be cleared (they may
yield or sleep immediately as well, I haven't checked). Now the exclusive
getter has to spin/wait until all the shared getters have released the latch
and the "current holder count" drops to zero. Once it's zero (and the getter
manager to get on to CPU) it can get the latch, do its work and release the
latch.
During all that time starting from when the "exclusive interest" bit was
set, nobody could access this indexes root block except the processes which
already had the latch in shared mode. Depending on latch spin/sleep strategy
for this particular case and OSD implementation, this could mean that all
those "4000 readers per second" start just spinning on that latch, causing
heavy spike in CPU usage and they all queue up.
How do diagnose that:
You could sample v$latch_misses to see whether the number of "kcbgtcr:
kslbegin shared" nowaitfails/sleeps counter takes an exceptional jump up
once you observe this hiccup.
How to fix that once diagnosed:
The usual stuff, like partitioning if possible or creating a single table
hash cluster instead.
If you see that the problem comes from excessive spinning, think about
reducing the spinning overhead (by reducing spincount for example). This
could affect your other database functions though..
If you can't do the above - then if you have off-peak time, then analyse
indexes (using treedump for start) and if you see a block split coming in a
branch below root block, then force the branch block to split during
off-peak time by inserting carefully picked values into the index tree,
which go exactly in the range which cause the proper block to split. Then
you can just roll back your transaction - the block splits are not rolled
back nor coalesced somehow, as this is done in a separate recursive
transaction.
And this
With indexes, the story is more complicated since you can't just insert a
row into any free block available like with tables. Multiple freelists with
tables help us to spread up inserts to different datablocks, since every
freelist has its distinct set of datablocks in it. With indexes, the
inserted key has to go exactly to the block where the structure of b?tree
index dictates, so multiple freelists can't help to spread contention here.
When any of the index blocks has to split, a new block has to be allocated
from the freelist (and possibly unlinked from previous location in index),
causing an update to freelist entry in segment header block. Now if you had
defined multiple freelists for your segment, they'd still remain in the
single segment header block and if you'd have several simultaneous block
splits, the segment header would become the bottleneck.
You could relieve this by having multiple freelist groups (spreading up
freelists into multiple blocks after segment header), but this approach has
it's problems as well - like a server process which maps to freelist group 1
doesn't see free blocks in freelist group 2, thus possibly wasting space in
some cases...
So, if you have huge contention on regular index blocks, then you should
rethink the design (avoid right hand indexes for example), or physical
design (partition the index), increasing freelists won't help here.
But if you have contention on index segment's header block because of block
splits/freelist operations, then either partition the index or have multiple
freelist groups, adding freelists again won't help here. Note that adding
freelist groups require segment rebuild.

Similar Messages

  • Cluster multi-block requests were consuming significant database time

    Hi,
    DB : 10.2.0.4 RAC ASM
    OS : AIX 5.2 64-bit
    We are facing too much performance issues and CPU idle time becoming 20%.Based on the AWR report , the top 5 events are showing that problem is in cluster side.I placed 1st node AWR report here for your suggestions.
    WORKLOAD REPOSITORY report for
    DB Name DB Id Instance Inst Num Release RAC Host
    PROD 1251728398 PROD1 1 10.2.0.4.0 YES msprod1
    Snap Id Snap Time Sessions Curs/Sess
    Begin Snap: 26177 26-Jul-11 14:29:02 142 37.7
    End Snap: 26178 26-Jul-11 15:29:11 159 49.1
    Elapsed: 60.15 (mins)
    DB Time: 915.85 (mins)
    Cache Sizes
    ~~~~~~~~~~~ Begin End
    Buffer Cache: 23,504M 23,504M Std Block Size: 8K
    Shared Pool Size: 27,584M 27,584M Log Buffer: 14,248K
    Load Profile
    ~~~~~~~~~~~~ Per Second Per Transaction
    Redo size: 28,126.82 2,675.18
    Logical reads: 526,807.26 50,105.44
    Block changes: 3,080.07 292.95
    Physical reads: 962.90 91.58
    Physical writes: 157.66 15.00
    User calls: 1,392.75 132.47
    Parses: 246.05 23.40
    Hard parses: 11.03 1.05
    Sorts: 42.07 4.00
    Logons: 0.68 0.07
    Executes: 930.74 88.52
    Transactions: 10.51
    % Blocks changed per Read: 0.58 Recursive Call %: 32.31
    Rollback per transaction %: 9.68 Rows per Sort: 4276.06
    Instance Efficiency Percentages (Target 100%)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Buffer Nowait %: 99.87 Redo NoWait %: 100.00
    Buffer Hit %: 99.84 In-memory Sort %: 99.99
    Library Hit %: 98.25 Soft Parse %: 95.52
    Execute to Parse %: 73.56 Latch Hit %: 99.51
    Parse CPU to Parse Elapsd %: 9.22 % Non-Parse CPU: 99.94
    Shared Pool Statistics Begin End
    Memory Usage %: 68.11 71.55
    % SQL with executions>1: 94.54 92.31
    % Memory for SQL w/exec>1: 98.79 98.74
    Top 5 Timed Events Avg %Total
    ~~~~~~~~~~~~~~~~~~ wait Call
    Event Waits Time (s) (ms) Time Wait Class
    CPU time 18,798 34.2
    gc cr multi block request 46,184,663 18,075 0 32.9 Cluster
    gc buffer busy 2,468,308 6,897 3 12.6 Cluster
    gc current block 2-way 1,826,433 4,422 2 8.0 Cluster
    db file sequential read 142,632 366 3 0.7 User I/O
    RAC Statistics DB/Inst: PROD/PROD1 Snaps: 26177-26178
    Begin End
    Number of Instances: 2 2
    Global Cache Load Profile
    ~~~~~~~~~~~~~~~~~~~~~~~~~ Per Second Per Transaction
    Global Cache blocks received: 14,112.50 1,342.26
    Global Cache blocks served: 619.72 58.94
    GCS/GES messages received: 2,099.38 199.68
    GCS/GES messages sent: 23,341.11 2,220.01
    DBWR Fusion writes: 3.43 0.33
    Estd Interconnect traffic (KB) 122,826.57
    Global Cache Efficiency Percentages (Target local+remote 100%)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Buffer access - local cache %: 97.16
    Buffer access - remote cache %: 2.68
    Buffer access - disk %: 0.16
    Global Cache and Enqueue Services - Workload Characteristics
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Avg global enqueue get time (ms): 0.6
    Avg global cache cr block receive time (ms): 2.8
    Avg global cache current block receive time (ms): 3.0
    Avg global cache cr block build time (ms): 0.0
    Avg global cache cr block send time (ms): 0.0
    Global cache log flushes for cr blocks served %: 11.3
    Avg global cache cr block flush time (ms): 1.7
    Avg global cache current block pin time (ms): 0.0
    Avg global cache current block send time (ms): 0.0
    Global cache log flushes for current blocks served %: 0.0
    Avg global cache current block flush time (ms): 4.1
    Global Cache and Enqueue Services - Messaging Statistics
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Avg message sent queue time (ms): 0.1
    Avg message sent queue time on ksxp (ms): 2.4
    Avg message received queue time (ms): 0.0
    Avg GCS message process time (ms): 0.0
    Avg GES message process time (ms): 0.0
    % of direct sent messages: 6.27
    % of indirect sent messages: 93.48
    % of flow controlled messages: 0.25
    Time Model Statistics DB/Inst: PROD/PROD1 Snaps: 26177-26178
    -> Total time in database user-calls (DB Time): 54951s
    -> Statistics including the word "background" measure background process
    time, and so do not contribute to the DB time statistic
    -> Ordered by % or DB time desc, Statistic name
    Statistic Name Time (s) % of DB Time
    sql execute elapsed time 54,618.2 99.4
    DB CPU 18,798.1 34.2
    parse time elapsed 494.3 .9
    hard parse elapsed time 397.4 .7
    PL/SQL execution elapsed time 38.6 .1
    hard parse (sharing criteria) elapsed time 27.3 .0
    sequence load elapsed time 5.0 .0
    failed parse elapsed time 3.3 .0
    PL/SQL compilation elapsed time 2.1 .0
    inbound PL/SQL rpc elapsed time 1.2 .0
    repeated bind elapsed time 0.8 .0
    connection management call elapsed time 0.6 .0
    hard parse (bind mismatch) elapsed time 0.3 .0
    DB time 54,951.0 N/A
    background elapsed time 1,027.9 N/A
    background cpu time 518.1 N/A
    Wait Class DB/Inst: PROD/PROD1 Snaps: 26177-26178
    -> s - second
    -> cs - centisecond - 100th of a second
    -> ms - millisecond - 1000th of a second
    -> us - microsecond - 1000000th of a second
    -> ordered by wait time desc, waits desc
    Avg
    %Time Total Wait wait Waits
    Wait Class Waits -outs Time (s) (ms) /txn
    Cluster 50,666,311 .0 30,236 1 1,335.4
    User I/O 419,542 .0 811 2 11.1
    Network 4,824,383 .0 242 0 127.2
    Other 797,753 88.5 208 0 21.0
    Concurrency 212,350 .1 121 1 5.6
    Commit 16,215 .0 53 3 0.4
    System I/O 60,831 .0 29 0 1.6
    Application 6,069 .0 6 1 0.2
    Configuration 763 97.0 0 0 0.0
    Second node top 5 events are as below,
    Top 5 Timed Events
              Avg %Total
    ~~~~~~~~~~~~~~~~~~ wait Call
    Event Waits Time (s) (ms) Time Wait Class
    CPU time 25,959 42.2
    db file sequential read 2,288,168 5,587 2 9.1 User I/O
    gc current block 2-way 822,985 2,232 3 3.6 Cluster
    read by other session 345,338 1,166 3 1.9 User I/O
    gc cr multi block request 991,270 831 1 1.4 Cluster
    My RAM is 95GB each node and SGA is 51 GB and PGA is 14 GB.
    Any inputs from your side are greatly helpful to me ,please.
    Thanks,
    Sunand

    Hi Forstmann,
    Thanks for your update.
    Even i have collected ADDM report, extract of Node1 report as below
    FINDING 1: 40% impact (22193 seconds)
    Cluster multi-block requests were consuming significant database time.
    RECOMMENDATION 1: SQL Tuning, 6% benefit (3313 seconds)
    ACTION: Run SQL Tuning Advisor on the SQL statement with SQL_ID
    "59qd3x0jg40h1". Look for an alternative plan that does not use
    object scans.
    SYMPTOMS THAT LED TO THE FINDING:
    SYMPTOM: Inter-instance messaging was consuming significant database
    time on this instance. (55% impact [30269 seconds])
    SYMPTOM: Wait class "Cluster" was consuming significant database
    time. (55% impact [30271 seconds])
    FINDING 3: 13% impact (7008 seconds)
    Read and write contention on database blocks was consuming significant
    database time.
    NO RECOMMENDATIONS AVAILABLE
    SYMPTOMS THAT LED TO THE FINDING:
    SYMPTOM: Inter-instance messaging was consuming significant database
    time on this instance. (55% impact [30269 seconds])
    SYMPTOM: Wait class "Cluster" was consuming significant database
    time. (55% impact [30271 seconds])
    Any help from your side , please?
    Thanks,
    Sunand

  • JAVA execution consumed significant database time

    Dear all,
    DB 11. on solaris..
    I have a time consuming package.. this package unloads data in the current db and loads data from another remote db in the same network. below is the recommendation from Oracle ADDM report.
    This session is a work flow session. What can I do for JAVA execution consumed significant database time.?
    JAVA execution consumed significant database time.
       Recommendation 1: SQL Tuning
       Estimated benefit is .5 active sessions, 43.98% of total activity.
       Action
          Tune the PL/SQL block with SQL_ID "6bd4fvsx8n42v". Refer to the "Tuning
          PL/SQL Applications" chapter of Oracle's "PL/SQL User's Guide and
          Reference".
          Related Object
             SQL statement with SQL_ID 6bd4fvsx8n42v.
             DECLARE job BINARY_INTEGER := :job; next_date DATE := :mydate;
             broken BOOLEAN := FALSE; BEGIN OWF_USER.START_METS_REFRESH(SYSDATE );
             :mydate := next_date; IF broken THEN :b := 1; ELSE :b := 0; END IF;
             END;Please advise
    Kai

    Hi Forstmann,
    Thanks for your update.
    Even i have collected ADDM report, extract of Node1 report as below
    FINDING 1: 40% impact (22193 seconds)
    Cluster multi-block requests were consuming significant database time.
    RECOMMENDATION 1: SQL Tuning, 6% benefit (3313 seconds)
    ACTION: Run SQL Tuning Advisor on the SQL statement with SQL_ID
    "59qd3x0jg40h1". Look for an alternative plan that does not use
    object scans.
    SYMPTOMS THAT LED TO THE FINDING:
    SYMPTOM: Inter-instance messaging was consuming significant database
    time on this instance. (55% impact [30269 seconds])
    SYMPTOM: Wait class "Cluster" was consuming significant database
    time. (55% impact [30271 seconds])
    FINDING 3: 13% impact (7008 seconds)
    Read and write contention on database blocks was consuming significant
    database time.
    NO RECOMMENDATIONS AVAILABLE
    SYMPTOMS THAT LED TO THE FINDING:
    SYMPTOM: Inter-instance messaging was consuming significant database
    time on this instance. (55% impact [30269 seconds])
    SYMPTOM: Wait class "Cluster" was consuming significant database
    time. (55% impact [30271 seconds])
    Any help from your side , please?
    Thanks,
    Sunand

  • Wait class 'commit' consuming significant database time.

    Hi
    My awr report was showing that the log file sync as the top wait event.I can also see additional message saying that wait class 'commit' consuming significant database time.Can any one suggest me what are the tuning things i need to consider for this wait class 'LOG FILE SYNC'
    Thanks

    Be very careful about this.
    Follow this only if you can afford to lose some data in case of instance failure
    (eg death of the instance from a bug, server panic/reboot, power failure etc).
    Oracle's normal behaviour is to guarantee that every committed transaction
    IS available by ensuring that it is in the redologs and reapplying it if necessary
    in case of an instance failure and recovery or media recovery.
    A Commit NOWAIT means that there is a possibility, however slight, that
    the last few transaction(s) might not have gotten into the redo logs at the time
    of instance failure.
    Your application / analysts must be able to identify transactions that are 'lost'
    and reapply them after you restart a crashed instance.

  • Sql statement consuming significant database time

    This sql statement consuming significant elapsed time(2,446 seconds). also also cause significant user i/0 , is this because of using temp TABLE IN THIS QUERY ,
    or is there any alternative for this query ?
    "WITH TEMP AS ( SELECT ROOT, CHILD, LEVEL LEV FROM catagory V START WITH CHILD=:B1 CONNECT BY PRIOR ROOT=CHILD ) SELECT CHILD FROM TEMP WHERE LEV=(SELECT MAX(LEV) FROM TEMP) "
    Thanks
    Renjith

    Click on the FAQ stick posting (at the top of this forum). Find the "+when my query is slow+" question and read the FAQ response to it.

  • Index Block Splits

    How we can reduce or tune index block splits.. I mean wait event for leaf node splits, a session might be waiting to read the block which is getting split. And i guess index block split is natural we cannot avoid it, like for example ginger value has to be inserted between finger and hello, so to insert ginger value oracle will split the block into 2 by inserting ginger and moving hello to another block.. please help me or explain me experts

    842638 wrote:
    How we can reduce or tune index block splits.. I mean wait event for leaf node splits, a session might be waiting to read the block which is getting split. And i guess index block split is natural we cannot avoid it, like for example ginger value has to be inserted between finger and hello, so to insert ginger value oracle will split the block into 2 by inserting ginger and moving hello to another block.. please help me or explain me expertsThe block splits would be happening and if I remember correctly, there are going to be two types of it, 50-50 split and 90-10 split, both would depend on that the range of the data that you are inserting. I would suggest that you read Richard Foote's presentation [url http://richardfoote.files.wordpress.com/2007/12/index-internals-rebuilding-the-truth.pdf] Index Internals to know more about all this.
    Aman....

  • How should be set Index block size in Warehouse databases?

    Hi,
    We have Warehouse database.
    I cannot find out index block size.
    1. Where can I get know our index block sizes?
    2. How can I enlarge index block sizes? Is it related with tablespace?
    After your suggestion do I need increase or set buffer cache keep pool according to block sizes? 2K, 4K, 8K, 16K and 32K can be specified?
    could you help me please?
    thanks and regards,

    See the BLOCK_SIZE column in DBA_TABLESPACES.
    You can't "increase" the block size. You'd have
    a) to allocate DB_xK_cache_size for the new "x"K block size
    b) create a new tablespace explicitly specifying the block size in the CREATE TABLESPACE command
    c) rebuild your indexes into the new tablespace.
    Indexes created in a tablespace with a larger block size have more entries in each block.
    You may get better performance.
    You may get worse performance.
    You may see no difference in performance.
    You may encounter bugs.
    "increasing block size" is an option to be evaluated and tested thoroughly. It is not, per se, a solution.
    Hemant K Chitale
    http://hemantoracledba.blogspot.com

  • Contention for latches related to the shared pool was consuming significant

    We are having performance issue on our database. When I look at the AWR, I see that there is a contention for latches. Below is the AWR Report.
    ADDM Report for Task 'ADDM:1775307360_12808'
    Analysis Period
    AWR snapshot range from 12807 to 12808.
    Time period starts at 10-MAY-11 01.00.15 PM
    Time period ends at 10-MAY-11 02.00.23 PM
    Analysis Target
    Database 'ADVFDWP' with DB ID 1775307360.
    Database version 11.1.0.7.0.
    ADDM performed an analysis of all instances.
    Activity During the Analysis Period
    Total database time was 27827 seconds.
    The average number of active sessions was 7.71.
    Summary of Findings
    Description Active Sessions Recommendations
    Percent of Activity
    1 Shared Pool Latches 6.43 | 83.42 0
    2 Top SQL by DB Time 2.41 | 31.24 3
    3 "Concurrency" Wait Class 2.18 | 28.22 0
    4 PL/SQL Execution 1.53 | 19.86 1
    5 "User I/O" wait Class 1.33 | 17.24 0
    6 Hard Parse 1.24 | 16.14 0
    7 Undersized Buffer Cache .83 | 10.73 0
    8 CPU Usage .7 | 9.02 0
    9 Top SQL By I/O .31 | 4.04 1
    10 Top Segments by I/O .24 | 3.12 1
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Findings and Recommendations
    Finding 1: Shared Pool Latches
    Impact is 6.43 active sessions, 83.42% of total activity.
    Contention for latches related to the shared pool was consuming significant
    database time in some instances.
    Instances that were significantly affected by this finding:
    Number Name Percent Impact ADDM Task Name
    1 ADVFDWP1 99.31 ADDM:1775307360_1_12808
    Check the ADDM analysis of affected instances for recommendations.
    Finding 2: Top SQL by DB Time
    Impact is 2.41 active sessions, 31.24% of total activity.
    SQL statements consuming significant database time were found.
    Recommendation 1: SQL Tuning
    Estimated benefit is 1.07 active sessions, 13.82% of total activity.
    Action
    Run SQL Tuning Advisor on the SQL statement with SQL_ID "fdk73nhpt93a5".
    Related Object
    SQL statement with SQL_ID fdk73nhpt93a5.
    INSERT INTO SFCDM.F_LOAN_PTFL_MOL_SNPSHT SELECT * FROM
    F_LOAN_PTFL_MOL_SNPSHT_STG
    Recommendation 2: SQL Tuning
    Estimated benefit is 1 active sessions, 12.96% of total activity.
    Action
    Tune the PL/SQL block with SQL_ID "7nvgzsgy9ydn9". Refer to the "Tuning
    PL/SQL Applications" chapter of Oracle's "PL/SQL User's Guide and
    Reference".
    Related Object
    SQL statement with SQL_ID 7nvgzsgy9ydn9.
    begin
    insert into SFCDM.F_LOAN_PTFL_MOL_SNPSHT select * from
    F_LOAN_PTFL_MOL_SNPSHT_STG;
    end;
    Recommendation 3: SQL Tuning
    Estimated benefit is .4 active sessions, 5.2% of total activity.
    Action
    Investigate the SQL statement with SQL_ID "fcvfq2gzmxu0t" for possible
    performance improvements.
    Related Object
    SQL statement with SQL_ID fcvfq2gzmxu0t.
    select
    a11.DT_YR_MO DT_YR_MO,
    a11.IND_SCRTZD IND_SCRTZD,
    a13.CD_LNSTAT CD_LNSTAT_INTGRTD,
    sum(a11.CNT_LOAN) WJXBFS1,
    sum(a11.AMT_PART_EOP_UPB) WJXBFS2,
    sum(a11.AMT_LST_VLD_PART_UPB) WJXBFS3
    from
    SFCDM.F_LOAN_PTFL_MOL_SNPSHT
    a11
    join
    SFCDM.D_DETD_LNSTAT_CURR
    a12
    on
    (a11.ID_CYCL_CLOS_DETD_LNSTAT_SRGT = a12.ID_DETD_LNSTAT_SRGT)
    join
    SFCDM.D_LNSTAT_CD
    a13
    on
    (a12.ID_LNSTAT_CD_SRGT = a13.ID_LNSTAT_CD_SRGT)
    join
    SFCDM.D_LOAN_CHARTC_CURR_MINI
    a14
    on
    (a11.ID_LOAN_CHARTC_SRGT = a14.ID_LOAN_CHARTC_SRGT)
    where
    (a11.DT_YR_MO in (201103)
    and a14.CD_SFCRM_LOAN_BUS_LI not in ('L', 'T', 'W')
    and a13.CD_LNSTAT in (14)
    and not exists
    (select * from SFCDM.F_LOAN_PTFL_MOL_SNPSHT s
    where s.id_loan_syst_gend = a11.id_loan_syst_gend
    and s.dt_yr_mo

    It is worth checking the actual size of the shared pool e.g.
    select pool,sum(bytes)/1024/1024/1024 from v$sgastat group by pool;
    the parameters you ahve posted suggest you have set a minimum but no maximum, so it could very large.
    Next up is looking for unhared SQL i.e.
    select column1 from some_table where column2='A_VALUE';
    select column1 from some_table where column2='Another_Value';
    where the code should be using binds instead of literals for security and performance reasons, a simple way to find this is to look in v$sql for sql having the same plan_hash_value but different sql_Ids and compare the sql_fulltext of each statement.
    Also a possibility is sql with many child cursors, this is trickier as the cause may vary and may not be easy to fix. check th econtents of v$sql for sql that have high values in the child_number column anmd investigate the contents of v$sql_shared_cursor for the reason there are multiple child cursors.
    Chris

  • Simple question about block splitting

    Hello Experts,
    My question is, aren't the following DML performing 90-10 block split?? Because it has been said that the first one performs 50-50 block splitting.
    SQL> CREATE TABLE album_sales_IOT(album_id number, country_id number, total_sals number, album_colour varchar2(20),
         CONSTRAINT album_sales_iot_pk PRIMARY KEY(album_id, country_id)) ORGANIZATION INDEX;
    Table created.
    1
    SQL> BEGIN 
      2    FOR i IN 5001..10000 LOOP
      3      FOR c IN 201..300 LOOP
      4        INSERT INTO album_sales_iot VALUES(i,c,ceil(dbms_random.value(1,5000000)), 'Yet more new rows');
      5      END LOOP;
      6    END LOOP;
      7    COMMIT;
      8  END;
      9  /
    PL/SQL procedure successfully completed.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL> BEGIN 
      2    FOR i IN 1..5000 LOOP
      3       FOR c IN 101..200 LOOP
      4          INSERT INTO album_sales_iot
      5          VALUES(i,c,ceil(dbms_random.value(1,5000000)), 'Some new rows');
      6       END LOOP;
      7    END LOOP;
      8    COMMIT;
      9  END;
    10  /
    PL/SQL procedure successfully completed.

    Hi NightWing,
    > Because it has been said that the first one performs 50-50 block splitting.
    Who said it? .. However it can easily be answered with Snapper by Tanel Poder.
    First PL/SQL procedure
        SID, USERNAME  , TYPE, STATISTIC                                                 ,         DELTA, HDELTA/SEC,    %TIME, GRAPH       , NUM_WAITS,  WAITS/SEC,
          8, SYS       , STAT, leaf node splits                                          ,          2427,      12.14,         ,             ,          ,           ,
          8, SYS       , STAT, leaf node 90-10 splits                                    ,          2427,      12.14,         ,             ,          ,           ,
          8, SYS       , STAT, branch node splits                                        ,             4,        .02,         ,             ,          ,           ,
          8, SYS       , STAT, root node splits                                          ,             1,        .01,         ,             ,          ,           ,
    Second PL/SQL procedure
        SID, USERNAME  , TYPE, STATISTIC                                                 ,         DELTA, HDELTA/SEC,    %TIME, GRAPH       , NUM_WAITS,  WAITS/SEC,
          8, SYS       , STAT, leaf node splits                                          ,          2179,       10.9,         ,             ,          ,           ,
          8, SYS       , STAT, branch node splits                                        ,             8,        .04,         ,             ,          ,           ,
    Regards
    Stefan

  • Dumping Index Blocks

    Hi,
    I'm trying to dump index blocks but the generated trace file has an error.
    how can I resolve this issue?
    Following is what I've done and got:
    SQL> SELECT object_id FROM USER_objects WHERE object_name = 'NAME_5'
    OBJECT_ID
         71142
    SQL> ALTER SESSION SET EVENTS 'immediate trace name treedump level 71142' ;
    Trace file e:\oracle\diag\rdbms\ora11g\ora11g\trace\ora11g_ora_3700.trc
    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    Windows Server 2003 Version V5.2 Service Pack 2
    ----- begin tree dump
    2010-04-08 01:21:53.043: [  OCROSD]utgdv:11:could not read reg value ocrmirrorconfig_loc os error= The system could not find the environment option that was entered.
    2010-04-08 01:21:53.059: [  OCROSD]utgdv:11:could not read reg value ocrmirrorconfig_loc os error= The system could not find the environment option that was entered.
    leaf: 0x18057e4 25188324 (0: nrow: 10 rrow: 10)
    ----- end tree dump

    ahb72 wrote:
    SQL> SELECT object_id FROM USER_objects WHERE object_name = 'NAME_5'
    OBJECT_ID
    71142
    SQL> ALTER SESSION SET EVENTS 'immediate trace name treedump level 71142' ;
    Trace file e:\oracle\diag\rdbms\ora11g\ora11g\trace\ora11g_ora_3700.trc
    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    Windows Server 2003 Version V5.2 Service Pack 2
    ----- begin tree dump
    2010-04-08 01:21:53.043: [  OCROSD]utgdv:11:could not read reg value ocrmirrorconfig_loc os error= The system could not find the environment option that was entered.
    2010-04-08 01:21:53.059: [  OCROSD]utgdv:11:could not read reg value ocrmirrorconfig_loc os error= The system could not find the environment option that was entered.
    leaf: 0x18057e4 25188324 (0: nrow: 10 rrow: 10)
    ----- end tree dump
    If your table has 10 rows, then this leaf block is the entire index and the two error lines are probably irrelevant.
    Create a table with a few thousand rows and see if the errors appear for every line in the tree dump, or just once at the start. If the former than you can probably live with it.
    Regards
    Jonathan Lewis

  • DBV reports index blocks failing... rows locked by itl

    Hi all,
    from two nights RMAN backup on a database (8.1.7.4) is failing due to corrupted blocks. I've run dbv and I've found this situation:
    Block Checking: DBA = 272791174, Block Type = KTB-managed data block
    **** actual rows locked by itl 2 = 1 != # in trans. header = 0
    **** actual free space credit for itl 2 = 26 != # in trans. hdr = 0
    **** actual free space = 4434 < kdxcoavs = 4460
    ---- end index block validation
    Page 161414 failed with check code 6401
    Block Checking: DBA = 272791728, Block Type = KTB-managed data block
    **** actual rows locked by itl 2 = 126 != # in trans. header = 125
    ---- end index block validation
    Page 161968 failed with check code 6401
    Block Checking: DBA = 272791736, Block Type = KTB-managed data block
    **** actual rows locked by itl 2 = 167 != # in trans. header = 166
    ---- end index block validation
    Page 161976 failed with check code 6401
    Block Checking: DBA = 272793483, Block Type = KTB-managed data block
    **** actual rows locked by itl 2 = 273 != # in trans. header = 272
    ---- end index block validation
    Page 163723 failed with check code 6401
    Block Checking: DBA = 272793485, Block Type = KTB-managed data block
    **** actual rows locked by itl 2 = 257 != # in trans. header = 256
    ---- end index block validation
    Page 163725 failed with check code 6401
    Block Checking: DBA = 272793496, Block Type = KTB-managed data block
    **** actual rows locked by itl 2 = 267 != # in trans. header = 266
    ---- end index block validation
    I've tried to drop and restore/recover tablespace without success. Any hints about this issue? I've looked in metalink for suggestions without success...
    Thanks Steve

    Can you do a /dev/null export to identify the corrupted segment?
    If you find any corrputed segment, check this metalink note: 28814.1 - Handling Oracle Block Corruptions in Oracle7/8/8i/9i/10g

  • Need to find total no fo  tables/index/m.views in my database

    Hello Everyone ;
    How can i find total no fo  tables/index/m.views in my database ?
    when i  google  i have seen  following  command ;
    SQL> Select count(1) from user_tables where table_name not like '%$%' /
      COUNT(1)
             but i dont understand  what  '%$%'  indicates ?
    Thanks all ;

    Hello Everyone ;
    How can i find total no fo  tables/index/m.views in my database ?
    when i  google  i have seen  following  command ;
    SQL> Select count(1) from user_tables where table_name not like '%$%' /
      COUNT(1)
             but i dont understand  what  '%$%'  indicates ?
    Thanks all ;
    consider to simply Read The Fine Manual YOURSELF!
    Oracle Database Search Results: like

  • Primary index does not exist in database but shows in SE14?

    I added a couple of key fields to a Z table and activated it. Every thing went well - adjusted it with SE14 also.
    When I checked the Runtime object - it is OK.
    When I checked Database Object, it is showing that the Primary Index does not exist in Database but SE14 says that the Priamry Index exists in Database.
    Please advise how to correct this. I saw another psoting when I searched per this error message: "Indexes: Inconsistent with DDIC source" . It tells to create this index at Database but need to know the steps.
    pl advise.
    (reposting here)
    Edited by: Venkatabby on Mar 26, 2008 4:05 PM

    hi,
    To create a index for a table,
    go to se11->click on Indexes tab and create  a primary index.
    Indexes speed up data selection from the database. They consist of selected fields of a table, of which a copy is then made in sorted order. If you specify the index fields correctly in a condition in the WHERE or HAVING clause, the system only searches part of the index (index range scan).
    The system automatically creates the primary index. It consists of the primary key fields of the database table. This means that for each combination of fields in the index, there is a maximum of one line in the table. This kind of index is also known as UNIQUE.
    If you cannot use the primary index to determine the result set because, for example, none of the primary index fields occur in the WHERE or HAVINGclauses, the system searches through the entire table (full table scan). For this case, you can create secondary indexes, which can restrict the number of table entries searched to form the result set.
    You create secondary indexes using the ABAP Dictionary. There you can create its columns and define it as UNIQUE.
    reward points if useful.
    regards
    sandhya

  • Warning: Index does not exist in database system MSSQL

    Hi,
    After activating the Index from SE11,
    I receive the following Warning:
    Index does not exist in database system MSSQL.
    What does this mean? Has performance been increased or does the index 1st have to exist in the database system MSSQL?

    When you create index at SE11 and you need activate database utility.
    utilitities-database utility->then click activate and adjust database.
    else you can use SE14 and so that Index will create databse level.
    Reward Points if it is helpful
    Thanks
    Seshu

  • Index does not exist in database system ORACLE??????

    Hi Experts,
    I created a Secondary Index in DEV, its fine and the message is,
    <b><i>Index KNA1~Z01 exists in database system ORACLE</i></b>
    I moved it to TEST and there I got the message is like,
    <i><b>Index does not exist in database system ORACLE</b></i>
    So,
    1 - Wht I hv to do now? Shuld I see BASIS people?
    2- Why its happened like that? Coz of not enough space?
    ThanQ.

    thanq sudheer,
    I got the return code as 4, so Can I go for creation of new request and there by moving to test?
    1 - Anyways, so, after Activating Seconadyr Index, Shuld I come back and Do I need to activate the Table also?
    or
    2- Just activating the index is enough?
    thanq.
    Message was edited by:
            Srikhar

Maybe you are looking for

  • How to change my Apple ID for iCloud?

    Hey there, I have a simple enough question. When I originally signed up with Apple, I was using my Gmail account, so that became my Apple ID. However, I've been slowly migrating off of Gmail as I much prefer my new Apple email address (@me.com). For

  • How to delete a table row in the context?

    Hi, I've got a table in my context that I access with <TABLE-NAME>-<TABLE-COLUMN>[index]. For example <TABLE-NAME>-<TABLE-COLUMN>.dim delivers the amount of entries in this table. Now I want to delete a specific row in this table without any ABAP-cod

  • How batch append cost center group to standard hierarchy by batch

    Hi Guys, Would you please tell how me how append cost center groups to standard hierarchy by batch, every time I have to do it one by one, is there  a convenient way? thanks. Best Regards FS

  • Smartform generating more than one page while printing

    Good evening everyone. I have created a smartform and now I am trying to print it. I have executed RSTXPDFT4 program in SE38 and entered the spool number and saved my smartform. But now my smartform is having more number of pages even though in print

  • Is there a way to hide the account ranges when creating a web-adi for budgets?

    Hi, I'm trying to create budgets for an end-user. The user doesn't want to see all account ranges defined for that budget organization and would like to populate them on his own. I can hide the account ranges in the document creation page but not in