Sybase Replication Server 15.5, Real Time Loading for IQ (RTL / HVAR) - Mise en route rapide.

Logo

Introduction (RTL/HVAR)

Sybase Replication Server 15.5 introduit une nouvelle fonctionnalité de réplication en temps réel et optimal vers Sybase IQ : Sybase Replication Server 15.5 RTL Edition (Real Time Loading for IQ).

Cette édition, sous licence, supprime la contrainte de l’envoi de commandes atomiques OLTP (insert, update, delete) depuis Replication Server dans les tables cibles de Sybase IQ, commandes atomiques qui ne sont pas adaptées et optimales pour le moteur IQ (stockage, compression…). La fonctionnalité RTL for IQ supprime également les solutions de réplication via des bases tampons Adaptive Server Enterprise, solutions lourdes en maintenance et complexité (Réplication vers IQ 12.7 via une base tampon ASE staging).

Schema RTL for IQ

RTL supporte les versions ci-dessous :

  • Adaptive Server Enterprise 15.0.3 et versions supérieures pour la base ASE primaire.
  • Sybase IQ 12.7 ESD#3 et versions supérieures pour la base IQ répliquée.

L’option HVAR (High Volume Adaptive Replication) est implicitement activée avec Sybase Replication Server Real Time Loading Edition for IQ. L’option HVAR compile et optimise les ordres SQL reçus dans les files (queues) de Replication Server, cette compilation est réalisée en mémoire dans ce qui est appelée la ncdb de Replication Server "In Memory Net Change Database" afin de déverser de façon optimale dans les cibles (ASE, IQ, Oracle…) en utilisant dans la mesure du possible les APIs de chargement massif du moteur cible (Bulk). Le schéma ci-dessous illustre bien l’option HVAR High Volume Adaptive Replication :

Schema RTL for IQ

Cet article propose une mise en route et une prise en main rapides de Sybase Replication Server Real Time Loading for IQ avec HVAR. Les aspects théoriques de la technologie RTL sont partiellement abordés.

Préparation technique des environnements IQ et Replication Server pour l’option RTL/HVAR vers IQ

Le schéma de la réplication de Sybase Adaptive Server Enterprise vers Sybase IQ via Replication Server 15.5 RTL est le suivant :

schema replication RTL 15.5

Préparation et configuration de la base répliquée Sybase IQ

Permissions sur la base IQ

Comme pour la réplication vers Sybase ASE, Replication Server utilise un compte de maintenance dans la base IQ pour appliquer les transactions. Le compte de maintenance doit disposer des droits ci-dessous :

  • RESOURCE pour les tables de travail et les indexes temporaires.
  • EXECUTE pour exécuter la procédure sp_iqwho.
  • GRANT ALL sur les tables à répliquer.
  • UPDATE et EXECUTE sur toutes les tables et procédures stockées répliquées.

Dans ce guide pratique, le compte est appelé rs155db, rs155db est également le propriétaire des tables répliquées dans le serveur IQ DAS_U1_ASQ.

Pour démarrer les tests et l’évaluation du produit RS RTL/HVAR, le privilège DBA est donné au compte rs155db_maint, évidemment cette configuration doit être bannie pour un environnement de production.

sybase@DAS_U1_ASQ > iqisql -Usa

grant connect to rs155db identified by *********
go
grant DBA to rs155db
go
grant membership in group rs_systabgroup to rs155db
go

Espace de stockage IQ Temporary store

RTL créé des tables temporaires de travail dans le dbspace temporaire de Sybase IQ pour traiter les ordres update, delete avec jointures, les indexes temporaires nécessaires, etc. L’espace nécessaire dans ce dbspace dépend de la quantité de données traitée. Avant le démarrage des tests, vérifier l’espace disponible dans le dbspace temporaire :

sybase@DAS_U1_ASQ > iqisql -Usa

exec sp_iqdbspace IQ_SYSTEM_TEMP
go

DBSpaceName       DBSpaceType  ...      TotalSize  ...
---------------   -----------           ---------
IQ_SYSTEM_TEMP    TEMPORARY             1.95GB

