2010-07-22 5 views
1

ISQL-SE 4.10.DD6 (DOS 6,22):.SE 4.10 bVérifiez <filename>, SE 2.10 bVérifiez <filename.ext> et d'autres anomalies bVérifiez

BCHECK C-ISAM B-tree Checker version 4.10.DD6 

C-ISAM File: c:\dbfiles.dbs\*.* 

ERROR: cannot open C-ISAM file 

En SE2.10 il a travaillé avec wilcards * * pour tous les fichiers, mais pas dans SE4.10. J'ai un script SQL que mes utilisateurs exécutent périodiquement pour réorganiser les tables client et transactions. Ensuite, j'ai un script DOS FIX.BAT [bcheck -y *. *] Comme une option utilitaire pour mes utilisateurs au cas où des tables seraient foirées. Puisque les utilisateurs qui exécutent le reorg vont maintenant incrémenter le numéro de version de la table, par exemple: CUSTO102, 110, ... maintenant je vais devoir trouver un moyen de supprimer les extensions .DAT du répertoire .DBS et le nourrir vers BCHECK. Avant, mon reorg recréait toujours un CUSTOMER.DAT statique avec le client CREATE TABLE IN "C: \ DBFILES.DBS \ CUSTOMER"; Avant d'exécuter BCHECK sur CUSTO102, sa taille de fichier .IDX était de 22 089 octets et sa taille .DAT de 882 832 octets.

Après avoir exécuté bVérifiez sur CUSTO102, sa taille .IDX augmenté à 122,561 octets, mais un nouveau fichier .IDY a été créé avec 88,430 octets ..

Qu'est-ce qu'un fichier .IDY ???

C:\DBFILES.DBS> bcheck –y CUSTO102 

BCHECK C-ISAM B-tree Checker version 4.10.DD6 

C-ISAM File: c:\dbfiles.dbs\CUSTO102 

Checking dictionary and file sizes. 
Index file node size = 512 
Current C-ISAM index file node size = 512 
Checking data file records. 
Checking indexes and key descriptions. 
Index 1 = unique key 
    0 index node(s) used -- 1 index b-tree level(s) used 
Index 2 = duplicates (2,30,0) 
    42 index node(s) used -- 3 index b-tree level(s) used 
Index 3 = unique key (32,5,0) 
    29 index node(s) used -- 2 index b-tree level(s) used 
Index 4 = duplicates (242,4,2) 
    37 index node(s) used -- 2 index b-tree level(s) used 
Index 5 = duplicates (241,1,0) 
    36 index node(s) used -- 2 index b-tree level(s) used 
Index 6 = duplicates (46,4,2) 
    38 index node(s) used -- 2 index b-tree level(s) used 
Checking data record and index node free lists. 

ERROR: 177 missing index node pointer(s) 
Fix index node free list ? yes 

Recreating index node free list. 
Recreating index 6. 
Recreating index 5. 
Recreating index 4. 
Recreating index 3. 
Recreating index 2. 
Recreating index 1. 
184 index node(s) used, 177 free -- 1083 data record(s) used, 0 free 

Répondre

1

Le problème avec les cartes sauvages est plus probablement un problème avec l'interpréteur de commandes qui a été utilisé pour exécuter bVérifiez qu'avec bVérifiez lui-même. Si vous donnez bcheck une liste de noms de fichiers (tels que 'abc def.dat def.idx', alors il traitera les paires de fichiers C-ISAM (abc.dat, abc.idx), (def.dat, def.idx) et (def .dat, def.idx - again) Comme il se plaignait d'être incapable d'ouvrir 'c:\dbfiles.dbs\*.*', cela signifie que l'interpréteur de commandes n'a pas développé le bit '*.*', ou qu'il n'y avait rien pour l'étendre.

.

Je pense que le fichier « .IDY » est un intermédiaire utilisé lors de la reconstruction des index de la table, je ne sais pas pourquoi il n'a pas été nettoyé -. peut-être le processus n'a pas terminé

sur les tailles, je pense que votre table a environ 55 000 lignes de taille 368 octets chacune (SE pourrait dire 367; la différence est l'octet d'état d'enregistrement à la fin, qui est soit '\0' pour supprimé ou '\n' pour courant). L'index unique sur la colonne CHAR (5) (index 3) nécessite 9 octets par entrée, soit environ 56 clés par nœud d'index, pour environ 1000 nœuds d'index. Les index en double sont plus difficiles à dimensionner; Vous avez besoin d'espace pour la valeur de la clé plus une liste de numéros de 4 octets pour les doublons, le tout emballé dans des pages de 512 octets. Le fichier d'index de 22 Ko manquait de beaucoup d'informations. Le fichier d'index révisé est de la bonne taille. Notez que l'index 1 est l'index 'ROWID'; il n'occupe aucun espace. (L'index 1 est aussi pourquoi bien que chaque table créée par SE soit stockée dans un fichier C-ISAM, tous les fichiers C-ISAM ne sont pas nécessairement compatibles avec SE.)

+0

Puis je ne comprends pas pourquoi avec ISQL 2.10, bcheck était capable de processus avec *. * et 4.10 ne pourrait pas .. semble que cette version de bcheck ajoute automatiquement .IDX au (x) nom (s) fourni (s) et si je le fournis CUSTO102.DAT ou .IDX, il l'interprète comme CUSTO102.DAT.IDX L'index 22KB était le résultat de la création de la base de données, de la création de la table, du chargement du fichier .unl et de la création de tous les index et de rien d'autre, donc quelque chose ne va pas .. ISQL 4.10 (DOS) DOS 5.0, pas 6.22 comme j'utilise + mon HIMEM est la version 3.x, pas 2.x –