SelectEtoile : Base de connaissance SGBD

Posts Tagged 'sybase iq'

Présentation du site

 
Ce site a été développé afin de fournir des explications, documentations et astuces en tout genre concernant les bases de données.Ils proviennent de retour d'expériences de différents DBA.
Il est à noter que ces articles ne sont que des notes et en aucune façon des documentations officielles.
Ce site peut contenir des commandes non supportées par les différents éditeurs qui sont à utiliser avec précaution.
Bien sur, si vous constatez des erreurs ou avez des remarques sur un ou plusieurs articles, n'hésitez pas à nous en faire part, soit via l'onglet Contacts, soit via les commentaires à votre disposition à la fin de chaque article.
 
Pour ceux qui seraient intéressés pour écrire ou proposer des articles, n'hésitez pas à me contacter via 'Contacts' dans le menu du haut.
flux_rssInscrivez vous au fil d'actualité selectetoile.net flux_rss

Passage d'un patch IQ

Installer les binaires du patch

  1.  Downloader sur le site de sybase l'EBF (SDR ou ESD, les subtilités de sa nomination n'est pas très passionnante) 
  2. Dans un répertoire à part et de préférence au dessus du répertoire $SYBASE déposer le tgz téléchargé (légalement évidement)
  3. déziper gsip -d blabla.tgz
  4. détarer tar xf blabla.tar
Vous êtes prêt pour l'aventure

