Installation et normalisation de Sybase IQ 15.1 sous Solaris

Logo

Introduction

Une précédente documentation datant d’octobre 2008 présentait l’installation et la normalisation de Sybase IQ version 12.7 sous Solaris (Installation et normalisation de Sybase IQ 12.7 sous Solaris).

L’installation de Sybase IQ 15.1 sur les plateformes x64 Sun Solaris 10 est présentée dans cet article. Un rappel sur la norme adoptée est également proposé.

L’installation est classique, néanmoins, beaucoup de dénormalisation des nomenclatures historiques d’IQ a été introduite avec la version 15.1.

Installation personnalisée des binaires Sybase IQ 15.1

Arborescence de la distribution d’installation de Sybase IQ 15.1 (sybinstall)

Dans la suite de la documentation, ${INSTALL_DIR} est le répertoire dans lequel est localisée la distribution d’installation de Sybase IQ 15.1 (/Software/sybase/installations/install_asiq151 dans notre cas pratique) :

SHELL> export INSTALL_DIR=/Software/sybase/installations/install_asiq151
SHELL> cd $INSTALL_DIR
SHELL> gunzip iq1510_product_solx64_64.tgz
SHELL> tar xvf iq1510_product_solx64_64.tar

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 15.1 : le répertoire d’installation créé au préalable est par conséquent /Software/sybase/asiq-15.1, répertoire ayant pour propriétaire le compte sybase qui exécutera les serveurs IQ

Installation silentieuse : SilentInstall.sh

Pour une installation automatique, Sybase a remplacé l’historique sybinstall par Silentinstall.sh dont voici la syntaxe:

SHELL> SilentInstall.sh -?
          Please set -dst option or set SYBASE environment variable to desired value

Silent Install for IQ

A silent install allows the installation to be run with no user interaction.
In addition to the parameters below, the installation directory,
features to be installed, and other options are available through the SilentInstall.txt file.

Usage: SilentInstall.sh
-h or -?                  # Shows help and exits
-jvm "JVM_ARGS"           # include user specified JVM_ARGS
-java <path>        # specify the absolute location of the java folder
-txt <path>         # specify the absolute location of Silent Install text file
-cl <path>          # specify the absolute location of the silent install console log file
-src <path>         # specify the absolute path to root directory of installer files
-I_accept_sybase_license  # agree to the Sybase IQ License
-licensed_user            # install licensed version of Sybase IQ
-eval_user                # install demo version of Sybase IQ
-dst <path>         # specify the desired absolute install location for Sybase IQ

L’option -dst - indispensable - permet de spécifier le répertoire d’installation de Sybase IQ 15.1; le répertoire doit exister au préalable.

Le fichier SilentInstall.txt livré avec la distribution contient toutes les instructions nécessaires à la mise en œuvre de l’installation. Ce fichier SilentInstall.txt va être personnalisé afin de définir en particulier les produits à installer et le type de license.

SHELL> cp SilentInstall.txt SilentInstall_DBA_T1_ASQ.txt

Après personnalisation (et suppression des commentaires pour la lisibilité) il ressemble à ceci dans le cadre de la présente installation. En surbrillance figurent les options différentes des valeurs par défaut. Dans ce fichier personnalisé :

  • les conditions générales d’utilisation sont acceptés
  • la licence concerne l’Enterprise Edition en mode CPU
  • la gestion des mails est désactivée
  • les composants OpenClient, ODBC, Client, SybaseCentral sont installés.
SilentInstall_DBA_T1_ASQ.txt
###############################################################################
########################### SILENT INSTALLER ##################################
###############################################################################

-V AgreeToSybaseLicense="true"
-V IgnorePreviousVersion="false"
-V Variable_IQDemoSelect_LicensedYesRB="true"
-W sysamLicense.proceedWithoutLicense=true
-W sysamProductType.productEdition="EE"
-W sysamProductType.licenseType="CP"

### -V Variable_OverridePrependOrAppendToPath="false"
### -V Variable_IQAppendPath_Prepend_IQBinDir="true"

-V Variable_IQSySAMEmail_AlertsYesRB=false
-V Variable_IQSySAMEmail_AlertsNoRB=true

