Feedback
 
Did this article resolve your question/issue?

   

Your feedback is appreciated.

Please tell us how we can make this article more useful. Please provide us a way to contact you, should we need clarification on the feedback provided or if you need further assistance.

Characters Remaining: 1025

 


Article

How to force dirty data buffers to disk

Information

 
Article Number000096866
EnvironmentProduct: OpenEdge
Version: All supported versions
OS: All supported platforms
Other: Enterprise Database
Question/Problem Description
How to force dirty data buffers from shared-memory to disk ?
Are dirty buffers flushed to disk during a QUIET point or only after a quiet point is lifted?
Does quiescing the database flush modified data buffers from shared memory to disk?
Does an online dbanalys flush modified blocks to disk?
Does a full or incremental PROBKUP flush dirty buffers to disk?
Will an APW write dirty buffers to disk during a QUIET point or only after the quiet point is lifted?

Use Case: To ensure changes done by the committed transactions are not lost when the database is shutdown due to disk cache issues
Steps to Reproduce
Clarifying Information
Error Message
Defect/Enhancement Number
Cause
Resolution
1. TABANALYS does not flush the modified blocks on disk:
2. PROBKUP does flush modified blocks on disk:
3. PROQUIET ENABLE flushes the correspondent bi buffers to disk then ai buffers when the AI is switched, but it does not write dirty data buffers to disk. Modified buffers are flushed pre-PROQUIET and post-PROQUIET, not during PROQUIET

Consider the following demonstration:
$  prodb sports2000 sports2000
$  proserve sports2000 -S 128
$  prowin sports2000
 
FOR EACH customer EXCLUSIVE-LOCK: 
    ASSIGN customer.name = "x" + customer.name. 
    ASSIGN customer.name = SUBSTRING(customer.name, 2). 
END.

PROMON > R&D > Status: Buffer Cache:   
Status: Buffer Cache 
Total buffers: 130 
Used buffers: 130 
Modified buffers: 5

1. DBANALYS / TABANALYS does not flush modified blocks on disk:
         
$   proutil sports2000 -C dbanalys  

PROMON > R&D > Activity: Buffer Cache :
Database Buffer Pool  
Logical reads 6287  
Logical writes 0  
O/S reads 414  
O/S writes 0

PROMON > R&D > Status: Buffer Cache :
Modified buffers: 5

2. PROBKUP does flush modified blocks on disk:
         
$   probkup online sports nul 

PROMON > R&D > Activity: Buffer Cache :
Database Buffer Pool 
Logical reads 1082 
Logical writes 0 
O/S reads 933 
O/S writes 7 
PROMON > R&D > Status: Buffer Cache :
Modified buffers: 0

3.  PROQUIET does not flush modified buffers to disk
  • Modified buffers are flushed pre and post PROQUIET, not during PROQUIET
  • PROQUIET ENABLE flushes the correspondent bi buffers to disk then ai buffers when the AI is switched, but it does not write dirty data buffers to disk
Run the above code again.

PROMON > R&D > Activity: Buffer Cache :
Database Buffer Pool
Logical reads 1669
Logical writes 0
O/S reads 102
O/S writes 3
PROMON > R&D > Status: Buffer Cache :
Total buffers: 130
Used buffers: 130
Modified buffers: 120
Marked for ckp: 1
$   proquiet sports2000 enable

PROMON > R&D > Status: Buffer Cache :
Total buffers: 130
Used buffers: 130
Modified buffers: 118
Enable the APW during database quiesence, to assure the APW effect is demonstrated:
        
$   proapw sports2000

PROMON > R&D > Status: Buffer Cache :
Modified buffers: 118
$   proquiet sports2000 disable

Watch the "Status: Buffer Cache", wait while APWs flush all dirty blocks before shutting the database down:
Total buffers: 130
Used buffers: 130
Modified buffers: 0 ****

 

 
Workaround
Notes
Attachment 
Last Modified Date6/17/2019 12:27 PM