[root@xen-test ~]# yum update
Loaded plugins: security
rpmdb: Lock table is out of available locker entries
rpmdb: Unknown locker ID: 196a
error: db4 error(22) from db->close: Invalid argument
error: cannot open Packages index using db3 - Cannot allocate memory (12)
error: cannot open Packages database in /var/lib/rpm
Traceback (most recent call last):
File "/usr/bin/yum", line 29, in ?
yummain.user_main(sys.argv[1:], exit_code=True)
File "/usr/share/yum-cli/yummain.py", line 229, in user_main
errcode = main(args)
File "/usr/share/yum-cli/yummain.py", line 84, in main
base.getOptionsConfig(args)
File "/usr/share/yum-cli/cli.py", line 184, in getOptionsConfig
enabled_plugins=self.optparser._splitArg(opts.enableplugins))
File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 191, in _getConfig
self._conf = config.readMainConfig(startupconf)
File "/usr/lib/python2.4/site-packages/yum/config.py", line 754, in readMainConfig
yumvars['releasever'] = _getsysver(startupconf.installroot, startupconf.distroverpkg)
File "/usr/lib/python2.4/site-packages/yum/config.py", line 824, in _getsysver
idx = ts.dbMatch('provides', distroverpkg)
TypeError: rpmdb open failed


I faced an issue about yum as well right now. Not sure what's the exact reason for this issue. but it's not so difficult to fix it. Generally google lists two ways to fix it:

1, re-recreate /dev/urandom.

2, To recover "rpmdb open failed" I have deleted all the __db* files in
Code:
rm -f /var/lib/rpm/__db.00*
The first way doesn't work on my side, while the second one does well.