Mon expérience d'administration IBM DB2 Express-C lorsqu'il est utilisé avec 1C: Enterprise

J'ai eu la chance de travailler avec IBM DB2. Tant sur 1C que sur le serveur de Django, ce SGBD a Ă©tĂ© utilisĂ© en mĂȘme temps, il a traitĂ© les demandes OLAP assez rapidement (bien qu'il fĂ»t nĂ©cessaire de configurer manuellement les index, et du serveur Web, bien sĂ»r, pour que la rĂ©ponse soit dans les 2 secondes). En 2015, je me suis prĂ©parĂ© cette petite instruction, pour ne pas l'oublier. Et en plus du curriculum vitae, peut-ĂȘtre que quelqu'un a lu sur papier, les annĂ©es de travail restantes Ă©taient inactives. Une gĂ©nĂ©ralisation de mon expĂ©rience avec DB2. Je l'ai corrigĂ© un peu et suggĂšre de le lire ici pour Ă©largir mes horizons. Peut-ĂȘtre que quelqu'un sera intĂ©ressĂ©. Je dois dire tout de suite que depuis, je n'ai plus travaillĂ© avec DB2, tout a Ă©tĂ© oubliĂ©, mais je me souviens encore de quelque chose. La critique et les clarifications sont les bienvenues, mais comme je ne travaille plus, peut-ĂȘtre pas pour moi, mais pour quelqu'un d'autre, elles seront utiles.

Il existe de nombreuses instructions sur Internet pour organiser le travail de 1C: Enterprise avec le SGBD IBM DB2. Pour commencer, ce n'est pas mal du tout, mais pas suffisant pour une utilisation en production. J'ai prĂ©cĂ©demment recommandĂ© de commencer avec IBM DB2 avec le cours de formation Big Data University DB101RU. J'ai moi-mĂȘme suivi ce cours, rĂ©ussi l'examen en 2012, je pense que c'est trĂšs utile. Il est dommage que la ressource ait cessĂ© d'exister. Sur la nouvelle plateforme, je n'ai rien trouvĂ© de tel. En production, IBM DB2 nĂ©cessite une configuration et une maintenance supplĂ©mentaires, dont les plus nĂ©cessaires seront briĂšvement dĂ©crites ici. Nous envisageons une Ă©dition gratuite d'IBM DB2 Express-C pour les versions Windows 10.1fp2 et 10.5fp4 (la premiĂšre est prise en charge par 1C pour travailler en mode test, la seconde est officiellement prise en charge, il est dommage que les nouvelles versions ne soient payantes que). Il est judicieux d'installer 64 bits 10,5 oĂč la RAM (taille du tampon pour la vitesse) ou la taille d'enregistrement (EXTENDED_ROW_SZ = ENABLE) sont trĂšs exigeantes lorsque vous utilisez des types composites contenant de longues chaĂźnes de taille fixe.

