powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Уменьшение размера базы
17 сообщений из 17, страница 1 из 1
Уменьшение размера базы
    #34912278
hexes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
перечитал пол форума, но ... может в связи с тем что с СиБ. работаю месяц, может не сильно разобрался...

Есть
Adaptive Server Enterprise/12.0.0.4/P/SWR 10051 ESD 2/NT (IX86)/OS 4.0/1789/32bit/OPT/Mon Feb 04 16:51:23 2002
и
Adaptive Server Enterprise/12.5.0.1/SWR 10291 IR/P/NT (IX86)/OS 4.0/rel12501/1778/32-bit/OPT/Fri May 17 00:59:18 2002
Там есть БД
declare @dbname char(30)
select @dbname="kinomir"
SELECT su.dbid, sd.name as dbname, su.segmap, su.size/512 as size512, sdev.name as devname, sdev.phyname as devphyname
FROM sysusages su, sysdatabases sd, sysdevices sdev
WHERE sd.name = @dbname and su.dbid = sd.dbid and su.vstart between sdev.low and sdev.high

4 my 3 400 my_dat E:\my.dat
4 my 4 600 my_dat E:\my.dat
4 my 3 900 my_dat E:\my.dat
4 my 4 2850 my_log F:\my.log

И есть
Adaptive Server Enterprise/15.0/EBF 13194 EC ESD/P/Linux Intel/Linux 2.4.21-20.ELsmp i686/ase150/2179/32-bit/FBO/Mon Feb 6 04:14:19 2006

на который я её хочу перенести... НО в связи с тем что последний под линь и Express Edition, и как
указано тут http://images.sybase.com/sb_content/1037664/WI15a.htm Max Database Size = 5 GB, моя база + всякие там мастер и т.п. служебные базы на него не влазиют...

Backup Server session id is: 21. Use this value when executing the 'sp_volchanged' system stored procedure after fulfilling any volume change request from the Backup Server.
Server Message: Number 602801, Severity 1
Server 'MY_BS', Procedure 'bs_read_header', Line 0:
Backup Server: 6.28.1.1: Dumpfile name 'my073040753F' section number 1 mounted on disk file '/home/backup_20071031'

Execution Time 0.
SQL Server cpu time: 0 ms. SQL Server elapsed time: 93 ms.
Server Message: Number 3105, Severity 16
Line 1:
Data on dump will not fit into current database. Need 4750 Mbyte database.


Теперь вопрос что делать? какие вар-ты?
Читал про BCP - право не знаю... Таблиц куча + ХП...
Про что то типа transfer...
Подскажите плз, гуру, куда копать? что проще? какие ещё вар-ты? что то типа репликации в новую (меньшую) базу нельзя сделать?
...
Рейтинг: 0 / 0
Уменьшение размера базы
    #34913123
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://dm.char.com.ua/ase/asedump.htm
тулзня аматорская, но что там написано - у нас работало
...
Рейтинг: 0 / 0
Уменьшение размера базы
    #34947590
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry.http://dm.char.com.ua/ase/asedump.htm
тулзня аматорская, но что там написано - у нас работалоОчень удобная штука! но там не написан перенос индексов и грантов - (create nonclustered index... grant execute on ... grant select on... и т.п.) для процедур и таблиц. Может кто-нибудь из гуру поможет дописать эти выборки.
Нужно получить выходной скрипт/текст что то вроде этого, для всех индексов:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
IF EXISTS (SELECT * FROM sysindexes WHERE id=OBJECT_ID('dbo.table_name') AND name='index_name')
BEGIN
    DROP INDEX table_name.index_name
END
go
CREATE NONCLUSTERED INDEX acdat_accred
    ON dbo.table_name(index_name)
go

а имею пока только список... :( не пойму как можно получить поля индекса...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
/* Это тоже из DBArtisan */
SELECT USER_NAME(O.uid),
       O.name,
       I.name,
       CASE WHEN ((I.status& 16 )= 16  OR (I.status2& 512 )= 512 ) 
           THEN 'Clustered' WHEN (I.indid= 255 ) 
           THEN 'Text/Image'ELSE 'Non-Clustered' 
       END
  FROM 
       sysindexes I,
       syssegments S,
       sysobjects O 
 WHERE 
       I.indid> 0  AND 
       I.indid< 255  AND 
       I.status2 &  2 != 2  AND 
       I.segment=S.segment AND 
       O.id=I.id AND 
       O.type='U' AND 
       O.type!='S'  
ORDER BY  1 , 2 , 3 
...
Рейтинг: 0 / 0
Уменьшение размера базы
    #34947613
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну немного напутал.... так точнее
Код: plaintext
1.
2.
3.
CREATE NONCLUSTERED INDEX index_name
    ON dbo.table_name(pole_name_1, pole_name_2, pole_name_3)
go
...
Рейтинг: 0 / 0
Уменьшение размера базы
    #34948533
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
set nocount on
go

declare 	indexes cursor for
select 		si.status,
			si.status2,
			si.indid,
			user_name(so.uid)+'.'+so.name,
			si.name
from 		sysindexes si, 
			sysobjects so
where 		si.id = so.id
and 		si.indid >  0 
and 		si.indid <  255 
and 		si.status2 &  2  !=  2 
order by 	so.uid, so.name, si.indid
go

create table #tmp(
	id numeric( 10 ) identity,
	txt varchar( 255 ),
	primary key (id)
)
go

