Buffer cache writes

Hi,
From ADDM report i saw following message.
Buffer cache writes due to small log files were consuming significant database
time.
Recommendation 1: Database Configuration
Estimated benefit is .31 active sessions, 2.99% of total activity.
Action
Increase the size of the log files to 2048 M to hold at least 20 minutes
of redo information.
From AWR which section would tell me about Buffer cache writes?
Thanks

user10698496 wrote:
From ADDM report i saw following message.
Buffer cache writes due to small log files were consuming significant database
time.
Recommendation 1: Database Configuration
Estimated benefit is .31 active sessions, 2.99% of total activity.
Action
Increase the size of the log files to 2048 M to hold at least 20 minutes
of redo information.
From AWR which section would tell me about Buffer cache writes?
As Nikolay has pointed out, the estimated benefit is only three percent, however it's not (usually) a difficult, risky, r time-consuming change to make so you might as well follow the advice.
One of the triggers that utlimately causes the database writer (dbwr) to write is the log file switch - which means if your log files are small you may find dbwr writing blocks more aggressively than needed. Oracle may be analysing history to count examples of database blocks being written more than once before being flushed from the buffer to produce this conclusion.
Jgarry has already mentioned v$instance_recovery - one of the columns in that view is "writes_logfile_size" - the number of writes due to the size of the log file; this is the figure that could be reduced by increasing the log file size. This doesn't get reported in the AWR, though. I think the best you can get is the instance activity statistic "DBWR thread checkpoint buffers written" - but there's a complicated precedence of which features cause which counter to increment so I'm not even sure how helpful that fiture may be.
Regards
Jonathan Lewis
http://jonathanlewis.wordpress.com
Author: <b><em>Oracle Core</em></b>

Similar Messages

  • Find available space in buffer cache

    Hi.
    I want to find available space from buffer cache. First thought was to make it 8i-9i comp, by not using v$bh to calculate sum of memory and available space.
    I have the following pl/sql block to calculate the values:
    declare
    num_free_blck integer;
    num_all_blck integer;
    num_used_blck integer;
    overal_cache number := 0;
    used_cache number := 0;
    free_cache number := 0;
    blck_size integer;
    pct_free number := 0;
    begin
    select count(1) into num_free_blck from v$bh where status='free';
    select count(1) into num_all_blck from v$bh;
    select count(1) into num_used_blck from v$bh where status <> 'free';
    select value into blck_size from v$parameter where name ='db_block_size';
    used_cache := (blck_size * num_used_blck)/(1024*1024);
    free_cache := (blck_size * num_free_blck)/(1024*1024);
    overal_cache := (blck_size * num_all_blck)/(1024*1024);
    pct_free := ((free_cache/overal_cache)*100);
    dbms_output.put_line('There are '||num_free_blck||' free blocks in buffer cache');
    dbms_output.put_line('There are '||num_used_blck||' used block in buffer cache');
    dbms_output.put_line('There are totally '||num_all_blck||' blocks in buffer cache');
    dbms_output.put_line('Overall cache size is '||to_char(overal_cache,'999.9')|| 'mb');
    dbms_output.put_line('Used cache is '||to_char(used_cache,'999.9')||' mb');
    dbms_output.put_line('Free cache is '||to_char(free_cache,'999.9')||' mb');
    dbms_output.put_line('Percent free db_cache is '||to_char(pct_free,'99.9')||' %');
    end;
    The result of the execution is:
    SQL> @c:\temp\bh
    There are 3819 free blocks in buffer cache
    There are 4189 used block in buffer cache
    There are totally 8008 blocks in buffer cache
    Overall cache size is 62.6mb
    Used cache is 32.7 mb
    Free cache is 29.8 mb
    Percent free db_cache is 47.7 %
    PL/SQL-prosedyren ble fullført.
    SQL>
    This is not correct according to the actuall size of the buffer cache:
    SQL> select name,value from v$parameter where name='db_cache_size';
    NAME
    VALUE
    db_cache_size
    67108864
    SQL>
    Anyone that have an idea bout this?
    Thanks
    Kjell Ove

    Mark D Powell wrote:
    select decode(state,0,'Free',
    1,'Read and Modified',
    2,'Read and Not Modified',
    3,'Currently being Modified',
    'Other'
    ) buffer_state,
    count(*)  buffer_count
    from    sys.xx_bh
    group by decode(state,0,'Free',
    1,'Read and Modified',
    2,'Read and Not Modified',
    3,'Currently being Modified',
    'Other'
    Provided the OP figures out that xx_bh is probably a view defined by sys on top of x$bh this will get him the number of free buffers - which may be what he wants - but apart from that your query is at least 10 years short of complete, and the decode() of state 3 is definitley wrong.
    The decode of x$bh.state for 10g is:
         decode(state,
              0,'free',
              1,'xcur',
              2,'scur',
              3,'cr',
              4,'read',
              5,'mrec',
              6,'irec',
              7,'write',
              8,'pi',
              9,'memory',
              10,'mwrite',
              11,'donated'
         ), and for 11g it is:
         decode(state,
               0, 'free',
               1, 'xcur',
               2, 'scur',
               3, 'cr',
               4, 'read',
               5, 'mrec',
               6, 'irec',
               7, 'write',
               8, 'pi',
               9, 'memory',
              10, 'mwrite',
              11, 'donated',
              12, 'protected', 
              13, 'securefile',
              14, 'siop',
              15, 'recckpt',
              16, 'flashfree', 
              17, 'flashcur',
              18, 'flashna'
         ), (At least, that was the last time I looked - they may have changed again in 10.2.0.5 and 11.2.0.2)
    Regards
    Jonathan Lewis

  • Data Buffer Cache Quality

    Hi All,
    Can somebody please please tell some ways in which i can improve the data buffer quality? Presently it is 51.2%. The DB is 10.2.0.2.0
    I want to know, wat all factors do i need to keep in mind if i want to increase DB_CACHE_SIZE?
    Also, i want to know how can i find out Cache Hit ratio?
    Further, i want to know which are the most frequently accessed objects in my DB?
    Thanks and Regards,
    Nick.

    Nick-- wud b DBA wrote:
    Hi Aman,
    Thanks. Can u please give the appropriate query for that?
    And moreover when i'm giving:
    SQL>desc V$SEGMENT-STATISTICS; It is giving the following error:
    SP2-0565: Illegal identifier.
    Regards,
    Nick.LOL dude I put it by mistake. Its dash(-) sign but we need underscore(_) sign.
    About the query, it may vary what you really mean by "most used obect". If you mean to find the object that is undergoing lots of reads,writes than this may help,
    SELECT Rownum AS Rank,
    Seg_Lio.*
    FROM (SELECT St.Owner,
    St.Obj#,
    St.Object_Type,
    St.Object_Name,
    St.VALUE,
    'LIO' AS Unit
    FROM V$segment_Statistics St
    WHERE St.Statistic_Name = 'logical reads'
    ORDER BY St.VALUE DESC) Seg_Lio
    WHERE Rownum <= 10
    UNION ALL
    SELECT Rownum AS Rank,
    Seq_Pio_r.*
    FROM (SELECT St.Owner,
    St.Obj#,
    St.Object_Type,
    St.Object_Name,
    St.VALUE,
    'PIO Reads' AS Unit
    FROM V$segment_Statistics St
    WHERE St.Statistic_Name = 'physical reads'
    ORDER BY St.VALUE DESC) Seq_Pio_r
    WHERE Rownum <= 10
    UNION ALL
    SELECT Rownum AS Rank,
    Seq_Pio_w.*
    FROM (SELECT St.Owner,
    St.Obj#,
    St.Object_Type,
    St.Object_Name,
    St.VALUE,
    'PIO Writes' AS Unit
    FROM V$segment_Statistics St
    WHERE St.Statistic_Name = 'physical writes'
    ORDER BY St.VALUE DESC) Seq_Pio_w
    WHERE Rownum <= 10; But if you are looking for the objects which are most highly in the waits than this query may help
    select * from
       select
          DECODE
          (GROUPING(a.object_name), 1, 'All Objects', a.object_name)
       AS "Object",
    sum(case when
       a.statistic_name = 'ITL waits'
    then
       a.value else null end) "ITL Waits",
    sum(case when
       a.statistic_name = 'buffer busy waits'
    then
       a.value else null end) "Buffer Busy Waits",
    sum(case when
       a.statistic_name = 'row lock waits'
    then
       a.value else null end) "Row Lock Waits",
    sum(case when
       a.statistic_name = 'physical reads'
    then
       a.value else null end) "Physical Reads",
    sum(case when
       a.statistic_name = 'logical reads'
    then
       a.value else null end) "Logical Reads"
    from
       v$segment_statistics a
    where
       a.owner like upper('&owner')
    group by
       rollup(a.object_name)) b
    where (b."ITL Waits">0 or b."Buffer Busy Waits">0)This query's reference:http://www.dba-oracle.com/t_object_wait_v_segment_statistics.htm
    So it would depend upon that on what ground you want to get the objects.
    About the cache increase, are you seeing any wait events related to buffer cache or DBWR in the statspack report?
    HTH
    Aman....

  • Find free buffers in buffer cache

    hi guys,
    V$BH view contains the information about each block that is present in the buffer cache. can any one please tell me how to find the information about the free buffers??

    Mark D Powell wrote:
    select decode(state,0,'Free',
    1,'Read and Modified',
    2,'Read and Not Modified',
    3,'Currently being Modified',
    'Other'
    ) buffer_state,
    count(*)  buffer_count
    from    sys.xx_bh
    group by decode(state,0,'Free',
    1,'Read and Modified',
    2,'Read and Not Modified',
    3,'Currently being Modified',
    'Other'
    Provided the OP figures out that xx_bh is probably a view defined by sys on top of x$bh this will get him the number of free buffers - which may be what he wants - but apart from that your query is at least 10 years short of complete, and the decode() of state 3 is definitley wrong.
    The decode of x$bh.state for 10g is:
         decode(state,
              0,'free',
              1,'xcur',
              2,'scur',
              3,'cr',
              4,'read',
              5,'mrec',
              6,'irec',
              7,'write',
              8,'pi',
              9,'memory',
              10,'mwrite',
              11,'donated'
         ), and for 11g it is:
         decode(state,
               0, 'free',
               1, 'xcur',
               2, 'scur',
               3, 'cr',
               4, 'read',
               5, 'mrec',
               6, 'irec',
               7, 'write',
               8, 'pi',
               9, 'memory',
              10, 'mwrite',
              11, 'donated',
              12, 'protected', 
              13, 'securefile',
              14, 'siop',
              15, 'recckpt',
              16, 'flashfree', 
              17, 'flashcur',
              18, 'flashna'
         ), (At least, that was the last time I looked - they may have changed again in 10.2.0.5 and 11.2.0.2)
    Regards
    Jonathan Lewis

  • Swapping and Database Buffer Cache size

    I've read that setting the database buffer cache size too large can cause swapping and paging. Why is this the case? More memory for sql data would seem to not be a problem. Unless it is the proportion of the database buffer to the rest of the SGA that matters.

    Well I am always a defender of the large DB buffer cache. Setting the bigger db buffer cache alone will not in any way hurt Oracle performance.
    However ... as the buffer cache grows, the time to determine 'which blocks
    need to be cleaned' increases. Therefore, at a certain point the benefit of a
    larger cache is offset by the time to keep it sync'd to the disk. After that point,
    increasing buffer cache size can actually hurt performance. That's the reason why Oracle has checkpoint.
    A checkpoint performs the following three operations:
    1. Every dirty block in the buffer cache is written to the data files. That is, it synchronizes the datablocks in the buffer cache with the datafiles on disk.
    It's the DBWR that writes all modified databaseblocks back to the datafiles.
    2. The latest SCN is written (updated) into the datafile header.
    3. The latest SCN is also written to the controlfiles.
    The following events trigger a checkpoint.
    1. Redo log switch
    2. LOG_CHECKPOINT_TIMEOUT has expired
    3. LOG_CHECKPOINT_INTERVAL has been reached
    4. DBA requires so (alter system checkpoint)

  • Data buffer cache has undo information...??

    do data buffer in sga has any undo information....??

    920273 wrote:
    in sga we have data buffer ..... in data buffer cache if i m updating a block, do any undo information is maintained in buffer cache regarding the change, i hav made in block.....am
    lets take an example if i m updating a block having value '2' to '4'...and dbwriter not writes to datafiles ...in this case do any undo information is maintained in buffer cache...???Hmmm.. When you updated value 2 to 4, so still its uncommitted then the transaction is active and it will be in buffer cache itself. Of course if the cache is full or performed any checkpoint, then this modified data also writtened into data files. So you should not mention dbwriter not writes to datafiles you cant predict when cache going to full or checkpoint occurred.

  • Data Buffer Cache Limit

    Is there any way that I could signal daat buffer cache to write all data to data files if amount of dirty blocks reach say 50 Mb.
    Iam processing with BLOBS, one blob at a time, some of which has sizes exceeeding 100 Mb and the diffcult thing is that I cannot write to disk until the whoile blob is finished as it is one transaction.
    Well if anyone is going to suggest that to open, process close, commit ....well i tried that but it also gives error "nmo free buffer pool" but this comes for twice the size of buffer size = 100 Mb file when db cache size is 50 mb.
    any ideas.

    Hello,
    Ia using Oracle 9.0.1.3.1
    I am getting error ORA-OO379 No free Buffers available in Buffer Pool. Default for block size 8k.
    My Init.ora file is
    # Copyright (c) 1991, 2001 by Oracle Corporation
    # Cache and I/O
    db_block_size=8192
    db_cache_size=104857600
    # Cursors and Library Cache
    open_cursors=300
    # Diagnostics and Statistics
    background_dump_dest=C:\oracle\admin\iasdb\bdump
    core_dump_dest=C:\oracle\admin\iasdb\cdump
    timed_statistics=TRUE
    user_dump_dest=C:\oracle\admin\iasdb\udump
    # Distributed, Replication and Snapshot
    db_domain="removed"
    remote_login_passwordfile=EXCLUSIVE
    # File Configuration
    control_files=("C:\oracle\oradata\iasdb\CONTROL01.CTL", "C:\oracle\oradata\iasdb\CONTROL02.CTL", "C:\oracle\oradata\iasdb\CONTROL03.CTL")
    # Job Queues
    job_queue_processes=4
    # MTS
    dispatchers="(PROTOCOL=TCP)(PRE=oracle.aurora.server.GiopServer)", "(PROTOCOL=TCP)(PRE=oracle.aurora.server.SGiopServer)"
    # Miscellaneous
    aq_tm_processes=1
    compatible=9.0.0
    db_name=iasdb
    # Network Registration
    instance_name=iasdb
    # Pools
    java_pool_size=41943040
    shared_pool_size=33554432
    # Processes and Sessions
    processes=150
    # Redo Log and Recovery
    fast_start_mttr_target=300
    # Sort, Hash Joins, Bitmap Indexes
    pga_aggregate_target=33554432
    sort_area_size=524288
    # System Managed Undo and Rollback Segments
    undo_management=AUTO
    undo_tablespace=UNDOTBS

  • Database buffer Cache

    Hi Guru,
    Can anyone tell me what is the actual definition of Data buffer Cache & Log buffer Cache and how it works in Oracle 10g??
    Please
    Regards,
    Rajeev,India
    Edited by: 970371 on Nov 8, 2012 7:06 PM

    vlethakula wrote:
    Databuffer cache contains the blocks which are read from physical data files.Database buffer cache contains buffers that hold the blocks read from the disk.
    Log buffer cahce contains changes made to the database
    e.g: You try to update a row, the changes made to that row is written in form of change vectors to Log buffer cache, from there on certail rules(like commit) LGWR background process writes those changes from LOG BUFFER CACHE to redo log files.
    The block which is modified in database buffer cache, will be written to physical files by DBWR process after certain rules are met (like checkpoint)The reason that I didn't give the explanation or the links containing the same from the docs that I wanted OP to come up with some sort of his own understanding about the two caches first.
    Aman....

  • Does buffer cache size matters during imp process ?

    Hi,
    sorry for maybe naive question but I cant imagine why do Oracle need buffer cache (larger = better ) during inserts only (imp process with no index creation) .
    As far as I know insert is done via pga area (direct insert) .
    Please clarify for me .
    DB is 10.2.0.3 if that matters :).
    Regards.
    Greg

    Surprising result: I tried closing the db handles with DB_NOSYNC and performance
    got worse. Using a 32 Meg cache, it took about twice as long to run my test:
    15800 seconds using DB->close(DB_NOSYNC) vs 8200 seconds using DB->close(0).
    Here is some data from db_stat -m when using DB_NOSYNC:
    40MB 1KB 900B Total cache size
    1 Number of caches
    1 Maximum number of caches
    40MB 8KB Pool individual cache size
    0 Maximum memory-mapped file size
    0 Maximum open file descriptors
    0 Maximum sequential buffer writes
    0 Sleep after writing maximum sequential buffers
    0 Requested pages mapped into the process' address space
    26M Requested pages found in the cache (70%)
    10M Requested pages not found in the cache (10811882)
    44864 Pages created in the cache
    10M Pages read into the cache (10798480)
    7380761 Pages written from the cache to the backing file
    3452500 Clean pages forced from the cache
    7380761 Dirty pages forced from the cache
    0 Dirty pages written by trickle-sync thread
    10012 Current total page count
    5001 Current clean page count
    5011 Current dirty page count
    4099 Number of hash buckets used for page location
    47M Total number of times hash chains searched for a page (47428268)
    13 The longest hash chain searched for a page
    118M Total number of hash chain entries checked for page (118169805)
    It looks like not flushing the cache regularly is forcing a lot more
    dirty pages (and fewer clean pages) from the cache. Forcing a
    dirty page out is slower than forcing a clean page out, of course.
    Is this result reasonable?
    I suppose I could try to sync less often than I have been, but more often
    than never to see if that makes any difference.
    When I close or sync one db handle, I assume it flushes only that portion
    of the dbenv's cache, not the entire cache, right? Is there an API I can
    call that would sync the entire dbenv cache (besides closing the dbenv)?
    Are there any other suggestions?
    Thanks,
    Eric

  • Buffer Cache Flush

    Hi All,
    What is the benefit of Flushing buffer cache. what are its effects and is it advisable to do it on production system.
    Thanks in Advance
    Edited by: Vikas Kohli on Jan 31, 2012 11:13 AM
    Edited by: Vikas Kohli on Jan 31, 2012 11:22 AM

    Asif,
    All blocks which are resides in the buffer cache get flushed. I think this needs correction. "However a buffer cannot become free if it is "pinned" (i.e. actualy in use) or if it is "dirty" (i.e. needs to be written to disc). There's nothing that Oracle can do about the pinned buffers, but it can write the content of the dirty buffers to disk before freeing them." Sir Jonathan @ flush buffer cache
    @ Vikas,
    In the above thread Sir Jonathan has written many most valuable inputs. Please check it.
    I think you will get more details from below link too : (Almost equal to Docs)
    http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:7413988573867
    Flushing cache is generally and mostly used in Testing environment, untill and unless there is such need to do so.
    Flushing the buffer helps to find out more consistent results for sql traces.
    If you want to compare two different cases for performance, flush buffer cache and shared pool before execution of both of them.
    But this won't reduce LIO's (Logical I/O)
    Regards
    Girish Sharma

  • Understanding the buffer cache architecture

    1st Question :
    When we want to modify a single record in block ( which has multiple records), does the oracle process reads that particular record into the buffer cache or it will read the entire block into the buffer cache?
    2nd Question : Metalink note 62172.1 says --- The cache may hold more than one copy of a block from different points in time . Can some one explain me why it is architected in this manner.
    3rd Question : By increasing the pctfree , how can we over come the 'cache buffers chains' latch . How the less rows per block will reduce the contention to 'cache buffers chains' latch .
    Thanks
    Naveen
    Edited by: Naveen Sangam on Jul 15, 2009 8:07 AM

    Naveen Sangam wrote:
    1st Question :
    When we want to modify a single record in block ( which has multiple records), does the oracle process reads that particular record into the buffer cache or it will read the entire block into the buffer cache?It will be always a block by block access. That's why it is suggested that choose your block size properly so that you wont' waste the memory of the cache. Oh god, what did I just write :-) ?
    >
    2nd Question : Metalink note 62172.1 says --- The cache may hold more than one copy of a block from different points in time . Can some one explain me why it is architected in this manner.Yes, that's correct. This is the concept that makes Oracle, well Oracle. In Oracle. the isolation level is set to Read Committed which means, any dirty read wont' be allowed within oracle. So when you change a buffer and its still haven't got a commit, oracle would not let anyone else read the same buffer in its current state. This buffer's old image would be used by oracle to satisfy the read request of the user. For this, the concept of Multiversoning or Read Consitancy comes into the picture. For an dirty buffer, oralce prepares a Snapshot/Consistent Read(CR) buffer in the same hash bucket. This buffer is given to the user. That's why there can be more than one copy of the changed buffer be there in the cache , depending on the requests issued by the users.
    3rd Question : By increasing the pctfree , how can we over come the 'cache buffers chains' latch . How the less rows per block will reduce the contention to 'cache buffers chains' latch .I am not sure how did you make up this link? The only thing that ML note is saying that there should be less number of rows within a block so that a single block doesn't become a "hot spot" . The less number of rows, the less contention would be there over it. How did you link up this with the CBC Chain lathc?
    HTH
    Aman....

  • How to remove an object from Buffer Cache

    Hi,
    I have a simple question. How can I remove an object from the Buffer Cache in Oracle 10gR2 ?
    I am doing some tuning tasks in a shared development database, so I can't do "alter system flush shared_pool" because it will affect other people who are running their queries. So I want to remove from Buffer Cache only the objects that I know that I am the only reader. I can see the objects that I want to be removed by querying the V$BH view.
    By the way, I did some "alter system flush shared_pool" and my objects were not removed from the Buffer Cache, and they are not in the "Keep".
    Thanks In Advance,
    Christiano

    Further more, you can use CACHE | NOCACHE on table level to indicate how you want Oracle handle the data blocks of said table.
    http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7002.htm#i2215507
    CACHE | NOCACHE | CACHE READS
    Use the CACHE clauses to indicate how Oracle Database should store blocks in the buffer cache. If you specify neither CACHE nor NOCACHE, then:
    In a CREATE TABLE statement, NOCACHE is the default
    In an ALTER TABLE statement, the existing value is not changed.
    CACHE For data that is accessed frequently, this clause indicates that the blocks retrieved for this table are placed at the most recently used end of the least recently used (LRU) list in the buffer cache when a full table scan is performed. This attribute is useful for small lookup tables.
    As a parameter in the LOB_storage_clause, CACHE specifies that the database places LOB data values in the buffer cache for faster access.
    Restriction on CACHE You cannot specify CACHE for an index-organized table. However, index-organized tables implicitly provide CACHE behavior.
    NOCACHE For data that is not accessed frequently, this clause indicates that the blocks retrieved for this table are placed at the least recently used end of the LRU list in the buffer cache when a full table scan is performed. NOCACHE is the default for LOB storage.
    As a parameter in the LOB_storage_clause, NOCACHE specifies that the LOB value either is not brought into the buffer cache or is brought into the buffer cache and placed at the least recently used end of the LRU list. The latter is the default behavior.
    Restriction on NOCACHE You cannot specify NOCACHE for an index-organized table.
    CACHE READS CACHE READS applies only to LOB storage. It specifies that LOB values are brought into the buffer cache only during read operations but not during write operations.

  • LRU and CKPTQ in database buffer cache

    Hi experts out here,
    This functionality will work out in Database buffer cache of Oracle 10.2 or greater.
    Sources:OTN forums and Concepts 11.2 guide
    As per my readings.To improve the funtionality and make it more good Database Bufer cache is divided into several areas which are called workareasNow further
    zooming this each workarea will store multiple lists to store the buffers inside the database buffer cache.
    Each wrokarea can have one or more then one lists to maintain the wrokordering in there.So the list each workarea will have is LRU list and CKPTQ list.LRU list
    is a list of pinned,free and dirty buffers and CKPTQ is a list of Dirty buffers.We can say CKPTQ is a bundled of dirty buffers in low RBA ordering and ready to be flushed from cache to disk.
    CKPTQ list is maintained in low RBA ordering.
    As being novice let me clear about low RBA and High RBA first
    RBA is stored in the block header and will give us the information about when this block is changed and how many times it is changed.
    Low RBA : the low RBA is the address of the redo for the first change that was applied to the block since it was last clean,
    high RBA : the high RBA is the address of the redo for the most recent change to have been applied to the block.
    Now Back to CKPTQ
    It can be like this (Pathetic diagram of CKPTQ)
    lowRBA==================================High RBA
    (Head Of CKPTQ)                         (Tail Of CKPTQ)
    CKPTQ is a list of Dirty buffers.As per RBA concept.The most recent buffer modified is at the tail of CKPTQ.          
    Now oracle process starts and Try to Get buffer from DB cache if it gets a Buffer it will put a buffer MRU end of the LRU list.and buffer will become the most
    recently used.
    Now if process cant find a required buffer.then first it will try to find out Free buffer in LRU.And if it finds it its over it will place a datablock from datafile to the
    place where free buffer was sitting.(Good enough).
    Now if process cant fnd a Free buffer in LRU then First step would be it will find some Dirty buffers from the LRU end of the LRU list and place them on a
    CKPTQ(Remeber in low order of RBA it will arrange it in CKPT queue). and now oracle process will take required buffer and place it on the MRU end of LRU list.(Because space has been acclaimed by moving Dirty buffers to CKPTQ).
    I am sure that from CKPTQ the buffers(to be more accurate Dirty buffers) will move to datafiles.all the buffers are line up n CKPTQ in lower RBA first manner.But
    will be flushed to datafile how and in which manner and what event?
    This is what i understand after last three days flicking through blogs,forums and concepts guide.Now what i am missing please clear me out and apart from that
    i cant link the following functionalities with this flow..that is
    1)How the incremental checkpoint work with this CKPTQ?
    2)Now what is that 3 seconds timeout?
    (Every 3 seconds DBWR process will wake and find if anything there to write on datafiles for this DBWR will only check CKPTQ).
    3)apart form 3 second funda , when CKPTQ the buffers will be moved??(IS it when Process cant find any space in CKPTQ to keep buffers from LRU.ITs a
    moment when buffer from CKPTQ will be moved to disk)
    4)Can you please relate when control file will be updated with checkpoint so it can reduce recovery time?
    To many ques but i am trying to build up the whole process in mind that how it works may be i can be wrong in any phase in any step please correct me up and
    take me @ the end of flow..
    THANKS
    Kamesh

    Hi Amansir,
    So i m back with my bunch of questions.I cant again ask a single because you know its a flow so i cant end up with single doubt.Thanks for your last reply.
    Yes amansir first doubt clear that was buffer will be inserted at MID point for this i got one nice document (PDF)names "All about oracle touch count algorithm by CRAIG A SHALLAHAMER".That was quite nice PDF allabout hot and cold buffer and buffer movments inside the LRU list.I am prettly much clear with that point.Thank you. and Incremental checkpoint i read from Harald.van.Breederode ppt a person from oracle.You have shared it on one of your thread.that was nice reference
    flicking through threads i came across term REPL and its variations REPL-AUX (thread was for Oracle 9i).Is this variation REPL-AUX deprecated in 10g So i i am not wrong For each work area two main lists that are LRU and CKPTQ exists??not more than that any other types?
    For non-RAC database Thread checkpoint is a Full checkpoint?
    I read about the incremental checkpointing Here incremental checkpointing in my words n brief.Incremental Checkpoints means write only some selected buffer from CKPTQ to Datafiles.FROM CKPTQ few Low orders RBA buffers are selected and chekcpointed *(Buffer will be checkpointed on many conditions)* and When the Next checkpoint occurs that buffers are flushed to disk.Now this thing *(Checkpointing few buffers and flushing them to disk)* can be multiple times within three seconds so after 3 seconds *(This is the 3 second concept i was asking in the starting of the thread,Can this time be changed if yes with which parameter)* the checkpoint RBA and Checkpoint*(the point upto which database buffer has flushed to disk)* will be updated in Control file header *(Datafile also)* by CKPT process.So that Checkpoint will be used for Instance recovery purpose.Which can dramatically down the instance recovery time.
    every 3 seconds control file is updated with checkpoint and that checkpoint is the point from where we have to start the recovery process in oracle from redo log.I m aware that incremental checkpointing is controlled by Fast_start_mttr_target prarameter and now it is autotuned for >10.2 but the smaller value i will keep the less time my instance will take.
    Is above two para right what i understood if wrong correct me??
    What i understand is after three seconds it will take some buffers from the CKPTQ ( from low RBA end ) and flush them to disk.apart from this many other conditions are there when Data will be flushed to disk.
    1) like CKPTQ is full.
    2)Process cant find a free buffer in LRU
    3)to advance checkpoint DBWR writes..
    Correct me if i m wrong?
    THANKS
    Kamesh
    Edited by: Kamy on May 2, 2011 10:55 PM

  • 10G NEW FEATURE-HOW TO FLUSH THE BUFFER CACHE

    제품 : ORACLE SERVER
    작성날짜 : 2004-05-25
    10G NEW FEATURE-HOW TO FLUSH THE BUFFER CACHE
    ===============================================
    PURPOSE
    이 자료는 Oracle 10g new feature 로 manual 하게
    buffer cache 를 flush 할 수 있는 기능에 대하여 알아보도록 한다.
    Explanation
    Oracle 10g 에서 new feature 로 소개된 내용으로 SGA 내 buffer cache 의
    모든 data 를 command 수행으로 clear 할 수 있다.
    이 작업을 위해서는 "alter system" privileges 가 있어야 한다.
    Buffer cache flush 를 위한 command 는 다음과 같다.
    주의) 이 작업은 database performance 에 영향을 줄 수 있으므로 주의하여 사용하여야 한다.
    SQL > alter system flush buffer_cache;
    Example
    x$bh 를 query 하여 buffer cache 내 존재하는 정보를 확인한다.
    x$bh view 는 buffer cache headers 정보를 확인할 수 있는 view 이다.
    우선 test 로 table 을 생성하고 insert 를 수행하고
    x$bh 에서 barfil column(Relative file number of block) 과 file# 를 조회한다.
    1) Test table 생성
    SQL> Create table Test_buffer (a number)
    2 tablespace USERS;
    Table created.
    2) Test table 에 insert
    SQL> begin
    2 for i in 1..1000
    3 loop
    4 insert into test_buffer values (i);
    5 end loop;
    6 commit;
    7 end;
    8 /
    PL/SQL procedure successfully completed.
    3) Object_id 확인
    SQL> select OBJECT_id from dba_objects
    2 where object_name='TEST_BUFFER';
    OBJECT_ID
    42817
    4) x$bh 에서 buffer cache 내에 올라와 있는 DBARFIL(file number of block) 를 조회한다.
    SQL> select ts#,file#,dbarfil,dbablk,class,state,mode_held,obj
    2 from x$bh where obj= 42817;
    TS# FILE# DBARFIL DBABLK CLASS STATE MODE_HELD J
    9 23 23 1297 8 1 0 7
    9 23 23 1298 9 1 0 7
    9 23 23 1299 4 1 0 7
    9 23 23 1300 1 1 0 7
    9 23 23 1301 1 1 0 7
    9 23 23 1302 1 1 0 7
    9 23 23 1303 1 1 0 7
    9 23 23 1304 1 1 0 7
    8 rows selected.
    5) 다음과 같이 buffer cache 를 flush 하고 위 query 를 재수행한다.
    SQL > alter system flush buffer_cache ;
    SQL> select ts#,file#,dbarfil,dbablk,class,state,mode_held,obj
    2 from x$bh where obj= 42817;
    6) x$bh 에서 state column 이 0 인지 확인한다.
    0 은 free buffer 를 의미한다. flush 이후에 state 가 0 인지 확인함으로써
    flushing 이 command 를 통해 manual 하게 수행되었음을 확인할 수 있다.
    Reference Documents
    <NOTE. 251326.1>

    I am also having the same issue. Can this be addressed or does BEA provide 'almost'
    working code for the bargin price of $80k/cpu?
    "Prashanth " <[email protected]> wrote:
    >
    Hi ALL,
    I am using wl:cache tag for caching purpose. My reqmnt is such that I
    have to
    flush the cache based on user activity.
    I have tried all the combinations, but could not achieve the desired
    result.
    Can somebody guide me on how can we flush the cache??
    TIA, Prashanth Bhat.

  • What else are stored in the database buffer cache?

    What else are stored in the database buffer cache except the data blocks read from datafiles?

    That is a good idea.
    SQL> desc v$BH;
    Name                                                                                                      Null?    Type
    FILE#                                                                                                              NUMBER
    BLOCK#                                                                                                             NUMBER
    CLASS#                                                                                                             NUMBER
    STATUS                                                                                                             VARCHAR2(10)
    XNC                                                                                                                NUMBER
    FORCED_READS                                                                                                       NUMBER
    FORCED_WRITES                                                                                                      NUMBER
    LOCK_ELEMENT_ADDR                                                                                                  RAW(4)
    LOCK_ELEMENT_NAME                                                                                                  NUMBER
    LOCK_ELEMENT_CLASS                                                                                                 NUMBER
    DIRTY                                                                                                              VARCHAR2(1)
    TEMP                                                                                                               VARCHAR2(1)
    PING                                                                                                               VARCHAR2(1)
    STALE                                                                                                              VARCHAR2(1)
    DIRECT                                                                                                             VARCHAR2(1)
    NEW                                                                                                                CHAR(1)
    OBJD                                                                                                               NUMBER
    TS#                                                                                                                NUMBERTEMP      VARCHAR2(1)      Y - temporary block
    PING      VARCHAR2(1)      Y - block pinged
    STALE      VARCHAR2(1)      Y - block is stale
    DIRECT      VARCHAR2(1)      Y - direct block
    My question is what are temporary block and direct block?
    Is it true that some blocks in temp tablespace are stored in the data buffer?