-P SybaseIQ.active="true"
-P IQServer.active="true"
-P IQOpenClient.active="true"
-P IQClient.active="true"
-P IQODBC.active="true"
-P SybaseCentral.active="true"
-P SCJViewer.active="true"
-P SCJPlugin.active="true"
-P jConnect.active="true"
-P SybaseSySAM.active="true"
-P NetworkLicenseServer.active="false"
-P LicenseUtilities.active="true"

###############################################################################
# Please do not modify the values below.
###############################################################################
-V Variable_Silent="true"
-W InstallType.active="false"
-P copyJRE.active="true"
-P SilentUninstall.active="true"
-P copyJRE1.active="true"
-P SilentUninstall1.active="true"
-silent

Des nouvelles variables fortement utiles et valables uniquement pour Windows sont introduites dans les installations de Sybase IQ 15.1 (installations serveur et client) : Variable_OverridePrependOrAppendToPath et Variable_IQAppendPath_Prepend_IQBinDir.

Ces variables permettent de gouverner la position des variables d’environnement IQ 15.1 dans la variable système %PATH% (append pour après et prepend pour avant). Cette nouveauté donne l’ordre à l’installation de Sybase IQ 15.1 de détecter l’existence éventuelle d’un Open Client Sybase dans la variable %PATH% Windows pour éviter tout conflit. Cela permet aussi de mieux gérer les rares cas où la taille maximale système de la variable %PATH% est atteinte ou bien si une entrée est invalide ou corrompue dans %PATH%. Par défaut, pour se prémunir de conflits avec un Open Client Sybase sur Windows, l’installation d’IQ ajoute le répertoire des exécutables IQ à la fin de la variable %PATH% lorsqu’un Open Client Sybase est détecté : les variables Variable_OverridePrependOrAppendToPath et Variable_IQAppendPath_Prepend_IQBinDir permettent de modifier ce comportement par défaut.

L’installation est réalisée sans spécifier de fichier de license (-W sysamLicense.proceedWithoutLicense=true), le fichier de licence sera déposé ultérieurement dans l’arborescence SYSAM appropriée.

L’installation peut alors démarrer

SHELL> SilentInstall.sh -dst /DBA/asiq/DBA_T1_ASQ -txt SilentInstall_DBA_T1_ASQ.txt -cl logfile

L’installation est réellement silencieuse et pire le logfile est quasi inexploitable. Néanmoins, les erreurs éventuelles sont retournées sur la sortie standard et clairement identifiables.

Installation interactive : setupSunx64

Le mode intéractif est pris en charge par setupSunX64. L’installation s’effectue en plusieurs étapes de manière intuitive.

  • Démarrage de l’installation, choix de la langue et licence
  • Sélection des produits
  • Installation de la distribution IQ
  • Configuration des options sous licence
  • Mise à jour des fichiers de configuration
SHELL> setupSunX64

Setup graphique IQ 15.1 Welcome screen

Personnalisation de la distribution

La distribution est désormais installée. Cette installation va être personnalisée quelque peu afin d’assurer la compatibilité avec les outils existants. Pour celà il va falloir :

  • Redéfinir l’arborescence
  • Revoir la définition des variables
  • Mettre en place le fichier de licence

L’arborescence

Les répertoires principaux installés sont listés dans le tableau ci-dessous :

Repertoire Description
/Software/sybase/asiq-15.1 Répertoire racine de l’installation de Sybase 15.1
/Software/sybase/asiq-15.1/IQ-15_1 Répertoire des binaires et des librairies d’Adaptive Server IQ, anciennement ASIQ_12*. À noter que la couche OCS est maintenant directement incluse dans cette arborescence, contrairement aux précédentes versions qui permettaient une gestion de version indépendante via le répertoire OCS*

À noter également le changement d’arborescence sous IQ-15_1 : bin est renommé en bin64 et lib en lib64.

Le script de démarrage start_asiq est renommé en start_iq avec la version 15.1.

Pour des raisons de compatibilité et s’affranchir du caractère 32 bits ou 64 bits de la distribution IQ, une tentative infructueuse de création de liens référençant les répertoires bin64 et lib64 sous leurs anciens noms respectifs bin et lib a été réalisée.

