IQ 12.7 : La base factice utilitaire IQ (utility_db)

Logo

Introduction

Sybase IQ inclut une base de données fantôme, appelée la base de données factice utility, base de données qui ne possède pas de représentation physique. Il n’y a aucun fichier de base de données associée, et ne contient aucune donnée. La base de données utilitaire peut s’exécuter sur n’importe quel serveur IQ.

Cette base fantôme permet de créer, supprimer et restaurer des bases dedonnées IQ.

L’article s’appuie sur la normalisation adoptée dans la documentation Installation et normalisation de Sybase IQ 12.7 sous Solaris.

Dans tous les exemples ci-dessous, les fichiers SYBASE.sh et ASIQ-12_7.sh de la distribution IQ 12.7 sont sourcés.

Démarrage et paramétrage de la base factice utilitaire

Sécurité d’accès à la base utilitaire

La connexion à la base utilitaire s’effectue avec le compte DBA. Le mot de passe par défaut du compte DBA est SQL pour la base utilitaire. Le fichier util_db.ini dans le répertoire $ASDIR/bin (/Software/sybase/asiq-12.7/ASIQ-12_7/bin) contient une entrée [UTILITY_DB] afin de pouvoir modifier le mot de passe du compte DBA et ainsi sécuriser l’accès à la base utiltaire. Pour renforcer la sécurité, s’assurer que le fichier util_db.ini est en lecture/écriture uniquement pour le compte qui administre les serveurs IQ (sybase dans ce cas pratique).

$ASDIR/bin/util_db.ini
[UTILITY_DB]
PWD=password

Démarrage de la base factice utilitaire

La commande start_asiq démarre la base factice utilitaire. Dans la normalisation adoptée : pour chaque machine, le port de la base utilitaire est 30070 et le nom du serveur IQ utilitaire UTL_<hostname>_ASQ. Sans préciser le port, par défaut le port donné à la base utilitaire est le port standard des serveurs Adaptive Server Anywhere : 2638.

start_asiq -n UTL_<hostname>_ASQ -x tcpip{port=<port>} -gu utility_db

La valeur pour l’option -gu donnée au lancement de la commande start_asiq contrôle encore plus finement la sécurité d’accès à la base utilitaire. Avec la valeur utility_db, seuls les utilisateurs qui peuvent se connecter à la base de données utilitaire ont le droit de réaliser des commandes d’administration de bases de données (CREATE DATABASE, DROP DATABASE, RESTORE DATABASE…).

%> start_asiq -n UTL_SRVUNXFR_ASQ -x tcpip{port=30070} -gu utility_db

Starting server UTL_SRVUNXFR_ASQ on SRVUNXFR at port 30070 (12/23 17:46:51)
Run Directory       : /Software/sybase/dba/IDB_T1_ASQ/cfg/script
Server Executable   : /Software/sybase/asiq-12.7/ASIQ-12_7/bin/asiqsrv12
Server Output Log   : /Software/sybase/asiq-12.7/ASIQ-12_7/logfiles/UTL_SRVUNXFR_ASQ.002.srvlog
Server Version      : 12.7.0/ESD 5
Open Client Version : 15.0/P-EBF13551 ESD #4
User Parameters     : '-n' 'UTL_SRVUNXFR_ASQ' '-x' 'tcpip{port=30070}' '-gu' 'utility_db'
Default Parameters  : -c 48m -gc 20 -gd all -gl all -gm 10 -gp 4096 -ti 4400 -gn 25

I. 12/23 17:46:54.      Adaptive Server IQ
I. 12/23 17:46:54.       Version 12.7
I. 12/23 17:46:54.        (64bit mode)
I. 12/23 17:46:54. Copyright 1992-2008 by Sybase, Inc. All rights reserved
I. 12/23 17:46:54.
I. 12/23 17:46:54. 2 physical processor(s) detected.
I. 12/23 17:46:54. Running on SunOS 5.10 Generic_137111-03
I. 12/23 17:46:54. 49152K of memory used for caching
I. 12/23 17:46:54. Minimum cache size: 49152K, maximum cache size: 262008K
I. 12/23 17:46:54. Using a maximum page size of 4096 bytes
I. 12/23 17:46:54. Database server started at Tue Dec 23 2008 17:46
I. 12/23 17:46:54. Trying to start SharedMemory link ...
I. 12/23 17:46:54.     SharedMemory link started successfully
I. 12/23 17:46:54. Trying to start TCPIP link ...
I. 12/23 17:46:54. Starting on port 30070
I. 12/23 17:46:59.     TCPIP link started successfully
I. 12/23 17:46:59. Now accepting requests
New process id is 24770

Server started successfully

Connexion à la base factice utilitaire

