Systems, methods are provided for encrypting, decrypting, re-encrypting an existing
database with neither
downtime nor storage overhead. Create a
list of tables to be processed. Identify status of each table by an indicator in a
database catalog. Store a second status in each
data page. Select a table to process from
list of tables. Issue a table lock against the selected table. Select a configurable number of data pages to process during the duration of the table lock. Following the
processing, flush the data pages to storage. If there are no more data pages to encrypt for the selected table, remove the selected table from the
list of tables to be processed. Release the table lock. If there are more data pages to process in the selected table, and there are waiters for the selected table, release the table lock; select another table from the list of tables to process.