SHELL> cd /Software/sybase/asiq-15.1/IQ-15_1
SHELL> ln -s bin64 bin
SHELL> ln -s lib64 lib

La tentative a été un échec, l’instance IQ ne pouvant plus démarrer. Le message d’erreur suivant est affiché: iqsrv15 is not a valid databasefile.

Les variables d’environnement

Historiquement, les variables d’environnement d’une instance IQ comme ASE sont définies dans un fichier SYBASE.sh situé à la racine de la distribution ($SYBASE) et/ou un fichier $SYBASE/<PRODUIT>/<PRODUIT>.sh. Dans la version 15.1, seul ce dernier fichier est conservé ($SYBASE/IQ-15_1/IQ-15_1.sh).

Par ailleurs, l’ancienne variable $ASDIR disparait au profit de $IQDIR15

Ces différences minimes en apparence peuvent poser problème en particulier dans le cadre d’environnements mutualisés. En outre, définir un numéro de version dans le nom d’une variable censément générique ne parait pas judicieux. Aussi, dans nos installations nous allons (re)créer l’ancien fichier SYBASE.sh et y inclure la définition de la variable $ASDIR.

SHELL> cd /Software/sybase/asiq-15.1
SYBASE.sh
#!/bin/sh

SYBASE=/Software/sybase/asiq-15.1
 . $SYBASE/IQ-15_1/IQ-15_1.sh

ASDIR=$IQDIR15
export ASDIR

Le fichier de licence

L’objectif est de rendre disponible un fichier de licence valide dans le répertoire /Software/sybase/asiq-15.1/SYSAM-2_0/licenses

Pour des motifs de déploiement et de simplification de gestion de ces fichiers en environnement fortement mutualisé, le répertoire licenses est rendu générique et unique par machine. Aussi, le répertoire original est remplacé par un lien pointant sur un répertoire centralisant les fichiers de licences.

SHELL> cd /Software/sybase/asiq-15.1/SYSAM-2_0
SHELL> mv licenses licenses_orig
SHELL> ln -s /Software/sybase/licenses

La base demo

Installation

Une base de données Sybase IQ de démonstration est livrée par l’éditeur. Sa mise en place va servir doublement :

  • à valider la distribution
  • à creer notre propre base de données catalog (méthode alternative à utility_db)

Sybase livre un script de création de cette base qu’il faut exécuter dans le répertoire cible. Il est également nécessaire que les variables $SYBASE et $IQDIR15 soient préalablement définies. SYBASE.sh précédemment créé sera utilisé pour cela.

SHELL> . /Software/sybase/asiq-15.1/SYBASE.sh

SHELL> cd /dba/asiq/DBA_T1_ASQ
SHELL> $IQDIR15/demo/mkiqdemo.sh

Pour vérifier la bonne installation des fichiers iqdemo*

SHELL> ls -ll /dba/asiq/DBA_T1_ASQ
          -rw-r--r--   1 sybase   dba     78643200 Jul 29 15:04 iqdemo_main.iq
-rw-r--r--   1 sybase   dba          571 Jul 29 15:04 iqdemo.cfg
-r--r--r--   1 sybase   dba      2908160 Jul 29 15:04 iqdemo.db
-rw-r--r--   1 sybase   dba     26214400 Jul 29 15:04 iqdemo.iq
-rw-r--r--   1 sybase   dba        33019 Jul 29 15:04 iqdemo.iqmsg
-rw-r--r--   1 sybase   dba     13107200 Jul 29 15:04 iqdemo.iqtmp
-rw-r--r--   1 sybase   dba          223 Jul 29 15:04 iqdemo.lmp
-r--------   1 sybase   dba       327680 Jul 29 15:04 iqdemo.log
-rw-r--r--   1 sybase   dba          121 Jul 29 15:04 util_db.ini

Démarrage

Il peut être nécessaire de personnaliser le fichier cfg, en particulier le numéro de port utilisé ( -x )

