Bonjour,
Je suis actuellement sous Sybase ASE 15.0.2 et je dois trouver un équivalent à cette requête fonctionnant sous ASE 12.5.X
Récupération des noms logiques, physiques des bases de données, en indiquant la place Totale, allouée et libre.
Sous ASE 12.5.X
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
SELECT
nom_logique=substring(d.name,1,25),
nom_physique=substring(d.phyname,1,40),
vdevno=substring(convert(char(3),d.low/power(2,24)),1,3),
taille=convert(varchar(5),(d.high - d.low +1)*2/1024)+ ' Mo',
alloue=convert(varchar(5),isnull((sum(u.size) /(1048576./sv.low)),0))+ ' Mo',
libre=convert(varchar(5),(d.high - d.low +1)*2/1024
- isnull((sum(u.size)/(1048576./sv.low)),0))+' Mo'
FROM master.dbo.sysdevices d, master.dbo.sysusages u, master.dbo.spt_values sv
WHERE STATUS & 2 =2
AND u.vstart/power(2,24)=*d.low/power(2,24)
AND sv.number = 1
AND sv.type = 'E'
GROUP BY substring(d.name,1,12),
substring(d.phyname,1,17),
d.low/power(2,24),
sv.low,
(d.high - d.low +1) * 2/1024
ORDER BY vdevno
go |
Citation:
nom_logique nom_physique vdevno taille alloue libre
------------------------- ---------------------------------------- ------ -------- -------- --------
master /dev/vx/dsk/datadg/lv_sql40ddx_master 0 30 Mo 13.00 Mo 17.00 Mo
sysprocsdev /dev/vx/dsk/datadg/lv_sql40ddx_sysprocs 1 160 Mo 160.0 Mo 0.000 Mo
dv_dbccdb_dat_01 /dev/vx/rdsk/datadg/lv_dbccdb_dat_12-5_0 2 300 Mo 300.0 Mo 0.000 Mo
dv_dbccdb_log_01 /dev/vx/rdsk/datadg/lv_dbccdb_log_12-5_0 3 100 Mo 100.0 Mo 0.000 Mo
dv_lk_refbo_aa_dat_01 /dev/vx/rdsk/datadg/lv_lk_12_5_refbo_dat 7 500 Mo 500.0 Mo 0.000 Mo
dv_lk_refbo_aa_log_01 /dev/vx/rdsk/datadg/lv_lk_12_5_refbo_log 8 100 Mo 100.0 Mo 0.000 Mo
|
Avec la même requête sous ASE 15.0.2
Le résultat est le suivant :
Citation:
nom_logique nom_physique vdevno taille alloue libre
------------------------- ---------------------------------------- ------ -------- -------- --------
systemdbdev /sybase/sql01ase_systemdb/sybsystemdb.da 0 3 Mo 1063. Mo -1060 Mo
master /sybase/s1502_1/data/master.dat 0 30 Mo 1063. Mo -1033 Mo
dv_ihmic_log_01 /sybase/ihmic_log_01/dv_ihmic_log_01.dat 0 80 Mo 1063. Mo -983. Mo
dv_dbccdb_log_01 /sybase/dv_dbccdb_log_01/dv_dbccdb_log01 0 80 Mo 1063. Mo -983. Mo
dv_bb_ihmic_aa_log_01 /sybase/ihmic_log_01/ihmic_log_01.dat 0 85 Mo 1063. Mo -978. Mo
sysprocsdev /sybase/s1502_1/data/sysprocs.dat 0 132 Mo 1063. Mo -931. Mo
dv_dbccdb_dat_01 /sybase/dv_dbccdb_dat_01/dv_dbccdb_dat_0 0 150 Mo 1063. Mo -913. Mo
dv_ihmic_dat_01 /sybase/ihmic_dat_01/dv_ihmic_dat_01.dat 0 595 Mo 1063. Mo -468. Mo
|
On remarque très nettement que les valeurs Taille, Alloué et Libre sont incorrectes.
A travers mes différents tests et documentation, je remarque bien que les tables sysdevices et sysusages ont subi une modification concernant les low et high, remplacé par vdevno.
Une première ébauche me permet d'écrire ceci en ASE 15
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
SELECT
Nom_Logique=convert(char(40),db_name(u.dbid)),
Taille=convert(char(10),sum(size / (power(2,20)/@@maxpagesize))) + ' Mo'
FROM
sysusages u,
sysdevices s
WHERE
s.STATUS & 2 = 2
AND s.vdevno = u.vdevno
GROUP BY db_name(u.dbid)
ORDER BY
db_name(u.dbid)
go |
Ce qui me ressort :
Citation:
Nom_Logique Taille
---------------------------------------- -------------
bb_ihmic_aa 675 Mo
dbccdb 230 Mo
master 13 Mo
model 3 Mo
sybsystemdb 6 Mo
sybsystemprocs 132 Mo
tempdb 4 Mo
|
Concernant la table
spt_values, je ne trouve vraiment pas beaucoup de documentation sur internet.
Pouvez-vous m'éclairer sur low, high vdevno et spt_values ? ;-)
Cordialement,
Mickaël.