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
- Vérifier l'espace disque disponible sur les disques de la destination. Les sauvegardes ont tendance à devenir volumineuses.
- Comparaison des dbspaces de la source et de la destination.
sp_iqdbspace
et comparaison des fichiers dans le répertoire “catalog” de la base. - Récupérer les fichiers de dumps sur la machine cible
- 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. - 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).
- Arrêter le serveur
- Sauvegarder le catalogue d’origine de la cible
- 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 - 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
- Arrêter le serveur.
- 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
- Relancer le serveur :
start_asiq @$CATALOG/MA_BASE.cfg MA_BASE.dbSi le log provoque une erreur, vérifier le fichier .iqmsg
stop_asiq...
ou
SQL > stop engine inconditionally
cd /chemin/vers/catalog/MA_BASE/
mv BASE.db BASE.db_YYYYMMDD
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)
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 message log 'logdir/message.log' row log 'logdir/rows.log'; |