SHELL> start_iq @iqdemo.cfg iqdemo.db
          Starting server DBA_T1_ASQ on SRVUNXFR30 at port 30074 (07/31 12:34:13)
Run Directory       : /test/asiq/DBA_T1_ASQ
Server Executable   : /Software/sybase/asiq-15.1/IQ-15_1/bin64/iqsrv15
Server Output Log   : /Software/sybase/asiq-15.1/IQ-15_1/logfiles/DBA_T1_ASQ.0007.srvlog
Server Version      : 15.1.0.5027/GA
Open Client Version : 15.0/P-EBF16086 ESD #15
User Parameters     : '@iqdemo.cfg' 'iqdemo.db'
Default Parameters  : -ti 4400 -gn 25
 ...
New process id is 13677
I. 07/31 12:34:22.     TCPIP link started successfully
I. 07/31 12:34:22. Now accepting requests

Server started successfully

Noter le bon démarrage de ce serveur avec le message 'Server started successfully'. Noter également le numéro de process système.

SHELL> ps -ef | grep 13677
            sybase 14035 18348   0 12:36:14 pts/4       0:00 grep 13677
  sybase 13677     1   0 12:34:16 ?           0:01 /Software/sybase/asiq-15.1/IQ-15_1/bin64/iqsrv15
                                                   @iqdemo.cfg iqdemo.db -ti 4400

La commande ps du package /usr/ucb (University of Berkeley) peut être également utilisée afin d’identifier le binaire iqsrv15 qui correspond au serveur Sybase IQ DBA_T1_ASQ qui vient d’être démarré ainsi que ses paramètres

SHELL> /usr/ucb/ps -auxwwwwww | egrep -e 'iq.*DBA_T1_ASQ' | grep -v grep

Test de connexion

Le binaire dbisql (localisé dans le répertoire $IQDIR15/bin64) permet de tester la connexion à l’instance nouvellement créée. Par défaut, 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.

SHELL> dbisql -nogui -c "uid=DBA;pwd=sql"

(DBA)> select count(1) from sale;
count(1)
--------------------
19
(1 rows)
Execution time: 0.017 seconds

Arrêt du serveur

Le binaire dbstop dans le répertoire $IQDIR15/bin64 arrête l’instance.

Il fonctionne dans les 2 modes, intéractif ou silencieux, c’est ce dernier mode qui est utilisé.

SHELL > dbstop  -c "uid=DBA;pwd=sql" -y

SQL Anywhere Stop Server Utility Version 11.0.1.5027

Nomenclatures

Noms de serveurs

Les serveurs Sybase IQ ont la nomenclature :

<APP>_<D|T|U|P>xx_ASQ
  • <APP> : 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.

Ports

Les ports des serveurs Sybase IQ sont compris entre 30070 et 30079.

Les fichiers de données

Les fichiers des bases de données de Sybase IQ seront installés systématiquement dans des filesystems ayant la nomenclature ci-dessous :

<APP>/asiq/$IQSERVERNAME

Dans ce 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 :

<APP>/asiq/$IQSERVERNAME/export

Le lien dmp dans le répertoire $DBA/$IQSERVERNAME pointe sur ce filesystem dédié aux sauvegardes :

dmp -> /dba/asiq/DBA_T1_ASQ/export

L’administration : le répertoire $DBA

Chaque Instance Sybase IQ doit disposer d’un répertoire dans le répertoire $DBA (/Software/sybase/dba) : par exemple $DBA/DBA_T1_ASQ.

Celui-ci est organisé comme suit :

Racine Répertoire Description
$DBA /etc Stocke tous les fichiers de définition d’instances (*.asq)
/bin Contient les outils et scripts d’administration
/$IQSERVERNAME/cfg Fichier de configuration $IQSERVERNAME.cfg de l’instance
/$IQSERVERNAME/log Fichiers de logs de l’instance
/$IQSERVERNAME/run Scripts d’arrêt / démarrage de l’instance.

Le répertoire $DBA/etc, les fichiers $IQSERVERNAME.asq et defaults_asq.ksh

Le répertoire $DBA/etc liste toutes les instances présentes sur le serveur et pour chacune d’entre-elles définit le contexte d’exécution. Il est utilisé par le script $DBA/bin/USE qui va détecter et analyser les fichiers de type $IQSERVERNAME.asq.