Pour ajouter de l’espace au dbspace temporaire IQ Temp, utiliser la commande ALTER DBSPACE ( NB : la syntaxe est différente entre la version 12.7 et les versions 15.x).

Configuration de Sybase Replication Server 15.5 RTL

Le paramétrage de RTL/HVAR vers Sybase IQ est configuré au niveau du thread DSI (Data Server Interface) vers la base IQ, il ne s’agit pas d’un paramètre serveur du moteur de réplication RS à modifier avec la commande configure replication server.

Création de la connexion vers IQ, définition des classes

Les connexions vers les cibles dans Replication Server sont au format <dataserver>.<database>, le fichier interfaces doit donc référencer une entrée pour le serveur IQ comme s’il s’agissait d’un serveur Sybase Adaptive Server Enterprise.

$SYBASE/interfaces
DAS_U1_ASQ
        master tli tcp SRVUNXFR30 30071
        query tcp ether SRVUNXFR30 30071

Avec la version RS 15.5 RTL edition, une nouvelle classe d’erreurs et une nouvelle classe de fonctions (function strings) spécifiques à Sybase IQ font leur entrée : rs_iq_function_class et rs_iq_error_class.

sybase@IDB_U1_REP > isql -Usa

admin show_function_classes
go
Class                  ParentClass                Level 
---------------------- -------------------------- ----- 
...
rs_iq_function_class   rs_default_function_class      1
...
sybase@IDB_U1_ASA > isql -Usa

exec rs_helpclass
go
Error Class(es)     PRS for CLASS                  
------------------- ------------------- 
rs_iq_error_class   Not Yet Defined.               
...

La création de la connexion vers la base IQ est réalisée avec la commande create connection dans Replication Server en spécifiant le profil rs_ase_to_iq, profil qui affectera automatiquement à cette connexion la classe d’erreurs rs_iq_error_class et la classe de fonctions rs_iq_function_class.

sybase@IDB_U1_REP > isql -Usa

create connection to DAS_U1_ASQ.rs155db
using profile rs_ase_to_iq; standard
set username to rs155db
set password to *********
go
Connection to 'DAS_U1_ASQ.rs155db' is created.

La connexion au serveur IQ est testée lors du lancement de la commande create connection.

Les classes à la connexion IQ sont correctement affectées, pour le vérifier, lancer la commande rs_helpdb dans la base RSSD.

sybase@RSD_U1_ASA > isql -Usa 

exec rs_helpdb
go
 dsname                         dbname                         dbid   
         controlling_prs                errorclass
         repserver_errorclass           funcclass
         status                                                                                               
 ------------------------------ ------------------------------ -----------
         ------------------------------ ------------------------------
         ------------------------------ ------------------------------
         -----------------------------------------------------------------
 
 DAS_U1_ASQ                     rs155db                                104
         IDB_U1_REP                     rs_iq_error_class             
         rs_repserver_error_class       rs_iq_function_class          
         Log Transfer is OFF, Distribution is ON 

Si l’option "using profile rs_ase_to_iq" a été omise durant la création de la connexion, utiliser les commandes alter connection set error class to et set function string class pour affecter les classes rs_iq_error_class et rs_iq_function_class à la connexion vers IQ.

Activation de RTL : dsi_compile_enable, dsi_compile_max_cmds, dsi_bulk_threshold, dsi_command_convert, dsi_dataserver_make

La mise en route de RTL est réalisée en configurant le thread DSI (Data Server Interface) qui réplique vers la base IQ, il ne s’agit pas de paramètres globaux au niveau serveur du moteur de réplication.

5 paramètres dsi_% pour RTL :

  • dsi_compile_enable
  • dsi_compile_max_cmds
  • dsi_bulk_threshold
  • dsi_command_convert
  • dsi_dataserver_make (optionnel)
sybase@IDB_U1_REP > isql -Usa

alter connection to DAS_U1_ASQ.rs155db
 set dsi_compile_enable to 'on'
go

alter connection to DAS_U1_ASQ.rs155db
 set dsi_compile_max_cmds to '50000'
go

alter connection to DAS_U1_ASQ.rs155db
 set dsi_bulk_threshold to '15'
go

