<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://noname.com.ua/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jktu</id>
	<title>noname.com.ua - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://noname.com.ua/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jktu"/>
	<link rel="alternate" type="text/html" href="https://noname.com.ua/mediawiki/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Jktu"/>
	<updated>2026-04-09T16:32:58Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://noname.com.ua/mediawiki/index.php?title=Sybase&amp;diff=3432</id>
		<title>Sybase</title>
		<link rel="alternate" type="text/html" href="https://noname.com.ua/mediawiki/index.php?title=Sybase&amp;diff=3432"/>
		<updated>2011-06-21T14:10:04Z</updated>

		<summary type="html">&lt;p&gt;Jktu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Sybase=&lt;br /&gt;
&lt;br /&gt;
==Поленые ф-и==&lt;br /&gt;
Информация по базе&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
sp_helpdb db_name&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
Место в базе:&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
sp_spaceused&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
sp_helpdevice&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
See also &lt;br /&gt;
Commands&lt;br /&gt;
create database, disk init, drop database, load database&lt;br /&gt;
System procedures&lt;br /&gt;
sp_addsegment, sp_dropsegment, sp_helpdb, sp_helpsegment, sp_logdevice, sp_renamedb, sp_spaceused&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Создать &amp;quot;утройство&amp;quot; (файл или утройство для данных)&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
disk init&lt;br /&gt;
   name = &amp;quot;cmm_db_data_2&amp;quot;,&lt;br /&gt;
   physname = &amp;quot;/sybase_devices/cmm_db_data_2.dat&amp;quot;,&lt;br /&gt;
   size = &amp;quot;5000M&amp;quot;&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Добавить это устройство к базе.&lt;br /&gt;
&amp;lt;PRE&amp;gt; &lt;br /&gt;
ALTER database cmm_db  on cmm_db_data_2 = &amp;quot;5000M&amp;quot;&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
Размеры устройств:&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
select &lt;br /&gt;
t1.name,&lt;br /&gt;
t1.phyname,&lt;br /&gt;
t1.status,&lt;br /&gt;
t2.lstart,&lt;br /&gt;
t2.size,&lt;br /&gt;
t2.unreservedpgs&lt;br /&gt;
from &lt;br /&gt;
master..sysdevices t1&lt;br /&gt;
inner join &lt;br /&gt;
master..sysusages t2 on t1.vdevno = t2.vdevno&lt;br /&gt;
--where&lt;br /&gt;
--dbid =db_id('audit_db')&lt;br /&gt;
order by 1,2,4&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
Изменение размера устройства:&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
disk resize name='data_device',&lt;br /&gt;
size='10G',&lt;br /&gt;
skip_alloc=false&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Размеры таблиц==&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CREATE PROCEDURE dbo.CalcFreeSpace&lt;br /&gt;
AS&lt;br /&gt;
    BEGIN&lt;br /&gt;
    DECLARE @CurrentTableName NVARCHAR(100)&lt;br /&gt;
  &lt;br /&gt;
CREATE TABLE #TableList&lt;br /&gt;
  (TableName NVARCHAR(100)&lt;br /&gt;
   , RowsCount INT&lt;br /&gt;
   , KBReserved VARCHAR(15)&lt;br /&gt;
   , KBData VARCHAR(15)&lt;br /&gt;
   , KBIndex VARCHAR(15)&lt;br /&gt;
   , KBUnused VARCHAR(15)&lt;br /&gt;
   )&lt;br /&gt;
  &lt;br /&gt;
-- Run a cursor through all of the tables&lt;br /&gt;
DECLARE result_cursor CURSOR FOR&lt;br /&gt;
SELECT  name  FROM dbo.sysobjects WHERE type = 'U'&lt;br /&gt;
  &lt;br /&gt;
OPEN result_cursor&lt;br /&gt;
FETCH NEXT FROM result_cursor INTO @CurrentTableName&lt;br /&gt;
WHILE @@FETCH_STATUS = 0&lt;br /&gt;
BEGIN&lt;br /&gt;
   exec sp_spaceused @CurrentTableName&lt;br /&gt;