Le fichier $IQSERVERNAME.asq définit les variables propres au serveur Sybase IQ correspondant : $DSQUERY, $SYBASE, $APPNAME et $DBENV.

Les autres variables génériques ($CFG …) sont sourcées par le shell $DBA/etc/defaults_asq.ksh, lequel doit être appelé à la fin de chaque fichier $IQSERVERNAME.asq.

Cas pratique :

$DBA/etc/DBA_T1_ASQ.asq
#!/bin/ksh

export DSQUERY=DBA_T1_ASQ
export SYBASE=/Software/sybase/asiq-15.1
export APPNAME=dba
export DBENV=DEV
. ~sybase/dba/etc/defaults_asq.ksh

Le shell defaults_asq.ksh exploite ces variables afin de construire un environnement de travail propre à l’instance. Il va non seulement exécuter le scritpt SYBASE.sh correspondant à la version choisie mais aussi définir quelques variables et raccourcis utiles, comme SQLCONNECT ou tlog.

Le code source du shell defaults_asq.ksh est donné en annexe plus bas.

Les variables d’environnement alors définies pour le serveur Sybase IQ DBA_T1_ASQ sont les suivantes :

Variable d’environnement Description Valeur
$IQDIR15 Réperoire d’installation des binaires IQ15 /Software/sybase/asiq-15.1/IQ-15_1
$SQLCONNECT Définition des parametres de connexion à l’instance eng=DBA_T1_ASQ;uid=DBA;pwd=sql;links=tcpip
$IQSERVERNAME Nom du serveur Sybase IQ DBA_T1_ASQ
$SYBASE Répertoire de la distribution racine Sybase IQ (IQ + Open Client) /Software/sybase/asiq-15.1
$ASDIR Localisation complète du répertoire de la distribution Sybase propre à IQ (répertoire ASIQ-<version>) /Software/sybase/asiq-15.1/IQ-15_1
$APPNAME Nom de l’application dba
$DBENV Environnement du serveur Sybase IQ DEV, UAT ou PROD
$CFG Répertoire de configuration /Software/sybase/dba/DBA_T1_ASQ/cfg
$SCRIPT Répertoire des scripts /Software/sybase/dba/DBA_T1_ASQ/cfg/script
$DMP Répertoire des sauvegardes /Software/sybase/dba/DBA_T1_ASQ/dmp
$LOG Répertoire des logs /Software/sybase/dba/DBA_T1_ASQ/log
$PATH PATH /Software/sybase/iq-15.1/IQ-15_1/bin64: /Software/sybase/dba/bin:$PATH
$LD_LIBRARY_PATH LD_LIBRARY_PATH /Software/sybase/iq-15.1/IQ-15_1/lib64:*

Des alias sont également mis en place

Alias Description Valeur
i Connexion à l’instance par sqsh isql -U<user> -P<password> -SDBA_T1_ASE
dbi dbisql avec l’option -nogui dbisql -nogui -c "$SQLCONNECT"
dci dbisqlc avec l’option -q dbisqlc -q -c "$SQLCONNECT"
tlog Dernières lignes du fichier log tail -50 $LOG/$IQSERVERNAME.log
flog Dernières lignes en continu du fichier log tail -f $LOG/$IQSERVERNAME.log
vlog Édition du fichier log view $LOG/$IQSERVERNAME.log
fmsg Dernières lignes en continu du fichier message tail -f $LOG/catalog.fmsg

Le répertoire $DBA/$IQSERVERNAME/cfg

$DBA/$IQSERVERNAME/cfg est le répertoire contenant le fichier de configuration $IQSERVERNAME.cfg du serveur Sybase IQ correspondant.

Dans le cadre d’une nouvelle installation, on peut s’appuyer sur le fichier modèle fourni ($SYBASE/IQ-15_1/scripts/default.cfg).

SHELL> cd $DBA/$IQSERVERNAME/cfg
SHELL> cp $SYBASE/IQ-15_1/scripts/default.cfg ./$IQSERVERNAME.cfg

