IQ - Migration 12.7 vers 15.1

Logo

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_ASQStarting 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