La toute premiĂšre chose Ă  faire est de passer Ă  l'utilisation de journaux archivĂ©s afin de faire des sauvegardes sans interrompre le fonctionnement de 1C: Enterprise, et de pouvoir restaurer la base de donnĂ©es Ă  tout moment (la restauration vers 10.1fp2 a ses propres particularitĂ©s en raison d'une erreur non corrigĂ©e bug dans la version gratuite - le dĂ©placement manuel des fichiers journaux est requis). Contrairement Ă  MS SQL, l'archivage des journaux n'est pas effectuĂ© Ă  certains moments prĂ©dĂ©terminĂ©s (dans MS SQL, il n'est pas solide, il y a peut-ĂȘtre autre chose), et lorsque le fichier journal atteint une certaine taille prĂ©dĂ©terminĂ©e, il n'est pas nĂ©cessaire de sauvegarder le journal avant l'opĂ©ration de restauration, dĂ©sactivez simplement la base. L'archivage des journaux dans deux directions est facile Ă  configurer, dont l'un se trouve sur un lecteur rĂ©seau, par exemple. De plus, en cas de coupures brĂšves du rĂ©seau, l'augmentation de l'espace occupĂ© par les revues actives n'est pas significative. Pour les journaux actifs, vous devez fournir suffisamment d'espace libre pour pouvoir restaurer la base de donnĂ©es Ă  tout moment. Si pendant le travail du programmeur avec la base 1C, des retours frĂ©quents sont requis Ă  divers moments proches, une sauvegarde suffit pour restaurer, le choix des fichiers journaux pour la rĂ©cupĂ©ration est trĂšs simple. Assurez-vous d'activer la base de donnĂ©es au dĂ©but de l'instance, sinon nous obtiendrons un grand nombre de petits fichiers journaux avec activation implicite. De toute Ă©vidence, vous devez dĂ©finir la durĂ©e de stockage de sauvegarde (il me semble que vous devez stocker les journaux pendant au moins deux mois) et configurer la suppression automatique. La base et les sauvegardes (journaux) doivent se trouver sur des disques physiques diffĂ©rents, dans des cas extrĂȘmes, vous pouvez effectuer des sauvegardes sur un autre ordinateur du rĂ©seau local.

L'activation de la base est Ă©galement nĂ©cessaire pour une autre raison. Pour un fonctionnement normal, vous devez installer la maintenance en ligne et hors ligne de Windows. À ce stade, la base doit ĂȘtre active. PĂ©riodiquement, vous devez consulter l'historique de la base de donnĂ©es pour savoir quelles actions ont Ă©tĂ© effectuĂ©es pendant la fenĂȘtre hors ligne. La fenĂȘtre de maintenance hors ligne doit probablement ĂȘtre dĂ©finie entre 22h00 et 0h00, car il n'y a pas de tĂąches de maintenance 1C lourdes pour le moment. Peut-ĂȘtre que pour les petites bases, une fenĂȘtre d'une heure suffit.

Périodiquement, vous devez exécuter une vérification de la nécessité d'une réorganisation en mode manuel et, aprÚs avoir analysé l'état des tables et des index, effectuer une réorganisation des objets individuels. La réorganisation manuelle de plusieurs milliers de tables et d'index peut prendre du temps. L'analyse est facilement accélérée par un simple filtre (sur .js, par exemple) utilisant regexp.

AUTOCONFIGURE, bien sĂ»r, doit ĂȘtre effectuĂ©e pĂ©riodiquement, en corrigeant manuellement les paramĂštres individuels, par exemple, en dĂ©finissant votre propre taille de fichier journal.

AprĂšs une journĂ©e, il est possible et plus souvent d'effectuer une sauvegarde en ligne de la base de donnĂ©es (ne nĂ©cessite pas un arrĂȘt et la prĂ©sence d'un DBA), la frĂ©quence dĂ©pend du temps de rĂ©cupĂ©ration requis, qui Ă  son tour dĂ©pend du nombre de fichiers journaux d'archivage aprĂšs la derniĂšre sauvegarde, c'est-Ă -dire de la charge sur la base de donnĂ©es. Pour les bases de donnĂ©es moyennes, grandes et lourdement chargĂ©es, il est judicieux d'utiliser diffĂ©rents types de sauvegardes incrĂ©mentielles afin de rĂ©duire l'espace occupĂ© par les sauvegardes et de rĂ©duire le temps de rĂ©cupĂ©ration Ă  partir des sauvegardes. AprĂšs chaque sauvegarde et avant la restauration, vĂ©rifiez l'intĂ©gritĂ© des sauvegardes. La durĂ©e de stockage de sauvegarde est Ă  la discrĂ©tion du DBA, mais pas infĂ©rieure Ă  la durĂ©e de stockage des journaux.

Au moins une fois par mois, effectuez des vĂ©rifications de l'Ă©tat de la base de donnĂ©es hors ligne et en ligne (en mode hors ligne, le travail avec la base de donnĂ©es est suspendu pendant plusieurs minutes) et, si nĂ©cessaire, effectuez des rĂ©parations (le plus important pour les «serveurs» sans onduleur). Effectuez une sauvegarde hors ligne de la base de donnĂ©es sur une base mensuelle, seules les sauvegardes hors ligne seront stockĂ©es pendant une longue pĂ©riode, car lorsque vous modifiez la version de DB2, la sauvegarde en ligne ne sera pas possible de dĂ©ployer. Si «1C: Enterprise» ne permet mĂȘme pas une traduction Ă  court terme de la base de donnĂ©es hors ligne pour vĂ©rification ou sauvegarde, il est possible d'effectuer les actions indiquĂ©es dans une copie dĂ©veloppĂ©e de la base de donnĂ©es. La base de donnĂ©es est restaurĂ©e de la sauvegarde vers un autre emplacement sans aucun problĂšme, par exemple, sur un autre disque sur un autre serveur. Il convient de noter que les sauvegardes et les journaux archivĂ©s peuvent ĂȘtre compressĂ©s Ă  l'aide des outils DB2 (dans ce cas, l'outil de vĂ©rification des sauvegardes reste fonctionnel et l'outil de vĂ©rification des journaux archivĂ©s ne fonctionne pas).

