Shadow paging is a database recovery technique that uses two page tables - a current page table and a shadow page table. During transaction execution, updates are made to copies of pages in the shadow page table rather than directly updating pages. If a crash occurs, the database can be recovered by freeing the modified pages and using the unchanged shadow page table. Shadow paging reduces log overhead during recovery compared to log-based techniques but has disadvantages like increased data fragmentation and higher commit overhead.