Général:Concepts : Différence entre versions

De WikiFr_dbSQWare
Aller à : navigation, rechercher
(Personnalisation des variables)
(Structure générale de l’outil)
 
(43 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 4 : Ligne 4 :
 
Pour plus d’informations, http://www.dbsqware.com.<br>
 
Pour plus d’informations, http://www.dbsqware.com.<br>
 
<br>
 
<br>
Avant de vous lancer dans l’installation, lisez également la section [[DbSQWare:InstallationSocle|« Installation socle », elle vous permettra de réaliser une installation standard du socle central.
+
Avant de vous lancer dans l’installation, lisez également la section [[DbSQWare:InstallationSocle|« Installation socle »]], elle vous permettra de réaliser une installation standard du socle central.<br>
 +
<br>
  
 
===dbSQWare, c’est quoi ?===
 
===dbSQWare, c’est quoi ?===
dbSQWare<sup>TM</sup> permet de fédérer l’exploitation des bases de données Oracle, Sybase, SqlServer, MySQL, DB2, PostgreSQL, MongoDB, Cassandra, … grâce à un socle commun et homogène. La conception de cette plate-forme apporte une grande souplesse d’utilisation, de personnalisation et une approche unifiée concernant l’exploitation et le rendu des indicateurs sur l’ensemble des types de SGBD gérés par l’outil.<br>
+
dbSQWare permet de fédérer l’exploitation des bases de données Oracle, Sybase, SqlServer, MySQL, DB2, PostgreSQL, MongoDB, Cassandra, … grâce à un socle commun et homogène. La conception de cette plate-forme apporte une grande souplesse d’utilisation, de personnalisation et une approche unifiée concernant l’exploitation et le rendu des indicateurs sur l’ensemble des types de SGBD gérés par l’outil.<br>
 +
Ce n'est ni un outil d'administration, ni un outil de monitoring (pas de supervision mais un complément à celle-ci).<br>
 +
<br>
 
Le produit est destiné (pour sa partie scripts) à des environnements Unix/Linux uniquement car il est essentiellement écrit en shell ksh et sql (même MsSql est géré à 100% depuis unix grâce à une connexion FreeTds, pour plus d’information http://www.freetds.org/). La partie web, pour sa part, est écrite en PHP et javascript (jQuery).<br>
 
Le produit est destiné (pour sa partie scripts) à des environnements Unix/Linux uniquement car il est essentiellement écrit en shell ksh et sql (même MsSql est géré à 100% depuis unix grâce à une connexion FreeTds, pour plus d’information http://www.freetds.org/). La partie web, pour sa part, est écrite en PHP et javascript (jQuery).<br>
 
Pour les SGBD autre que MsSql se trouvant sous Windows, un certain nombre de fonctionnalités (mais pas toutes) sont accessibles grâce à une connexion sql distante (pour les scripts le supportant).<br>
 
Pour les SGBD autre que MsSql se trouvant sous Windows, un certain nombre de fonctionnalités (mais pas toutes) sont accessibles grâce à une connexion sql distante (pour les scripts le supportant).<br>
 
+
<br>
 
Liste des SGBD supportés à l’heure actuelle :
 
Liste des SGBD supportés à l’heure actuelle :
 
*Oracle
 
*Oracle
Ligne 21 : Ligne 24 :
 
*Teradata
 
*Teradata
 
*Cassandra
 
*Cassandra
 +
*Adabas
 
*Ingres
 
*Ingres
 +
<br>
  
===Une recherche de l’ »Homogénéité »===
+
===Une recherche de l’ « Homogénéité »===
 
Dans l’utilisation :
 
Dans l’utilisation :
 
*Utilisation homogène, quel que soit le SGBD
 
*Utilisation homogène, quel que soit le SGBD
 
*Adaptation aisée par fichiers de configuration et/ou passage d’arguments
 
*Adaptation aisée par fichiers de configuration et/ou passage d’arguments
 
*Une seule version de l’outil sur l’ensemble du parc (synchronisation par rsync)
 
*Une seule version de l’outil sur l’ensemble du parc (synchronisation par rsync)
*Les scripts s’adaptent à la version du SGBD traité (un seul script pour une action. Exemple : le script d’indicateurs oracle supporte de la v7 à la 12c multitenant architecture)
+
*Les scripts s’adaptent à la version du SGBD traité (un seul script pour une action. Exemple : le script d’indicateurs oracle supporte de la v7 à la 19c multi-tenant architecture)
 
*Lancement sans argument
 
*Lancement sans argument
 
*Aide en ligne (arguments et exemples)
 
*Aide en ligne (arguments et exemples)
*Exécution "à blanc" pour valider la syntaxe (flag –Exec)<br>
+
*Exécution "à blanc" (dry run) pour valider la syntaxe (flag -Exec)<br>
 
+
<br>
 
Dans le développement et les évolutions :
 
Dans le développement et les évolutions :
 
*Conception homogène pour l’ensemble des SGBD
 
*Conception homogène pour l’ensemble des SGBD
Ligne 39 : Ligne 44 :
 
*Modification du comportement par surcharge des librairies
 
*Modification du comportement par surcharge des librairies
 
*Ensemble de librairies shell standards pouvant être intégrées dans des scripts customs
 
*Ensemble de librairies shell standards pouvant être intégrées dans des scripts customs
 +
<br>
  
 
===Structure générale de l’outil===
 
===Structure générale de l’outil===
  
dbSQWare<sup>TM</sup> est composé de quatre modules complémentaires.<br>
+
dbSQWare est composé de quatre modules complémentaires.<br>
 
<br>
 
<br>
SQWareProduction<sup>TM</sup> est le module d'exploitation en local (ou à distance pour 80% des fonctionnalités) des SGBD. Il permet de gérer l'exploitation au sens large des SGBD :
+
SQWareProduction est le module d'exploitation en local (ou à distance pour 80% des fonctionnalités) des SGBD. Il permet de gérer l'exploitation au sens large des SGBD :
 
*Sauvegardes
 
*Sauvegardes
 
*Restaurations
 
*Restaurations
Ligne 52 : Ligne 58 :
 
*Lancement de commandes unix en parallèle
 
*Lancement de commandes unix en parallèle
 
*...<br>
 
*...<br>
Ce module collecte également un certain nombre d'indicateurs qui sont remontés sur le référentiel de base de données SQWareRepository<sup>TM</sup>. Ce module est composé d'une partie par SGBD géré ainsi que d’une partie « core » comprenant un ensemble de paramétrages et de fonctions génériques à tous les SGBD. Les scripts sont tous écrits selon la même norme de développement (parsing d’arguments, aide en ligne, envoi de mail sur erreur, remontée d’indicateurs dans SQWareRepository<sup>TM</sup>, …).<br>
+
Ce module collecte également un certain nombre d'indicateurs qui sont remontés sur le référentiel de base de données SQWareRepository. Ce module est composé d'une partie par SGBD géré ainsi que d’une partie « core » comprenant un ensemble de paramétrages et de fonctions génériques à tous les SGBD. Les scripts sont tous écrits selon la même norme de développement (parsing d’arguments, aide en ligne, envoi de mail sur erreur, remontée d’indicateurs dans SQWareRepository, …).<br>
 
<br>
 
<br>
SQWareRepository<sup>TM</sup> est le module de gestion du référentiel et des indicateurs en base de données :<br>
+
SQWareRepository est le module de gestion du référentiel et des indicateurs en base de données :<br>
 
Il permet de gérer le référentiel ainsi que les indicateurs stockés en bases de données.<br>
 
Il permet de gérer le référentiel ainsi que les indicateurs stockés en bases de données.<br>
Il s’agit d’une database MySQL, avec des tables génériques ainsi que des tables spécifiques en fonction du SGBD traité (le référentiel unique est apparu en v3.0).<br>
+
Il s’agit d’une database MySQL (>= 5.6) ou MariaDB (>= 10.1), avec des tables génériques ainsi que des tables spécifiques en fonction du SGBD traité.<br>
 
<br>
 
<br>
SQWareCentral<sup>TM</sup> est le module central de l’outil. Il permet de gérer l'ensemble du parc depuis ce point central :<br>
+
SQWareCentral est le module central de l’outil. Il permet de gérer l'ensemble du parc depuis ce point central :<br>
 
*Collectes centralisées d’indicateurs
 
*Collectes centralisées d’indicateurs
*Déploiement de SQWareProductionTM par rsync
+
*Déploiement de SQWareProduction par rsync
 
*Gestion de recherche « full text » dans les référentiels
 
*Gestion de recherche « full text » dans les référentiels
 
*Connexion simplifiée par ssh aux différentes instances du parc…
 
*Connexion simplifiée par ssh aux différentes instances du parc…
 
*Génération de fichier CMDB
 
*Génération de fichier CMDB
 
*Check centralisé des indicateurs<br>
 
*Check centralisé des indicateurs<br>
 
+
<br>
Ce module se base entre autres sur le référentiel, SQWareRepositoryTM (génération dynamique des listes d’instances à traiter, …). Il est composé d’une partie « core », commune à tous les SGBD exploités et d’un plugin spécifique pour chaque SGBD (Oracle, Sybase, MsSql, MySQL, DB2, PostgreSQL, MongoDB, Cassandra, …).<br>
+
Ce module se base entre autres sur le référentiel, SQWareRepository (génération dynamique des listes d’instances à traiter, …).<br>
En général, l’installation du point central se fait sur une VM (1 vCPU et 2 Go de RAM) CentOS 6.x 64bits. Vous pouvez évidemment l’installer sur un autre type de Linux/Unix.<br>
+
Il est composé d’une partie « core », commune à tous les SGBD exploités et d’un plugin spécifique pour chaque SGBD (Oracle, Sybase, MsSql, MySQL, DB2, PostgreSQL, MongoDB, Cassandra, …).<br>
 
+
En général, l’installation du point central se fait sur une VM Rocky Linux release 8.8 (Green Obsidian) 64 bits (2 vCPU et 4 Go de RAM). Vous pouvez évidemment l’installer sur un autre type de Linux/Unix.<br>
SQWareWeb<sup>TM</sup> est le module de restitution graphique web des indicateurs :<br>
+
<br>
Il fonctionne avec apache 2.x et est écrit en PHP (5.2 ou 5.3), javascript (jQuery).<br>
+
SQWareWeb est le module de restitution graphique web des indicateurs :<br>
 +
Il fonctionne avec apache 2.x et est écrit en PHP (support en principe de 5.x à 7.x), javascript (jQuery).<br>
 
Il permet de faire la présentation des indicateurs et capacity planning sous forme :
 
Il permet de faire la présentation des indicateurs et capacity planning sous forme :
 
*Graphiques (javascript)
 
*Graphiques (javascript)
Ligne 76 : Ligne 83 :
 
*Exports Excel
 
*Exports Excel
 
*...<br>
 
*...<br>
 
+
<br>
Il se base entièrement sur les données contenues dans le référentiel de base de données SQWareRepository<sup>TM</sup>. Aucune connexion aux bdd clientes, l’interface ne sert qu’à la restitution des indicateurs et au paramétrage du référentiel.<br>
+
Il se base entièrement sur les données contenues dans le référentiel de base de données SQWareRepository.<br>
Les restitutions sont présentées sensiblement de la même façon quel que soit le SGBD (aux spécificités près de celui-ci), ce qui rend plus agréable et plus aisée la navigation. Ce module est composé d’une partie « core », commune à tous les SGBD gérés, (moteur de templates, affichage graphiques, tableaux, ...) et d’un plugin spécifique pour chaque SGBD.<br>
+
Aucune connexion aux bdd clientes, l’interface ne sert qu’à la restitution des indicateurs et au paramétrage du référentiel.<br>
 +
Les restitutions sont présentées sensiblement de la même façon quel que soit le SGBD (aux spécificités près de celui-ci), ce qui rend plus agréable et plus aisée la navigation.<br>
 +
Ce module est composé d’une partie « core », commune à tous les SGBD gérés, (moteur de templates, affichage graphiques, tableaux, ...) et d’un plugin spécifique pour chaque SGBD.<br>
  
 
==Normalisation==
 
==Normalisation==
Ligne 95 : Ligne 104 :
 
Ensuite, pour le niveau sous les modules, il existe un répertoire « generic » contenant tout ce qui est multi-sgbd et un répertoire par sgbd supporté.<br>
 
Ensuite, pour le niveau sous les modules, il existe un répertoire « generic » contenant tout ce qui est multi-sgbd et un répertoire par sgbd supporté.<br>
 
Voici ce que cela donne :
 
Voici ce que cela donne :
*cassandra => spécifique pour Cassandra
+
<pre>
*db2 => spécifique pour DB2
+
cassandra => spécifique pour Cassandra
*generic => générique à tous les moteurs
+
db2 => spécifique pour DB2
*ingres => spécifique pour Ingres
+
generic => générique à tous les moteurs
*mongodb => spécifique pour MongoDB
+
ingres => spécifique pour Ingres
*mssql => spécifique pour MsSql
+
mongodb => spécifique pour MongoDB
*mysql => spécifique pour MySQL
+
mssql => spécifique pour MsSql
*oracle => spécifique pour Oracle
+
mysql => spécifique pour MySQL
*postgres => spécifique pour PostgreSQL
+
oracle => spécifique pour Oracle
*sybase => spécifique pour Sybase ASE
+
postgres => spécifique pour PostgreSQL
*sybrep => spécifique pour Sybase RS
+
sybase => spécifique pour Sybase ASE
*teradata => spécifique pour teradata
+
sybrep => spécifique pour Sybase RS
 +
teradata => spécifique pour teradata
 +
adabas          => spécifique pour adabas
 +
</pre>
 
<br>
 
<br>
 
Puis, pour les arborescences contenant des scripts, vous trouverez des répertoires comme suivant. Les répertoires de la forme *_cust sont dédiés à la customisation de votre environnement, autant que possible, ne touchez qu’aux scripts et fichiers de configuration de ces arborescences, cela vous facilitera les mises à jours de l’outil (sauf bug spécifique, il n’y a pas de raison de toucher aux arborescences standards si vous suivez les préconisations de personnalisation).<br>
 
Puis, pour les arborescences contenant des scripts, vous trouverez des répertoires comme suivant. Les répertoires de la forme *_cust sont dédiés à la customisation de votre environnement, autant que possible, ne touchez qu’aux scripts et fichiers de configuration de ces arborescences, cela vous facilitera les mises à jours de l’outil (sauf bug spécifique, il n’y a pas de raison de toucher aux arborescences standards si vous suivez les préconisations de personnalisation).<br>
 
Contenu des répertoires :
 
Contenu des répertoires :
*bin => scripts standards
+
<pre>
*bin_cust => scripts customs pour votre environnement
+
bin => scripts standards
*etc => fichiers standards de configuration (variables globales)
+
bin_cust => scripts customs pour votre environnement
*etc_cust => fichiers customs de configuration (surchargent les standards)
+
etc => fichiers standards de configuration (variables globales)
*help => fichiers standards d’aide
+
etc_cust => fichiers customs de configuration (surchargent les standards)
*help_cust => fichiers customs d’aide pour votre environnement
+
help => fichiers standards d’aide
*lib => librairies standards de fonctions shell
+
help_cust => fichiers customs d’aide pour votre environnement
*lib_cust => librairies customs de fonctions shell (surchargent les standards)
+
lib => librairies standards de fonctions shell
*tools => scripts standards utilisés ponctuellement
+
lib_cust => librairies customs de fonctions shell (surchargent les standards)
*tools_cust => scripts customs utilisés ponctuellement pour votre environnement
+
tools => scripts standards utilisés ponctuellement
*menu => menus (shell) standards
+
tools_cust => scripts customs utilisés ponctuellement pour votre environnement
*menu_cust => menus customs pour votre environnement
+
menu => menus (shell) standards
 +
menu_cust => menus customs pour votre environnement
 +
</pre>
 
<br>
 
<br>
 
Voici donc, par exemple, ce que cela donne pour SQWareProduction Oracle et Générique :
 
Voici donc, par exemple, ce que cela donne pour SQWareProduction Oracle et Générique :
Ligne 149 : Ligne 163 :
 
</pre>
 
</pre>
 
<br>
 
<br>
 +
 
====Fichiers (arborescence scripts)====
 
====Fichiers (arborescence scripts)====
 
La majorité des fichiers sont nommés avec un préfixe de la forme :
 
La majorité des fichiers sont nommés avec un préfixe de la forme :
Ligne 161 : Ligne 176 :
 
sqwter_* => pour Teradata
 
sqwter_* => pour Teradata
 
sqwcas_* => pour Cassandra
 
sqwcas_* => pour Cassandra
 +
sqwada_* => pour Adabas
 
sqwing_* => pour Ingres
 
sqwing_* => pour Ingres
 
sqwgen_* => pour les génériques (multi SGBD)
 
sqwgen_* => pour les génériques (multi SGBD)
Ligne 167 : Ligne 183 :
 
<br>
 
<br>
 
La majorité des fichiers sont nommés avec un suffixe de la forme :
 
La majorité des fichiers sont nommés avec un suffixe de la forme :
 +
<pre>
 
*.ksh => pour les scripts shell
 
*.ksh => pour les scripts shell
 
*.cfg => pour les fichiers de configuration (variables globales)
 
*.cfg => pour les fichiers de configuration (variables globales)
 
*.lib => pour librairies de fonctions shell
 
*.lib => pour librairies de fonctions shell
 
*.hlp => pour les fichiers d’aide
 
*.hlp => pour les fichiers d’aide
 +
</pre>
 +
<br>
  
 
====Fichiers (arborescence web)====
 
====Fichiers (arborescence web)====
Ligne 183 : Ligne 202 :
 
====Contenu des scripts shell====
 
====Contenu des scripts shell====
 
En général, la convention suivie dans les scripts shell est la suivante :
 
En général, la convention suivie dans les scripts shell est la suivante :
*gvsqw_*{} => variable globale initialisée par l’environnement et/ou une librairie générique
+
<pre>
*lvsqw_*{} => variable locale initialisée par le script et/ou une librairie spécifique
+
gvsqw_*{} => variable globale initialisée par l’environnement et/ou une librairie générique
*gfsqw_*{} => fonction définie par une librairie générique
+
lvsqw_*{} => variable locale initialisée par le script et/ou une librairie spécifique
*lfsqw_*{} => fonction définie par le script et/ou une librairie spécifique
+
gfsqw_*{} => fonction définie par une librairie générique
 +
lfsqw_*{} => fonction définie par le script et/ou une librairie spécifique
 +
</pre>
 
<br>
 
<br>
 +
 
====Objets bdd (SQWareRepository)====
 
====Objets bdd (SQWareRepository)====
 
Les objets préfixés par tsqw_% or isqw_% sont génériques à tous les moteurs. Les objets préfixés par tsqwXXX_% or isqwXXX_% sont spécifiques pour un SGBD particulier (exemple : tsqwcas_% or isqwcas_% pour Cassandra).<br>
 
Les objets préfixés par tsqw_% or isqw_% sont génériques à tous les moteurs. Les objets préfixés par tsqwXXX_% or isqwXXX_% sont spécifiques pour un SGBD particulier (exemple : tsqwcas_% or isqwcas_% pour Cassandra).<br>
 
<br>
 
<br>
 
Noms des objets génériques :
 
Noms des objets génériques :
*tsqw_% => pour les tables
+
<pre>
*isqw_% => pour les indexes
+
tsqw_% => pour les tables
*isqw_%_u => pour les indexes uniques
+
isqw_% => pour les indexes
*isqw_%_pk => pour les primary keys
+
isqw_%_u => pour les indexes uniques
 +
isqw_%_pk => pour les primary keys
 +
</pre>
 
<br>
 
<br>
 
Noms des objets spécifiques :
 
Noms des objets spécifiques :
*tsqwXXX_% => pour les tables
+
<pre>
*isqwXXX_% => pour les indexes
+
tsqwXXX_% => pour les tables
*isqwXXX_%_u => pour les indexes uniques
+
isqwXXX_% => pour les indexes
*isqwXXX_%_pk => pour les primary keys
+
isqwXXX_%_u => pour les indexes uniques
 +
isqwXXX_%_pk => pour les primary keys
 +
</pre>
 
<br>
 
<br>
 
Exemple du spécifique pour Cassandra :
 
Exemple du spécifique pour Cassandra :
*tsqwcas_% => pour les tables
+
<pre>
*isqwcas_% => pour les indexes
+
tsqwcas_% => pour les tables
*isqwcas_%_u => pour les indexes uniques
+
isqwcas_% => pour les indexes
*isqwcas_%_pk => pour les primary keys
+
isqwcas_%_u => pour les indexes uniques
 +
isqwcas_%_pk => pour les primary keys
 +
</pre>
 
<br>
 
<br>
 +
 
===Principe de surcharge===
 
===Principe de surcharge===
 
Attention, cette section est une partie essentielle pour paramétrer dbSQWare sans remettre en cause les prochains patches/upgrades. Comme expliqué dans la section précédente, il ne faut pas toucher aux fichiers des arborescences standards, mais utiliser les répertoires de type *_cust pour faire votre customisation.<br>
 
Attention, cette section est une partie essentielle pour paramétrer dbSQWare sans remettre en cause les prochains patches/upgrades. Comme expliqué dans la section précédente, il ne faut pas toucher aux fichiers des arborescences standards, mais utiliser les répertoires de type *_cust pour faire votre customisation.<br>
Ligne 223 : Ligne 252 :
 
# Fichier generic standard => pour tout le parc
 
# Fichier generic standard => pour tout le parc
 
$gvsqw_GenPath/../../generic/etc/sqwgen_GlobalVar.cfg
 
$gvsqw_GenPath/../../generic/etc/sqwgen_GlobalVar.cfg
 +
 
# Fichier generic custom => pour tout le parc
 
# Fichier generic custom => pour tout le parc
 
$gvsqw_GenPath/../../generic/etc_cust/sqwgen_GlobalVar.cfg
 
$gvsqw_GenPath/../../generic/etc_cust/sqwgen_GlobalVar.cfg
 +
 
# Pour une machine non normalisée => spécifique à la machine
 
# Pour une machine non normalisée => spécifique à la machine
 
$HOME/sqwConfig/sqwgen_GlobalVar.cfg
 
$HOME/sqwConfig/sqwgen_GlobalVar.cfg
 +
 
# Fichier spécifique sgbd standard => pour tout le parc
 
# Fichier spécifique sgbd standard => pour tout le parc
 
$gvsqw_GenPath/../../$gvsqw_RdbmsType/etc/sqw${gvsqw_RdbmsRoot}_GlobalVar.cfg
 
$gvsqw_GenPath/../../$gvsqw_RdbmsType/etc/sqw${gvsqw_RdbmsRoot}_GlobalVar.cfg
 +
 
# Fichier spécifique sgbd custom => pour tout le parc
 
# Fichier spécifique sgbd custom => pour tout le parc
 
$gvsqw_GenPath/../../$gvsqw_RdbmsType/etc_cust/sqw${gvsqw_RdbmsRoot}_GlobalVar.cfg
 
$gvsqw_GenPath/../../$gvsqw_RdbmsType/etc_cust/sqw${gvsqw_RdbmsRoot}_GlobalVar.cfg
 +
 
# Fichier spécifique sgbd pour une machine non normalisée => spécifique à la machine
 
# Fichier spécifique sgbd pour une machine non normalisée => spécifique à la machine
 
$HOME/sqwConfig/sqw${gvsqw_RdbmsRoot}_GlobalVar.cfg
 
$HOME/sqwConfig/sqw${gvsqw_RdbmsRoot}_GlobalVar.cfg
Ligne 239 : Ligne 273 :
 
# Fichier generic standard => pour tout le parc
 
# Fichier generic standard => pour tout le parc
 
$HOME/SQWareProduction/../../generic/etc/sqwgen_GlobalVar.cfg
 
$HOME/SQWareProduction/../../generic/etc/sqwgen_GlobalVar.cfg
 +
 
# Fichier generic custom => pour tout le parc
 
# Fichier generic custom => pour tout le parc
 
$HOME/SQWareProduction/../../generic/etc_cust/sqwgen_GlobalVar.cfg
 
$HOME/SQWareProduction/../../generic/etc_cust/sqwgen_GlobalVar.cfg
 +
 
# Pour une machine non normalisée => spécifique à la machine
 
# Pour une machine non normalisée => spécifique à la machine
 
$HOME/sqwConfig/sqwgen_GlobalVar.cfg
 
$HOME/sqwConfig/sqwgen_GlobalVar.cfg
 +
 
# Fichier spécifique sgbd standard => pour tout le parc
 
# Fichier spécifique sgbd standard => pour tout le parc
 
$HOME/SQWareProduction/../../oracle/etc/sqwora_GlobalVar.cfg
 
$HOME/SQWareProduction/../../oracle/etc/sqwora_GlobalVar.cfg
 +
 
# Fichier spécifique sgbd custom => pour tout le parc
 
# Fichier spécifique sgbd custom => pour tout le parc
 
$HOME/SQWareProduction/../../oracle/etc_cust/sqwora_GlobalVar.cfg
 
$HOME/SQWareProduction/../../oracle/etc_cust/sqwora_GlobalVar.cfg
 +
 
# Fichier spécifique sgbd pour une machine non normalisée => spécifique à la machine
 
# Fichier spécifique sgbd pour une machine non normalisée => spécifique à la machine
 
$HOME/sqwConfig/sqwora_GlobalVar.cfg
 
$HOME/sqwConfig/sqwora_GlobalVar.cfg
Ligne 255 : Ligne 294 :
 
====Personnalisation des fonctions shell====
 
====Personnalisation des fonctions shell====
 
En principe, sauf cas d’utilisation avancé de dbSQWare, vous n’avez pas besoin de personnaliser les fonctions, la surcharge de variables ou le passage d’options est suffisant dans la grosse majorité des cas (plus de 99%).<br>
 
En principe, sauf cas d’utilisation avancé de dbSQWare, vous n’avez pas besoin de personnaliser les fonctions, la surcharge de variables ou le passage d’options est suffisant dans la grosse majorité des cas (plus de 99%).<br>
Attention, la customisation de fonction demande un minimum de compétences en shell et une analyse d’impact sur le fonctionnement futur des scripts. Nous nous conseillons de vous faire assister par le support, au moins pour la première fois.<br>
+
Attention, la customisation de fonction demande un minimum de compétences en shell et une analyse d’impact sur le fonctionnement futur des scripts. Nous vous conseillons de vous faire assister par le support, au moins pour la première fois.<br>
 
<br>
 
<br>
 
La majorité des scripts des arborescences …/bin/ sourcent (grâce à la fonction gfsqw_SourceOverLoadLibs) les librairies du même nom que le script, en remplaçant .ksh par .lib (exemple : yyy.ksh va sourcer yyy.lib).<br>
 
La majorité des scripts des arborescences …/bin/ sourcent (grâce à la fonction gfsqw_SourceOverLoadLibs) les librairies du même nom que le script, en remplaçant .ksh par .lib (exemple : yyy.ksh va sourcer yyy.lib).<br>
 
<br>
 
<br>
 
Dans l’explication suivante des sources en cascade de librairies, voici à quoi correspondent les variables :
 
Dans l’explication suivante des sources en cascade de librairies, voici à quoi correspondent les variables :
*gvsqw_GenPath => path du script exécuté
+
<pre>
*lvsqw_Lib => librairie que l’on souhaite charger (exemple sqwora_Global.lib)
+
gvsqw_GenPath => path du script exécuté
*lvsqw_LibGen => nom générique, on remplace dans lvsqw_Lib le trigramme spécifique au SGBD par gen (exemple sqwgen_Global.lib)
+
lvsqw_Lib     => librairie que l’on souhaite charger (exemple sqwora_Global.lib)
 +
lvsqw_LibGen => nom générique, on remplace dans lvsqw_Lib le trigramme spécifique au SGBD par gen (exemple sqwgen_Global.lib)
 +
</pre>
 
<br>
 
<br>
 
Principe général du source en cascade (si les fichiers existent, 10 niveaux) :
 
Principe général du source en cascade (si les fichiers existent, 10 niveaux) :
Ligne 268 : Ligne 309 :
 
# Librairie generic standard => pour tout le parc
 
# Librairie generic standard => pour tout le parc
 
$gvsqw_GenPath/../../generic/lib/$lvsqw_LibGen
 
$gvsqw_GenPath/../../generic/lib/$lvsqw_LibGen
 +
 
# Librairie generic custom => pour tout le parc
 
# Librairie generic custom => pour tout le parc
 
$gvsqw_GenPath/../../generic/lib_cust/$lvsqw_LibGen
 
$gvsqw_GenPath/../../generic/lib_cust/$lvsqw_LibGen
 +
 
# Librairie spécifique sgbd standard => pour tout le parc
 
# Librairie spécifique sgbd standard => pour tout le parc
 
$gvsqw_GenPath/../lib/$lvsqw_LibGen
 
$gvsqw_GenPath/../lib/$lvsqw_LibGen
 +
 
# Librairie spécifique sgbd custom => pour tout le parc
 
# Librairie spécifique sgbd custom => pour tout le parc
 
$gvsqw_GenPath/../lib_cust/$lvsqw_LibGen
 
$gvsqw_GenPath/../lib_cust/$lvsqw_LibGen
 +
 
# Pour une machine non normalisée => spécifique à la machine
 
# Pour une machine non normalisée => spécifique à la machine
 
$HOME/sqwConfig/$lvsqw_LibGen
 
$HOME/sqwConfig/$lvsqw_LibGen
 +
 
# Librairie generic standard => pour tout le parc
 
# Librairie generic standard => pour tout le parc
 
$gvsqw_GenPath/../../generic/lib/$lvsqw_Lib
 
$gvsqw_GenPath/../../generic/lib/$lvsqw_Lib
 +
 
# Librairie generic custom => pour tout le parc
 
# Librairie generic custom => pour tout le parc
 
$gvsqw_GenPath/../../generic/lib_cust/$lvsqw_Lib
 
$gvsqw_GenPath/../../generic/lib_cust/$lvsqw_Lib
 +
 
# Librairie spécifique sgbd standard => pour tout le parc
 
# Librairie spécifique sgbd standard => pour tout le parc
 
$gvsqw_GenPath/../lib/$lvsqw_Lib
 
$gvsqw_GenPath/../lib/$lvsqw_Lib
 +
 
# Librairie spécifique sgbd custom => pour tout le parc
 
# Librairie spécifique sgbd custom => pour tout le parc
 
$gvsqw_GenPath/../lib_cust/$lvsqw_Lib
 
$gvsqw_GenPath/../lib_cust/$lvsqw_Lib
 +
 
# Pour une machine non normalisée => spécifique à la machine
 
# Pour une machine non normalisée => spécifique à la machine
 
$HOME/sqwConfig/$lvsqw_Lib
 
$HOME/sqwConfig/$lvsqw_Lib
Ligne 292 : Ligne 342 :
 
# Librairie generic standard => pour tout le parc
 
# Librairie generic standard => pour tout le parc
 
$HOME/SQWareProduction/../../generic/lib/sqwgen_ParallelRun.lib
 
$HOME/SQWareProduction/../../generic/lib/sqwgen_ParallelRun.lib
 +
 
# Librairie generic custom => pour tout le parc
 
# Librairie generic custom => pour tout le parc
 
$HOME/SQWareProduction/../../generic/lib_cust/sqwgen_ParallelRun.lib
 
$HOME/SQWareProduction/../../generic/lib_cust/sqwgen_ParallelRun.lib
 +
 
# Librairie spécifique sgbd standard => pour tout le parc
 
# Librairie spécifique sgbd standard => pour tout le parc
 
$HOME/SQWareProduction/../lib/sqwgen_ParallelRun.lib
 
$HOME/SQWareProduction/../lib/sqwgen_ParallelRun.lib
 +
 
# Librairie spécifique sgbd custom => pour tout le parc
 
# Librairie spécifique sgbd custom => pour tout le parc
 
$HOME/SQWareProduction/../lib_cust/sqwgen_ParallelRun.lib
 
$HOME/SQWareProduction/../lib_cust/sqwgen_ParallelRun.lib
 +
 
# Pour une machine non normalisée => spécifique à la machine
 
# Pour une machine non normalisée => spécifique à la machine
 
$HOME/sqwConfig/sqwgen_ParallelRun.lib
 
$HOME/sqwConfig/sqwgen_ParallelRun.lib
 +
 
# Librairie generic standard => pour tout le parc
 
# Librairie generic standard => pour tout le parc
 
$HOME/SQWareProduction/../../generic/lib/sqwora_ParallelRun.lib
 
$HOME/SQWareProduction/../../generic/lib/sqwora_ParallelRun.lib
 +
 
# Librairie generic custom => pour tout le parc
 
# Librairie generic custom => pour tout le parc
 
$HOME/SQWareProduction/../../generic/lib_cust/sqwora_ParallelRun.lib
 
$HOME/SQWareProduction/../../generic/lib_cust/sqwora_ParallelRun.lib
 +
 
# Librairie spécifique sgbd standard => pour tout le parc
 
# Librairie spécifique sgbd standard => pour tout le parc
 
$HOME/SQWareProduction/../lib/sqwora_ParallelRun.lib
 
$HOME/SQWareProduction/../lib/sqwora_ParallelRun.lib
 +
 
# Librairie spécifique sgbd custom => pour tout le parc
 
# Librairie spécifique sgbd custom => pour tout le parc
 
$HOME/SQWareProduction/../lib_cust/sqwora_ParallelRun.lib
 
$HOME/SQWareProduction/../lib_cust/sqwora_ParallelRun.lib
 +
 
# Pour une machine non normalisée => spécifique à la machine
 
# Pour une machine non normalisée => spécifique à la machine
 
$HOME/sqwConfig/sqwora_ParallelRun.lib
 
$HOME/sqwConfig/sqwora_ParallelRun.lib
 
</pre>
 
</pre>
 
<br>
 
<br>
{{Note|afin de voir si tous vos fichiers customs sont pris en charge par un script, avant de lancer celui-ci, faites « export gvsqw_Debug="true" » sur votre session shell et le script loguera tous les fichiers chargés (cfg et lib)}}
+
{{Note | 1=afin de voir si tous vos fichiers customs sont pris en charge par un script, avant de lancer celui-ci, faites “'''''export gvsqw_Debug=true'''''” sur votre session shell et le script loguera tous les fichiers chargés (cfg et lib)}}
  
 
==Interopérabilité des modules==
 
==Interopérabilité des modules==
 
===Communications entre les modules===
 
===Communications entre les modules===
 
====Depuis SQWareProduction====
 
====Depuis SQWareProduction====
SQWareProduction est le seul module se connectant directement aux bases de données clientes. Il permet ensuite notamment de remonter un certain nombre d’indicateurs dans SQWareRepository.<br>
+
SQWareProduction est le seul module se connectant directement aux bases de données clientes.<br>
Il faudra donc que le serveur où s’exécutent les scripts de SQWareProduction puisse communiquer avec l’instance MySQL portant la database de SQWareRepository.<br>
+
Il permet ensuite notamment de remonter un certain nombre d’indicateurs dans SQWareRepository (en passant par un tampon local).<br>
Pré-requis :
+
C'est SQWareCentral qui vient chercher les données dans le tampon de SQWareProduction par rsync.<br>
*Flux vers le repo MySQL (en général TCP vers le port 3306 du host central de dbSQWare)
+
<br>
*Un client MySQL (n’importe quelle version 5.x du client pour votre plateforme)<br>
 
 
 
 
====Depuis SQWareRepository====
 
====Depuis SQWareRepository====
SQWareRepository étant une database MySQL, aucun flux n’est à son initiative.<br>
+
SQWareRepository étant une database MySQL (>= 5.6) ou MariaDB (>= 10.1), aucun flux n’est à son initiative.<br>
 
+
<br>
 
====Depuis SQWareCentral====
 
====Depuis SQWareCentral====
SQWareCentral se connecte à SQWareRepository pour générer les listes d’instances à traiter. Il permet également de lancer des commandes SQWareProduction au travers d’une connexion ssh. Il permet également le déploiement des scripts SQWareProduction par rsync.<br>
+
SQWareCentral se connecte à SQWareRepository pour générer les listes d’instances à traiter.<br>
 +
Il permet de lancer des commandes SQWareProduction au travers d’une connexion ssh.<br>
 +
Il permet également le déploiement des scripts SQWareProduction ainsi que la récupération des traces SQWareProduction par rsync.<br>
 
Pré-requis :
 
Pré-requis :
 
*Package rsync sur le point central et les clients SQWareProduction
 
*Package rsync sur le point central et les clients SQWareProduction
 
*Flux ssh vers les clients SQWareProduction (TCP port 22 vers les clients SQWareProduction)
 
*Flux ssh vers les clients SQWareProduction (TCP port 22 vers les clients SQWareProduction)
*Flux vers le repo MySQL (en général les deux modules sont sur la même machine)<br>
+
*Flux vers le repo MySQL/MariaDB (en général les deux modules sont sur la même machine)<br>
 +
<br>
  
 
====Depuis SQWareWeb====
 
====Depuis SQWareWeb====
 
SQWareWeb se connecte à SQWareRepository qui contient les indicateurs (aucune connexion vers les bases clientes).<br>
 
SQWareWeb se connecte à SQWareRepository qui contient les indicateurs (aucune connexion vers les bases clientes).<br>
 
Pré-requis :
 
Pré-requis :
*Packages httpd.x86_64 php.x86_64 php-pdo php-mysql
+
*Packages httpd php php-pdo php-mysql
*Flux vers le repo MySQL (en général les deux modules sont sur la même machine)<br>
+
*Flux vers le repo MySQL/MariaDB (en général les deux modules sont sur la même machine)<br>
 +
<br>
  
 
===Matrice de flux===
 
===Matrice de flux===
Ligne 346 : Ligne 407 :
 
! Type !! Nombre !! Source !! Destination !! Port (courant) !! Commentaire
 
! Type !! Nombre !! Source !! Destination !! Port (courant) !! Commentaire
 
|-
 
|-
| Toujours || x || SQWareProduction || SQWareRepository || 3306 || Texte de la cellule
+
| Toujours || x || SQWareCentral || SQWareProduction  || 22 || Rsync sources + exec à distance
 
|-
 
|-
| Toujours || x || SQWareCentral || SQWareProduction || 22 || Texte de la cellule
+
| || || ||  || ||  
 
|-
 
|-
| || || || || ||  
+
| Spécifique Ora || x || SQWareProduction<br>sur CentralHost || bdd Oracle || 1521 || Lorsque l'on souhaite collecter les rapports AWR depuis le point central.<br>Autant de fois qu'il y a de bdd Oracle.
 
|-
 
|-
| Texte de la cellule || x || SQWareProduction<br>sur CentralHost || bdd Oracle || 1521 || Lorsque l'on souhaite collecter les rapports AWR depuis le point central.<br>Autant de fois qu'il y a de bdd Oracle.
+
| Spécifique Msq || x || SQWareProduction<br>sur CentralHost || bdd MsSql || 1433 || Lorsque l'on souhaite gérer tous les MsSql depuis le point central.<br>Peut-être aussi installé sur une autre machine que le pont central.
 
|-
 
|-
| Texte de la cellule || x || SQWareProduction<br>sur CentralHost || bdd MsSql || 1433 || Lorsque l'on souhaite gérer tous les MsSql depuis le point central.<br>Peut-être aussi installé sur une autre machine que le pont central.
+
| ... || x || CentralHost || toute bdd || 1521, 1433, 5432, ... || Lorsque l'on souhaite accéder aux instances depuis le point central en SQL.<br>Ce besoin est pur DBA et non nécessaire à dbSQWare.
 
|-
 
|-
 
|  ||  ||  ||  ||  ||  
 
|  ||  ||  ||  ||  ||  
 
|-
 
|-
| Distribué || 1 || SQWareCentral || SQWareRepository || 3306 || Quand la base MySQL du repo n'est pas sur le point central (rare)
+
| Distribué || 1 || SQWareCentral || SQWareRepository || 3306 || Quand la base MySQL/MariaDB du repo n'est pas sur le point central (rare)
 
|-
 
|-
| Distribué || 1 || SQWareWeb || SQWareRepository || 3306 || Quand la base MySQL du repo n'est pas sur le point central (rare)<br>ou que SQWareWeb n'est pas sur le point central (rare)
+
| Distribué || 1 || SQWareWeb || SQWareRepository || 3306 || Quand la base MySQL/MariaDB du repo n'est pas sur le point central (rare)<br>ou que SQWareWeb n'est pas sur le point central (rare)
 
|-
 
|-
 
|  ||  ||  ||  ||  ||  
 
|  ||  ||  ||  ||  ||  
Ligne 367 : Ligne 428 :
 
==Liens utiles==
 
==Liens utiles==
  
Voici les liens utiles pour dbSQWare<sup>TM</sup>:
+
Voici les liens utiles pour dbSQWare:
*http://www.dbsqware.com/ => Site principal de dbSQWare<sup>TM</sup>
+
*http://www.dbsqware.com/   => Site principal
*http://webdba.dbsqware.com/ => Démonstration du module SQWareWeb<sup>TM</sup>
+
*http://webdba.dbsqware.com/ => Démonstration du module SQWareWeb
*http://wiki.dbsqware.com => Wiki officiel de dbSQWare<sup>TM</sup>
+
*http://wiki.dbsqware.com   => Wiki anglais (complet)
*http://blog.dbsqware.com => Blog officiel de dbSQWare<sup>TM</sup>
+
*http://wikifr.dbsqware.com => Wiki d'install en français</sup>
*http://forum.dbsqware.com => Forum officiel de dbSQWare<sup>TM</sup>
+
*http://blog.dbsqware.com   => Blog SGBD
 
<br>
 
<br>
 
Rejoignez le groupe dbSQWare sur viadéo:<br>
 
Rejoignez le groupe dbSQWare sur viadéo:<br>

Version actuelle datée du 7 novembre 2023 à 11:22

Généralités

Limites de cette section

Cette section n’a pas la prétention de traiter tous les cas possibles de paramétrage de dbSQWare mais va vous permettre d’appréhender la structure générale de l’outil, l’interconnexion des modules, le principe de personnalisation, …
Pour plus d’informations, http://www.dbsqware.com.

Avant de vous lancer dans l’installation, lisez également la section « Installation socle », elle vous permettra de réaliser une installation standard du socle central.

dbSQWare, c’est quoi ?

dbSQWare permet de fédérer l’exploitation des bases de données Oracle, Sybase, SqlServer, MySQL, DB2, PostgreSQL, MongoDB, Cassandra, … grâce à un socle commun et homogène. La conception de cette plate-forme apporte une grande souplesse d’utilisation, de personnalisation et une approche unifiée concernant l’exploitation et le rendu des indicateurs sur l’ensemble des types de SGBD gérés par l’outil.
Ce n'est ni un outil d'administration, ni un outil de monitoring (pas de supervision mais un complément à celle-ci).

Le produit est destiné (pour sa partie scripts) à des environnements Unix/Linux uniquement car il est essentiellement écrit en shell ksh et sql (même MsSql est géré à 100% depuis unix grâce à une connexion FreeTds, pour plus d’information http://www.freetds.org/). La partie web, pour sa part, est écrite en PHP et javascript (jQuery).
Pour les SGBD autre que MsSql se trouvant sous Windows, un certain nombre de fonctionnalités (mais pas toutes) sont accessibles grâce à une connexion sql distante (pour les scripts le supportant).

Liste des SGBD supportés à l’heure actuelle :

  • Oracle
  • Sybase (ASE et RS)
  • MySQL
  • MsSql
  • MongoDB
  • DB2
  • PostgreSQL
  • Teradata
  • Cassandra
  • Adabas
  • Ingres


Une recherche de l’ « Homogénéité »

Dans l’utilisation :

  • Utilisation homogène, quel que soit le SGBD
  • Adaptation aisée par fichiers de configuration et/ou passage d’arguments
  • Une seule version de l’outil sur l’ensemble du parc (synchronisation par rsync)
  • Les scripts s’adaptent à la version du SGBD traité (un seul script pour une action. Exemple : le script d’indicateurs oracle supporte de la v7 à la 19c multi-tenant architecture)
  • Lancement sans argument
  • Aide en ligne (arguments et exemples)
  • Exécution "à blanc" (dry run) pour valider la syntaxe (flag -Exec)


Dans le développement et les évolutions :

  • Conception homogène pour l’ensemble des SGBD
  • Normalisation du code (noms, fonctions, structures, parsing d’arguments, aide en ligne, …)
  • Librairies génériques multi-moteurs
  • Modification du comportement par surcharge des librairies
  • Ensemble de librairies shell standards pouvant être intégrées dans des scripts customs


Structure générale de l’outil

dbSQWare est composé de quatre modules complémentaires.

SQWareProduction est le module d'exploitation en local (ou à distance pour 80% des fonctionnalités) des SGBD. Il permet de gérer l'exploitation au sens large des SGBD :

  • Sauvegardes
  • Restaurations
  • Statistiques
  • Remontée d’alertes
  • Encapsulation de lancement de jobs
  • Lancement de commandes unix en parallèle
  • ...

Ce module collecte également un certain nombre d'indicateurs qui sont remontés sur le référentiel de base de données SQWareRepository. Ce module est composé d'une partie par SGBD géré ainsi que d’une partie « core » comprenant un ensemble de paramétrages et de fonctions génériques à tous les SGBD. Les scripts sont tous écrits selon la même norme de développement (parsing d’arguments, aide en ligne, envoi de mail sur erreur, remontée d’indicateurs dans SQWareRepository, …).

SQWareRepository est le module de gestion du référentiel et des indicateurs en base de données :
Il permet de gérer le référentiel ainsi que les indicateurs stockés en bases de données.
Il s’agit d’une database MySQL (>= 5.6) ou MariaDB (>= 10.1), avec des tables génériques ainsi que des tables spécifiques en fonction du SGBD traité.

SQWareCentral est le module central de l’outil. Il permet de gérer l'ensemble du parc depuis ce point central :

  • Collectes centralisées d’indicateurs
  • Déploiement de SQWareProduction par rsync
  • Gestion de recherche « full text » dans les référentiels
  • Connexion simplifiée par ssh aux différentes instances du parc…
  • Génération de fichier CMDB
  • Check centralisé des indicateurs


Ce module se base entre autres sur le référentiel, SQWareRepository (génération dynamique des listes d’instances à traiter, …).
Il est composé d’une partie « core », commune à tous les SGBD exploités et d’un plugin spécifique pour chaque SGBD (Oracle, Sybase, MsSql, MySQL, DB2, PostgreSQL, MongoDB, Cassandra, …).
En général, l’installation du point central se fait sur une VM Rocky Linux release 8.8 (Green Obsidian) 64 bits (2 vCPU et 4 Go de RAM). Vous pouvez évidemment l’installer sur un autre type de Linux/Unix.

SQWareWeb est le module de restitution graphique web des indicateurs :
Il fonctionne avec apache 2.x et est écrit en PHP (support en principe de 5.x à 7.x), javascript (jQuery).
Il permet de faire la présentation des indicateurs et capacity planning sous forme :

  • Graphiques (javascript)
  • Tableaux (avec tri, filtrage et formatage en local sur le navigateur)
  • Exports Excel
  • ...


Il se base entièrement sur les données contenues dans le référentiel de base de données SQWareRepository.
Aucune connexion aux bdd clientes, l’interface ne sert qu’à la restitution des indicateurs et au paramétrage du référentiel.
Les restitutions sont présentées sensiblement de la même façon quel que soit le SGBD (aux spécificités près de celui-ci), ce qui rend plus agréable et plus aisée la navigation.
Ce module est composé d’une partie « core », commune à tous les SGBD gérés, (moteur de templates, affichage graphiques, tableaux, ...) et d’un plugin spécifique pour chaque SGBD.

Normalisation

Une des bases de « l’homogénéité » passe par de la normalisation et la généricité.

Convention de nommage

Arborescences

Arborescences générales (sur le point central) :

…/dbSQWare/SQWareProduction/… 	=> arborescence du module SQWareProduction.
…/dbSQWare/SQWareRepository/… 	=> arborescence du module SQWareRepository.
…/dbSQWare/SQWareCentral/… 	=> arborescence du module SQWareCentral.
…/dbSQWare/SQWareWeb/… 		=> arborescence du module SQWareWeb.


Ensuite, pour le niveau sous les modules, il existe un répertoire « generic » contenant tout ce qui est multi-sgbd et un répertoire par sgbd supporté.
Voici ce que cela donne :

cassandra	=> spécifique pour Cassandra
db2		=> spécifique pour DB2
generic 	=> générique à tous les moteurs
ingres		=> spécifique pour Ingres
mongodb 	=> spécifique pour MongoDB
mssql		=> spécifique pour MsSql
mysql		=> spécifique pour MySQL
oracle		=> spécifique pour Oracle
postgres	=> spécifique pour PostgreSQL
sybase		=> spécifique pour Sybase ASE
sybrep		=> spécifique pour Sybase RS
teradata	=> spécifique pour teradata
adabas          => spécifique pour adabas


Puis, pour les arborescences contenant des scripts, vous trouverez des répertoires comme suivant. Les répertoires de la forme *_cust sont dédiés à la customisation de votre environnement, autant que possible, ne touchez qu’aux scripts et fichiers de configuration de ces arborescences, cela vous facilitera les mises à jours de l’outil (sauf bug spécifique, il n’y a pas de raison de toucher aux arborescences standards si vous suivez les préconisations de personnalisation).
Contenu des répertoires :

bin		=> scripts standards
bin_cust	=> scripts customs pour votre environnement
etc		=> fichiers standards de configuration (variables globales)
etc_cust	=> fichiers customs de configuration (surchargent les standards)
help		=> fichiers standards d’aide
help_cust	=> fichiers customs d’aide pour votre environnement
lib		=> librairies standards de fonctions shell
lib_cust	=> librairies customs de fonctions shell (surchargent les standards)
tools		=> scripts standards utilisés ponctuellement
tools_cust	=> scripts customs utilisés ponctuellement pour votre environnement
menu		=> menus (shell) standards
menu_cust	=> menus customs pour votre environnement


Voici donc, par exemple, ce que cela donne pour SQWareProduction Oracle et Générique :

SQWareProduction/oracle
SQWareProduction/oracle/bin
SQWareProduction/oracle/bin_cust
SQWareProduction/oracle/etc
SQWareProduction/oracle/etc_cust
SQWareProduction/oracle/help
SQWareProduction/oracle/help_cust
SQWareProduction/oracle/lib
SQWareProduction/oracle/lib_cust
SQWareProduction/oracle/menu
SQWareProduction/oracle/menu_cust
SQWareProduction/oracle/tools
SQWareProduction/oracle/tools_cust
SQWareProduction/generic
SQWareProduction/generic/bin
SQWareProduction/generic/bin_cust
SQWareProduction/generic/etc
SQWareProduction/generic/etc_cust
SQWareProduction/generic/lib
SQWareProduction/generic/lib_cust
SQWareProduction/generic/tools
SQWareProduction/generic/tools_cust


Fichiers (arborescence scripts)

La majorité des fichiers sont nommés avec un préfixe de la forme :

sqwora_*	=> pour Oracle
sqwsyb_*	=> pour Sybase ASE
sqwrs_* 	=> pour Sybase RS
sqwmys_*	=> pour Mysql
sqwmsq_*	=> pour Mssql
sqwdb2_*	=> pour DB2
sqwpg_* 	=> pour PostgreSQL
sqwter_*	=> pour Teradata
sqwcas_*	=> pour Cassandra
sqwada_*	=> pour Adabas
sqwing_*	=> pour Ingres
sqwgen_*	=> pour les génériques (multi SGBD)
sqwctl_*	=> pour ceux du module SQWareCentral


La majorité des fichiers sont nommés avec un suffixe de la forme :

*.ksh	=> pour les scripts shell
*.cfg	=> pour les fichiers de configuration (variables globales)
*.lib	=> pour librairies de fonctions shell
*.hlp	=> pour les fichiers d’aide


Fichiers (arborescence web)

La majorité des fichiers sont nommés avec un suffixe de la forme :

*.php	=> pour les scripts PHP
*.js	=> pour les scripts javascript
*.chart	=> pour les fichiers de paramétrage des graphiques
*.table	=> pour les fichiers de paramétrage des tableaux


Contenu des scripts shell

En général, la convention suivie dans les scripts shell est la suivante :

gvsqw_*{}	=> variable globale initialisée par l’environnement et/ou une librairie générique
lvsqw_*{}	=> variable locale initialisée par le script et/ou une librairie spécifique
gfsqw_*{}	=> fonction définie par une librairie générique
lfsqw_*{}	=> fonction définie par le script et/ou une librairie spécifique


Objets bdd (SQWareRepository)

Les objets préfixés par tsqw_% or isqw_% sont génériques à tous les moteurs. Les objets préfixés par tsqwXXX_% or isqwXXX_% sont spécifiques pour un SGBD particulier (exemple : tsqwcas_% or isqwcas_% pour Cassandra).

Noms des objets génériques :

tsqw_%  	=> pour les tables
isqw_%		=> pour les indexes
isqw_%_u	=> pour les indexes uniques
isqw_%_pk	=> pour les primary keys


Noms des objets spécifiques :

tsqwXXX_%	=> pour les tables
isqwXXX_%	=> pour les indexes
isqwXXX_%_u	=> pour les indexes uniques
isqwXXX_%_pk	=> pour les primary keys


Exemple du spécifique pour Cassandra :

tsqwcas_%	=> pour les tables
isqwcas_%	=> pour les indexes
isqwcas_%_u	=> pour les indexes uniques
isqwcas_%_pk	=> pour les primary keys


Principe de surcharge

Attention, cette section est une partie essentielle pour paramétrer dbSQWare sans remettre en cause les prochains patches/upgrades. Comme expliqué dans la section précédente, il ne faut pas toucher aux fichiers des arborescences standards, mais utiliser les répertoires de type *_cust pour faire votre customisation.
Lors d’un patch/upgrade, on extrait l’archive dbSQWare_full_latest.tgz par-dessus l’arborescence installée, ce qui écrase les fichiers standards avec la nouvelle version mais conserve vos customisations !
Le principe de base de la surcharge est de créer un fichier de même nom que dans l’arborescence (XXX) standard dans l’arborescence (XXX_cust) et d’y redéclarer la/les variables/librairies nécessaire(s).
Ne déclarez que le strict nécessaire pour le fonctionnement sur votre environnement (inutile de tout déclarer comme pour une configuration bdd).

Personnalisation des variables

Le fichier essentiellement mis à jour pour les variables est sqwgen_GlobalVar.cfg, nous le prendrons donc comme exemple.
Le principe suivant se base sur $gvsqw_GenPath qui représente le path du script exécuté et sur ${gvsqw_RdbmsRoot} qui représente le trigramme (en minuscule) du SGBD sur lequel tourne le script et $gvsqw_RdbmsType, le répertoire spécifique du SGBD. Voir le paragraphe sur les règles de nommage pour les noms de fichiers réels.

Principe général du source en cascade (si les fichiers existent, 6 niveaux) :

# Fichier generic standard => pour tout le parc
$gvsqw_GenPath/../../generic/etc/sqwgen_GlobalVar.cfg

# Fichier generic custom => pour tout le parc
$gvsqw_GenPath/../../generic/etc_cust/sqwgen_GlobalVar.cfg

# Pour une machine non normalisée => spécifique à la machine
$HOME/sqwConfig/sqwgen_GlobalVar.cfg

# Fichier spécifique sgbd standard => pour tout le parc
$gvsqw_GenPath/../../$gvsqw_RdbmsType/etc/sqw${gvsqw_RdbmsRoot}_GlobalVar.cfg

# Fichier spécifique sgbd custom => pour tout le parc
$gvsqw_GenPath/../../$gvsqw_RdbmsType/etc_cust/sqw${gvsqw_RdbmsRoot}_GlobalVar.cfg

# Fichier spécifique sgbd pour une machine non normalisée => spécifique à la machine
$HOME/sqwConfig/sqw${gvsqw_RdbmsRoot}_GlobalVar.cfg


Exemple pour SQWareProduction Oracle installé dans le $HOME :

# Fichier generic standard => pour tout le parc
$HOME/SQWareProduction/../../generic/etc/sqwgen_GlobalVar.cfg

# Fichier generic custom => pour tout le parc
$HOME/SQWareProduction/../../generic/etc_cust/sqwgen_GlobalVar.cfg

# Pour une machine non normalisée => spécifique à la machine
$HOME/sqwConfig/sqwgen_GlobalVar.cfg

# Fichier spécifique sgbd standard => pour tout le parc
$HOME/SQWareProduction/../../oracle/etc/sqwora_GlobalVar.cfg

# Fichier spécifique sgbd custom => pour tout le parc
$HOME/SQWareProduction/../../oracle/etc_cust/sqwora_GlobalVar.cfg

# Fichier spécifique sgbd pour une machine non normalisée => spécifique à la machine
$HOME/sqwConfig/sqwora_GlobalVar.cfg


Note.png
Note:
afin de voir si tous vos fichiers customs sont pris en charge par un script, avant de lancer celui-ci, faites “export gvsqw_Debug=true” sur votre session shell et le script loguera tous les fichiers chargés (cfg et lib).


Personnalisation des fonctions shell

En principe, sauf cas d’utilisation avancé de dbSQWare, vous n’avez pas besoin de personnaliser les fonctions, la surcharge de variables ou le passage d’options est suffisant dans la grosse majorité des cas (plus de 99%).
Attention, la customisation de fonction demande un minimum de compétences en shell et une analyse d’impact sur le fonctionnement futur des scripts. Nous vous conseillons de vous faire assister par le support, au moins pour la première fois.

La majorité des scripts des arborescences …/bin/ sourcent (grâce à la fonction gfsqw_SourceOverLoadLibs) les librairies du même nom que le script, en remplaçant .ksh par .lib (exemple : yyy.ksh va sourcer yyy.lib).

Dans l’explication suivante des sources en cascade de librairies, voici à quoi correspondent les variables :

gvsqw_GenPath => path du script exécuté
lvsqw_Lib     => librairie que l’on souhaite charger (exemple sqwora_Global.lib)
lvsqw_LibGen  => nom générique, on remplace dans lvsqw_Lib le trigramme spécifique au SGBD par gen (exemple sqwgen_Global.lib)


Principe général du source en cascade (si les fichiers existent, 10 niveaux) :

# Librairie generic standard => pour tout le parc
$gvsqw_GenPath/../../generic/lib/$lvsqw_LibGen

# Librairie generic custom => pour tout le parc
$gvsqw_GenPath/../../generic/lib_cust/$lvsqw_LibGen

# Librairie spécifique sgbd standard => pour tout le parc
$gvsqw_GenPath/../lib/$lvsqw_LibGen

# Librairie spécifique sgbd custom => pour tout le parc
$gvsqw_GenPath/../lib_cust/$lvsqw_LibGen

# Pour une machine non normalisée => spécifique à la machine
$HOME/sqwConfig/$lvsqw_LibGen

# Librairie generic standard => pour tout le parc
$gvsqw_GenPath/../../generic/lib/$lvsqw_Lib

# Librairie generic custom => pour tout le parc
$gvsqw_GenPath/../../generic/lib_cust/$lvsqw_Lib

# Librairie spécifique sgbd standard => pour tout le parc
$gvsqw_GenPath/../lib/$lvsqw_Lib

# Librairie spécifique sgbd custom => pour tout le parc
$gvsqw_GenPath/../lib_cust/$lvsqw_Lib

# Pour une machine non normalisée => spécifique à la machine
$HOME/sqwConfig/$lvsqw_Lib


Exemple pour sqwora_ParallelRun.ksh de SQWareProduction Oracle installé dans le $HOME :

# Librairie generic standard => pour tout le parc
$HOME/SQWareProduction/../../generic/lib/sqwgen_ParallelRun.lib

# Librairie generic custom => pour tout le parc
$HOME/SQWareProduction/../../generic/lib_cust/sqwgen_ParallelRun.lib

# Librairie spécifique sgbd standard => pour tout le parc
$HOME/SQWareProduction/../lib/sqwgen_ParallelRun.lib

# Librairie spécifique sgbd custom => pour tout le parc
$HOME/SQWareProduction/../lib_cust/sqwgen_ParallelRun.lib

# Pour une machine non normalisée => spécifique à la machine
$HOME/sqwConfig/sqwgen_ParallelRun.lib

# Librairie generic standard => pour tout le parc
$HOME/SQWareProduction/../../generic/lib/sqwora_ParallelRun.lib

# Librairie generic custom => pour tout le parc
$HOME/SQWareProduction/../../generic/lib_cust/sqwora_ParallelRun.lib

# Librairie spécifique sgbd standard => pour tout le parc
$HOME/SQWareProduction/../lib/sqwora_ParallelRun.lib

# Librairie spécifique sgbd custom => pour tout le parc
$HOME/SQWareProduction/../lib_cust/sqwora_ParallelRun.lib

# Pour une machine non normalisée => spécifique à la machine
$HOME/sqwConfig/sqwora_ParallelRun.lib


Note.png
Note:
afin de voir si tous vos fichiers customs sont pris en charge par un script, avant de lancer celui-ci, faites “export gvsqw_Debug=true” sur votre session shell et le script loguera tous les fichiers chargés (cfg et lib).


Interopérabilité des modules

Communications entre les modules

Depuis SQWareProduction

SQWareProduction est le seul module se connectant directement aux bases de données clientes.
Il permet ensuite notamment de remonter un certain nombre d’indicateurs dans SQWareRepository (en passant par un tampon local).
C'est SQWareCentral qui vient chercher les données dans le tampon de SQWareProduction par rsync.

Depuis SQWareRepository

SQWareRepository étant une database MySQL (>= 5.6) ou MariaDB (>= 10.1), aucun flux n’est à son initiative.

Depuis SQWareCentral

SQWareCentral se connecte à SQWareRepository pour générer les listes d’instances à traiter.
Il permet de lancer des commandes SQWareProduction au travers d’une connexion ssh.
Il permet également le déploiement des scripts SQWareProduction ainsi que la récupération des traces SQWareProduction par rsync.
Pré-requis :

  • Package rsync sur le point central et les clients SQWareProduction
  • Flux ssh vers les clients SQWareProduction (TCP port 22 vers les clients SQWareProduction)
  • Flux vers le repo MySQL/MariaDB (en général les deux modules sont sur la même machine)


Depuis SQWareWeb

SQWareWeb se connecte à SQWareRepository qui contient les indicateurs (aucune connexion vers les bases clientes).
Pré-requis :

  • Packages httpd php php-pdo php-mysql
  • Flux vers le repo MySQL/MariaDB (en général les deux modules sont sur la même machine)


Matrice de flux

Cette section ne couvre pas tous les cas possibles, mais doit vous permettre de faire ouvrir les flux nécessaires en cas de présence de FW.

Type Nombre Source Destination Port (courant) Commentaire
Toujours x SQWareCentral SQWareProduction 22 Rsync sources + exec à distance
Spécifique Ora x SQWareProduction
sur CentralHost
bdd Oracle 1521 Lorsque l'on souhaite collecter les rapports AWR depuis le point central.
Autant de fois qu'il y a de bdd Oracle.
Spécifique Msq x SQWareProduction
sur CentralHost
bdd MsSql 1433 Lorsque l'on souhaite gérer tous les MsSql depuis le point central.
Peut-être aussi installé sur une autre machine que le pont central.
... x CentralHost toute bdd 1521, 1433, 5432, ... Lorsque l'on souhaite accéder aux instances depuis le point central en SQL.
Ce besoin est pur DBA et non nécessaire à dbSQWare.
Distribué 1 SQWareCentral SQWareRepository 3306 Quand la base MySQL/MariaDB du repo n'est pas sur le point central (rare)
Distribué 1 SQWareWeb SQWareRepository 3306 Quand la base MySQL/MariaDB du repo n'est pas sur le point central (rare)
ou que SQWareWeb n'est pas sur le point central (rare)

Liens utiles

Voici les liens utiles pour dbSQWare:


Rejoignez le groupe dbSQWare sur viadéo:
http://www.viadeo.com/groups/?containerId=002dcbr792acawk

Rejoignez le groupe dbSQWare sur Linkedin:
http://www.linkedin.com/groups?gid=3683269