Après personnalisation, le fichier de configuration doit ressembler à ceci. En surbrillance, les valeurs modifiées ou ajoutées.

$DBA/$IQSERVERNAME/cfg/$IQSERVERNAME.cfg
# ----------------------------------------------------------------------
# This file contains the default ASIQ startup parameters.  All servers
# started will default to these parameters, unless overriden by contents
# of parameter list.
# ----------------------------------------------------------------------
# Must be in the format: One parameter [and value] per line
# ----------------------------------------------------------------------
# DBA_T1_ASQ.cfg
-c  48m
-gc 20
-gd all
-gl all
-gm 10
#-gp 4096
-ti 4400

-n  DBA_T1_ASQ
-x  tcpip{port=30071}
-o /Software/sybase/dba/DBA_T1_ASQ/log/DBA_T1_ASQ.log
-iqmc 2000
-iqtc 3000
-zr all -zs '100M' -zo /Software/sybase/dba/DBA_T1_ASQ/log/sql.log
/DBA/asiq/DBA_T1_ASQ/iqdemo.db
Paramètre Valeur Description
-n DBA_T1_ASQ Nom du serveur Sybase IQ
-c 48m Taille en Mb du cache pour le catalogue
-gc 20 Nombre de minutes pour la période de timeout du checkpoint
-gd all Permissions accordées au 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
-zr ALL Collecte des ordres SQL au niveau (ALL ou NONE)
-zo $LOG/sql.log Nom du fichier de collecte des ordres SQL
-zs '100M' Taille maximale du fichier de collecte des ordres SQL

En dernier paramètre, la localisation du fichier de données de la base de données IQ *.db est donnée :

/DBA/asiq/DBA_T1_ASQ/iqdemo.db

Le répertoire $DBA/$IQSERVERNAME/log

$DBA/$IQSERVERNAME/log est le répertoire contenant les fichiers de log de l’instance IQ. Sa définition est donnée dans le fichier de configuration cfg de l’instance vu précédemment (-o /Software/sybase/dba/DBA_T1_ASQ/log/DBA_T1_ASQ.log)

Le répertoire $DBA/$IQSERVERNAME/run

$DBA/$IQSERVERNAME/run est le répertoire contenant les scripts d’arrêt ( STOP_$IQSERVERNAME ) et de redémarrage ( START_$IQSERVERNAME ) de l’instance.

Noter que par rapport aux versions précédentes, la commande de démarrage n’est plus bin/start_asiq mais bin64/start_iq.

Les codes sources des scripts START_$IQSERVERNAME et STOP_$IQSERVERNAME sont donnés en annexe plus bas.

Le shell USE dans le répertoire $DBA/bin

Le shell USE avec l’option -Q dans le répertoire $DBA/bin source le contexte d’une instance Sybase IQ. Le point d’interrogation -? passé en paramètre liste toutes les instances installées sur le serveur. Ce script s’appuie sur tous les fichiers $IQSERVERNAME.asq présents dans le répertoire $DBA/etc.

USE -Q < ? | ServerName >
SHELL> USE -Q ?
          DBA_T1_ASQ

Normalisation de l’instance

La distribution IQ validée, la normalisation de l’environnement est finalisée en :

  • créant la base de données applicative.
  • créant un compte d’administration autre que DBA.
  • modifiant le mot de passe par défaut du compte DBA.

Dans les paragraphes qui suivent:

  • la variable d’environnement $DBA identifie le répertoire /Software/sybase/dba.
  • la variable d’environnement $IQSERVERNAME identifie le nom de l’instance DBA_T1_ASQ.
SHELL> export DBA=/Software/sybase/dba
SHELL> export IQSERVERNAME=DBA_T1_ASQ

La base applicative positions

La personnalisation de l’installation se poursuit par la création de la base applicative. Sous IQ, pour créer une base il est nécessaire de se connecter à une base existante, quelle qu’elle soit. Il y a deux moyens de le faire à l’installation :

L’opération va consister à utiliser une instance démarrée avec iqdemo, créer la base, base qui sera par appelée 'positions' puis modifier les fichiers de configuration normés pour refléter le changement.

