Kbase P167374: Can we eliminate the need for two idxbuilds when doing a dump and load and a conversion to utf-8
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  7/30/2010 |
|
Status: Verified
SYMPTOM(s):
Running proutil dbname -C convchar convert UTF-8 without indexes falsely reports successful completion
The following fields contain data requiring translation: (3963)
Total of 0 fields.
Database is encoded using UTF-8 for character data types. (3939)
Conversion complete, character encoding conversion successful. (3945)
Special characters added to the database prior to conversion are gone after running the conversion without any indexes
Running the conversion after an idxbuild on the same database retains the special characters and reports 14 fields required data translation
FACT(s) (Environment):
Database is Dumped and loaded
Ran proutil dbname -C convchar convert UTF-8 after dump and load but prior to the idxbuild
All Supported Operating Systems
Progress 9.x
OpenEdge 10.x
CAUSE:
Binary load without build option does not enforce data integrity because it does not create keys for the records it loads, after the load user is warned with the following message:
YOU SHOULD REBUILD THE FOLLOWING INDEXES IN TABLE tname.
Convchar uses index search to find what record fields need to be converted, so after step 4 as noted in the fix example below, you can not eliminate the index rebuild process.
FIX:
No, It is not possible to eliminate the need for two idxbuilds when doing a dump and load and a database conversion to utf-8. Running proutil dbname -C convchar convert UTF-8 requires the presence of indexes to work successfully. In the case of a dump and load the conversion must be run after rebuilding the indexes, not before.
Thus you will need to run the idxbuild again after the conversion to utf-8 as noted below in the step by step process to do both the dump and load and the conversion to UTF-8:
1. Create the new database - prostrct create dbname dbname.st -blocksize 8192
2. Copy in the empty8 database - procopy /opvt/v101c/empty8 dbname
3. Load in the database definitions - pro dbname (dictionary/load/df)
4. Load all the dumped files - proutil dbname -C load (dumped files) -i
5. Index rebuild the database - proutil dbname -C idxbuild all -TM 31 -TB 32 -SG 65 -T /cidx
6. Convert the database to UTF-8 - proutil dbname -C convchar convert UTF-8
7. Load the word rules for UTF-8 - proutil dbname -C word rules 254
8. Load the _tran.df file - pro dbname (dictionary/load/df/) /opt/v101c/prolong/utf/_tran.df
9. Index rebuild the database - proutil dbname -C idxbuild all -TM 31 -TB 32 -SG 65 -T /cidx