La connexion à la base utilitaire factice est réalisée avec dbisqlc ou dbisql pour lancer les commandes d’administration. Le compte est DBA, le mot de passe est celui contenu dans le fichier util_db.ini, le paramètre dbn (database name) est toujours utility_db et le paramètre eng est le nom du serveur donné au démarrage de la base factice utilitaire avec start_asiq.

%> dbisql -c "uid=DBA;pwd=********;dbn=utility_db;eng=UTL_SRVUNXFR_ASQ" -nogui
(DBA)> exit

La chaîne de connexion peut être enregistrée dans la variable d’environnement $SQLCONNECT pour simpilier les connexions à dbisql ou dbisqlc.

%> export SQLCONNECT="uid=DBA;pwd=********;dbn=utility_db;eng=UTL_SRVUNXFR_ASQ"
%> dbisql -nogui
(DBA)> exit

Arrêt de la base factice utilitaire

La commande stop_asiq arrête la base factice utilitaire.

%> stop_asiq
Checking system ...
The following 2 server(s) are owned by 'sybase'
## Owner          PID   Started  CPU Time  Additional Information
-- ---------  -------  --------  --------  ------------------------------------
1: sybase       24770  17:46:54      0:02  SVR:UTL_SRVUNXFR_ASQ DB:none PORT:30070
              asiqsrv12 -n UTL_SRVUNXFR_ASQ -x tcpip{port=30070} -gu utility_db -c 48m -gc 20 -gd
--
2: sybase       24857    Dec.22    131:10  SVR:IDB_T1_ASQ DB:investment PORT:30071
              asiqsrv12 @/Software/sybase/dba/IDB_T1_ASQ/cfg/IDB_T1_ASQ.cfg -gn 25 -hn 8
--
        Please note that 'stop_asiq' will shut down a server completely
	without regard for users, connections, or load process status.
	For more control, use the 'dbstop' utility, which has options
	that control stopping servers based on active connections.

Enter the server to shutdown ('1'...'2') or 'Q' to Quit: 1
Shutting down server (24770) ...
Checkpointing server (24770) ...
Server shutdown.

Opérations courantes réalisées avec la base factice utilitaire

Création d’une base de données

Voici un exemple de création d’une base de données grâce à la base factice utilitaire.

La commande de création est enregistrée dans un fichier avec l’extension sql (create.sql) :

create.sql
create database '/dba/asiq/IDB_T2_ASQ/investment.db'
   log on '/dba/asiq/IDB_T2_ASQ/investment.log'
   java off
   case respect
   collation 'ISO_BINENG'
   IQ PATH '/dba/asiq/IDB_T2_ASQ/investment_01.iqmaint'
   IQ SIZE 10000
   IQ PAGE SIZE 131072
   TEMPORARY PATH '/dba/asiq/IDB_T2_ASQ/investment.iqtmp'
   TEMPORARY SIZE 2000
   MESSAGE PATH '/dba/asiq/IDB_T2_ASQ/investment.iqmsg'

Le fichier create.sql est ensuite donné en paramètre à dbisql en se connectant à la base factice (ici, la chaîne de connexion est dans la variable d’environnement $SQLCONNECT) :

%> dbisql -nogui create.sql

Creating system tables
Collation sequence:  ISO_BINENG
Creating system views
Setting permissions on system tables and views
Setting option values
Initializing UltraLite deployment option
Execution time: 432.575 seconds
%>

Par défaut, le compte DBA de la nouvelle base de données créée a pour mot de passe SQL. Pour modifier le mot de passe du compte DBA : démarrer la nouvelle base de données avec start_asiq et se connecter avec dbisql -c "uid=DBA;pwd=SQL;dbn=<database-name>;eng=<engine-name>" pour lancer la commande grant connect afin de modifier le mot de passe.

grant connect to DBA identified by <new_password>

Suppression d’une base de données

La commande DROP DATABASE supprime une base de données et les fichiers associés : les fichiers de données associés aux stockages IQ et temporaire sont d’abord supprimés puis les fichiers du catalogue.

Avant de pouvoir lancer la commande DROP DATABASE, la base de données à supprimer doit être arrêtée avec la commande STOP ENGINE. Le paramètre UNCONDITIONALLY est donné à la commande STOP ENGINE pour couper toutes les connexions existantes

Syntaxe :

STOP ENGINE <engine-name> UNCONDITIONALLY

Pour arêter la base de données investment du serveur IQ IDB_T2_ASQ avec dbisql :

%> dbisql -nogui

(DBA)> stop engine IDB_T2_ASQ unconditionally
Execution time: 0.42 seconds
(DBA)> drop database '/dba/asiq/IDB_T2_ASQ/investment.db'
Execution time: 155.82 seconds