powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Sybase_Селект на выбор девайсов ??
15 сообщений из 15, страница 1 из 1
Sybase_Селект на выбор девайсов ??
    #35262283
mouserok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день есть загвоздка на которую необходим селект а как его написать не знаю.
Подскажите селект на выбор девайсов (свободно, используется, размер), база.
...
Рейтинг: 0 / 0
Sybase_Селект на выбор девайсов ??
    #35262841
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для ASE15 SC такой запрос посылает (для ASE12.5 запрос будет другой, из-за ограничений 32Gb на девайс)

Код: plaintext
1.
2.
3.
4.
5.
select NAME=d.name, SIZE=ltrim(str(( 1 . + (d.high - d.low)) / ( 1048576 . / 
@@pagesize),  10 ,  2 )), UNUSEDSIZE=(SELECT ( 1 . + (d.high - d.low)) / ( 1048576 . / 
@@pagesize)-((sum(u.size)/ 512 . 0 )*(@@maxpagesize/@@pagesize)) FROM master.dbo.
sysusages u WHERE u.vdevno=d.vdevno), PHYSICALNAME=d.phyname
 from master.dbo.sysdevices d where d.cntrltype =  0  and d.name like '%' 
group by d.name order by  1 
...
Рейтинг: 0 / 0
Sybase_Селект на выбор девайсов ??
    #35262850
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разные базы могут использовать один и тот же девайc, поэтому если надо привязать к запросу еще сколько используется каждой БД, то используйте также таблицу sysusages
...
Рейтинг: 0 / 0
Sybase_Селект на выбор девайсов ??
    #35263071
0rc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для 12.5 будет почти так же

select
d.name,
"SIZE" = (d.high-d.low +1)/(1048576/@@pagesize),
"FREE" = (select
(d.high-d.low+1)/(1048576/@@pagesize) - (sum(size/512)*(@@maxpagesize/@@pagesize))
from master..sysusages
where vstart<=d.high
and vstart>=d.low)
from master.dbo.sysdevices d
where d.cntrltype = 0
group by d.name
...
Рейтинг: 0 / 0
Sybase_Селект на выбор девайсов ??
    #35263337
sn1251
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ещё в копилку для 12.x: как узнать свободные номера девайсов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
create table seq (i int) --просто табличка с натуральными числами от 1 до 256
insert into seq values ( 1 )
insert into seq select i+(select max(i) from seq) from seq --повторить 8 раз

--для 12.0 заменить @@maxpagesize на @@pagesize
select 
  seq.i as devno, d.name, d.phyname,
  (d.high-d.low+ 1 )/( 1048576 /@@pagesize) as size,
  (select sum(u.size/ 512 )*@@maxpagesize/@@pagesize
   from master..sysusages u
   where u.vstart<=d.high and u.vstart>=d.low) as used
from 
  seq
  left join master.dbo.sysdevices d on 
  (round( --signed int32 -> unsigned
    case when low< 0  then convert(numeric( 16 ), low)+ 4294967295  
     else convert(numeric( 16 ), low) 
    end /  16777216 
   , 0 )
  )=seq.i and d.cntrltype= 0 
where seq.i<=(select value from master.dbo.sysconfigures where config= 116 ) --number of devices
order by  1 
...
Рейтинг: 0 / 0
Sybase_Селект на выбор девайсов ??
    #35263716
