Independent and not affiliated with the FDA, MHRA, ISPE, PDA, or any agency. Get the appgoutham@madhadi.com
madhadi.comData Integrity & GxP Quality
Browse all topics → Articles Templates & Procedures Learning paths GlossaryScenariosToolsRegulatory ReferencesLearning PathsTopics About Start here
Protocol Plug-and-play starting point CSV / CSA

Protocol: Native Database Audit Logging and Point-in-Time Recovery Qualification

A plug-and-play qualification protocol proving two database-tier controls actually work: that native database auditing captures a direct edit outside the application, and that point-in-time recovery can restore to and reveal data at a specific past moment. Test cases, expected results, and a filled specimen.

Document type: Protocol

Read and copy the template below into your own quality system. It is a generic starting point for your own internal use, provided as is, with no warranty; see the Terms and License. Adopting it does not by itself create compliance.

This is a ready-to-use qualification protocol. Replace every <<FILL: ...>> placeholder with your own specifics, execute in a qualified test environment that mirrors production configuration, and route through your normal validation review and approval. A worked filled specimen follows the template. Verify each cited regulation against the current source before you rely on it.

Approval page

FieldEntry
Protocol titleNative Database Audit Logging and Point-in-Time Recovery Qualification
Protocol number<<FILL>>
System / database under test<<FILL>>
Version<<FILL>>
Effective date<<FILL>>
RoleNameSignatureDate
Author<<FILL>>
Validation reviewer<<FILL>>
QA approver<<FILL>>
System owner<<FILL>>

1. Objective

To demonstrate, with documented test evidence, that (a) native database auditing on <<FILL: system>> captures a direct data-manipulation statement made outside the application, including any attempt to disable the audit configuration itself, and (b) point-in-time recovery can restore the database to a specific past moment and that the restored copy accurately reflects the data as it existed at that moment.

2. Scope

This protocol covers the database instance(s) supporting <<FILL: system name>> in <<FILL: environment, e.g. a qualified test/staging environment configured identically to production>>. It does not cover application-layer audit trail testing, which is addressed under <<FILL: reference to the application validation protocol>>.

3. System description

<<FILL: brief description of the database platform, version, and its role in the validated system>>. Native auditing configuration and recovery-model settings applied for this test: <<FILL>>.

4. Prerequisites

  • The test environment database is configured identically to production for auditing and recovery settings.
  • Native database auditing is enabled per the audit policy defined in <<FILL: reference>>.
  • The database is in a recovery mode that retains transaction logs (not a simple/minimal recovery mode).
  • A qualified test account with the same privilege profile as a production DBA account is available for test execution.

5. Roles

RoleResponsibility
Tester (DBA or validation engineer)Executes test cases, records actual results
Validation reviewerConfirms test execution and evidence against expected results
QAApproves the protocol and the final report; dispositions any deviation

6. Test cases

6.1 Native audit logging

IDStepExpected resultActual resultPass/FailTesterDate
AUD-01Connect directly to the test database using a non-application client with a named test accountConnection succeeds (this is expected; the control under test is detection, not prevention)<<FILL>><<FILL>><<FILL>><<FILL>>
AUD-02Execute an UPDATE against one row of a GxP test tableStatement executes<<FILL>><<FILL>><<FILL>><<FILL>>
AUD-03Query the native database audit log (from the off-box destination, not the database itself) for the statement in AUD-02An entry exists showing account, timestamp, statement, and table, matching AUD-02<<FILL>><<FILL>><<FILL>><<FILL>>
AUD-04Confirm the audit log entry is stored where the test DBA account cannot modify or delete itAttempt to alter or delete the entry using the DBA account fails<<FILL>><<FILL>><<FILL>><<FILL>>
AUD-05Attempt to disable native auditing using the DBA accountEither the action is blocked by privilege restriction, or, if permitted, the disablement itself generates an audit entry<<FILL>><<FILL>><<FILL>><<FILL>>
AUD-06Execute a DELETE against one row of a GxP test table and confirm captureAn entry exists for the DELETE, matching account, timestamp, statement<<FILL>><<FILL>><<FILL>><<FILL>>

6.2 Point-in-time recovery

IDStepExpected resultActual resultPass/FailTesterDate
PITR-01Record the current value of a designated test row (baseline value) and the exact system timeBaseline value and timestamp recorded<<FILL>><<FILL>><<FILL>><<FILL>>
PITR-02Update the designated test row to a new value; record the exact time of the changeNew value and change timestamp recorded<<FILL>><<FILL>><<FILL>><<FILL>>
PITR-03Restore a copy of the database, in an isolated environment, to a target time one minute before the change in PITR-02Restore completes successfully<<FILL>><<FILL>><<FILL>><<FILL>>
PITR-04Query the designated test row in the restored copyValue matches the baseline value from PITR-01, confirming accurate restoration to the target moment<<FILL>><<FILL>><<FILL>><<FILL>>
PITR-05Confirm the recovery point objective (RPO) is met by comparing transaction log backup frequency to the documented RPOLog backup interval is at or below the documented RPO<<FILL>><<FILL>><<FILL>><<FILL>>
PITR-06Confirm the restored database (not just the target row) opens and functions normallyRestored instance starts and is queryable without corruption<<FILL>><<FILL>><<FILL>><<FILL>>

7. Acceptance criteria

All test cases in section 6 pass. Any deviation is documented per <<FILL: SOP-ID for deviations>>, assessed for impact on the qualification conclusion, and either resolved with a re-test or justified with a documented risk rationale accepted by QA before the protocol is closed.

8. Deviation handling

Record any unexpected result, investigation, and disposition here or by reference to the deviation record number. A deviation does not automatically fail the protocol; the disposition and its rationale determine the outcome.

9. Summary and conclusion

<<FILL: overall pass/fail conclusion, summary of any deviations and their resolution, and a statement of whether native auditing and point-in-time recovery are qualified for GxP use on this system>>.

10. Attachments

<<FILL: list attached evidence, e.g. audit log exports, restore logs, screenshots>>.

References

21 CFR Part 11.10(c) (accurate and ready retrieval throughout the retention period) and 11.10(e) (audit trails). EU GMP Annex 11, clauses 9 (audit trails) and 17 (archiving).

Confirm the current version and clause numbers of each reference before issue.


Filled specimen (excerpt)

IDStepExpected resultActual resultPass/Fail
AUD-03Query the native audit log for the AUD-02 UPDATEEntry matching account, timestamp, statement, tableEntry found: account test_dba, 2026-07-02 14:03:11, UPDATE TEST_RESULT SET VALUE=99.9 WHERE ID=8801, table TEST_RESULTPass
AUD-05Attempt to disable native auditingDisablement blocked, or itself loggedDisablement was permitted at the platform level but generated audit entry ID 88231 recording the configuration change, account, and timestampPass
PITR-04Query the restored row at target timeMatches PITR-01 baselineBaseline was 96.1; restored copy at target time (13:58:00, one minute before the 13:59:04 change) showed 96.1, matchingPass

Summary and conclusion (excerpt): All 12 test cases passed on first execution with no deviations. Native database auditing on DB-LIMS-01 was demonstrated to capture direct data manipulation, including a configuration-disablement event, and point-in-time recovery was demonstrated to restore accurately to a specific past moment consistent with the documented 15-minute recovery point objective. The system is qualified for GxP use of these two database-tier controls.

Common inspection findings this protocol prevents

  • A claim that native auditing “should” catch a direct edit, with no test evidence it was ever actually verified to do so.
  • A disaster-recovery test that only ever exercised a full restore, never a point-in-time restore to a specific moment.
  • Audit-configuration disablement never tested, so no one actually knows whether turning auditing off leaves a trace.

How to adapt this protocol

  1. Add test cases specific to your platform’s native auditing implementation (see the platform comparison table in the database integrity article for what each major platform provides).
  2. Set the recovery point objective in PITR-05 from your documented business requirement, not an arbitrary number.
  3. Re-execute this protocol after any change to the database platform, version, or recovery configuration.
Use madhadi.com as an app Full screen, works offline, one tap from your home screen.