Mise à jour des binaires

  1. Se connecter à la base, faire un sp_iqcheckoptions et l'enregistrer dans un fichier.
  2. Arrêter le server IQ
  3. Faire une sauvegarde des binaires de la future ancienne distribution ($ASEDIR), du catalog (.db) et de sa log (.log)
  4. Aller dans le répertoire ebfxxxx généré par le détar
  5. Dans ce répertoire, il y a deux répertoires: un pour patcher le client windows... et l'autre pour le serveur.
  6. lancer le sybinstall --> Attention, il faut que les variables d'environnement soient correctement initialisées ($SYBASE et $ASDIR)
  7. Répondre à toutes les questions (il n'y a pas de piège)
  8. Les binaires sont remplacés et les liens sont recréés
  9. relancer le serveur IQ en mode stand alone (-gm 1 et -gd dba)
La distributions est mise à jour

Mise à niveau de la base

A la fin de la mise à jour des binaires le script sybinstall le signale: il faut se connecter sur la base et lancer la commande:

Alter database upgrade;

Cette commande n'est pas très longue à passer mais indispensable. Attention: Si vous ne le faites pas, la base et tout à fait utilisable, mais...

La dernière étape est de vérifier les options: 

  • se connecte sur la base et faire un sp_iqcheckoptions
  • Le comparer avec celui fait précédemment
  • Pour vous aider, l'option Minimize_Storage est systématiquement repositionnée à OFF lors d'un passage de patch (valeur par défaut) --> Et ça c'est le mal.
  • Arrêter le serveur
  • Relancer le serveur en retirant les options gd et gm
C'est terminée. C'est une version allégée de la procédure de migration, pour plus d'information, il faut lire attentivement le readme présent dans le tar du patch. On peut rajouter par exemple une sauvegarde avant de commencer, mais ça semble tellement évident.
 On peut s'épargner un arrêt/relance en utilisant l'option
sa_server_option('disable_connections','ON')
Il doit tout y avoir. 
Articles tagged

Sybase IQ, Erreur de conectivity -85 avec utility_db

Erreur de connectivité sur l'utility_db lors d'un rechargement de base.

 Symptôme

Pour un rechargement d'une base devenant un peu volumineuse sur un environnement nécessitant un rename du chemin des dbspaces. Il peut arriver ce genre de message:

sybase@xxxxxxxx:/xxxxxxxxx/sgbd/xxxxxxxxx/dump/load_from_prod$dbisql3 resotre_Gauthier.sql
Error! The connection to the database was closed by the server.
Communication error
SQLCODE=-85, ODBC 3 State="08S01"
File: "resotre_Gauthier.sql" on line 1, column 1 

 

Cause du problème:

Dans ce cas, l'origine du problème venait de la commande passée pour le restaure de la base. La taille de la commande dépasse la taille du cache des pages du catalog asa définie au démarrage du server.

Log de lancement du server:

I. 06/25 16:54:07. 1: -n
I. 06/25 16:54:07. 2: utility_db
I. 06/25 16:54:07. 3: -x
I. 06/25 16:54:07. 4: tcpip{host=mscharlevoix;port=2638}
I. 06/25 16:54:07. 5: -c
I. 06/25 16:54:07. 6: 48m
I. 06/25 16:54:07. 7: -gc
I. 06/25 16:54:07. 8: 20
I. 06/25 16:54:07. 9: -gd
I. 06/25 16:54:07. 10: all
I. 06/25 16:54:07. 11: -gl
I. 06/25 16:54:07. 12: all
I. 06/25 16:54:07. 13: -gm
I. 06/25 16:54:07. 14: 10
I. 06/25 16:54:07. 15: -gp
I. 06/25 16:54:07. 16: 4096 --> Valeur par defaut

I. 06/25 16:54:07. 17: -ti
I. 06/25 16:54:07. 18: 4400
I. 06/25 16:54:08. 19: -z
I. 06/25 16:54:08. 20: -ct+
I. 06/25 16:54:08. 21: asiqdemo.db
I. 06/25 16:54:08. 22: -hs
I. 06/25 16:54:08. 23: -gn
I. 06/25 16:54:08. 24: 25
I. 06/25 16:54:08. 25: -o
I. 06/25 16:54:08. 26: /mscharlevoix/sgbd/IQ_FMTB_PREX/IQ_BIN/errorlog/utility_db.004.srvlog
I. 06/25 16:54:08. 27: -hn
I. 06/25 16:54:08. 28: 8
I. 06/25 16:54:08.
I. 06/25 16:54:08. Adaptive Server IQ
I. 06/25 16:54:08. Version 12.7
I. 06/25 16:54:08. (64bit mode)
I. 06/25 16:54:08. Copyright 1992-2008 by Sybase, Inc. All rights reserved
I. 06/25 16:54:08.
I. 06/25 16:54:08. 4 logical processor(s) on 2 physical processor(s) detected.
I. 06/25 16:54:08. Running on Linux 2.6.9-78.0.17.ELsmp #1 SMP Thu Mar 5 04:58:34 EST 2009 x
I. 06/25 16:54:08. 49152K of memory used for caching
I. 06/25 16:54:08. Minimum cache size: 49152K, maximum cache size: 262012K
I. 06/25 16:54:08. Using a maximum page size of 4096 bytes 

Commande de restaure:

restore database '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx.db' from '/xxxxxxxxxx/sgbd/xxxxxxxxxx/dump/load_from_prod/IX_DW_MO_2009.06.22-2130.dmp'
rename IQ_SYSTEM_MAIN to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main01'
rename IQ_SYSTEM_TEMP to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-temp01'
rename IQ_SYSTEM_MSG to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/IQ_BIN/errorlog/xxxxxxxxxx.iqmsg'
rename main02 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main02'
rename main03 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main03'
rename main04 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main04'
rename main05 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main05'
rename main06 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main06'
rename main07 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main07'
rename main08 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main08'
rename main09 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main09'
rename main10 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main10'
rename main11 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main11'
rename main12 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main12'
rename main13 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main13'
rename main14 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main14'
rename main15 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main15'
rename main16 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main16'
rename main17 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main17'
rename main18 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main18'
rename main19 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main19'
rename main20 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main20'
rename main21 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main21'
rename main22 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main22'
rename main23 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main23'
rename main24 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main24'
rename main25 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main25'
rename temp02 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-temp02'
rename temp03 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-temp03'
rename main26 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main26'
rename main27 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main27'
rename main28 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main28'
rename main29 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main29'
rename main30 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main30'
rename main31 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main31'
rename main32 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main32'
rename main33 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main33'
rename main34 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main34'
rename main35 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main35'
rename main36 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main36'
rename main37 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main37'
rename main38 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main38'
rename main39 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main39'
rename main40 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main40'
rename main41 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main41'
rename main42 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main42'
rename main43 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main43'
rename main44 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main44'
rename main45 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main45'
rename main46 to '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/xxxxxxxxxx-main46' ;

 

Solution:

Il faut augmenter le catalog database cache page size à 8192 (C'est plutôt selon la taille necessaire) avec le paramétré -gp.

start_asiq -n Youpi -gp 8192.

  Bonus :

Il y a aussi un autre symptôme, il rejéte votre commande sur une syntaxe error en tronquant une ligne de la requête qui correspond à la limite de la taille du cache de page (4096):

 

Could not execute statement.

  Syntax error near '/xxxxxxxxxx/sgbd/xxxxxxxxxx/catalog/iqf' on line 54

  SQLCODE=-131, ODBC 3 State="42000"

Sur cette exemple le path est coupé et les instructions suivantes ne sont pas prises en compte

 

Sybase IQ dump cross paltform

Migration cross-platform IQ

 Lorsque l'on recharge une base IQ via une sauvegarde sur une instance installée sur un OS différent de la source. Il n'y a pas comme sous ASE de procédure ou de commande à utiliser pour valider l'opération après le rechargement.

 La seule condition est que les plateforme ai le même endian. Pour s'assurer que la migration est possible,il faut vérifier dans la documentation officielle de Sybase: Installation and Configuration Guilde, Chapitre 4 Migrating across hardware platforms.

Il y a deux groupes: big endian et little endian. Et bien évidement, si les deux plateforme sont dans le même groupe, la migration est possible. Si par malheur ce n'est pas le cas, il va falloir passer par des transfert, fichier plat... 

Il y a une particularité pour Linux 126 32 bits (cf à la doc).

 Les étapes de la migration sont décrites dans le guide de migration. 

 

 

 

 

Astuces: Backup IQ

Commande Backup:

BACKUP DATABASE
backup-option… ]
TO archive_devicearchive-option... ]
… [ WITH COMMENT string ]

