SelectEtoile : Base de connaissance SGBD

Posts Tagged 'startasiq'

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

 

Rechargement Base SYBASE IQ

  1. Vérifier l'espace disque disponible sur les disques de la destination. Les sauvegardes ont tendance à devenir volumineuses.
  2. Comparaison des dbspaces de la source et de la destination.
    sp_iqdbspace
    et comparaison des fichiers dans le répertoire “catalog” de la base.
  3. Récupérer les fichiers de dumps sur la machine cible
  4. Récupérer le mapping de la cible, c’est à dire la correspondance entre les fichiers physiques et le découpage de l’espace de stockage (”IQ Store”).
    Voici la commande :
    select 'rename '+dbspace_name+ ' to '''+file_name+'''' from sysfile where dbspace_name <> ‘SYSTEM’
    go

    Mettre de coté le résultat.
  5. Créer un fichier de rechargement (ex : restore.sql), c’est plus pratique.
    Par exemple :

    restore database '/Chemin/vers/catalog/Ma_BASE.db'
    from 'chemin_absolu_vers_fichier_de_dump_sans_numéro_final'
    rename IQ_SYSTEM_MAIN to '/Chemin/vers/fichiers/physique/fichier_01'
    rename IQ_SYSTEM_TEMP to '/Chemin/vers/fichiers/physique/fichier_temp01'
    rename IQ_SYSTEM_MSG to '/Chemin/vers/fichiers/errorlog/MA_BASE.iqmsg'
    rename IQ_MAIN02 to '/Chemin/vers/fichiers/physique/fichier_02'
    rename IQ_TEMP02 to '/Chemin/vers/fichiers/physique/fichier_temp02'

    (les "rename" étant ceux générés à l'étape 4).

  6. Arrêter le serveur
  7. stop_asiq...

    ou

    SQL > stop engine inconditionally

  8. Sauvegarder le catalogue d’origine de la cible
  9. cd /chemin/vers/catalog/MA_BASE/
    mv BASE.db BASE.db_YYYYMMDD

  10. Démarrer la base en démo :

    Exemple :
    start_asiq -n demo
    Résultat :
    Starting server demo on ma_machine at port (09/04 14:56:06) Run Directory : /chemin/vers/catalog Server Executable : asiqsrv12 Server Output Log : demo.043.srvlog Server Version : 12.6.0/ESD 6.2 12.6.0/ESD 6.2 Open Client Version : 12.5.1/P-EBF12230 GA User Parameters : ‘-n’ ‘demo’ Default Parameters : -hs -c 48m -gc 20 -gd all -gl all -gm 10 -gp 4096 -ti 4400 -gn 25

     

  11. Recharger à l’aide du script généré précédemment :

    isql -UDBA -w999 -S utility_db -PSQL -i restore.sql
    Les fichiers demo.00x.srvlog et demo.00x.stderr permettent de suivre le rechargement

  12. Arrêter le serveur.
  13. Renommer le journal de log de la base :

    cd $CATALOG
    SHELL>dblog -t MA_BASE.log MA_BASE.db

    Adaptive Server Anywhere Transaction Log Utility Version 9.0.1.1570 Debug
    “MA_BASE.db” was using log file “MA_BASE_ORIGINE.log”
    “MA_BASE.db” is using no log mirror file
    “MA_BASE.db” is now using log file “MA_BASE.log”
    Transaction log starting offset is 02177018499
    Transaction log current relative offset is 0000004546

  14. Relancer le serveur :
    start_asiq @$CATALOG/MA_BASE.cfg MA_BASE.db

    Si le log provoque une erreur, vérifier le fichier .iqmsg

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