alter connection to DAS_U1_ASQ.rs155db
 set dsi_command_convert to 'i2di,u2di'
go

suspend connection to DAS_U1_ASQ.rs155db
go

resume connection to DAS_U1_ASQ.rs155db
go
Config parameter 'dsi_compile_enable' is modified. This change will not take
effect until the connection/route is restarted. A connection/route can be
restarted with the suspend and resume commands.

Config parameter 'dsi_compile_max_cmds' is modified.

Config parameter 'dsi_bulk_threshold' is modified.

Config parameter 'dsi_command_convert' is modified. This change will not take
effect until the connection/route is restarted. A connection/route can be
restarted with the suspend and resume commands.

Connection to 'DAS_U1_ASQ.rs155db' is suspended.

Connection to 'DAS_U1_ASQ.rs155db' is resumed.

Le paramètre dsi_compile_enable est le paramètre majeur qui gouverne les chargements optimisés dans IQ avec INSERT LOCATION depuis Replication Server. Lorsque ce paramètre est à off, la réplication classique transactionnelle est réalisée dans le moteur IQ. Lorsque dsi_compile_enable est à on, HVAR et RTL sont activées au niveau du serveur Replication Server.

Les paramètres dsi_compile_enable et dsi_command_convert ne sont appliqués qu’au redémarrage de la connexion ou de la route avec les commandes suspend connection/resume connection et suspend route/resume route.

Dans l’exemple ci-dessus, les valeurs par défaut recommandées par Sybase pour RTL sont appliquées : 15 pour dsi_bulk_threshold, 50000 pour dsi_compile_max_cmds et "i2di,u2di" pour dsi_command_convert.

Le paramètre dsi_dataserver_make est souvent optionnel : il est peut être défini à ase, iq, sqlany, ora, mssql, udb, db2. Replication Server déduit le type de serveur de données en cible en fonction du profil spécifié à la création de la connexion (create connection ... using profile <profile>…). Dans le cas ici, le profil rs_ase_to_iq a été appliqué à la création de la connexion, Replication Server en déduit automatiquement que le paramètre dsi_dataserver_make est iq.

sybase@IDB_U1_REP > isql -Usa

admin config, "connection", DAS_U1_ASQ, rs155db, dsi_dataserver_make
go
 Configuration                  
         Config Value
         Run Value
         Default Value
         Legal Values
         Datatype
         Status
-------------------------------
 dsi_dataserver_make
         iq
         iq
         default
         list: ase,sqlany,iq,ora,mssql,udb,db2
         string
         Connection/route restart required
         
(1 row affected)

Préparation de la réplication de la table QUOTE de Sybase ASE vers Sybase IQ

Dans les étapes qui suivent, les tables dbo.QUOTE et rs155db.QUOTE existent respectivement dans IDB_D1_ASE et DAS_U1_ASQ avec les droits nécessaires. La connexion vers la source ASE IDB_D1_ASE est déjà créée avec un fichier de ressources et l’agent de réplication dans IDB_D1_ASE / base investment est en route.

Création de la définition de réplication et de la souscription vers IQ

La démo va être réalisée sur la table QUOTE, table de 225 millions de lignes dans la source ASE. La clé primaire est définie sur les trois premières colonnes de cette table : INSTRUMENT_ID, RETRIEVAL_DTE et SOURCE_ID.

La définition de la réplication pour la table QUOTE est réalisée avec la commande create replication definition de Replication Server :

sybase@IDB_U1_REP > isql -Usa

create replication definition QUOTE_investment
  with primary at IDB_D1_ASE.investment
  with primary table named 'QUOTE'
  with replicate table named rs155db.'QUOTE'
(
  RETRIEVAL_DTE                   datetime         ,
  INSTRUMENT_ID                   int              ,
  SOURCE_ID                       varchar(12)      ,
  QUOTE                           float            ,
  QUOTE_DATE                      datetime         ,
  UNIT_PRICE                      float            ,
  ACCRUED_INTEREST                float            ,
  ACCRUED_INTEREST_DATE           datetime         ,
  CREATED_BY                      varchar(20)      ,
  CREATED_ON                      datetime         ,
  UPDATED_BY                      varchar(20)      ,
  UPDATED_ON                      datetime         
)
primary key(INSTRUMENT_ID,RETRIEVAL_DTE,SOURCE_ID)