Avant de vérifier hors ligne la base de données et la sauvegarde hors ligne, vous devez définir la base de données et les tùches planifiées à verrouiller. En cas d'urgence, vous pouvez faire avec la stabilisation de la base de données, mais comme l'utilisateur sous lequel le serveur 1C: Enterprise est exécuté est inclus dans le groupe SYSADM_GROUP, cela n'annulera pas la possibilité de connecter 1C à la base de données au mauvais moment et, par conséquent, nécessitera une seconde lancement de l'emploi.

Si la base de donnĂ©es ne fonctionne pas rapidement, vous devez, aprĂšs la mise Ă  jour des statistiques, obtenir les plans de requĂȘte les plus sĂ©vĂšres, expĂ©rimenter les index dans 1C dans une copie de la base de donnĂ©es, suivre les modifications apportĂ©es au plan de requĂȘte dans IBM Data Studio (dans ce cas, l'utilisation d'Eclipse est justifiĂ©e, dans d'autres cas, cela suffit pour faire avec l'interface de commande ou utilisez les recommandations de DB2 Design Advisor et, si nĂ©cessaire, crĂ©ez manuellement des index en dehors de 1C. Dans le mĂȘme temps, commencez Ă  collecter des informations dĂ©taillĂ©es sur les performances Ă  l'aide des outils DB2 (plus d'une douzaine de scripts SQL) et analysez la charge avec le moniteur systĂšme. Pour rĂ©duire la charge sur le systĂšme de disques, la base de donnĂ©es doit ĂȘtre installĂ©e sur un disque haute vitesse distinct de taille suffisante (sauf, bien sĂ»r, si une matrice de disques de serveur RAID 10 normale est disponible), il est possible de placer des journaux actifs sur le SSD avec le systĂšme d'exploitation. Probablement, vous devrez Ă©galement modifier l'emplacement des tempos du serveur 1C: Enterprise. Si l'achat d'un disque n'est prĂ©vu que pour les petites organisations, il est permis d'utiliser temporairement un seul disque physique pour la base de donnĂ©es.

Examinez quotidiennement db2diag.log pour les erreurs, ainsi que les rĂ©sultats des actions avec la base de donnĂ©es. Archivez lorsque vous atteignez une taille de plusieurs dizaines de mĂ©gaoctets. Far Manager peut ĂȘtre un moyen pratique d'afficher le journal (il est supposĂ© qu'il y a peu d'erreurs dans la base de donnĂ©es), il vous sera Ă©galement utile si vous devez dĂ©placer manuellement les journaux d'archivage Ă  restaurer Ă  un moment donnĂ©.

Un des avantages compĂ©titifs d'IBM DB2, comme il me semble, peut ĂȘtre considĂ©rĂ© que dans les cas oĂč pour le fonctionnement normal de MS SQL Server un serveur 1C: Enterprise 64 bits est requis, IBM DB2 peut le faire avec 32 bits.

UPD: Peut-ĂȘtre, il n'a pas fait attention lors de la vĂ©rification des versions de DB2 prises en charge par 1C: Enterprise avant la publication. Dans l'original de ce texte de 2015, environ 10,5 images par seconde, il Ă©tait dit: lorsqu'il est utilisĂ© avec 1C: Enterprise, "aucune erreur n'a encore Ă©tĂ© dĂ©tectĂ©e". C'est-Ă -dire, pour le moment, du nouvel Express-C, seul le 10.1 est possible (avec ses fonctionnalitĂ©s et ses limites). Aujourd'hui, seulement 11,1 sont officiellement pris en charge. Il est possible que quelqu'un ait suffisamment de Developer-C avec une taille de base de donnĂ©es allant jusqu'Ă  100 Go. Je n'ai pas modifiĂ© le lien vers la documentation - il est facile de basculer ici.

UPD: J'ai tout relu, cela devrait probablement ĂȘtre clair pour quelqu'un qui traitait avec DB2, mais peut-ĂȘtre qu'une clarification est nĂ©cessaire pour ceux qui sont nouveaux dans l'utilisation de ce SGBD, par exemple
devrait voir l'histoire de la base
devrait apporter ici aussi
effectuer des vérifications de l'état de la base de données hors ligne et en ligne
ici , ici et ici , mais dans ce dernier cas, il peut dĂ©jĂ  ĂȘtre nĂ©cessaire
un tel fichier batch
@echo off
setlocal
db2 list applications for db %1 && exit /b
set active=no
db2 list active databases | findstr /i /r "=\ %1$" >nul && set active=yes
if %active%==yes db2 deactivate db %1 || (db2 activate db %1 & exit /b)
db2 CONNECT TO %1
db2 QUIESCE DATABASE IMMEDIATE FORCE CONNECTIONS
db2 CONNECT RESET
::db2set DB2_DIRECT_IO=OFF
db2dart %1 /RPT . /ERR E
::db2set DB2_DIRECT_IO=
db2 CONNECT TO %1
db2 UNQUIESCE DATABASE
db2 CONNECT RESET
if %active%==yes db2 activate db %1


