Technote (troubleshooting)
Problem(Abstract)
During regularly scheduled backups the command performs an oncheck and the compver table error can be detected while performing the oncheck call when using IBM Rational Synergy.
Symptom
Checking Informix Database "xxxxdb"...
Checking Table Space data ...
Checking Catalogs and Indexes ...
WARNING:No syssyntable records found.
Validating indexes for xxxxdb:informix.syserrors...
ERROR: Keys in node 0x4 are not in order.
ERROR: Index cv_name for xxxxdb:ccm_root.compver is bad.
Corruption found in Informix database /ccmdb/xxxxdb/db.
Checking Number of Extents ...
WARNING: summary of INFORMIX oncheck output has been saved in
'/tmp/ccmdb_check_inf_16590'
Contents of '/tmp/ccmdb_check_inf_16590' :
Validating indexes for xxxxdb:ccm_root.compver...
Index cv_id
Index fragment partition ccm in DBspace ccm
Index cv_name
Index fragment partition ccm in DBspace ccm
ERROR: Keys in node 0x4 are not in order.
ERROR: Index cv_name for xxxxdb:ccm_root.compver is bad.
Index cv_cvtype
Index fragment partition ccm in DBspace ccm
Please Drop and ReCreate Index cv_name for xxxxdb:ccm_root.compver.
Cause
This error is caused by multiple records in the compver table that have the same name, version, cvtype, and subsystem.
Environment
Informix Synergy Server environment.
Diagnosing the problem
Running backups and seeing the errors noted above.
Resolving the problem
- Log in to the server as user ccm_root and set the environment variables.
(bourne shell example):
CCM_HOME=<install area path>; export CCM_HOME
INFORMIXDIR=$CCM_HOME/informix; export INFORMIXDIR
ONCONFIG=<SERVERNAME>; export ONCONFIG
INFORMIXSERVER=<SERVERNAME>; export INFORMIXSERVER
PATH=$CCM_HOME/bin:$INFORMIXDIR/bin:$PATH; export PATH
Note: replace the values between the angled brackets < >, omitting these brackets.
- Run the command:
echo "unload to 'xxxxdb.compver' select
id,name,version,cvtype,subsystem from compver" | dbaccess xxxxdb-
This creates the file xxxxdb.compver. This file has 5 fields delimited by "|". The goal is to find the two rows whose last four fields are identical. (The first field is a unique row identifier).
- Delete all but one of each duplicate. To delete an object from the database using SQL (Informix), set the above environment variables as user ccm_root and use these commands:
echo 'DELETE FROM compver where id=NNNNN;
DELETE FROM attrib WHERE is_attr_of=NNNNN;
DELETE FROM bind WHERE has_child=NNNNN;
DELETE FROM relate WHERE from_cv=NNNNN OR to_cv=NNNNN;' | dbaccess xxxxdb -
Rate this page:
Copyright and trademark information
IBM, the IBM logo and ibm.com are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at www.ibm.com/legal/copytrade.shtml.