Huge news!Announcing our $20M Series A led by Andreessen Horowitz.Learn more
Log inDemoInstall


Package Overview
File Explorer


Check if all data from a ZODB can be loaded


Version published




Verify a ZODB by iterating and loading all records.
Problems are reported in detail.
A debugger is provided, together with decompilation information.

zodbverify is available as a standalone script and as addon for `plone.recipe.zope2instance`.



The verification runs on a plain ZODB file.
The Zope application is not started.

Run i.e.::

    bin/zodbverify -f var/filestorage/Data.fs


    zodbverify [-h] -f ZODBFILE [-D] [-o OID]

    Verifies that all records in the database can be loaded.

    optional arguments:
      -h, --help            show this help message and exit
      -f ZODBFILE, --zodbfile ZODBFILE
                            Path to file-storage
      -D, --debug           pause to debug broken pickles
      -o OID, --oid OID     oid to inspect

plone.recipe.zope2instance integration

The verification runs in the context of the initialized Zope application.


    ./bin/instance zodbverify [-h] [-D] [-o OID]

    Verifies that all records in the database can be loaded.

    optional arguments:
      -h, --help         show this help message and exit
      -D, --debug        pause to debug broken pickles
      -o OID, --oid OID  oid to inspect

Inspecting a single oid

The output of zodbverify gives you a list of all problems and the oid that are affected.

To inspect a single oid in detail you can pass one of these to zodbverify::

  ./bin/instance zodbverify -o 0x2e929f

This will output the pickle and the error for that oid.

By also adding the debug-switch you will get two pdb's while the script runs::

  ./bin/instance zodbverify -o 0x2e929f -D

  2020-03-11 10:40:24,972 INFO    [Zope:45][MainThread] Ready to handle requests
  The object is 'obj'
  The Zope instance is 'app'
  [4] > /Users/pbauer/workspace/dipf-intranet/src-mrd/zodbverify/src/zodbverify/
  -> pickle, state = storage.load(oid)

In the first pdb you have the object for the oid as `obj` and the zope instance as `app`. Before the second pdb the pickle will be disassembled the same way as when using zodbverify to pause to debug broken pickles without passing a oid.

Source Code

Contributors please read the document `Process for Plone core's development <>`_

Sources are at the `Plone code repository hosted at Github <>`_.


.. You should *NOT* be adding new change log entries to this file.
   You should create a file in the news directory instead.
   For helpful instructions, please see:

.. towncrier release notes start

1.2.0 (2022-07-06)

New features:

- Improve debugging output: show all objects that reference a oid.
  See `Philip's blog post <>`_ for more information.
  See also discussion in `pull request 8 <>`_.
  [pbauer] (#8)

1.1.0 (2020-04-22)

New features:

- Show the affected oids for each error.
  Inspect a single oid.
  The idea is to run zodbverify on the whole database and from the output copy one oid and run it again to further inspect that object.
  [pbauer] (#6)

Bug fixes:

- Minor packaging updates. (#1)

1.0.2 (2019-08-08)

Bug fixes:

- Open Data.fs in read only mode. (#2)

1.0.1 (2019-05-09)

Bug fixes:

- Fix project description. [jensens] (#1)

1.0 (2019-05-09)

New features:

- Initial effort.
  Base code taken from `Products.CMFPlone` (created by @davisagli).
  Enhanced and packaged for more general Zope use.
  [dwt,jensens] (#1)



Last updated on 06 Jul 2022

Did you know?

Socket installs a GitHub app to automatically flag issues on every pull request and report the health of your dependencies. Find out what is inside your node modules and prevent malicious activity before you update the dependencies.

SocketSocket SOC 2 Logo


  • Package Issues
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc