SelectEtoile : Base de connaissance SGBD

Posts Tagged 'dbisql'

The jodbc.jar build does not match the shared object build

Impossible de se connecter à la base:

L'erreur suivante signifie qu'il y a un problème de version entre les librairies java:

Could not connect to the database.
The jodbc.jar build does not match the shared object build
SQLCODE=0, ODBC 3 State="(none)"

Il y a plusieurs causes possibles:

- Des variables qui pointent sur d'anciens répertoires; vérifiez les variables:
LD_LIBRARY_PATH, SYBASE_JRE6_64, LIB_SYBASE, LD_LIBRARY_PATH_64, PATH, INCLUDE, IQLIB,...

- Les fichiers dbisql_64.rep, dbisql.rep, ou dbisql.ini sont mal configurés.
Il faut vérifier si les paths renseignés sont valides. Une mauvaise configuration de ces fichiers peut entrainer aussi le comportement suivant: dbisql se ferme sans aucun message d'erreur.

- Une mauvaise installation d'un patch IQ. Par exemple de bondir de l'EBF 1.5 au 2.9 sans upgrader en ESD 2. Dans ce cas, il faut downgrader en 1.5 updrader en 2 et 2.9 (c'est pas si dur que ça.)

 

 

Installation SYBASE IQ

Voici quelques recommandations pour installer un serveur SYBASE IQ

 

1/ Options que l’on peut positionner

  • Minimize_Storage à On (recommandée pour gain de place des données et performance)
  • Auto_commit à On (recommandé pour éviter de remplir le main dbspace avec des pages versionnées)
  • Float_as_double (car le float n’existe pas sous IQ)

Attention au typage des colonnes lors de la création du schéma sous IQ : les types de données ASE et ASIQ ne sont pas strictement compatibles, notamment avec cet équivalent float.

 

2/ Types d’index à créer

  • Dans un premier temps tu peux déjà créer des index HG uniques sur toutes les clés primaires de tes tables.
  • Pour les autres colonnes, il faut calculer la cardinalité de la colonne, connaitre les requêtes lancées sur la table pour faire un tuning vraiment efficace.

Ensuite, il faut faire des tests de ton application avec l’index advisor à On (exécuter toutes les requêtes types de l’application) pour avoir une liste des index supplémentaires à créer.

 

 

3/ Application cliente à utiliser

  • Il est vivement recommandé d’utiliser dbisql pour développer sous IQ car c’est l’outil d’accès natif livré par Sybase.
  • Nos outils de livraison utilisent également dbisql.

 

Utilisation de odbc.ini pour dbisql SYBASE IQ

Cet article décrit la mise en place d'un fichier odbc.ini permettant de se connecter avec dbisql en passant par une ressource

 

Création d'un fichier odbc.ini comme suit dans $SYBASE par exemple :

[ODBC Data Sources]
InstanceName=Adaptive Server Anywhere 9.0

[InstanceName]
ServerName=InstanceName
CommLinks=tcpip{host=machine;serverport=port;}
Driver=libdbodbc9.so

 

Initialisation de la variable d'environnement ODBCINI

 

ODBCINI=$SYBASE/odbc.ini

export ODBCINI

 

Le plus simple d'ailleurs est de l'ajouter dans le fichier SYBASE.sh

 

Vérification de son bon fonctionnement, il suffit de taper 'iqdsn -l'  :


 
Adaptive Server Anywhere Data Source Utility Version 9.0.2.2056
Sybase Adaptive Server IQ User Data Sources:
InstanceName



Connexion avec dbisql :

 

dbisql -nogui -c "uid=DBA;pwd=password" -datasource InstanceName
 

Paramétrage dbisql sous Unix/Linux

Paramétrage pour dbisql:

 

Il est possible pour dbisql de modifier son comportement  en comfigurant un fichier contenu dans le HOME du user unix/linux.

 .isqlPreferences9

 Exemple de paramétrage:

 showMultipleResultSets=false
useGridsForResults=true
resultSetFont=
printResultSetToConsole=2
showUltraLitePlan=true
showRowNumber=true
defaultMessagesPaneHeight=7
showSeparateMessagesPane=false
setInitialFolderForFileBrowsers=true
maxRowsFetchedForUI=2147483647
 
Pour que la configuration du dbisql soit la même en ligne de commande ou en mode graphique, Il suffit de déployer ce fichier sur tous les environnements.
 
 

 

Pour commencer...

Débuter avec SYBASE IQ


Caractéristiques de SYBASE IQ :

  • Les données sont stockées en colonnes pas en lignes

  • Mise en place d’indexes sur toutes les colonnes pour obtenir de bonnes performances d’accès aux données

  • Une taille de page importante

  • Un cache temporaire important

  • L’accès aux données est contrôlé au niveau de la table, en utilisant des locks ‘niveau table’ plutôt que des locks de lignes ou de pages et une technique appelé le versionning ‘table-level’


Structure de SYBASE IQ :

  • IQ Store pour les data

  • Catalog Store pour les metadata

  • IQ Temporary Store pour les données temporaires

  • IQ Transaction Log contient tous les changements des bases (en cas de restauration)


Tous ces espaces de ’stockage’ sont créés à partir de datafiles (fichiers physiques)


Arret / Relance de SYBASE IQ

Arret de l’agent IQ : Stop_asiq -agent

Lancement de l’agent IQ : Start_asiq –agent

Arrêt: "stop engine ${_IQ} unconditionally;"

 

Démarrage: start_asiq @${_CATALOG}/${_IQ_CFG} ${_IQ}.db

Lancement du serveur démarrant la base demo_db : start_asiq @asiqdemo.cfg asiqdemo.db


Version ASA :

$SYBASE/asiq12/bin/asiqsrv12 –v2

 

Connexion SYBASE IQ

Dbisql –c ‘uid=DBA ;pwd=SQL’ –host machine –port 1870

 

Gestion des droits :

Un utilisateur peut avoir des droits de connexion sur une base sans avoir de droits de connexion sur le serveur

 

Remote server et remote login

 

CREATE SERVER REMOTESERVER CLASS 'asejdbc' USING 'hostname:port/database'

create externlogin mon_user to REMOTESERVER remote login db_extlogin identified by passwd_extlogin;

select * from SYSEXTERNLOGINS

 

Arrêt d'une connexion :

 drop connection 4509 : kill de la connexion 45009

 

Exemple de load table :

 

load table user.data_Flux_JPS
(VALUEDATE '|||',
CCY '|||',
CCY_ORIGIN '|||',
TRADE_ID '|||',
MONTANT '|||',
BOOK '|||',
SECTION '|||',
CODE_PRODUIT '|||',
ENTITE '|||',
PERIMETRE '|||',
SSPERIMETRE '|||',
LOCALISATION '|||',
CE_DOMAINE_CODE '|||',
TYPE_FLUX '|||',
SYSTEME '|||',
ISIN '|||',
SECID '|||',
ASOFDATE '|||',
SOURCE_TABLE '|||',
REF_ECO '|||',
COMMENTAIRE '|||',
MOIS '|||',
ENTITE_NOM '|||',
DOMAINE_NOM '|||',
CONTREPARTIE_ECO '|||',
SERVICE '|||',
MVT_IDENT '\x0a'
)
FROM 'dirname/data_Flux.bcp'
QUOTES OFF
ESCAPES OFF
FORMAT ascii
PREVIEW ON

message log 'logdir/message.log' row log 'logdir/rows.log';