0rc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
declare @numpgsmb integer
select @numpgsmb = (1048576. / @@pagesize)
select "phyname"=convert(varchar(40), d.phyname),
"name"=convert(varchar(28),d.name),
"d_size"=convert(varchar(6),(1 + d.high - d.low) / @numpgsmb),
"d_used"=convert(varchar(6), sum(u.size / @numpgsmb)) ,
"d_free"=((1 + d.high - d.low) / @numpgsmb) - sum(u.size / @numpgsmb),
vdevno=d.low/power(2,24) & 255
from master..sysusages u, master..sysdevices d
where u.vstart between d.low and d.high
and d.status & 2 = 2
group by d.name
...
Рейтинг: 0 / 0
Sybase_Селект на выбор девайсов ??
    #35263792
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если пошла такая раздача слонов, то запрос как узнать сколько каждая база использует места на девайсе и какого типа - log / data/ mixed

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select su.dbid, db_name(su.dbid) as "DB name", 
su.segmap,
su.size/(@@maxpagesize/ 4 ) as "Size Mb",  sd.name as "Device name",
su.lstart, su.size, su.vstart      
from sysusages su, sysdevices sd
where su.vstart/power( 2 , 24 )& 255  = sd.low/power( 2 , 24 )& 255 
and sd.status<> 16  
order by  1  , su.lstart
...
Рейтинг: 0 / 0
Sybase_Селект на выбор девайсов ??
    #35263841
mouserok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СПАСИБО
...
Рейтинг: 0 / 0
Sybase_Селект на выбор девайсов ??
    #35263881
0rc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
morisЕсли пошла такая раздача слонов, то запрос как узнать сколько каждая база использует места на девайсе и какого типа - log / data/ mixed

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select db=substring(db_name(u.dbid), 1 , 15 ),
    "size (MB)" = str(u.size/ 512 ., 7 , 2 ),
    segs = substring(" U",sign(u.segmap/ 8 )+ 1 , 1 ) +
    substring(" L",(u.segmap &  4 )/ 4 + 1 , 1 ) +
    substring(" D",(u.segmap &  2 )/ 2 + 1 , 1 ) +
    substring(" S",(u.segmap &  1 )+ 1 , 1 ),
    "device name"=substring(dev.name, 1 , 15 )
  from master.dbo.sysusages u, master.dbo.sysdevices dev
  where vstart between low and high and cntrltype =  0 
  order by db_name(u.dbid),dev.name,u.vstart
...
Рейтинг: 0 / 0
Sybase_Селект на выбор девайсов ??
    #35263958
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"size (MB)" = str(u.size/512 .... - покажет правильный размер, только для страницы 2K. В моем варианте правильный размер в Mb для всех размеров страниц
...
Рейтинг: 0 / 0
Sybase_Селект на выбор девайсов ??
    #35264221
0rc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда вот так
"size (MB)" = (u.size/512)*(@@maxpagesize/@@pagesize),
просто большая часть серверов с 2к страницами, привык :)
...
Рейтинг: 0 / 0
Sybase_Селект на выбор девайсов ??
    #35264345
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда size = "size (MB)" = (u.size/512)*(@@maxpagesize/@@pagesize) - универсальный запрос получается.. В моем, который раньше, тоже было правильно только для 2K
...
Рейтинг: 0 / 0
Sybase_Селект на выбор девайсов ??
    #35264668
0rc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда для универсальности и этот запрос правильнее писать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
/**/
declare @numpgsmb integer
declare @numpgs integer
--
select @numpgsmb = ( 1048576 . / @@pagesize)
select @numpgs = (@@maxpagesize/@@pagesize)
--
select
  "phyname"=convert(varchar( 40 ), d.phyname),
  "name"=convert(varchar( 28 ),d.name),
  "d_size"=(( 1  + d.high - d.low) / @numpgsmb),
  "d_used"=sum((u.size/ 512 )*@numpgs) ,
  "d_free"=(( 1  + d.high - d.low)/@numpgsmb) - sum((u.size/ 512 )*@numpgs),
  vdevno=d.low/power( 2 , 24 ) &  255 
from master..sysusages u, master..sysdevices d
where u.vstart between d.low and d.high
and d.status &  2  =  2 
group by d.name
/**/
...
Рейтинг: 0 / 0
Sybase_Селект на выбор девайсов ??
    #35264734
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0rcтогда для универсальности
стоит поглядеть в соответствующие процедуры sp_help*.
...
Рейтинг: 0 / 0
Sybase_Селект на выбор девайсов ??
    #35265286
0rc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну вот, пришел гуру и поломал наш ламерятник :)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Sybase_Селект на выбор девайсов ??
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]