FETCH NEXT FROM result_cursor INTO @CurrentTableName&lt;br /&gt;
END&lt;br /&gt;
--end loop&lt;br /&gt;
  &lt;br /&gt;
--clean up&lt;br /&gt;
CLOSE result_cursor&lt;br /&gt;
DEALLOCATE result_cursor&lt;br /&gt;
&lt;br /&gt;
--UPDATE #TableList&lt;br /&gt;
--  SET KBReserved = REPLACE(KBReserved, ' KB', '')&lt;br /&gt;
 --   , KBData = REPLACE(KBData, ' KB', '')&lt;br /&gt;
  --  , KBIndex = REPLACE(KBIndex, ' KB', '')&lt;br /&gt;
  --  , KBUnused = REPLACE(KBUnused, ' KB', '')&lt;br /&gt;
  &lt;br /&gt;
/* Adaptive Server has expanded all '*' elements in the following statement */ &lt;br /&gt;
SELECT &lt;br /&gt;
#TableList.TableName, #TableList.RowsCount, #TableList.KBReserved, #TableList.KBData, #TableList.KBIndex, #TableList.KBUnused &lt;br /&gt;
FROM &lt;br /&gt;
#TableList &lt;br /&gt;
ORDER BY TableName&lt;br /&gt;
DROP TABLE #TableList    &lt;br /&gt;
    END&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Дамп и восстановление==&lt;br /&gt;