La souscription de réplication pour la table QUOTE vers DAS_U1_ASQ.rs155db est ensuite lancée avec la commande Replication Server create subscription (sans matérialisation)

sybase@IDB_U1_REP > isql -Usa

create subscription sub_QUOTE_dasu1 for QUOTE_investment 
  with replicate  at DAS_U1_ASQ.rs155db
  without materialization
Subscription 'sub_QUOTE_dasu1' is in the process of being created.

La connexion vers DAS_U1_ASQ est alors suspendue et rétablie avec les commandes suspend/resume connection to DAS_U1_ASQ.rs155db.

Personnalisation de la réplication vers QUOTE : dsi_command_convert à d2none

Le paramètre dsi_command_convert a été appliqué précédemment à "i2di,u2di" pour la connexion vers DAS_U1_ASQ.rs155db. Cette définition a les conséquences suivantes pour la réplication d’une table vers DAS_U1_ASQ.rs155db :

  • i2di : chaque insertion sera systématiquement réalisée avec une suppression de la ligne existante puis une réinsertion.
  • u2di : chaque mise à jour d’une ligne avec la commande update sera remplacée par une suppression de la ligne existante puis une réinsertion de la ligne incluant les nouvelles valeurs de la commande update.

La table QUOTE est une table d’historique, les lignes ne sont jamais supprimées dans la source, par conséquent le mode de conversion des commandes Replication Server est personnalisé pour cette table et mis à d2none : aucune commande delete lancée avant les insertions. Le changement du paramètre dsi_command_convert pour une table donnée est réalisé avec la commande alter connection :

sybase@IDB_U1_REP > isql -Usa

alter connection to DAS_U1_ASQ.rs155db
for replicate table named rs155db.QUOTE 
set dsi_command_convert to 'd2none'
go
Config parameter 'dsi_command_convert' is modified. This change will not take
effect on existing connections/routes until they are restarted. A
connection/route can be restarted with the suspend and resume commands.

La personnalisation est prise en compte dès le redémarrage de la connexion vers DAS_U1_ASQ.rs155db aves les commandes suspend/resume connection to DAS_U1_ASQ.rs155db.

Utiliser la commande admin config avec l’option "table" pour vérifier la personnalisation du paramètre dsi_command_convert pour la table QUOTE :

sybase@IDB_U1_REP > isql -Usa

admin config, "table", DAS_U1_ASQ, rs155db, QUOTE
go
 Configuration                  
         Config Value
         Run Value
         Default Value
         Legal Values
         Datatype
         Status
         Table
 -------------------------------
 dsi_compile_enable             
         <server default>
         <server default>
         on
         list: on,off
         string
         Connection/route restart required
         rs155db.QUOTE

 dsi_command_convert
         d2none
         d2none
         none
         list: none, i2none, d2none, u2none, i2di, u2di, t2none
         string
         Connection/route restart required
         rs155db.QUOTE
         
(2 rows affected)

Mise en route de la réplication pour la table QUOTE dans l’environnement primaire (sp_setreptable)

La réplication de la table QUOTE est activée sur l’environnement primaire ASE IDB_D1_ASE (base investment) avec la commande sp_setreptable :

sybase@IDB_D1_ASE > isql -Usa

use investment
go
exec sp_setreptable "QUOTE",true
go
The replication status for 'QUOTE' is set to true, owner_off.
(return status = 0)

Démo de réplication massive (en mode debug avec l’option hold de la commande sysadmin cdb)

Dans la démo de réplication de la table QUOTE vers IQ, 2000 lignes sont insérées massivement dans la source sur IDB_D1_ASE, mais avant l’insertion massive, des traces sont mises en place côté Replication Server pour mieux comprendre la cinématique :

  • La trace sur le dsi vers DAS_U1_ASQ.rs155db est lancée avec trace on.
  • La file de réplication HVAR vers DAS_U1_ASQ.rs155db est bloquée avec la commande sysadmin cdb, hold.

