Cette note va détailler la procédure de migration d'une instance Sybase IQ 12.7 ( simplex ) vers une version 15.1 dans un environnement normalisé.
Elle reprend les informations et la méthodologie indiquée dans le document 'Migrating simplex databases' en les personnalisant dans le cadre d'une instance normée.
Pour plus de précisions sur la normalisation adoptée : Installation et normalisation de Sybase IQ 15.1 sous Solaris.
Le plan d'action est des plus simples : l'utilitaire iqunload se charge de l'intégralité de l'opération, le dba doit "seulement" s'assurer, avant et après l'opération, de l'intégrité de la base.
L'installation de la distribution 15.1 n'est pas précisée ici. Elle est rendue disponible sous /Software/sybase/asiq-15.1
La situation de départ est la suivante: instance 12.7 ESD5 arrêtée. Cela n'est pas indispensable mais permet d'identifier les moments ou sont réalisés les changements de contexte, en particulier la variable $SYBASE
SHELL> USE -Q DAS_U1_ASQ
Rappel, dans ce contexte normalisé, cette étape vise à définir le contexte d'exécution ( variables d'environnement, prompt, ... )
DAS_U1_ASQ> $RUN/START_DAS_U1_ASQ
Starting server DAS_U1_ASQ on FLUORINE at port 30071 (08/14 14:25:58) Run Directory : /Software/sybase/dba/etc Server Executable : /Software/sybase/asiq-12.7/ASIQ-12_7/bin/asiqsrv12 Server Output Log : /Software/sybase/dba/DAS_U1_ASQ/log/DAS_U1_ASQ.log Server Version : 12.7.0/ESD 5 Open Client Version : 15.0/P-EBF13575 ESD #4 User Parameters : '@/Software/sybase/dba/DAS_U1_ASQ/cfg/DAS_U1_ASQ.cfg' ... ... New process id is 18284 I. 08/14 14:26:07. TCPIP link started successfully I. 08/14 14:26:07. Now accepting requests
La migration vers une version 15.1 depuis une 12.7 impose de cette dernière le niveau d'ESD #5
DAS_U1_ASQ> dbisql -nogui -c "$SQLCONNECT"
(sa)> select @@version
@@version --------------------------------------------------------------------------------- Sybase IQ/12.7.0/080707/P/ESD 5/Sun_Opteron/OS 5.10/64bit/2008-07-07 13:04:11
Classiquement , la procédure de migration implique la détection et correction éventuelle d'erreur d'intégrité. L'opération est prise en charge par la commande sp_iqcheckdb.
(sa)> checkpoint
Execution time: 0.035 seconds
(sa)> sp_iqcheckdb 'verify database' >& sp_iqcheckdb.log (sa)> commit
Execution time: 0.002 seconds
Cette opération peut être très longue ( 15 Gb/heure en mode 'verify' ). Pour plus d'information sur la commande : sp_iqcheckdb
Vérifier que toutes les erreurs éventuellement levées soient corrigées.
L'opération consiste à lancer la commande iqunload de la distribution 15.1. Celle-ci nécessite que les variables SYBASE et IQDIR15 soient correctement définies.
A noter qu'il faut référencer le chemin exact de localisation du fichier .db. La migration réalise une copie physique des données et va de fait réutiliser l'arborescence.
Enfin, l'outil travaille base fermée, il faut donc au préalable arrêter l'instance. ( Dans les faits la distribution intègre un pseudo moteur 12.7 - iqunlspt - qui va servir aux arrêts/démarrages necessaires)
DAS_U1_ASQ>$RUN/STOP_DAS_U1_ASQ DAS_U1_ASQ>exit
SHELL>export SYBASE=/Software/sybase/asiq-15.1 SHELL> . $SYBASE/IQ-15_1/IQ-15_1/IQ-15_1.sh
SHELL>iqunload -au -c"log=unload.log;DBF=investment.db;uid=sa;pwd=xxxx"
Sybase IQ Unload Utility Version 15.1.0.5027 Connecting and initializing ============================================================= IQ server starting with: 1 connections ( -gm ) 14 cmd resources ( -iqgovern ) 127 threads ( -iqmt ) 524544 bytes thread stack size ( -iqtss + 256 ) 66617088 bytes thread memory size ( -iqmt * thread stack size ) 2 IQ number of cpus ( -iqnumbercpus ) ============================================================= Wrapping iqmsg: Disabled. Wrapping iqmsg: Disabled. ============================================================= IQ server starting with: 1 connections ( -gm ) 14 cmd resources ( -iqgovern ) 129 threads ( -iqmt ) 524544 bytes thread stack size ( -iqtss + 256 ) 67666176 bytes thread memory size ( -iqmt * thread stack size ) 2 IQ number of cpus ( -iqnumbercpus ) 0 MB maximum size of IQMSG file ( -iqmsgsz ) 2009-08-17 06:44:37 Unloading user and group definitions 2009-08-17 06:44:37 Unloading table definitions 2009-08-17 06:44:38 Unloading index definitions 2009-08-17 06:44:38 Unloading functions 2009-08-17 06:44:38 Unloading view definitions 2009-08-17 06:44:38 Unloading procedures 2009-08-17 06:44:38 Unloading triggers 2009-08-17 06:44:38 Unloading SQL Remote definitions 2009-08-17 06:44:38 Unloading MobiLink definitions 2009-08-17 06:44:38 Creating new database Warning: Using default value for -iqmc or -iqtc is insufficient for most applications Warning: Using default value for -iqmc or -iqtc is insufficient for most applications Using licenses from: /Software/sybase/asiq-15.1/SYSAM-2_0/licenses:/test/asiq/DAS_U1_ASQ ... 2009-08-17 06:44:44 Reloading table definitions 2009-08-17 06:44:48 Reloading index definitions 2009-08-17 06:44:48 Reloading functions 2009-08-17 06:44:48 Reloading view definitions 2009-08-17 06:44:48 Reloading procedures 2009-08-17 06:44:48 Reloading triggers 2009-08-17 06:44:48 Reloading SQL Remote definitions 2009-08-17 06:44:48 Reloading MobiLink definitions Successfully backed up file "/test/asiq/DAS_U1_ASQ/investment.db" by renaming it to "/test/asiq/DAS_U1_ASQ/investment.db.before_schema_reload". Successfully backed up file "/DAS/asiq/DAS_U1_ASQ/investment.iqmsg" by renaming it to "/DAS/asiq/DAS_U1_ASQ/investment.iqmsg.before_schema_reload". Successfully reloaded schema of database "/test/asiq/DAS_U1_ASQ/investment.db".
L'utilitaire iqunload est documenté ici : iqunload
Le paramètre -au indique le mode migration dont la cinématique prévoit: de démarrer l'instance, d'extraire le shéma de la base, de l'appliquer sur une nouvelle spécialement créée, puis de la rendre opérationnelle , en archivant l'ancienne.
Les options sont préservées par la migration ( contrairement aux anciennes versions )
Elément notable, à partir de la version 15.1, Sybase recommande de séparer les données utilisateur des données systèmes. Autrement dit, le dbspace IQ_SYSTEM_MAIN ne doit plus contenir de données utilisateur. On retrouve en celà la philosophie mise en oeuvre sous forme de base de données sous ASE, ou master et tempdb sont isolées des bases applicatives.
Cela a un impact lors de la migration de l'instance, ou l'editeur procède à la manipulation suivante : le dbspace IQ_SYSTEM_MAIN est renommé en IQ_MAIN et un nouveau dbspace IQ_SYSTEM_MAIN vierge de toute table est créé . Il est associé au fichier new_main_store.iq
Le nom du fichier 'new_main_store.iq' peut être changé à l'installation ( iqunload -au -c '...' -ms_filename 'system_main.iq'
La migration est résumée comme suit:

