Data & Database Administration Instructor: Engr. Sana Ziafat Database Recovery and Backup Databases are often damaged or lost because of system problems that may be caused by: Human error, Hardware failure, Incorrect or invalid data, Program errors, Viruses, Network failures, Conflicting transactions or, Natural disasters Mechanisms for restoring a database quickly and accurately after loss or damage are known as Database recovery. Back-up Facilities Automatic dump facility that produces backup copy of the entire database Periodic backup (e.g. nightly, weekly) Stored in secure, off-site location Incremental back-up Cold backup database is shut down during backup Hot backup selected portion is shut down and backed up at a given time Back-up strategies based on demands Backup Facilities (Contd.) Backups of static/less frequently changing data may be taken less often. Incremental backups which record changes made since last full backup, may be taken on interim basis. Incremental backups take lesser time. Journalizing Facilities A DBMS must provide journalizing facilities to keep an audit trail of transactions and database changes. Transaction: a discrete unit of work that must be completely processed or not processed at all within a computer system. e.g., entering a customer record In the event of failure, a consistent database state can be re-established by using the information in the journals together with the most recent complete backup. There are two types of journals or logs: Transaction log Database change log Journalizing Facilities Audit trail of transactions and database updates Kept on disk or tape; Must be backed-up Transaction log record of essential data for each transaction processed against the database Example of data in the transaction log? Database change log–images of updated data Before-image–copy before modification After-image–copy after modification Produces an audit trail Journalizing Facilities (Contd.) Transaction log Data typically recorded for a transaction include transaction code or ID Action or type of transaction (e.g. insert) Time of transaction Terminal number or user ID Input data values Tables and records accessed Records modified And possibly the old and new field values Figure - Database audit trail Transaction Recovery action DBMS Effect of transaction or recovery action Database (current) Database (backup) Copy of transaction Transaction Log Copy of database affected by transaction Database Change log Checkpoint Facilities A facility by which DBMS periodically refuses to accept any new transactions. All transactions in progress are completed and the journal files are updates. At this point, system is in a quiet state, and the database & transaction logs are synchronized. The DBMS writes a special record (checkpoint record) to log file which is like a snapshot of the state of database. The checkpoint record contains info necessary to restart the system. Checkpoint Facilities (Contd.) Any dirty blocks (memory pages containing changes not yet written to the disks) are written from memory to the disk storage, ensuring that all changes made prior to taking checkpoint have been written to long-term storage. DBMS may perform checkpoints automatically or in response to user application programs. Checkpoints should be taken frequently (several times an hour). In case of failures, it is often possible to resume processing from the most recent checkpoint. Thus only few minutes processing work must be repeated, compared with several hours for a complete restart of the day’s processing. Recovery Manager It is a module of the DBMS which restores the database to a correct condition when a failure occurs and which resumes processing user requests. The type of restart used depends on the nature of the failure. Recovery manager uses the logs as well as the backup copy to restore the database Recovery and Restart Procedures 1. 2. Disk Mirroring–switch between identical copies of databases: fastest recovery; high availability of data required Restore/Rerun–reprocess transactions against the backup copy; simple, but two disadvantages/last resort: Sequence of transaction Time to reprocess transaction Transaction Integrity–commit or abort all transaction changes (business transactions are well-defined sequence of steps) Define transaction boundaries: BEGIN TRANSACTION & COMMIT Transactions should follow 4 properties. Transaction ACID Properties Atomic Transaction cannot be subdivided Consistent Constraints don’t change from before transaction to after transaction. Example: inventory level Isolated Database changes not revealed to users until after transaction has completed; know on-hand inventory after inventory transaction is completed. Durable Database changes are permanent Recovery and Restart Procedures Backward Recovery (Rollback) apply before- images Reverse the changes made Forward Recovery (Roll Forward)–apply the most recent after-images (much faster and more accurate than restore/rerun) Figure Basic recovery techniques a) Rollback Figure Basic recovery techniques (cont.) b) Rollforward Database Failure Responses (1) Aborted transactions Transaction terminated abnormally; human error, hardware failure of loss of transmission etc. Preferred recovery: rollback Automatically done by DBMS Incorrect data Difficult to detect; Need human intervention, e.g. wrong grades or payment Preferred recovery: rollback Alternative 1: rerun transactions not including inaccurate data updates Alternative 2: compensating transactions, human intervention to correct the error Database Failure Responses (2) System failure (database intact) System crash due to power loss, system software failure Preferred recovery: switch to duplicate database Alternative 1: rollback Alternative 2: restart from checkpoint Database destruction (database is lost, destroyed) Preferred recovery: switch to duplicate database Alternative 1: rollforward to the state before loss Alternative 2: reprocess transactions What is Concurrency Control? The process of managing simultaneous operations against a database so that data integrity is maintained and the operations do not interfere with each other in a multi-user environment. Background Most DBMS run in a multi-user environment, where several users are able to share data contained in a database. No data integrity problems occur when data is being read. But problems can arise when several users are updating data. When more than one transaction is being processed against a DB at the same time, the transactions are considered to be concurrent. The actions that must be made to ensure data integrity are called concurrency control actions. Background (Contd.) Remember that CPU can process only one instruction at a time. As new transactions are submitted while other processing is occurring against the database, the transactions are usually interleaved. The CPU switches among the transactions so that some portion of each transaction is performed as the CPU addresses each transaction in turn. Problems without Concurrency Control Lost Updates problem can occur when multiple users attempt to update database. Example Two users with joint account trying to withdraw cash at the same time using ATM at different locations. User A 1.Read account balance($1000) User B 1.Read account balance ($1000) 2.Withdraw $200 time 2.Withdraw $300 3.Write account balance($800) 3.Write account balance($700) ERROR Problems without Concurrency Control Inconsistent read problems can occur when one user reads data that has been partially updated by another user. This read will be incorrect, also called dirty read or unrepeatable read. Serializabilty Concurrent transactions need to be processed in isolation so that they do not interfere with each other. If one transaction were entirely processes at a time before another one, no interference would occur. Procedures which emulate this are called serializable. Serializable schedules process transactions that will give results as if they had been processed one after the other. Schedules are designed such that transactions that will not interfere with each other can be run in parallel, e.g., transactions that access data from different tables in a database will not conflict with each other. Serializability is achieved by different ways, but locking mechanisms are the most common. Locking Locking implies that any data retrieved by a user for updating must be locked, or denied to other users, until the update is completed or aborted. Locking mechanism enforces a sequential updating process that prevents erroneous updates. It is the pessimistic approach of concurrency control Concurrency Control through Locking User A 1.Read account balance 2.Lock account balance User B 1.Read account balance (denied) 2.Read account balance($1000) 3.Write account balance($800) time 2.Withdraw $200 4. Unlock account balance 2.Lock account balance 3.Read account balance($800) 4.Withdraw $300 5.Write account balance($500) 6. Unlock account balance Locking Levels There are different locking levels (granularity) Database Entire DB is locked & becomes unavailable. This level can be used during backups Table Entire table containing a requested record is locked. This level can be used for bulk updates that will update entire table (e.g., salary raise) Block or page The physical storage block (or page) containing the requested record is locked. This level is commonly implemented. Record level Only the requested record (row) is locked. All other records within table are available. Field level Only the particular field (column) in the requested record is Types of locks Shared (S locks or read locks) Allows other transactions to read but not update a record or resource. Placing a shared lock prevents another user from placing an exclusive lock, but not a shared lock, on that record. Exclusive (X locks or write locks) Prevent other transaction from reading and therefore updating a record until unlocked. Should be placed when updating records. Placing an exclusive lock on a record prevents another user from placing any type of lock on that record Deadlocks Locking may prevent erroneous updates but can lead to deadlocks problem. Deadlock: When two or more transactions lock a common resource, each one of them waits for the other one to unlock that resource. Deadlock prevention: users must lock all required records at the beginning of the transaction. Deadlock resolution: the DBMS detects and breaks the deadlock by backing out of the the deadlocked transactions. Any changes made by that transaction up to the time of deadlock are removed, The transaction is restarted when the resources become available. Versioning Optimistic approach of concurrency control Each transaction is restricted to a view of a database as of the time that transaction started and when a transaction modifies a record, the DBMS creates a new record version instead of overwriting the old record.