Et voici
L'analyse est facilement accélérée par un simple filtre (sur .js, par exemple) utilisant regexp.
peut causer des difficultĂ©s, je ne sais pas si quelqu'un le fait, s'appuie sur l'automatisation, le maximum est limitĂ© Ă  cette requĂȘte: db2 "SELECT substr(TABSCHEMA,1,20), substr(TABNAME,1,20) FROM SYSIBMADM.ADMINTABINFO WHERE REORG_PENDING = 'Y'" Cependant
obtenir facilement les informations dont vous avez besoin
Pour ce faire, exĂ©cutez d'abord cette commande db2 -x "select 'reorgchk update statistics on table',substr(rtrim(tabschema)||'.'||rtrim(tabname),1,50),';' from syscat.tables where type = 'T' " > reorgchk.out db2 -x "select 'reorgchk update statistics on table',substr(rtrim(tabschema)||'.'||rtrim(tabname),1,50),';' from syscat.tables where type = 'T' " > reorgchk.out puis db2 -tvf reorgchk.out > reorgchk.txt et enfin reorg_filter.js reorgchk.txt Voici le script WSH reorg_filter.js qui affiche une liste des objets potentiellement problĂ©matiques, qui devrait trĂšs probablement ĂȘtre petit si les fenĂȘtres de maintenance sont correctement installĂ©es:
 var block = "", include = false, fso = new ActiveXObject("Scripting.FileSystemObject"); var input = fso.OpenTextFile(WScript.Arguments.Item(0), 1, false); var output = fso.CreateTextFile(WScript.ScriptFullName.replace(/\.js/i, ".txt"), true); while(!input.AtEndOfStream){ line = input.ReadLine(); if(/^reorgchk\s/i.test(line)){ if(include)output.WriteLine(block); block = ""; include = false; } block += line + "\n"; if(/\s([-*]{3}|[-*]{5})\s+$/.test(line))if(/\*/.test(RegExp.$1))include = true; } if(include)output.WriteLine(block); 

Ensuite, analysez la description et lancez la rĂ©organisation des objets sĂ©lectionnĂ©s ou augmentez la fenĂȘtre de maintenance hors ligne. AprĂšs plusieurs itĂ©rations, il devient clair quels objets ne font pas de rĂ©organisation.
J'espÚre que je n'ai rien confondu, j'ai remonté les archives de scripts de cinq ans, probablement sur ordonnance. Je ne sais pas si ce supplément sera utile à quiconque.

Liens vers les ressources / fichiers mentionnés


Les informations de base, Ă  l'exception de celles obtenues lors de cours qui n'existent plus, peuvent ĂȘtre trouvĂ©es ici (alors le lien Ă©tait diffĂ©rent).

Beaucoup a déjà été oublié, mais un lien vers le document pdf «Meilleures pratiques. Réglage et surveillance des performances du systÚme de base de données »a été trouvé (le lien est maintenant nouveau, l'ancien wiki cesse d'exister à partir du 2020-01-01, mais ici tout n'est pas encore assez stable jusqu'à présent).
Si le lien cesse de fonctionner, le nom et les hachages du fichier:
Nom: DB2BP_System_Performance_0813.pdf
SHA384: 180E EF56 DB7F 70DE A514 981C 2718 ADD1 5702 D142 ABFD 090C A2B1 529C E918 B7AE DD08 7C7E B36C 3466 C843 C808 D4DA DE66
SHA256: A1B3 C600 B28A 8B9F 25ED 4AC3 F6C2 C6BB F884 BDA5 4121 DA1A 9C05 D0B0 F5CF D84E
MD5: F086 F0DD 6CFC 4DAB 4723 FBE4 A2BE AB41
SHA512: 6C86 B044 7F60 1DDA AFA5 D726 A6C2 9B29 68DD 3A90 1606 DA17 0464 5213 C0B0 B3C8 E636 221A 316D 151F 7E05 2B6D 55EB 95FC 09E7 B1AD 8CFE 0848 AB9F 9408 D214 35
SHA1: 7911 0741 2E6C FD6B 4B5B F639 5C0D 48D8 3528 A64D

Source: https://habr.com/ru/post/fr465981/


All Articles