Taille d'un fichier de backup.

En utilisant l'archive-option "SIZE", il est possible de définir la taille d'un fichier de sauvegarde IQ (en ko) :

BACKUP DATABASE '/sybase/IQ/IQ_Catalog/Super_base.db'

TO  '/sybase/backup/Super_base_08-12-2010.bkiq' SIZE 41943040

Avec cette commande on obtient n fichier correspondant à la taille de la base divisé par 40 (go)

Sauvegarder sur plusieurs files system ou bandes

 Il suffit de spécifier plusieurs archive_device avec le paramètre TO:

BACKUP DATABASE '/sybase/IQ/IQ_Catalog/Super_base.db'

TO '/sybase/backup-1/Super_base-STRIPE-1_08-12-2010.bkiq'

TO  '/sybase/backup-2/Super_base-STRIPE-2_08-12-2010.bkiq'

Il est possible également de préciser pour chaque stripe une taille de fichier de sauvegarde:

BACKUP DATABASE '/sybase/IQ/IQ_Catalog/Super_base.db'

TO '/sybase/backup-1/Super_base-STRIPE-1_08-12-2010.bkiq' SIZE 41943040

TO  '/sybase/backup-2/Super_base-STRIPE-2_08-12-2010.bkiq' SIZE 41943040

Note:

La restauration d'une sauvegarde sur plusieurs volumes se fait tout simplement:

RESTORE DATABASE '/sybase/IQ/IQ_Catalog/Super_base.db'

FROM '/sybase/backup-1/Super_base-STRIPE-1_08-12-2010.bkiq'

FROM  '/sybase/backup-2/Super_base-STRIPE-2_08-12-2010.bkiq'

 

 

Les Commandes Système SYBASE IQ

