Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Уменьшение размера базы / 17 сообщений из 17, страница 1 из 1
02.11.2007, 10:56
    #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
02.11.2007, 13:51
    #34913123
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уменьшение размера базы
http://dm.char.com.ua/ase/asedump.htm
тулзня аматорская, но что там написано - у нас работало
...
Рейтинг: 0 / 0
18.11.2007, 20:06
    #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
18.11.2007, 20:47
    #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
19.11.2007, 12:30
    #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
19.11.2007, 12:58
    #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
19.11.2007, 13:26
    #34948755
Badger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уменьшение размера базы
Dmitry. Большое спасибо! То что нужно.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
13.08.2009, 15:56
    #36142265
iNot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уменьшение размера базы
Извиняюсь за некропостинг.

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

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

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

есть :) большая кнопка "хочу" :)
...
Рейтинг: 0 / 0
13.08.2009, 18:35
    #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
14.08.2009, 01:08
    #36143263
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уменьшение размера базы
blzz[quot iNot]rtrim(@dbname)
rtrim, простите, чем обусловлен?
...
Рейтинг: 0 / 0
14.08.2009, 09:24
    #36143509
blzz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уменьшение размера базы
komradblzz[quot iNot]rtrim(@dbname)
rtrim, простите, чем обусловлен?
подумалось что будут пробелы
...
Рейтинг: 0 / 0
14.08.2009, 09:54
    #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
14.08.2009, 17:18
    #36145191
iNot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уменьшение размера базы
сенкьюверимач попробую обязательно. Как только найду куда залить эти 95 гигов. )
...
Рейтинг: 0 / 0
17.08.2009, 12:52
    #36147432
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уменьшение размера базы
iNot пишет:

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

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


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