L'instance est désormais migrée et arrêtée, la dernière étape consiste à mettre à jour l'environnement normé, démarrer l'instance et lancer le dbcc pour s'assurer de la bonne santé de l'instance.
Pour plus de précisions sur la normalisation adoptée : Installation et normalisation de Sybase IQ 15.1 sous Solaris.
Au chapitre de la mise à jour de l'environnement, il faut modifier le chemin de la distribution du fichier $DBA/etc ( asiq-15.1 au lieu de asiq-12.7 ) et mettre à jour les scripts de démarrage ( bin64 au leu de bin, ... )
SHELL> cat $CFG/DAS_U1_ASQ.cfg
#!/bin/ksh export DSQUERY=DAS_U1_ASQ export SYBASE=/Software/sybase/asiq-15.1 export APPNAME=DAS export DBENV=UAT . ~sybase/dba/etc/defaults_asq.ksh
Une fois réalisée, reste à réunitialiser le contexte d'environnement et démarrer l'instance ...
SHELL> USE -S DAS_U1_ASQ DAS_U1_ASQ> $RUN/START_DAS_U1_ASQ
... vérifier la version ...
DAS_U1_ASQ> dbisql -nogui -c "$SQLCONNECT"
(sa)> select @@version
@@version --------------------------------------------------------------------------------- Sybase IQ/15.1.0.5027/090605/P/GA/Sun_Opteron/OS 5.10/64bit/2009-06-05 14:56:54
... et relancer un dbcc .
(sa)> checkpoint
Execution time: 0.035 seconds
(sa)> sp_iqcheckdb 'verify database' >& sp_iqcheckdb.log (sa)> commit
| Version | Date | Commentaires |
|---|---|---|
| 1.0 | 08/2009 | Version initiale |
Sybase Books Online IQ 15.1
Sybase BOL : 'Migrating simplex
databases'
Sybase BOL : sp_iqcheckdb