Activation des traces sur le DSI vers IQ et suspension de la HVAR dans Replication Server (sysadmin cdb, hold)

La trace sur le DSI vers IQ est activée avec la commande trace 'on','dsi','dsi_buf_dump' dans Replication Server. Toutes les actions réalisées par le DSI vers DAS_U1_ASQ.rs155db sont dès lors consignées dans le fichier de log de Replication Server.

sybase@IDB_U1_REP > isql -Usa

trace 'on','dsi','dsi_buf_dump'
go

Les compilations HVAR et l’exécution vers IQ sont suspendues avec l’option hold de la commande sysadmin cdb. La commande sysadmin cdb de Replication Server permet de lister les informations et inspecter la NCDB de Replication Server (net change database)

Pour suspendre, reprendre les compilations HVAR dans la net change database avec sysadmin cdb :

sysadmin cdb, q_number, q_type, { hold | hold_next | unhold }

Pour pour lister les informations dans la net change database avec sysadmin cdb :

sysadmin cdb, 
   [q_number [,q_type] [list [, ["table_owner.]table_name"] |
   [[dump_i | dump_d | dump_u | dump_nc |], table_name ] | dump_nc ]]

sysadmin cdb sans paramètre affiche toutes les queues de Replication Server et leurs propriétés HVAR/RTL (compilation, suspension, commandes en attente).

sybase@IDB_U1_REP > isql -Usa

sysadmin cdb
go
 DSName                          DBName                          Queue      
         QType       Compile Hold 
         CdbName                                           Commands_in_Group 
 ------------------------------- ------------------------------- -----------
         ----------- ------- -----
         ------------------------------------------------- ----------------- 
 IDB_D1_ASE                      investment                              107
                   0 Off     No   
                                                                           0 
 DAS_U1_ASQ                      rs155db                                 106
                   0 On      No   
                                                                           0 
 RSD_U1_ASA                      RSD_U1_ASA                              101
                   0 Off     No   
                                                                           0

La sortie de sysadmin cdb permet de retrouver le numéro de la file (ou queue) et le type de la file (1: inbound - entrée, 0: outbound - sortie) pour laquelle l’option HVAR est active (colonne compile à on). Dans cette démo : Queue # 106 pour DAS_U1_ASQ.rs155db, Qtype à 0 (outbound queue, file de sortie).

Les compilations HVAR sont alors suspendues pour inspection avec l’option hold de sysadmin cdb sur la queue 106:0

sybase@IDB_U1_REP > isql -Usa

sysadmin cdb, 106, 0, hold
go
sysadmin cdb
go
 DSName                          DBName                          Queue      
         QType       Compile Hold 
         CdbName                                           Commands_in_Group 
 ------------------------------- ------------------------------- -----------
         ----------- ------- -----
         ------------------------------------------------- ----------------- 
 IDB_D1_ASE                      investment                              107
                   0 Off     No   
                                                                           0 
 DAS_U1_ASQ                      rs155db                                 106
                   0 On      Yes  
                                                                           0 
 RSD_U1_ASA                      RSD_U1_ASA                              101
                   0 Off     No   
                                                                           0 

La colonne Hold (suspension de la HVAR) pour la queue 106:0 est bien à On.

L’option hold n’est appliquable que pour la prochaine transaction, elle ne peut jamais agir sur une transaction en cours de compilation HVAR et d’exécution vers IQ.

Insertion massive dans la base primaire et informations dans la HVAR cdb (état suspendu)

L’insertion massive est réalisée dans la base primaire. La transaction, une fois validée (commit) dans le serveur ASE, arrive dans la queue 106:0 de Replication Server pour être compilée par l’option HVAR :

sybase@IDB_D1_ASE > isql -Usa

use investment
go
set rowcount 2000
go
begin tran
insert into QUOTE select * from QUOTEVW where RETRIEVAL_DTE='2010 FEB 01'
go
commit
go

La commande sysadmin cdb dans Replication Server montre 2000 ordres SQL pour la queue vers DAS_U1_ASQ.rs155db (Commands_in_Group)

sybase@IDB_U1_REP > isql -Usa

sysadmin cdb
go
 DSName                          DBName                          Queue      
         QType       Compile Hold 
         CdbName                                           Commands_in_Group 
 ------------------------------- ------------------------------- -----------
         ----------- ------- -----
         ------------------------------------------------- ----------------- 
 IDB_D1_ASE                      investment                              107
                   0 Off     No   
                                                                           0 
 DAS_U1_ASQ                      rs155db                                 106
                   0 On      Yes  
         rs155db_49_1                                                   2000 
 RSD_U1_ASA                      RSD_U1_ASA                              101
                   0 Off     No   
                                                                           0

Un nom cdb (CdbName) est automatiquement donné dans la net change database cdb de RS pour une transaction à traiter par l’option HVAR : ici rs155db_49_1. Ce nom de base de données cdb rs155db_49_1 sera utilisé dans la commande INSERT LOCATION envoyée dans IQ, un nom de base de données étant obligatoire.

Des informations encore plus précises sont fournies avec l’option list sur la queue 106:0 de la commande sysadmin cdb.

sybase@IDB_U1_REP > isql -Usa

sysadmin cdb, 106, 0, list
go
 CdbName                                          
         Replicate_Table           
         Status                         Cmd_Convert                  
         AutoCorrection Nb_Columns  PK_Cols    
         CdbTable                                
         Insert_Table                             Inserts    
         Update_Table                             Updates    
         Delete_Table                             Deletes    
         Non_Compilable_Cmds Update_Worktable                        
         Delete_Worktable                         Reduced_Inserts
         Reduced_Updates Reduced_Deletes 
 -------------------------------------------------
rs155db_49_1                                     
         rs155db.QUOTE                                
         compilable                     d2none                             
         No                      12           3
         QUOTE_49_1                              
         rs_iQUOTE_49_1                                  2000
         rs_uQUOTE_49_1                                     0
         rs_dQUOTE_49_1                                     0
                           0                                         
                                                                0
                       0               0

Les 2000 insertions sont bien présentes pour la table virtuelle HVAR rs_iQUOTE_49_1 qui sera utilisée pour charger en massif dans IQ en mode INSERT LOCATION.

Les options dump_i (insert), dump_u (update), dump_d (delete) et dump_nc (non compilables) de la commande sysadmin cdb permettent d’aller encore plus loin en granularité pour une table à répliquer dans une transaction. Les options dump% donnent le contenu pour les insertions, les updates, les delete et les commandes non compilables dans la cdb, contenu qui sera traité au mieux en mode massif par l’option HVAR :

sybase@IDB_U1_REP > isql -Usa

sysadmin cdb, 106,0, dump_i,"rs155db.QUOTE"
go
        Feb  2 2010 12:00AM         27433
         FACTFTSP ....

Pour une file mise au statut hold, l’état suspendu est notifié dans le fichier de log de Replication Server uniquement lorsqu’une transaction arrive dans la file HVAR.

T. 2010/07/16 15:37:46. (24): HQ end of transaction, holding ...

Envoi vers IQ avec INSERT LOCATION depuis la HVAR (sysadmin cdb, unhold)

L’état de mise en attente (pour inspection) est alors retiré pour déclencher la réplication vers IQ avec l’option unhold de la commande sysadmin cdb :

sybase@IDB_U1_REP > isql -Usa

sysadmin cdb, 106, 0, unhold
go
sysadmin cdb
go
 DSName                          DBName                          Queue      
         QType       Compile Hold 
         CdbName                                           Commands_in_Group 
 ------------------------------- ------------------------------- -----------
         ----------- ------- -----
         ------------------------------------------------- ----------------- 
 IDB_D1_ASE                      investment                              107
                   0 Off     No   
                                                                           0 
 DAS_U1_ASQ                      rs155db                                 106
                   0 On      No  
                                                                           0 
 RSD_U1_ASA                      RSD_U1_ASA                              101
                   0 Off     No   
                                                                           0 

La trace dsi dans le fichier de log de Replication Server montre la commande IQ INSERT LOCATION dans la table rs155db.QUOTE depuis la table HVAR rs_iQUOTE_49_1 contenant les 2000 insertions :

INSERT INTO rs155db.QUOTE (RETRIEVAL_DTE,INSTRUMENT_ID,SOURCE_ID,QUOTE,QUOTE_DATE,
UNIT_PRICE,ACCRUED_INTEREST,ACCRUED_INTEREST_DATE,CREATED_BY,
CREATED_ON,UPDATED_BY,UPDATED_ON) 

LOCATION 'IDB_U1_REP.rs155db_49_5' 

{ SELECT * FROM rs_iQUOTE_49_1 }
IDB_U1_REP.log
T. 2010/07/16 17:55:31. (49): Command sent to 'DAS_U1_ASQ.rs155db':
T. 2010/07/16 17:55:31. (49): 'set temporary option Load_Memory_MB='100''
T. 2010/07/16 17:55:31. (49): 'set temporary option Minimize_Storage='on''
T. 2010/07/16 17:55:31. (49): 'set temporary option join_preference=5'
T. 2010/07/16 17:55:31. (49): Command sent to 'DAS_U1_ASQ.rs155db':
T. 2010/07/16 17:55:31. (49): 'lock table rs155db.QUOTE in write mode wait'
T. 2010/07/16 17:55:31. (49): Command(s) to 'DAS_U1_ASQ.rs155db':
T. 2010/07/16 17:55:31. (49): 'begin transaction  '
T. 2010/07/16 17:55:31. (49): Command sent to 'DAS_U1_ASQ.rs155db':
T. 2010/07/16 17:55:31. (49): 'insert into rs155db.QUOTE (RETRIEVAL_DTE,INSTRUMENT_ID,S
OURCE_ID,QUOTE,QUOTE_DATE,UNIT_PRICE,ACCRUED_INTEREST,ACCRUED_INTEREST_DATE,CREATED_BY,
CREATED_ON,UPDATED_BY,UPDATED_ON) location 'IDB_U1_REP.rs155db_49_5' { select * from rs
_iQUOTE_49_1 }'
T. 2010/07/16 17:55:31. (50): Insert location table QUOTE_49_1
T. 2010/07/16 17:55:31. (50): 'Bulk columns : (RETRIEVAL_DTE,INSTRUMENT_ID,SOURCE_ID,QU
OTE,QUOTE_DATE,UNIT_PRICE,ACCRUED_INTEREST,ACCRUED_INTEREST_DATE,CREATED_BY,CREATED_ON,
UPDATED_BY,UPDATED_ON)'
T. 2010/07/16 17:55:31. (50): 'Bulk row : ("20100201 00:00:00:000",30611,"DATASTREAM",1
,"20100201 00:00:00:000",1, NULL, NULL,"dbo","20100202 02:40:41:266", NULL, NULL)'
T. 2010/07/16 17:55:31. (50): 'Bulk row : ("20100201 00:00:00:000",30726,"DATASTREAM",1
,"20100201 00:00:00:000",1, NULL, NULL,"dbo","20100202 02:40:41:266", NULL, NULL)'
T. 2010/07/16 17:55:31. (50): 'Bulk row : ("20100201 00:00:00:000",2722,"DATASTREAM",1,
"20100201 00:00:00:000",1, NULL, NULL,"dbo","20100202 02:40:41:266", NULL, NULL)'

La transaction contient 2000 lignes, le paramètre dsi_bulk_threshold positionné à 15 est donc dépassé, aussi les commandes Bulk row et INSERT LOCATION sont déclenchées pour optimiser et réaliser une insertion massive dans IQ.

Le fichier message iqmsg du serveur IQ confirme l’insertion en mode optimisé avec INSERT LOCATION :

DAS.iqmsg
I. 07/16 17:55:35. 0000034619 Insert Started.
I. 07/17 17:55:35. 0000034619 QUOTE

I. 07/16 17:56:01. 0000034619 [20895]: Insert Pass 1 completed in 26 seconds.
I. 07/16 17:56:01. 0000034619 [20895]: Insert Pass 2 completed in 0 seconds.
I. 07/16 172:56:01. 0000034619 [20834]:
        2000 records were inserted into 'QUOTE'.

I. 07/16 17:56:01. 0000034619 [20896]: Insert for 'QUOTE' completed in 26 second
s.  2000 rows inserted.