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