Maybe you are looking for

  • Microsoft Office Home and Student 2010 Product Key doesnt work

    My Microsoft home and student 2010 key isn't working. I am entering the key that was printed off the internet from Microsoft when I purchased it off the Microsoft website. I also had to restart my computer, when I went to the Microsoft website to dow

  • Problem in Xperia Pro after upgrading to Android 4.0.4

    Hi all, I purchased Xperia Pro a couple of weeks back. Android version initially installed was 2.3.4. I went on to upgrade the same to 4.0.4 yesterday (Build no: 4.1.B.0.431). Everything works fine but for my sliding keypad keys. The alphabet keys A,

  • How to clear only blocks which have values

    Hi there, Is there anyone knows how to clear data from blocks which only have values ? so the idea, i dont have to create any new block by using something like set a block to be #MI ? Please advice. Thanks a lot R'gards Octoni

  • Spry Accordion and Flash Gallery

    I am trying to insert a Flash photo gallery (created in Adobe Bridge) into one of the accordion panels of a Spry Accordion widget.  When I use the widget 'out of the box', the gallery displays, but the set content height cuts off a third of it, inclu

  •  Will an unlocked iPhone 5 work on the Verizon network?

     Will an unlocked iPhone 5 work on the Verizon network? I know this question is probably premature, I don't think apple has mentioned anything about it yet, but I saw that past unlocked iPhones (4 and 4S) would not work on Verizon. I'm a Verizon cust