La base positions est créée avec le fichier create.sql ci-dessous, fichier create.sql exécuté depuis une connexion dans la base iqdemo :

create.sql
create database '/test/asiq/DBA_T1_ASQ/positions.db'
   log on '/test/asiq/DBA_T1_ASQ/positions.log'
   java off
   case respect
   collation 'ISO_BINENG'
   IQ PATH '/test/asiq/DBA_T1_ASQ/positions_01.iqmaint'
   IQ SIZE 100
   IQ PAGE SIZE 131072
   TEMPORARY PATH '/test/asiq/DBA_T1_ASQ/positions.iqtmp'
   TEMPORARY SIZE 2000
   MESSAGE PATH '/test/asiq/DBA_T1_ASQ/positions.iqmsg';
SHELL> dbisql -nogui -c "uid=DBA;pwd=sql" create.sql

CHAR collation sequence:  ISO_BINENG(CaseSensitivity=Respect)
CHAR character set encoding:  ISO_8859-1:1987
NCHAR collation sequence:
    UCA(CaseSensitivity=UpperFirst;AccentSensitivity=Respect;PunctuationSensitivity=Primary)
NCHAR character set encoding:  UTF-8
Creating system tables
Creating system views
Setting option values

Execution time: 28.24 seconds

Reste à redémarrer l’instance en utilisant le fichier de configuration normé, référençant la nouvelle base positions.

Une fois l’instance de la base de démo iqdemo stoppée :

SHELL > dbstop  -c "uid=DBA;pwd=sql" -y

On se positionne dans l’environnement normé, puis le fichier de configuration $DBA/DBA_T1_ASQ/cfg/DBA_T1_ASQ.cfg est édité afin de référencer la nouvelle base positions créée.

SHELL > USE -Q DBA_T1_ASQ
          
DBA_T1_ASQ > tail $CFG/$IQSERVERNAME.cfg
-n  DBA_T1_ASQ
-x  tcpip{port=30071}
-o /Software/sybase/dba/DBA_T1_ASQ/log/DBA_T1_ASQ.log
-iqmc 2000
-iqtc 3000
-zr all -zs '100M' -zo /Software/sybase/dba/DBA_T1_ASQ/log/sql.log
#/test/asiq/DBA_T1_ASQ/iqdemo.db
/DBA/asiq/DBA_T1_ASQ/positions.db

L’instance est démarrée en utilisant la nouvelle base et le script de démarrage normé.

DBA_T1_ASE> $RUN/START_DBA_T1_ASQ

Starting server DBA_T1_ASQ on SRVUNXFR30 at port 30071 (07/31 16:27:09)

Run Directory       : /test/asiq/DBA_T1_ASQ
Server Executable   : /Software/sybase/asiq-15.1/IQ-15_1/bin64/iqsrv15
Server Output Log   : /Software/sybase/dba/DBA_T1_ASQ/log/DBA_T1_ASQ.log
Server Version      : 15.1.0.5027/GA
Open Client Version : 15.0/P-EBF16086 ESD #15
User Parameters     : '@/Software/sybase/dba/DBA_T1_ASQ/cfg/DBA_T1_ASQ.cfg'
Default Parameters  : -gp 4096 -gn 25
 ...
I. 07/31 16:27:17. Now accepting requests
New process id is 25037
Server started successfully

Sécurité

Par défaut, le compte DBA de la nouvelle base de données créée a pour mot de passe sql. Par sécurité, le mot de passe du compe DBA est modifié et un autre compte administrateur sa est créé.

DBA_T1_ASQ > dbisql -nogui -c "uid=DBA;pwd=sql"
(DBA)> create user sa identified by ****
(DBA)> grant DBA to sa
(DBA)> alter user DBA identified by ************
(DBA)> exit

isql/sqsh et Sybase IQ

Un serveur IQ peut être interrogé par isql avec la librairie OpenClient 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 SRVUNXFR47 30073
    query tcp ether SRVUNXFR47 30073
