Introduction
Une précédente documentation datant de juillet 2005 présentait
l’installation et la normalisation de Sybase IQ version 12.4.2 sous Solaris (Installation et normalisation de
Sybase IQ 12.4.2 sous Solaris ). Avec les versions supérieures de Sybase
IQ, l’installation est nettement simplifiée, mais des modifications importantes
ont été apportées dans les gestions des variables d’environnement $SYBASE
,
$SYBASE_OCS
, $ASDIR
, etc. ainsi que dans l’organisation des binaires et
librairies (disparition du répertoire ociq-12_0
par exemple).
L’installation de Sybase IQ 12.7 sur les plateformes Sun SPARC Solaris 10 est présentée dans cet article. Un rappel sur la norme adoptée est également proposé, norme quelque peu modifiée pour prendre en charge les nouvelles spécificités de l’installation des versions IQ 12.5/12.6 & 12.7.
Installation personnalisée des binaires Sybase IQ 12.7
Arborescence de la distribution d’installation de Sybase IQ 12.7 (sybinstall)
Les binaires d’installation de la distribution Sybase IQ 12.7 (contrairement
à la version 12.4.2) sont livrés dans une archive compressée
sybiq127sparc.tgz
.
Dans la suite de la documentation, ${INSTALL_DIR}
est le répertoire dans
lequel est localisée la distribution d’installation de Sybase IQ 12.7
(/Software/sybase/installations/install_asiq127
dans notre cas pratique) :
sybase@SRVUNXFR> cd /Software/sybase/installations/install_asiq127
sybase@SRVUNXFR> gunzip sybiq127.sparc.tgz
sybase@SRVUNXFR> tar xvf sybiq127.sparc.tar
Le shell sybinstall
dans le répertoire ${INSTALL_DIR}
permet de démarrer
l’installation de Sybase IQ 12.7.
Shell sybinstall
La syntaxe de sybinstall propose les options ci-dessous :
Usage: sybinstall [-src <source|CD-directory>]
[-dst <destination|\$SYBASE-directory>]
[-products '<prod1 prod2 ... prodN>']
[-I_accept_sybase_license]
[-add_license]
[-add_agent]
[-debug]
[-version|-info]
[-y]
L’option -dst
du shell sybinstall
est très importante car elle permet de
spécifier le répertoire d’installation de Sybase IQ 12.7. Si le répertoire
d’installation de Sybase IQ 12.7 n’est pas spécifié avec l’opton -dst
de
sybinstall
ou avec la variable $SYBASE
, l’installation est en échec :
sybase@SRVUNXFR > sybinstall
Setting up install .. Install failed for the following reasons ---------------------------------------- Destination directory ($SYBASE|-dst) does not exist This information has been saved to: /tmp/sybinstall.log
Le répertoire d’installation doit exister au préalable.
Lancement de l’installation
Dans la normalisation adoptée, les installations IQ sont réalisées dans les
répertoires ayant la nomenclature
/Software/sybase/asiq-<version>
Il s’agit dans le cas présent de la version 12.7 : le répertoire
d’installation créé au préalable est par conséquent /Software/sybase/asiq-12.7
,
répertoire ayant pour propriétaire le compte sybase qui exécutera les serveurs
IQ puis la commande sybinstall
est lancée avec l’option -dst
spécifiant ce
répertoire.
sybase@SRVUNXFR > mkdir /Software/sybase/asiq-12.7
sybase@SRVUNXFR > sybinstall -dst /Software/sybase/asiq-12.7
Étapes de l’installation
L’installation s’effectue en plusieurs étapes avec des écrans interactifs :
- Démarrage de l’installation, choix de la langue et licence
- Sélection des produits
- Configuration de la base utilitaire
utility_db
- Installation de la distribution IQ
- Configuration des options sous licence
- Mise à jour des fichiers de configuration
Démarrage de l’installation, choix de la langue et licence
L’installation démarre avec l’écran interactif ci-dessous :
Sybase IQ 12.7 Enterprise Edition
Install Sybase IQ 12.7
Welcome to Sybase IQ 12.7.
This script will install Sybase IQ and other supporting
products on your system.
You may quit at any time by pressing '^c'.
Press <Return> to continue:
La suite de l’installation permet de choisir la langue pour la lecture du contrat de licence, le choix de la langue n’ayant aucune influence sur l’installation :
Sybase IQ 12.7 Enterprise Edition
Select the location where you are installing the software
1) Argentina 20) Mexico
2) Australia 21) Netherlands
3) Belgium (French) 22) New Zealand
4) Belgium (English) 23) Norway
5) Brazil 24) Philippines
6) Canada 25) Peoples Republic of China (PRC)
7) Denmark 26) Singapore
8) France (French) 27) Spain (Spanish)
9) France (English) 28) Spain (English)
10) Germany (German) 29) Sweden
11) Germany (English) 30) Switzerland (German)
12) Hong Kong 31) Switzerland (English)
13) India 32) Taiwan
14) Ireland 33) Thailand
15) Italy (Italian) 34) United Kingdom
16) Italy (English) 35) United States of America
17) Japan 36) Americas (Mid/So.), Asia Pacific - General
18) Korea 37) Europe, Middle East, Africa - General
19) Malaysia 38) Other Locations
Please enter the number for the location you are installing (1..38, Q): 8
Après le choix de la langue, la licence s’affiche, licence que l’on fait
défiler avec la touche "Enter"
. À l’issue de la lecture du contrat de licence,
taper Y
pour accepter la licence.
" Version Majeure " - Désigne la sortie d’une Mise à jour majeure des Programmes contenant de nouvelles
caractéristiques et fonctions ainsi que des correctifs d’erreurs.
" W " dans la colonne intitulée " Plate-forme/Système d’application " d’une Annexe A -
Correspond à " Lieu de travail " et désigne une version du Programme dont l’installation est autorisée
sur des Machines opérant dans un environnement UNIX, ayant une capacité de traitement informatique maximale
(calculée en multipliant le nombre maximal de CPU par la vitesse maximale de chaque CPU pouvant être rattaché
au serveur par le fabricant, quel que soit le nombre réel de CPU ou la vitesse réelle des CPU installés)
est inférieure ou égale à 2 000 et des Machines fonctionnant dans un environnement Windows, Macintosh ou Linux.
1
Contrat de licence 030424
(EOF)Press <Return> to continue:
I agree with the terms of the license, for the location specified ? Y
Étape de sélection des produits
L’installation d’une distribution IQ 12.7 est toujours accompagnée de l’installation d’un Open Client 15.0. il est possible de ne pas installer la version de l’Open Client 15.0 qui accompagne IQ 12.7 afin d’utiliser un Open Client 15.0 éventuellement déjà installé dans un autre répertoire. La philosophie d’installation de Sybase IQ 12.7 au sujet de l’Open Client est la même que celle pour Sybase Replication Server qui a besoin d’un Open Client également. Ce choix est proposé à l’étape de sélection des produits, étape pendant laquelle il est également possible de désélectionner les composants JConnect, Sybase Central, etc.
Sybase IQ 12.7 Enterprise Edition
Select Products
Destination Directory ($SYBASE/$SYBROOT) Free Space(k)
---------------------------------------------------------- -------------
/Software/sybase/asiq-12.7 26496033
# Product Size(k) Install Directory
-- -------------------------------- ------- --------------------------
1) Sybase IQ 304412 $SYBASE/ASIQ-12_7
2) SDK (Open Client) 15.0 411880 $SYBASE/
3) Sybase Central Java Edition 4.3 2496 $SYBASE/shared/sybcentral43
4) jConnect 5.5 17132 $SYBASE/shared
5) jConnect 6.0 16108 $SYBASE/shared
6) Java Runtime Environment 1.4.2 74488 $SYBASE/shared/jre-1_42
Options
--------------------------------------------
1..6) De/Select Product for Installation
C) Change Sybase Target Directory
S) Selection Completed
Q) Quit the Install
Please enter (1..6, C, S or Q )
Étape de la base fantôme Utility DB (utility_db)
La base de données utilitaire 'utility db' est une base factice qui permet
de se connecter à un serveur IQ sans spécificier de bases de données afin de
lancer des commandes IQ CREATE DATABASE
, DROP DATABASE
et RESTORE DATABASE
. Par
défaut le compte pour se connecter à cette base de données factice est DBA
(mot
de passe : SQL
). L’étape "Setup Utility Database" permet de changer ces
paramètres par défaut (login et mot de passe), paramètres qui sont stockés dans
le fichier $ASDIR/bin/util_db.ini
.
$ASDIR
est une variable d’environnement qui sera décrite un peu plus tard
dans cet article : dans le contexte de cette installation $ASDIR
pointe vers le
répertoire /Software/sybase/asiq-12.7/ASIQ-12_7
.
Sybase IQ 12.7 Enterprise Edition
Setup Utility Database
The utility database is a phantom database that allows users
to connect to an IQ server without specifying a database.
The "utility_db" allows the user only a narrow range of
specialized file manipulation statements which include:
CREATE DATABASE, DROP DATABASE, RESTORE DATABASE.
The ascii file contains the DBA's login and password
is "$ASDIR/bin/util_db.ini". By default the login is
"DBA" with a password of "SQL"
Do you want to change the current user and password ? Y
Please enter new login for utility_db: sa
Enter the new password (not echoed):
For verification, please re-enter the password (not echoed):
L’utilisation de la base utility_db
sera décrite ultérieurement.
Installation de la distribution IQ
La sélection des produits et la configuration utility_db
réalisées,
l’installation des binaires et librairies dans le répertoire de destination
(/Sotware/sybase/asiq-12.7
) démarre :
Updating shared directories ...
x java, 0 bytes, 0 tape blocks
x java/HelpManager11.jar, 56339 bytes, 111 tape blocks
x java/JComponents142.jar, 828882 bytes, 1619 tape blocks
x java/SCEditor142.jar, 345060 bytes, 674 tape blocks
x java/jsyblib142.jar, 266937 bytes, 522 tape blocks
x sun, 0 bytes, 0 tape blocks
x sun/javahelp-1_1, 0 bytes, 0 tape blocks
x sun/javahelp-1_1/jh.jar, 347246 bytes, 679 tape blocks
Shared directories updated.
Product install completed.
Press <Return> to continue:
Étape des options IQ
Pour IQ 12.7, il existe deux options sous licence spécifique (comme l’option RTDS avec Sybase ASE, etc.) : ces options concernent la gestion des objets LOB (LOB) et l’encryption des colonnes (ENC). Ces 2 options ne sont pas installées faute de licence lors de l’écran d’installation des composants optionnels :
Sybase IQ 12.7 Enterprise Edition
Enter Optional Components
If you have purchased any optional components, such as Large
Object (LOB) or Column Encryption (ENC), you may enter them
at this time. Please enter each Component and Key purchased
Enter Component :
Do you want to enter another component/key ? N
Mise à jour des fichiers de configuration
Dans la dernière étape, les fichiers de configuration shell et Cshell sont mis à jour pour sourcer l’environnement IQ 12.7 et l’Open Client 15.0. Ces fichiers sont très importants dans le contexte de la normalisation évoquée plus bas :
Sybase IQ 12.7 Enterprise Edition
Environment Setup
The following environment files have been created
-------------------------------------------------
/Software/sybase/asiq-12.7/ASIQ-12_7/ASIQ-12_7.csh (Sybase IQ)
/Software/sybase/asiq-12.7/ASIQ-12_7/ASIQ-12_7.sh (Sybase IQ)
/Software/sybase/asiq-12.7/SYBASE.csh (SDK (Open Client) 15.0)
/Software/sybase/asiq-12.7/SYBASE.env (SDK (Open Client) 15.0)
/Software/sybase/asiq-12.7/SYBASE.sh (SDK (Open Client) 15.0)
Installation completed.
Les répertoires principaux installés sont listés dans le tableau ci-dessous :
Répertoire | Fonctionnalités |
---|---|
/Software/sybase/asiq-12.7 |
Racine de l’installation de Sybase IQ 12.7. |
/Software/sybase/asiq-12.7/ASIQ-12_7 |
Binaires et librairies d’Adaptive Server IQ. |
/Software/sybase/asiq-12.7/OCS-15_0 |
Open Client 15.0. |
Mise en œuvre des variables d’environnement dans les scripts SYBASE.sh et ASIQ-12_7.sh
Script SYBASE.sh
Pour un serveur Sybase IQ, la variable $SYBASE
est toujours au préalable
définie sur le répertoire racine de la distribution IQ (IQ + Open Client),
c’est-à-dire dans le contexte de notre architecture :
export SYBASE=/Software/sybase/asiq-12.7
Le script SYBASE.sh
dans le répertoire /Software/sybase/asiq-12.7
prend en
charge de manière générique la définition des variables d’environnement
SYBASE
, SYBROOT
, SYBASE_OCS
, PATH
, LD_LIBRARY_PATH
, INCLUDE
et LIB
.
SYBASE.sh
#!/bin/sh
SYBASE=/Software/sybase/asiq-12.7
export SYBASE
SYBASE_OCS=OCS-15_0
export SYBASE_OCS
SYBROOT=/Software/sybase/asiq-12.7
export SYBROOT
PATH=${SYBASE}/${SYBASE_OCS}/bin:${PATH}
export PATH
LD_LIBRARY_PATH=${SYBASE}/${SYBASE_OCS}/lib:${SYBASE}/${SYBASE_OCS}/lib3p64:${SYBASE}/${SYBASE_OCS}/lib3p:
${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
INCLUDE=${SYBASE}/${SYBASE_OCS}/include:$INCLUDE
export INCLUDE
LIB=${SYBASE}/${SYBASE_OCS}/lib:$LIB
export LIB
La variable d’environnement LD_LIBRARY_PATH_64
doit être retirée lorsque l’on source un environnement IQ si celle-ci a été initialisée auparavant par un environnement Sybase Adaptive Server Enterprise.
L’existence de cette variable LD_LIBRARY_PATH_64
pointant vers un répertoire d’une distribution $SYBASE/$SYBASE_OCS/lib3p64
engendre des stack trace.
Si la machine hébergeant des serveurs IQ contient donc également des serveurs ASE initialisant la variable LD_LIBRARY_PATH_64
,
il faut rajouter par précaution la commande unset LD_LIBRARY_PATH_64
dans le fichier SYBASE.sh
de la distribution IQ :
unset LD_LIBRARY_PATH_64
Script ASIQ-12_7.sh
Contrairement à la version 12.4.2, la variable $ASDIR
n’est plus définie dans
le script SYBASE.sh
mais dans le script ASIQ-12_7.sh
créé dans le répertoire
$SYBASE/ASIQ-12_7
au cours de l’installation.
$ASDIR
est une variable définie par l’éditeur SYBASE et elle
caractérise la localisation complète de la distribution Adaptive Server IQ
proprement dite (binaires et librairies d’IQ, sans open client) :
ASDIR=${SYBASE}/ASIQ-12_7
N.B. : Contrairement à la version 12.4.2, la variable SYBASE_OCIQ
pointant
sur le répertoire $ASDIR/ociq-12_0
est devenue obsolète, le répertoire
ociq-12_0
n’existant plus.
Outre la définition de la variable $ASDIR
, le script ASIQ-12_7.sh
ajoute
respectivement les répertoires $ASDIR/bin
et $ASDIR/lib
dans les variables
d’environnement $PATH
et $LD_LIBRARY_PATH
:
ASIQ-12_7.sh
#!/bin/sh
...
# ... Setup ASIQ environment .........................
ASDIR="${SYBASE}/ASIQ-12_7"
# ... Prepend to Path ................................
PATH="${ASDIR}/bin:${SYBASE}/${SYBASE_OCS}/bin:${PATH}"
# ... Setup O/S specific environment .................
IQLIB="${ASDIR}/lib:${SYBASE}/${SYBASE_OCS}/lib"
case SunOS in
AIX) LDR_CNTRL=USERREGS # Add for JRE 1.4.2 (SR3)
export LDR_CNTRL
LIBPATH="${IQLIB}:$LIBPATH"
export LIBPATH
;;
*AMD) IQLIB="${IQLIB}:${ASDIR}/lib64"
;;
esac
LD_LIBRARY_PATH="${IQLIB}:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH
unset IQLIB
export ASDIR SYBROOT SYBASE SYBASE_OCS PATH
Normalisation d’un serveur Sybase IQ
Dans tous les paragraphes qui suivent, la variable d’environnement
$DBA
identifie le répertoire /Software/sybase/dba
.
<servernameIQ>
identifie un serveur Sybase IQ.
Nomenclature des serveurs Sybase IQ et normalisation des ports
Les serveurs Sybase IQ ont la nomenclature :
<APP>_<D|T|U|P>xx_ASQ
- <
AP
> : Trigramme de l’application - <
D|T|U|P
> : Environnement Développement (D
) | System Test (T
) | UAT (U
) | Production (P
) xx
: numéro de serveur dans l’environnement
À titre d’exemple : le premier serveur Sybase IQ sur une machine
dédiée à du system test pour l’application ayant le trigramme DBA
a pour
nomenclature DBA_T1_ASQ
.
Les ports des serveurs Sybase IQ sont compris entre 30070 et 30079.
Exceptions pour le serveur IQ de la base factice utilitaire utility_db
:
Le serveur IQ de la base factice utilitaire utility_db
a toujours pour nomenclature UTL_<hostname>_ASQ
.
Le port 30070 est réservé au serveur IQ de la base factice utilitaire utility_db
.
Pour plus d’informations sur la base factice utility_db
: IQ 12.7 : La base factice utilitaire IQ (utility_db)
Le répertoire $DBA/<servernameIQ>
Chaque serveur Sybase IQ doit disposer d’un répertoire dans le
répertoire $DBA
(/Software/sybase/dba
) : par exemple $DBA/DBA_T1_ASQ
.
L’arborescence du répertoire $DBA/<servernameIQ>
est la suivante
:
Répertoire | Description | |
---|---|---|
$DBA/DBA_T1_ASQ |
/cfg | Répertoire du fichier de configuration <servernameIQ>.cfg
du serveur Sybase IQ (DBA_T1_ASQ.cfg ). |
/log | Répertoire des fichiers de logs du serveur Sybase IQ |
Le shell USE dans le répertoire $DBA/bin
Le shell USE
avec l’option –Q
dans le répertoire $DBA/bin
source l’environnement d’un serveur Sybase IQ. :
USE –Q < ? | ServerName >
Lorsque ?
est donné en paramètre au shell USE
, le liste des serveurs Sybase
IQ installée sur la machine est affichée :
sybase@SRVUNXFR> USE -Q ?
DBA_T1_ASQ
Pour sourcer les variables d’environnement d’un serveur Sybase
IQ, le shell USE
s’appuie sur le fichier <servernameIQ>.asq
dans le
répertoire $DBA/etc
. Par défaut, si le fichier <servernameIQ>.asq
existe,
le shell USE
source la variable IQSERVERNAME
laquelle est positionnée à
<servernameIQ>
:
$DBA/etc/DBA_T1_ASQ.asq
export IQSERVERNAME=DBA_T1_ASQ
Le répertoire $DBA/etc et le fichier <servernameIQ>.asq
Le shell USE
dans le répertoire $DBA/bin
source l’environnement d’un serveur Sybase IQ.
A titre d’exemple : pour sourcer l’environnement du serveur
Sybase IQ DBA_T1_ASQ
, le shell USE
s’appuie sur le fichier DBA_T1_ASQ.asq
dans le répertoire $DBA/etc
.
sybase@SRVUNXFR> USE -Q DBA_T1_ASQ
DBA_T1_ASQ >
Les variables d’environnement alors sourcées pour le serveur Sybase IQ
DBA_T1_ASQ
sont les suivantes :
Description | Variable d’environnement | Valeur exemple |
---|---|---|
Nom du serveur Sybase IQ | $IQSERVERNAME |
DBA_T1_ASQ |
Répertoire de la distribution racine Sybase IQ (IQ + Open Client) | $SYBASE |
/Software/sybase/asiq-12.7 |
Localisation complète du répertoire
de la distribution Sybase propre
à IQ (répertoire ASIQ-<version> ) |
$ASDIR |
$SYBASE/ASIQ-12_7 |
Nom de l’application | $APPNAME |
dba |
Environnement du serveur Sybase IQ | $DBENV |
DEV , UAT ou PROD |
Répertoire de configuration | $CFG |
/Software/sybase/dba/DBA_T1_ASQ/cfg |
Répertoire des scripts | $SCRIPT |
/Software/sybase/dba/DBA_T1_ASQ/cfg/script |
Répertoire des dumps | $DMP |
/Software/sybase/dba/DBA_T1_ASQ/dmp |
Répertoire des logs | $LOG |
/Software/sybase/dba/DBA_T1_ASQ/log |
PATH | $PATH |
/Software/sybase/asiq-12.7/ASIQ-12_7/bin:
/Software/sybase/asiq-12.7/OCS-15_0/bin:$PATH |
LD_LIBRARY_PATH | $LD_LIBRARY_PATH |
/Software/sybase/asiq-12.7/ASIQ-12_7/lib:
/Software/sybase/asiq-12.7/OCS-15_0/lib:
/Software/sybase/asiq-12.7/OCS-15_0/lib:
/Software/sybase/asiq-12.7/OCS-15_0/lib3p64:
/Software/sybase/asiq-12.7/OCS-15_0/lib3p:
$LD_LIBRARY_PATH |
Le fichier <servernameIQ>.asq
se contente de sourcer les variables
propres au serveur Sybase IQ en question : $DSQUERY
, $SYBASE
, $APPNAME
et
$DBENV
.
Les autres variables génériques ($CFG
, etc.) sont sourcées par le
shell $DBA/etc/defaults_asq.ksh
, lequel doit être appelé à la fin de chaque
fichier <servernameIQ>.asq
.
Cas pratique :
$DBA/etc/DBA_T1_ASQ.asq
#!/bin/ksh
export DSQUERY=DBA_T1_ASQ
export SYBASE=/Software/sybase/asiq-12.7
export APPNAME=dba
export DBENV=DEV
. ~sybase/dba/etc/defaults_asq.ksh
Le shell defaults_asq.ksh
source les variables génériques à tous les
serveurs Sybase IQ et est appelé à la fin de chaque fichier
$DBA/etc/<servernameIQ>.asq
, il prend notamment automatiquement en charge
l’appel des scripts shell SYBASE.sh
et ASIQ-12_7.sh
localisés
respectivement dans les répertoires $SYBASE
et $SYBASE/ASIQ-12_7
.
L’appel du shell $ASDIR/ASIQ-12_7.sh
est automatiquement réalisé dans le
shell defaults_asq.ksh
en détectant son existence avec la commande find
. Cette
normalisation permet d’avoir plusieurs distributions IQ 12.7 avec des niveaux
d’ESD différents (ex. : $SYBASE=/Software/sybase/asiq-12.7
et
$SYBASE=/Software/sybase/asiq-12.7-ESD4
) et quelque soit la distribution, ce
sera bien le fichier $SYBASE/ASIQ-12_7/ASIQ-12_7.sh
qui sera sourcé.
Le shell defaults_asq.ksh
source également la variable d’environnement
SQLCONNECT
, variable très précieuse pour éviter d’appeler les binaires dbisql
et dbisqlc
avec l’option -c
"uid=<username>;pwd=<password>;eng=<engine-name>"
dans le cas
d’un serveur IQ physique et l’option -c
"uid=<username>;pwd=<password>;eng=<engine-name>;dbn=utility_db"
dans le cas du serveur IQ de la base factice utility_db
.
- Le serveur IQ de la base
utility_db
est détecté avec sa nomenclatureUTL_<hostname>_ASQ
. Dans ce contexte le compte est systématiquementDBA
, le mot de passe celui qui figure dans le fichier$ASDIR/bin/util_db.ini
. La variable d’environnementSQLCONNECT
générée pour la base IQutility_db
de la machine SRVUNXFR sera par exemple du type"uid=DBA;pwd=*******;eng=UTL_SRVUNXFR_ASQ;dbn=utility_db"
. - Pour les serveurs IQ physiques, la variable d’environnement
SQLCONNECT
permet de se connecter avec le compte sa au moteur IQIQSERVERNAME
. Le mot de passe du compte sa est récupéré à partir du fichier$CFG/script/mdp/mdp_sa
. Dans ce contexte la variableSQLCONNECT
est du typeSQLCONNECT="uid=sa;pwd=******;eng=IQSERVERNAME"
. Le compte sa avec l’autorité DBA est bien entendu créé dans le serveur IQ au préalable.
$DBA/etc/defaults_asq.ksh
#!/bin/ksh
###################################################################################
# @(#) Fichier : defaults_asq.ksh
# @(#) Auteur : DBA team
# @(#) Objet : Set default environment
###################################################################################
export IQSERVERNAME=$DSQUERY
export DBA=~sybase/dba
export PS1="$IQSERVERNAME > "
export CFG=$DBA/$IQSERVERNAME/cfg
export SCRIPT=$DBA/$IQSERVERNAME/cfg/script
export DMP=$DBA/$IQSERVERNAME/dmp
export LOG=$DBA/$IQSERVERNAME/log
. $SYBASE/SYBASE.sh
SHASIQ=`find $SYBASE -name 'ASIQ-*.sh'`
if [ ! -z $SHASIQ ] ; then
. $SHASIQ
else
echo "Unable to find shell script ASIQ"
fi
# Preparation de la variable SQLCONNECT
if [ $(echo ${IQSERVERNAME} | egrep `hostname`| wc -l) -eq 1 ]
then
DBUSER=DBA
DBPWD=`cat ${ASDIR}/bin/util_db.ini | grep 'PWD' | nawk -F"=" '{print $2}`
export SQLCONNECT="uid=${DBUSER};eng=${DSQUERY};pwd=${DBPWD};dbn=utility_db"
else
DBUSER=sa
DBPWD=`cat ${CFG}/script/mdp/mdp_sa`
export SQLCONNECT="uid=${DBUSER};eng=${DSQUERY};pwd=${DBPWD}"
fi
export ENV=~sybase/.kshrc
L’environnement appliqué pour le serveur Sybase IQ DBA_T1_ASQ
est
alors le suivant :
DBA_T1_ASQ > env
_=/usr/xpg4/bin/env APPNAME=dba HZ=100 PATH=/Software/sybase/asiq-12.7/ASIQ-12_7/bin:/Software/sybase/asiq-12.7/OCS-15_0/bin: /Software/sybase/asiq-12.7/OCS-15_0/bin:/usr/xpg4/bin:/usr/bin:/usr/ucb:/etc:/usr/ccs/bin:/usr/sbin:.: /Software/sybase/dba/bin SCRIPT=/Software/sybase/dba/DBA_T1_ASQ/cfg/script CFG=/Software/sybase/dba/DBA_T1_ASQ/cfg ASDIR=/Software/sybase/asiq-12.7/ASIQ-12_7 LOG=/Software/sybase/dba/DBA_T1_ASQ/log EDITOR=vi LOGNAME=sybase DMP=/Software/sybase/dba/DBA_T1_ASQ/dmp TLG=/Software/sybase/dba/DBA_T1_ASQ/tlg PS1=DBA_T1_ASQ > SYBASE=/Software/sybase/asiq-12.7 IQSERVERNAME=DBA_T1_ASQ DBENV=DEV DBA=/Software/sybase/dba DCD=/Software/sybase/dba/etc DCA=/Software/sybase/dba/etc/DBA_T1_ASQ.asq SHELL=/bin/ksh HOME=/Software/sybase IQSERVERNAME=DBA_T1_ASQ TERM=xterm LD_LIBRARY_PATH=/Software/sybase/asiq-12.7/ASIQ-12_7/lib:/Software/sybase/asiq-12.7/OCS-15_0/lib: /Software/sybase/asiq-12.7/OCS-15_0/lib:/Software/sybase/asiq-12.7/OCS-15_0/lib3p64: /Software/sybase/asiq-12.7/OCS-15_0/lib3p: PWD=/Software/sybase/asiq-12.7 TZ=MET SYBASE_OCS=OCS-15_0 SQLCONNECT=uid=sa;pwd=******;eng=DBA_T1_ASQ ENV=/Software/sybase/.kshrc
Normalisation de la localisation des fichiers de données Sybase IQ
À ce stade, la normalisation des fichiers de bases de données de Sybase IQ n’est pas encore définie puisque l’étude démarre. Ce paragraphe sera renforcé dans les versions ultérieures. En revanche, les fichiers des bases de données de Sybase IQ seront installés systématiquement dans des filesystems ayant la nomenclature ci-dessous :
<Trigrame_application>/asiq/<servernameIQ>
Dans notre cas pratique : /dba/asiq/DBA_T1_ASQ
.
Les sauvegardes pour un serveur Sybase IQ sont quant à elles implémentées dans le filesystem ayant la nomenclature ci-dessous :
<Trigrame_application>/asiq/<servernameIQ>/export
Le lien dmp
dans le répertoire $DBA/<servernameIQ>
pointe sur ce
filesystem dédié aux sauvegardes :
dmp -> /dba/asiq/DBA_T1_ASQ/export
Test de l’installation normée avec la base de données IQ asiqdemo
La base de données IQ asiqdemo
Une base de données Sybase IQ de démonstration est par défaut installée dans
le répertoire $ASDIR/demo
(/Software/sybase/asiq-12.7/ASIQ-12_7/demo
).
Pour tester l’environnement normé DBA_T1_ASQ
, les fichiers de données
*.iqtmp
, *.iqmsg
, *.iq
et *.db
de cette base de données de démo asiqdemo
sont
transvasés dans le répertoire normalisé /dba/asiq/DBA_T1_ASQ
:
DBA_T1_ASQ > cp $ASDIR/demo/*.iq* /dba/asiq/DBA_T1_ASQ DBA_T1_ASQ > cp $ASDIR/demo/*.db /dba/asiq/DBA_T1_ASQ DBA_T1_ASQ > ls -ll /dba/asiq/DBA_T1_ASQ
-rwxr-xr-x 1 sybase dba 5242880 Jul 15 15:22 asiqdemo.iqtmp -rwxr-xr-x 1 sybase dba 113144 Jul 15 15:22 asiqdemo.iqmsg -rwxr-xr-x 1 sybase dba 10485760 Jul 15 15:22 asiqdemo.iq -rw------- 1 sybase dba 2179072 Jul 15 15:22 asiqdemo.db
Le fichier de configuration $CFG/DBA_T1_ASQ.cfg
Le fichier de configuration DBA_T1_ASQ.cfg
du serveur IQ DBA_T1_ASQ
pour
démarrer la base IQ de démo asiqdemo
est créé et installé dans le répertoire
$CFG
(/Software/sybase/dba/DBA_T1_ASQ/cfg
). L’objectif de cet article ne
consiste pas à détailler les paramètres de configuration d’un serveur
Sybase IQ, toutefois voici les paramètres appliqués au serveur IQ DBA_T1_ASQ
avec quelques remarques sur ces paramètres :
$DBA/DBA_T1_ASQ/DBA_T1_ASQ.cfg
-n DBA_T1_ASQ
-c 16m
-gd all
-gn 25
-gm 10
-gp 4096
-ti 4400
-tl 300
-x tcpip{port=30073}
-o /Software/sybase/dba/DBA_T1_ASQ/log/DBA_T1_ASQ.log
/dba/asiq/DBA_T1_ASQ/asiqdemo.db
Paramètre | Valeur | Description |
---|---|---|
-n |
DBA_T1_ASQ |
Nom du serveur Sybase IQ |
-c |
16m |
Taille en Mb du cache pour le catalogue |
-gc |
6000 |
Nombre de minutes pour la période de timeout du checkpoint |
-gd |
all |
Permissions accordées aux utilisateurs Unix/NT pour le
démarrage de la base de données (par ex : root est autorisé
à démarrer la base IQ avec la valeur all ) |
-gm |
10 |
Nombre de connexions autorisées |
-gp |
4096 |
Taille maximale en bytes pour le stockage des pages du catalogue |
-gr |
6000 |
Temps maximal en minutes pour le recovery |
-ti |
4400 |
Timeout du client en minutes |
-tl |
300 |
Timeout en secondes pour les clients qui sont en mode running |
-x |
tcpip(port=xxxx) |
Paramètre TCP/IP port du serveur Sybase IQ |
-o |
$LOG/DBA_T1_ASQ.log |
Localisation et nomenclature du fichier de log du serveur IQ |
En dernier paramètre, la localisation du fichier de données de la base de
données IQ asiqdemo
est donné :
/dba/asiq/DBA_T1_ASQ/asiqdemo.db
Démarrage du serveur DBA_T1_ASQ
Le shell start_asiq
dans le répertoire $ASDIR/bin
(/Software/sybase/asiq-12.7/ASIQ-12_7/bin
) démarre le serveur Sybase
IQ DBA_T1_ASQ
. Il suffit de donner en paramètre au shell start_asiq
le fichier
de configuration du serveur Sybase IQ à démarrer ($CFG/DBA_T1_ASQ.cfg
dans
notre exemple)
Syntaxe > start_asiq @$CFG/$IQSERVERNAME.cfg
DBA_T1_ASQ > start_asiq @$CFG/DBA_T1_ASQ.cfg
Le fichier de log DBA_T1_ASQ.log
du serveur DBA_T1_ASQ
(fichier localisé
dans le répertoire $LOG
: /Software/sybase/dba/DBA_T1_ASQ
) indique le bon
démarrage de ce serveur avec le message 'started
successfully
' :
I. 10/24 16:23:12. Adaptive Server IQ
I. 10/24 16:23:12. Version 12.7
I. 10/24 16:23:12. (64bit mode)
I. 10/24 16:23:12. Copyright 1992-2006 by Sybase, Inc. All rights reserved
I. 10/24 16:23:12.
I. 10/24 16:23:12. 2 physical processor(s) detected.
I. 10/24 16:23:12. Running on SunOS 5.10 Generic_137111-03
I. 10/24 16:23:12. 49152K of memory used for caching
I. 10/24 16:23:12. Minimum cache size: 49152K, maximum cache size: 262008K
I. 10/24 16:23:12. Using a maximum page size of 4096 bytes
I. 10/24 16:23:12. Starting database "asiqdemo" (/dba/asiq/DBA_T1_ASQ/asiqdemo.db) at Fri Oct 24 2008 16:23
=============================================================
IQ server starting with:
10 connections ( -gm )
14 cmd resources ( -iqgovern )
145 threads ( -iqmt )
512 Kb thread stack size ( -iqtss )
74240 Kb thread memory size ( -iqmt * -iqtss )
2 IQ number of cpus ( -iqnumbercpus )
=============================================================
I. 10/24 16:23:13. Transaction log: asiqdemo.log
I. 10/24 16:23:13. Starting checkpoint of "asiqdemo" (asiqdemo.db) at Fri Oct 24 2008 16:23
I. 10/24 16:23:13. Finished checkpoint of "asiqdemo" (asiqdemo.db) at Fri Oct 24 2008 16:23
I. 10/24 16:23:14. Database "asiqdemo" (asiqdemo.db) started at Fri Oct 24 2008 16:23
I. 10/24 16:23:14. IQ Server DBA_T1_ASQ.
I. 10/24 16:23:14. Database server started at Fri Oct 24 2008 16:23
I. 10/24 16:23:14. Trying to start SharedMemory link ...
I. 10/24 16:23:14. SharedMemory link started successfully
I. 10/24 16:23:14. Trying to start TCPIP link ...
I. 10/24 16:23:14. Starting on port 30073
I. 10/24 16:23:19. TCPIP link started successfully
I. 10/24 16:23:19. Now accepting requests
New process id is 25425
Server started successfully
La commande ps
du package /usr/ucb
(University of Berkeley) permet
d’identifier le binaire asiqsrv12
qui correspond au serveur Sybase IQ
DBA_T1_ASQ
qui vient d’être démarré (NB : le binaire asiqsrv12
est
localisé dans le répertoire $ASDIR
: /Software/sybase/asiq-12.7/ASIQ-12_7/bin
)
:
sybase@SRVUNXFR>/usr/ucb/ps -auxwwwwww | grep 'iq' | grep –v 'grep' | grep 'DBA_T1_ASQ'
sybase 16936 0.0 3.28339264160 pts/4 S 16:23:12 0:02 asiqsrv12 @/Software/sybase/dba/DBA_T1_ASQ/cfg/DBA_T1_ASQ.cfg -gn 25 -hn 8
Test de connexion au serveur IQ DBA_T1_ASQ
Le binaire dbisql
(localisé dans le répertoire $ASDIR/bin
) permet de tester
la connexion au serveurDBA_T1_ASQ
. Pour la base de données asiqdemo
, les
paramètres de connexion sont DBA / SQL
. L’option -nogui
est donnée au binaire
dbisql
pour éviter le lancement de l’interface graphique.
DBA_T1_ASQ > dbisql -c "uid=DBA;pwd=SQL;eng=DBA_T1_ASQ" -nogui
(DBA) >
Arrêt du serveur DBA_T1_ASQ
Le shell stop_asiq
dans le répertoire $ASDIR/bin
(/Software/sybase/asiq-12.7/ASIQ-12_7/bin
) permet d’arrêter un serveur
Sybase IQ. Ce shell liste les serveurs Sybase IQ démarrés sur la machine et
demande à l’utilisateur le numéro du serveur Sybase IQ à arrêter.
Ce shell fera l’objet d’une revue pour éviter l’invite à l’utilisateur et ainsi arrêter un serveur Sybase IQ automatiquement.
Ajout des raccourcis d’environnement
Lorsqu’un environnement IQ est sourcé, à la fin du script
$DBA/etc/defaults_asq.ksh
la variable d’environnement ENV
est appliquée :
export ENV=~sybase/.kshrc
Dès que la variable d’environnement ENV
est initialisée, le shell associé
est exécuté. Dans la version 1.1 du shell .kshrc
sont créés quelques raccourcis
très pratiques pour les serveurs IQ.
Avant de pouvoir utiliser la plupart des raccourcis, un compte sa avec les droits DBA est systèmatiquement créé dans un serveur IQ physique.
Le mot de passe du compte sa est stocké dans le ficher $CFG/script/mdp/mdp_sa
.
Dans le cas de la base factice, le compte DBA est incontournable.
Pour créér le compte sa avec dbisql dans un serveur IQ physique :
dbisql > grant connect to sa identified by *******;
dbisql > grant DBA to sa;
Raccourcis vers dbisql et dbisqlc
2 raccourcis dbi
et dci
sont créés respectivement pour les binaires dbisql
et dbisqlc
afin d’éviter de saisir à chaque fois dbisql -nogui
et dbisqlc -q
à
chaque appel. La variable SQLCONNECT
étant déjà préparée par le fichier
defaults_asq.ksh
, l’option -c
donnant les paramètres de connexion (uid
, pwd
, etc.) est inutile.
if [ $(echo ${DSQUERY} | egrep "_ASQ" | wc -l) -eq 1 ]
then
alias dbi="dbisql -nogui "
alias dci="dbisqlc -q "
...
fi
L’alias dbi
exécute dbisql
avec l’option -nogui
(No Graphical User
Interface <=> mode console).
L’alias dci
lance dbisqlc
avec l’option -q
(mode console).
Raccourci vers le fichier de message .iqmsg (tail -f)
Lorsque certaines opérations sont réalisées comme les chargements de table
avec la commande LOAD TABLE
, il est souvent pratique de suivre en direct ces
opérations qui sont tracées dans le fichier de message du serveur IQ (par
défaut <databasename>.iqmsg
) avec une commande tail -f
. C’est pourquoi
l’alias fmsg
réalisant une commande tail -f
sur le fichier de message du
serveur IQ est créé :
Exemple :
IDB_T1_ASQ> fmsg
I. 12/03 11:43:30. 0000000183 [20819]: In table 'QUOTE', the full width insert of 12 columns will begin at record 1. I. 12/03 11:43:30. 0000000183 Insert Started: I. 12/03 11:43:30. 0000000183 QUOTE I. 12/03 11:43:31. 0000000183 [20897]: 100000 Rows, 1 Seconds I. 12/03 11:43:32. 0000000183 [20897]: 200000 Rows, 1 Seconds
Pour mettre en œuvre ce raccourci, les fichiers du catalogue et de
message doivent avoir respectivement des nomenclatures analogues :
<databasename>.db
pour le fichier de catalogue et
<databasename>.iqmsg
pour le fichier de message. Ces deux fichiers
doivent également se situer dans le même répertoire.
Pour retrouver le fichier de messages du serveur IQ, la localisation du
catalogue est analysée à partir du fichier de configuration du serveur IQ. La
création de l’alias fmsg
n’est réalisée que si il s’agit d’un serveur IQ
physique et non d’une base factice utility_db
, pour cela le nom de la machine
est recherchée dans la nomenclature du serveur IQ :
if [ $(echo ${DSQUERY} | egrep "_ASQ" | wc -l) -eq 1 ]
then
if [ $(echo ${DSQUERY} | egrep `hostname`| wc -l) -ne 1 ]
then
IQMSGFILE=`cat ${CFG}/${DSQUERY}.cfg | grep "\.db" | sed -e "s/\.db/\.iqmsg/g"`
alias fmsg="tail -f $IQMSGFILE"
fi
....
fi
isql/sqsh et Sybase IQ
Un serveur IQ peut être interrogé par isql
avec la librairie Open Client
15.0. Pour rendre cette fonctionnalité opérationnelle le fichier interfaces
ou
le fichier sql.ini
(pour Windows) doit référencer le serveur IQ.
Fichier interfaces (Unix) | Fichier sql.ini (Windows) |
---|---|
|
|
> isql -Usa -SDBA_T1_ASQ
isql
étant disponible pour interroger un serveur IQ, par conséquent sqsh
est
également utilisable.
Avec la version 15.0 de Sybase, beaucoup de librairies dans le répertoire
$SYBASE/$SYBASE_OCS/lib
ont été renommées de lib%
en syblib%
. Aussi, si il
s’agit d’une version de sqsh
anciennement compilée et que l’erreur ci-dessous
est rencontrée :
ld.so.1: sqsh8: fatal: libcs.so: open failed: No such file or directory
Killed
La création des liens symboliques ci-dessous dans $SYBASE/$SYBASE_OCS/lib
(distribution
OCS 15 de la distribution IQ 12.7) suffit amplement pour faire fonctionner à
nouveau sqsh
:
%> cd $SYBASE/$SYBASE_OCS/lib
%> ln -fs libsybtcl.so libtcl.so
%> ln -fs libsybcomm.so libcomm.so
%> ln -fs libsybcomn.so libcomn.so
%> ln -fs libsybcs.so libcs.so
%> ln -fs libsybct.so libct.so
%> ln -fs libsybintl.so libintl.so
L’alias i
renvoie vers sqsh
.
alias i="~sybase/dba/bin/sqsh -r ~sybase/dba/bin/.sqshrc -b -w 1000"
L’utilisation de l’alias i
est impossible pour la base IQ factice
utility_db
. La base de données IQ utility_db
ne peut en effet être utilisée
qu’avec le compte DBA, la création du compte sa y est impossible.
Code source du shell .kshrc (version 1.1)
alias i="~sybase/dba/bin/sqsh -r ~sybase/dba/bin/.sqshrc -b -w 1000"
alias tlog="tail -50 ${LOG}/${DSQUERY}.log"
alias flog="tail -f ${LOG}/${DSQUERY}.log"
alias vlog="view ${LOG}/${DSQUERY}.log"
if [ $(echo ${DSQUERY} | egrep "_ASQ" | wc -l) -eq 1 ]
then
if [ $(echo ${DSQUERY} | egrep `hostname`| wc -l) -ne 1 ]
then
IQMSGFILE=`cat ${CFG}/${DSQUERY}.cfg | grep "\.db" | sed -e "s/\.db/\.iqmsg/g"`
alias fmsg="tail -f $IQMSGFILE"
fi
alias dbi="dbisql -nogui "
alias dci="dbisqlc -q "
fi
if [ $(echo ${DSQUERY} | egrep "_ASE" | wc -l) -eq 1 ]
then
alias bflog="tail -f ${DBA}/${BCKSERVERNAME}/log/${BCKSERVERNAME}.log"
alias bvlog="view ${DBA}/${BCKSERVERNAME}/log/${BCKSERVERNAME}.log"
fi
alias ll="ls -l"