Introduction
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.
Migration
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
.
Démarrage de l’instance normée
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 où 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 SRVUNXFR30 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
Vérification de la version
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
Contraintes d’intégrité
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
(sa)> sp_iqcheckdb 'verify database' >& sp_iqcheckdb.log
(sa)> commit
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.
Migration
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 œuvre 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, où 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:
Validation
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
… )
$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éinitialiser 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
(sa)> sp_iqcheckdb 'verify database' >& sp_iqcheckdb.log
(sa)> commit