Для дампа и восстановления ТАБЛИЦ используется утилита  bcp .&lt;br /&gt;
&amp;lt;BR&amp;gt; Подробнее почитать тут http://manuals.sybase.com/onlinebooks/group-as/asg1250e/util/@Generic__BookTextView/10086;pt=8630/*&lt;br /&gt;
&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Для дампа базы целиком используется isql:&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
isql&lt;br /&gt;
1&amp;gt; dump database cmm_db&lt;br /&gt;
2&amp;gt; to &amp;quot;./cmm_db.dump&amp;quot;&lt;br /&gt;
3&amp;gt; go&lt;br /&gt;
Backup Server session id is:  70.  Use this value when executing the&lt;br /&gt;
'sp_volchanged' system stored procedure after fulfilling any volume change&lt;br /&gt;
request from the Backup Server.&lt;br /&gt;
Backup Server: 4.41.1.1: Creating new disk file /DBAPP1/sybase/./cmm_db.dump.&lt;br /&gt;
Backup Server: 6.28.1.1: Dumpfile name 'cmm_db111080E7CC ' section number 1&lt;br /&gt;
mounted on disk file '/DBAPP1/sybase/./cmm_db.dump'&lt;br /&gt;
Backup Server: 4.188.1.1: Database cmm_db: 105464 kilobytes (1%) DUMPED.&lt;br /&gt;
...&lt;br /&gt;
Backup Server: 4.188.1.1: Database cmm_db: 8601706 kilobytes (73%) DUMPED.&lt;br /&gt;
Backup Server: 3.43.1.1: Dump phase number 1 completed.&lt;br /&gt;
Backup Server: 3.43.1.1: Dump phase number 2 completed.&lt;br /&gt;
Backup Server: 3.43.1.1: Dump phase number 3 completed.&lt;br /&gt;
Backup Server: 4.188.1.1: Database cmm_db: 8663424 kilobytes (100%) DUMPED.&lt;br /&gt;
Backup Server: 3.42.1.1: DUMP is complete (database cmm_db).&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При этом дамп будет сохранен на сервере БД а не на том хосте где запускался isql. Обратить внимание на права файла, ина компрессию (если с местом проблема.)&lt;br /&gt;
&lt;br /&gt;
Для загрузки, соответвенно&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
load database test&lt;br /&gt;
from &amp;quot;/path/to/dump/test.dump&amp;quot;&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
Если ДАМП файлов несколько, то&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
load database test&lt;br /&gt;
from &amp;quot;/path/to/dump/test.dump&amp;quot;&lt;br /&gt;
stripe on &amp;quot;/path/to/dump/test01.dump&amp;quot;&lt;br /&gt;
stripe on &amp;quot;/path/to/dump/test02.dump&amp;quot;&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Размеры объектов (исправить==&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
select	o.name name,&lt;br /&gt;
	sum(convert(int, rowcnt(i.doampg))) rownum,&lt;br /&gt;
	sum(convert(int, reserved_pgs(i.id, i.doampg) +&lt;br /&gt;
		reserved_pgs(i.id, i.ioampg)) *&lt;br /&gt;
		(d.low / 1024)) reserved_kb,&lt;br /&gt;
	sum(convert(int, data_pgs(i.id, i.doampg)) * (d.low / 1024)) data_kb,&lt;br /&gt;
	sum(convert(int, data_pgs(i.id, i.ioampg)) * (d.low / 1024)) index_kb,&lt;br /&gt;
	sum(convert(int, reserved_pgs(i.id, i.doampg) +&lt;br /&gt;
			reserved_pgs(i.id, i.ioampg) -&lt;br /&gt;
			data_pgs(i.id, i.doampg) - data_pgs(i.id, i.ioampg))&lt;br /&gt;
		* (d.low / 1024)) unused_kb&lt;br /&gt;
from	sysobjects o, sysindexes i, master.dbo.spt_values d&lt;br /&gt;
where	i.id = o.id&lt;br /&gt;
	and d.number = 1 and d.type = &amp;quot;E&amp;quot;&lt;br /&gt;
group by o.name&lt;br /&gt;
order by reserved_kb desc&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Еще один способ дама - кросс-платформенный==&lt;br /&gt;
currently i have a privilege to work with sybase 12.5. perhaps i am spoiled with the ease of mysqldump db_name [tables] or echo .dump [tables] | sqlite3, but i expect any modern database to have a scriptable way to dump schema for selected tables in create statements, as well as data in insert statements that simply could be piped back when needed.&lt;br /&gt;
&lt;br /&gt;
while dumping data is easy enough using bcp, scriptable schema extracts are a bit trickier (especially if you want it to be cross-platform).&lt;br /&gt;
&lt;br /&gt;
but we are lucky – it took sybase only 20+ years to introduce a command-line utility written in java called ddlgen in version 15 of its flagship enterprise product (in my case it worked against 12.5 as well).&lt;br /&gt;
ddlgen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
$ ls -lR c:/programs/sybase/ddlgen/&lt;br /&gt;
c:/programs/sybase/ddlgen/:&lt;br /&gt;
    ddlgen.sh&lt;br /&gt;
    lib/&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
c:/programs/sybase/ddlgen/lib:&lt;br /&gt;
    DDLGen.jar&lt;br /&gt;
    dsparser.jar&lt;br /&gt;
    jconn3.jar&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
rig up the wrapper script:&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
$ cat c:/programs/sybase/ddlgen/ddlgen.sh &lt;br /&gt;
JAVA_HOME=c:/programs/java/jdk/jdk1.6.0_03&lt;br /&gt;
LIB_DIR=`dirname $0`/lib&lt;br /&gt;
CLASSPATH=$LIB_DIR/jconn3.jar:$LIB_DIR/dsparser.jar:$LIB_DIR/DDLGen.jar&lt;br /&gt;
&lt;br /&gt;
$JAVA_HOME/bin/java \&lt;br /&gt;
-mx500m \&lt;br /&gt;
-classpath `cygpath --mixed --path $CLASSPATH` \&lt;br /&gt;
com.sybase.ddlgen.DDLGenerator $*&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
backup scripts&lt;br /&gt;
&lt;br /&gt;
schema-out.sh&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
source env.sh&lt;br /&gt;
&lt;br /&gt;
[ ! -d $OUT_DIR ] &amp;amp;&amp;amp; mkdir -p $OUT_DIR&lt;br /&gt;
&lt;br /&gt;
for table in $TABLES; do&lt;br /&gt;
    out_file=`cygpath --mixed --absolute $OUT_DIR/${table}-schema.txt`&lt;br /&gt;
    printf &amp;quot;dumping $table schema to $out_file... &amp;quot; &lt;br /&gt;
    $DDLGEN -U $USERNAME -P $PASSWORD -S $SERVER:$PORT -D $DATABASE -TU -N$table -O $out_file&lt;br /&gt;
    printf &amp;quot;done\n&amp;quot; &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
bcp-out.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
source env.sh&lt;br /&gt;
&lt;br /&gt;
[ ! -d $OUT_DIR ] &amp;amp;&amp;amp; mkdir -p $OUT_DIR&lt;br /&gt;
&lt;br /&gt;
LOG=`dirname $0`/bcp-out.log&lt;br /&gt;
cat /dev/null &amp;gt; $LOG&lt;br /&gt;
&lt;br /&gt;
for table in $TABLES; do&lt;br /&gt;
    out_file=`cygpath --mixed --absolute $OUT_DIR/${table}-bcp.txt`&lt;br /&gt;
    printf &amp;quot;dumping $table to $out_file... &amp;quot; &lt;br /&gt;
    bcp $DATABASE.dbo.$table out $out_file -c -t, -S $SERVER -U $USERNAME -P $PASSWORD &amp;gt;&amp;gt; $LOG&lt;br /&gt;
    printf &amp;quot;done\n&amp;quot; &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
schema-in.sh&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
source env.sh&lt;br /&gt;
&lt;br /&gt;
LOG=`dirname $0`/schema-in.log&lt;br /&gt;
cat /dev/null &amp;gt; $LOG&lt;br /&gt;
&lt;br /&gt;
for table in $TABLES; do&lt;br /&gt;
    in_file=`cygpath --mixed --absolute $OUT_DIR/${table}-schema.txt`&lt;br /&gt;
    [ ! -f $in_file ] &amp;amp;&amp;amp; echo &amp;quot;$in_file does not exist for $table, skipping&amp;quot; &amp;amp;&amp;amp; continue&lt;br /&gt;
    printf &amp;quot;loading $table schema from $in_file... &amp;quot; &lt;br /&gt;
    isql -S$SERVER -U$USERNAME -P$PASSWORD &amp;lt; $in_file &amp;gt;&amp;gt; $LOG&lt;br /&gt;
    printf &amp;quot;done\n&amp;quot; &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
bcp-in.sh&lt;br /&gt;
&amp;lt;PRE&amp;gt;&lt;br /&gt;
source env.sh&lt;br /&gt;
&lt;br /&gt;
[ ! -d $OUT_DIR ] &amp;amp;&amp;amp; mkdir -p $OUT_DIR&lt;br /&gt;
&lt;br /&gt;
LOG=`dirname $0`/bcp-in.log&lt;br /&gt;
cat /dev/null &amp;gt; $LOG&lt;br /&gt;
&lt;br /&gt;
for table in $TABLES; do&lt;br /&gt;
    in_file=`cygpath --mixed --absolute $OUT_DIR/${table}-bcp.txt`&lt;br /&gt;
    [ ! -f $in_file ] &amp;amp;&amp;amp; echo &amp;quot;$in_file does not exist for $table, skipping&amp;quot; &amp;amp;&amp;amp; continue&lt;br /&gt;
    printf &amp;quot;loading $table from $in_file... &amp;quot; &lt;br /&gt;
    bcp $DATABASE.dbo.$table in $in_file -c -t, -S $SERVER -U $USERNAME -P $PASSWORD &amp;gt;&amp;gt; $LOG&lt;br /&gt;
    printf &amp;quot;done\n&amp;quot; &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/PRE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ссылки==&lt;br /&gt;
* http://blog.sybdoc.com/&lt;/div&gt;</summary>
		<author><name>Jktu</name></author>
	</entry>
</feed>