Procédures système :

  • sp_iqcontext : visualisation des requêtes lancées
  • sp_iqconnection : visualisation des connexions
  • sp_iqstatus : visualisation des différents compteurs sur le serveur (idem que select * from sys.sysfile)
  • sp_iqtransaction : visualisation des transactions
  • sp_iqwho : visualisation de process
  • sp_iqlocklogin
  • sp_iqlistexpiredpasswords
  • sp_iqlistlockedusers
  • sp_iqlistpasswordexpirations
  • sp_iqcolumns matable : description des colonnes de la table matable
  • sp_iqtable, sp_iqindex, sp_iqcolumns, sp_iqview
  • sp_iqlocks
  • Sp_iqspaceinfo : taille des différents objets
  • Sp_iqtablesize, sp_iqdbsize
  • Sp_iqdbspace : espace de la base
  • sp_iqshowpsexe : affiche des infos sur la conhandle specifié (ex application name, host source...)
  • sa_conn_activity : activité des process actifs
  • sa_conn_info 4269 : info sur la session 4269
  • sp_iqcheckdb 'check database'
  • sp_iqcheckdb 'check table user.matable'
  • sp_iqrebuildindex 'table','column nom_colonne'; : réorganise les les indexes de la colonne 'nom_colonne'
  • sp_iqrowdensity ('table monuser.matable') : donne la fragmentation de la table matable

 

 

 

Commandes système :

Gestion des espaces de stockage

  • create dbspace nom_du_dbspace as '/chemin acces complet/nom_du_device' IQ store
  • create dbspace nom_du_dbspace as '/chemin acces complet/nom_du_device' IQ temporary store
  • create dbspace nom_du_dbspace as '/chemin acces complet/nom_du_device' catalog store SIZE xxx
  • exemple :
    • create dbspace IQ_MAIN12 as '$CATALOG/iqdbspace-main12' iq store
    • Quand il s'agit d'un rawdevice, ce n'est pas la peine de préciser la taille

 

Création d'un utilisateur :

  • grant connect to nom_utilisateur identified by mot_de_passe
  • sp_iqaddlogin loginname, password, [ number_of_connections ] [ , password_expiration]
    • number_of_connection : nombre maxi de connexions concurrentes
    • password_expiration : nombre de jours de validité du mot de passe
  • Via Sybase Central
  • Attribution Privilèges
    • grant privilege to utilisateur
  • Création d'un groupe
    • grant connect to nom_du_groupe identified by password_du_groupe
    • grant GROUPE to nom_du_groupe
    • grant membership in group nom_du_groupe to nom_utilisateur
  •  

 

Les tables système

Récupérer les chemins physiques des dbspaces :

1> select "rename "+dbspace_name+" to '"+file_name+"'" from sysfile

2> where dbspace_name <> 'SYSTEM'

3> go

select name from sysobjects where type='S' order by 1

 

sys.sysservers

 srvid srvname    srvclass srvinfo                           srvreadonly
-----------------------------------------------------------------------

sys.sysexternlogins

user_id srvid remote_login  remote_password
--------------------------------------------------------

SYSTABAUTH : permet de voir les droits sur les objects (équivalent de sp_helprotect)

Table

Contents

SYSUSERPERM

Database-level permissions and password for each user ID

SYSGROUP

One row for each member of each group

SYSTABLEPERM

All permissions on table given by the GRANT commands

SYSCOLPERM

All columns with UPDATE permission given by the GRANT command

SYSDUMMY

Dummy table, can be used to find the current user ID

SYSPROCPERM

Each row holds one user granted permission to use one procedure

View

Contents

SYSUSERAUTH

All information in SYSUSERPERM except for user numbers

SYSUSERPERMS

All information in SYSUSERPERM except for passwords

SYSUSERLIST

All information in SYSUSERAUTH except for passwords

SYSGROUPS

Information from SYSGROUP in a more readable format

SYSTABAUTH

Information from SYSTABLEPERM in a more readable format

SYSCOLAUTH

Information from SYSCOLPERM in a more readable format

SYSPROCAUTH

Information from SYSPROCPERM in a more readable format

 

 

 

 

Mise en place INSERT LOCATION