declare @tabname varchar( 255 ), @indname varchar( 255 ), @txt varchar( 255 )
declare @i int, @indid int,@status int, @status2 int

open indexes
fetch indexes into @status,@status2,@indid,@tabname,@indname
while @@sqlstatus =  0   begin
	select @txt = ''
	select @i = 1  
	while @i <=  31 
	begin
		select @txt = @txt + index_col(@tabname, @indid, @i)+ ' ' + index_colorder(@tabname, @indid, @i)
		if (index_col(@tabname, @indid, @i+ 1 ) is null) break
		if @i >=  1  select @txt = @txt + ","
		select @i = @i +  1 
	end
	
	select @txt=' (' +isnull(@txt,'') +')'

	insert into #tmp(txt)
	select 
		'create' +	case @status &  2  when  2  then ' unique ' else ' ' end +
		case (@status &  16 ) + (@status2 &  512 ) when  0  then 'nonclustered' else 'clustered' end +
		' index ' +	@indname + ' on ' + @tabname +@txt

	select @txt=''
	if @status &  1  =  1  select @txt = 'ignore_dup_key'
	if @status &  4  =  4  select @txt = 'ignore_dup_row'
	if @status &  64  =  64   select @txt = 'allow_dup_row'
	
	if @txt<>''
		insert into #tmp (txt)
			select char( 9 )+"with " + @txt

	insert into #tmp (txt)
		select 'go'

	fetch indexes into @status,@status2,@indid,@tabname,@indname
end
go
close indexes
deallocate cursor indexes
go
select txt from #tmp order by id
go
drop table #tmp
go
set nocount off
go
...
Рейтинг: 0 / 0
Уменьшение размера базы
    #34948648
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Незаслужено забытый ddlgen
A Java-based tool that generates definitions for server- and database-level objects in Adaptive Server.
ddlgen supports Adaptive Server version 11.9.2 and later.
The command-line version of ddlgen is located in $SYBASE/ASEP/bin
(%SYBASE%\ASEP\bin in Windows).
...
Рейтинг: 0 / 0
Уменьшение размера базы
    #34948755
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry. Большое спасибо! То что нужно.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Уменьшение размера базы
    #36142265
iNot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь за некропостинг.

Как можно залить базу в 2.2гб с девайсом в 95гб в меньший размер девайса?

То есть есть дамп файл, что с ним надо сделать, чтобы он залился на 3гб место 95?
Если вдруг нельзя ничего сделать, как в будущем слить эту базу так , чтобы она не занимала 95 гб?
...
Рейтинг: 0 / 0
Уменьшение размера базы
    #36142414
MichaelTim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выгрузить структуру и данные через bcp. создать новую БД на новом девайсе нужного размера. Залить туда структуру, залить данные.
...
Рейтинг: 0 / 0
Уменьшение размера базы
    #36142611
iNot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MichaelTim,

Ох уж эта ужастная BCP.
А есть какой-то автоматический метод, чтобы слить все одной командой, а не по табличке..
...
Рейтинг: 0 / 0
Уменьшение размера базы
    #36142747
0rc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iNot,

есть :) большая кнопка "хочу" :)
...
Рейтинг: 0 / 0
Уменьшение размера базы
    #36142811
blzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iNotMichaelTim,

Ох уж эта ужастная BCP.
А есть какой-то автоматический метод, чтобы слить все одной командой, а не по табличке..

если проблема только в "надо писать много bcp" сгенерить их скриптом

Код: plaintext
1.
2.
3.
4.
5.
set nocount on
declare @dbname varchar( 30 )
select  @dbname=db_name()
select char( 10 )+'bcp '+rtrim(@dbname)+'..'+name+' out '+ name+'.dat'+' -c -J<codepage> -b1000 -U<user> -P<password> -S<servername>'
from sysobjects where type='U' order by name
go
...
Рейтинг: 0 / 0
Уменьшение размера базы
    #36143263
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blzz[quot iNot]rtrim(@dbname)
rtrim, простите, чем обусловлен?
...
Рейтинг: 0 / 0
Уменьшение размера базы
    #36143509
blzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komradblzz[quot iNot]rtrim(@dbname)
rtrim, простите, чем обусловлен?
подумалось что будут пробелы
...
Рейтинг: 0 / 0
Уменьшение размера базы
    #36143560
SAV4SAV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, стоит еще проверить, нет ли в таблицах полей с type=34,35 (image,text)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select o.name,c.name
 from sysobjects o, syscolumns c
 where o.type= "U"
 and o.id=c.id
 and c.type in ( 34 , 35 )
 group by o.name,c.name
order by  1 
и, если есть, добавить к параметрам bcp для найденных таблиц -Tx,
где x= max из всех
Код: plaintext
select max(datalength(<column_name>)) from <table_name>
можно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select "select max(datalength("+c.name+")) from "+o.name
from syscolumns c, sysobjects o 
where o.type= "U"
and o.id=c.id
and c.type in ( 34 , 35 )
group by o.name,c.name
order by  1 
...
Рейтинг: 0 / 0
Уменьшение размера базы
    #36145191
iNot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сенкьюверимач попробую обязательно. Как только найду куда залить эти 95 гигов. )
...
Рейтинг: 0 / 0
Уменьшение размера базы
    #36147432
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iNot пишет:

> Ох уж эта ужастная BCP.
> А есть какой-то автоматический метод, чтобы слить все одной командой, а
> не по табличке..

Есть dbschema.pl, которая это делает за тебя.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Уменьшение размера базы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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