Installation et normalisation de Sybase IQ 12.7 sous Solaris

Logo

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 nomenclature UTL_<hostname>_ASQ. Dans ce contexte le compte est systématiquement DBA, le mot de passe celui qui figure dans le fichier $ASDIR/bin/util_db.ini. La variable d’environnement SQLCONNECT générée pour la base IQ utility_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 IQ IQSERVERNAME. Le mot de passe du compte sa est récupéré à partir du fichier $CFG/script/mdp/mdp_sa. Dans ce contexte la variable SQLCONNECT est du type SQLCONNECT="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)
DBA_T1_ASQ
    master tcp ether SRVUNXFR 30073
    query tcp ether SRVUNXFR 30073
[DBA_T1_ASQ]
       master=NLWNSCK,SRVUNXFR,30073
       query=NLWNSCK,SRVUNXFR,30073
> 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"