Mettre à jour le fichier interfaces:

L'insert location s'appuie sur une couche client CIS. Il faut donc renseigner le fichier interface de la couche Ct-lib (client ASE).

 Service_Name
        query tcp ether hostname Port

 

Configuration de la connexion serveur

 Première Méthode

La seule condition pour établir un lien entre deux Serveur, pour iq est assez simple, il suffit que le user et son mot de passe sur IQ soit le même sur l'IQ ou ASE source.

Par exemple si le serveur IQ de destination se nome IQ_1, le server ASE ASE_2, base test et table test_location. IQ_2 un second serveur IQ.

 Il faut un compte pour IQ et ASE identique: Ins_Location Pass: test01

Sur ASE il faut que le compte est le droit select sur les tables qui nous intéressent, dans notre cas  test_location: grant select on test_location to Ins_Location (L'idéal étant d'avoir un groupe pour granter le droit de select)

Sur IQ (IQ_2) il faut créer le compte ayant le droit de select/insert sur l'objet: grant insert on test_location to Ins_Location(Dans le cas d'IQ il est très intéressant de créer un groupe pour les objets alimentés par insert location. Ceci permettra de mettre le compte Ins_Location dans le groupe d'insert location et celui du propriétaire des objets. Cela permet de ne plus préfixer les utilisateurs par : .)

Une fois le compte créé, il est possible de faire un insert location

Connection sur IQ_1 avec Ins_Location:

Pour ASE:

insert into  test_location LOCATION 'ASE_2.base test' {select * from test_location}

 Pour IQ:

 insert into  test_location LOCATION 'IQ_2.IQ_2' {select * from test_location}

 Deuxième mèthode

Si cette première méthode fonctionne, il existe un bug qui se manifeste de la façon suivante: Si le serveur source est, pour une raison ou une autre, inaccessible, tous les insert location ne se feront pas si le compte utilisé pour l'insert location ne se fait pas sur la base de ASE ou IQ source.

Pour éviter ceci, il est préférable de déclarer le serveur et de créer un login externe dans la base IQ de destination:

Pour déclarer un server ASE dans IQ:

 create server ASE_2 CLASS 'asejdbc' USING ':'

Pour déclarer un server IQ dans IQ:

  create server IQ_2 CLASS 'asajdbc' USING ':'

Il faut ensuite déclarer un external login:

Pour ASE:

 create externlogin Ins_Location to ASE_2 REMOTE LOGIN Ins_Location identified by test01

Pour IQ:

 create externlogin Ins_Location to IQ_2 REMOTE LOGIN Ins_Location identified by test01

Il suffit après de lancer les insert location.

 Tables systèmes utiles

Vue sysserver

 srvid srvname    srvclass srvinfo                           srvreadonly
-----------------------------------------------------------------------

Vue sysexternlogin

user_id srvid remote_login  remote_password
--------------------------------------------------------

Petite note :

 Il est possible via Sybase Enterprise Connect™ Data Access (ECDA) pour charger des données dans sybase IQ provenant Oracle, IBM DB2, and Microsoft SQL

 

 

 

 

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';
 

 

Versionning IQ

Le calcul du versioning IQ peut s'avérer critique dans bien des cas.

 

Avant tout le versioning IQ suit les règles suivantes:

 

  1. Les versions sont stockées dans le main de la base
  2. Elles sont générées lors de la mise à jour (Delete, update, insert) d'une table
  3. Elles sont utilisées par toute personne faisant un select sur ces tables.
  4. Elles ne sont libérées que lorsque la session les utilisant sont soit validées (commit)  ou soit fermées (déconnexion)
  5. Les versions actives sont celles attachées à une session active pour lesquelles une transaction est active
  6. Les versions anciennes (old version) sont les versions n'ayant plus de transaction ou session activent mais qui sont utilisées par une autre session

 

Analyse de l'activité des version sur le serveur IQ

 

 Trois procédures indispensables:

sp_iqversionuse

sp_iqtransactions

sp_iqwho ou sp_iqconnection.