[DBA_T1_ASQ]
    master=NLWNSCK,SRVUNXFR47,30073
    query=NLWNSCK,SRVUNXFR47,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 avec des libraires OCS 12.x 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 ci-dessous dans $SYBASE/$SYBASE_OCS/lib (distribution OCS 15 de la distribution IQ 15.1) suffit amplement pour faire fonctionner à nouveau sqsh :

SHELL> cd $SYBASE/$SYBASE_OCS/lib
SHELL> ln -fs libsybtcl.so libtcl.so
SHELL> ln -fs libsybcomm.so libcomm.so
SHELL> ln -fs libsybcomn.so libcomn.so
SHELL> ln -fs libsybcs.so libcs.so
SHELL> ln -fs libsybct.so libct.so
SHELL> 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.

Annexes

Annexe 1 - 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 "
    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 -c \"$SQLCONNECT\"" "
        alias dci="dbisqlc -q -c \"$SQLCONNECT\""
    fi
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"

Annexe 2 - Source du shell defaults_asq.ksh

SHELL> cat 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 TLG=$DBA/$IQSERVERNAME/tlg
export RUN=$DBA/$IQSERVERNAME/run
export LOG=$DBA/$IQSERVERNAME/log


 . $SYBASE/SYBASE.sh

SHASIQ=`echo $SYBASE/ASIQ-*/ASIQ-*.sh`
if [ -f $SHASIQ ]
then
        . $SHASIQ
fi

# Preparation de la variable SQLCONNECT
if [ $(echo ${IQSERVERNAME} | egrep `hostname`| wc -l) -eq 1 ]
then
        DBUSER=DBA
        DBPWD=`nawk -F"=" '/PWD/ {print $2}' ${ASDIR}/bin/util_db.ini`
        export SQLCONNECT="uid=${DBUSER};eng=${DSQUERY};pwd=${DBPWD};dbn=utility_db;links=tcpip"
else
        DBUSER=sa
        DBPWD=`cat ${CFG}/script/mdp/mdp_sa`
        export SQLCONNECT="uid=${DBUSER};eng=${DSQUERY};pwd=${DBPWD};links=tcpip"
fi

export ENV=~sybase/.kshrc

Annexe 3 - Source du shell START_$IQINSTANCENAME

SHELL> cat START_DBA_T1_ASQ
#!/bin/ksh

########################################################################
# @(#) Fichier : START IQ
# @(#) Auteur  : DBA team
# @(#) Objet   : generic IQ startup script
########################################################################

########################################################################
## Environnement

basename $0 | sed 's/^START_//' | read IQSERVERNAME
 . /Software/sybase/dba/etc/$IQSERVERNAME.asq

LOGFILE=$DSQUERY.log

########################################################################
## Backup log file
if [ -f $LOG/$LOGFILE ]
then

        DATE=`date +%y%m%d`Source du shell .kshrc (version 1.1)


        COUNT=1

        ARCHIVEFILE=${DSQUERY}_${DATE}_${COUNT}.log

        while [ -e $LOG/$ARCHIVEFILE ]
        do
                COUNT=`expr $COUNT + 1`
                ARCHIVEFILE=${DSQUERY}_${DATE}_${COUNT}.log
        done

        mv $LOG/$LOGFILE $LOG/$ARCHIVEFILE

fi

########################################################################
## Start server

$IQDIR15/bin64/start_iq @$CFG/$IQSERVERNAME.cfg

Annexe 4 - Source du shell STOP_$IQINSTANCENAME

SHELL> cat STOP_DBA_T1_ASQ

#!/bin/ksh

########################################################################
# @(#) Fichier : STOP IQ
# @(#) Auteur  : DBA team
# @(#) Objet   : generic IQ startup script
########################################################################

########################################################################
## Environnement

basename $0 | sed 's/^STOP_//' | read IQSERVERNAME
 . /Software/sybase/dba/etc/$IQSERVERNAME.asq

########################################################################
## Stop server
$IQDIR15/bin64/dbstop  -y

Annexe 5 - Source du shell SYBASE.sh ($SYBASE : /Software/sybase/asiq-15.1)

#!/bin/sh
SYBASE=/Software/sybase/asiq-15.1
 . $SYBASE/IQ-15_1/IQ-15_1.sh
ASDIR=$IQDIR15
export ASDIR