<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://petersap.nl/SybaseWiki/index.php?action=history&amp;feed=atom&amp;title=Reverse_Engineer_IQ_dbspaces</id>
		<title>Reverse Engineer IQ dbspaces - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://petersap.nl/SybaseWiki/index.php?action=history&amp;feed=atom&amp;title=Reverse_Engineer_IQ_dbspaces"/>
		<link rel="alternate" type="text/html" href="http://petersap.nl/SybaseWiki/index.php?title=Reverse_Engineer_IQ_dbspaces&amp;action=history"/>
		<updated>2026-04-04T21:59:57Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.24.2</generator>

	<entry>
		<id>http://petersap.nl/SybaseWiki/index.php?title=Reverse_Engineer_IQ_dbspaces&amp;diff=1889&amp;oldid=prev</id>
		<title>Psap at 15:14, 20 January 2010</title>
		<link rel="alternate" type="text/html" href="http://petersap.nl/SybaseWiki/index.php?title=Reverse_Engineer_IQ_dbspaces&amp;diff=1889&amp;oldid=prev"/>
				<updated>2010-01-20T15:14:02Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;For Sybase IQ it is sometimes handy to reverse engineer the statements that were used to create the various IQ dbspaces. You can do this with Power Designer but not everybody has access to the tool.&lt;br /&gt;
&lt;br /&gt;
Below you will find a script that does a basic attempt to reverse engineer the statements for the &amp;quot;create database&amp;quot; and &amp;quot;create dbspace&amp;quot; commands. The script is not complete with regard to all the possible options for these statements. Feel free to make adjustments or mail the author when you miss something.&lt;br /&gt;
&lt;br /&gt;
NB: Written specifically for IQ 15 ! &lt;br /&gt;
&lt;br /&gt;
 begin&lt;br /&gt;
 declare @db_file        long varchar;&lt;br /&gt;
 declare @iq_file        long varchar;&lt;br /&gt;
 declare @msg_file       long varchar;&lt;br /&gt;
 declare @temp_file      long varchar;&lt;br /&gt;
 declare @block_size     unsigned int;&lt;br /&gt;
 declare @chunk_size     unsigned int;&lt;br /&gt;
 declare @reserve_size   rowid;&lt;br /&gt;
 declare @user_dbspace   long varchar;&lt;br /&gt;
 declare @user_dbfile_name long varchar;&lt;br /&gt;
 declare @user_file_name long varchar;&lt;br /&gt;
 declare @counter        int;&lt;br /&gt;
 &lt;br /&gt;
 declare local temporary table #statement(&lt;br /&gt;
         seq             int             not null default autoincrement,&lt;br /&gt;
         statement_txt   long varchar    null);&lt;br /&gt;
 &lt;br /&gt;
 declare end_of_cursor exception for SQLSTATE '02000';&lt;br /&gt;
 &lt;br /&gt;
 declare user_dbspaces cursor for&lt;br /&gt;
         select  dbspace_name&lt;br /&gt;
                 from sysdbspace&lt;br /&gt;
                 where   store_type      = 2&lt;br /&gt;
                 and     dbspace_name    not in ('IQ_SYSTEM_MAIN', 'IQ_SYSTEM_TEMP', 'IQ_SYSTEM_MSG');&lt;br /&gt;
 &lt;br /&gt;
 declare user_dbfiles cursor for&lt;br /&gt;
         select  f.dbfile_name,&lt;br /&gt;
                 f.file_name&lt;br /&gt;
                 from    sysdbfile f,&lt;br /&gt;
                         sysdbspace d&lt;br /&gt;
                 where   d.store_type    = 2&lt;br /&gt;
                 and     d.dbspace_name  = @user_dbspace&lt;br /&gt;
                 and     d.dbspace_id    = f.dbspace_id&lt;br /&gt;
                 order   by dbfile_id;&lt;br /&gt;
 &lt;br /&gt;
 select  file_name into @db_file&lt;br /&gt;
         from    sysdbfile&lt;br /&gt;
         where   dbspace_id      = 0;&lt;br /&gt;
 &lt;br /&gt;
 select  file_name into @iq_file&lt;br /&gt;
         from    sysdbfile&lt;br /&gt;
         where   dbfile_name     = 'IQ_SYSTEM_MAIN';&lt;br /&gt;
 &lt;br /&gt;
 select  file_name into @msg_file&lt;br /&gt;
         from    sysdbfile&lt;br /&gt;
         where   dbfile_name     = 'IQ_SYSTEM_MSG';&lt;br /&gt;
 &lt;br /&gt;
 select  file_name into @temp_file&lt;br /&gt;
         from    sysdbfile&lt;br /&gt;
         where   dbfile_name     = 'IQ_SYSTEM_TEMP';&lt;br /&gt;
 &lt;br /&gt;
 select  block_size, chunk_size into @block_size, @chunk_size&lt;br /&gt;
         from    sysiqinfo;&lt;br /&gt;
 &lt;br /&gt;
 select  reserve_size into @reserve_size&lt;br /&gt;
         from    sysiqdbfile&lt;br /&gt;
         where   dbfile_id       = 16384;&lt;br /&gt;
 &lt;br /&gt;
 insert  into #statement(statement_txt)&lt;br /&gt;
         select  'create database ''' + @db_file + '''' +&lt;br /&gt;
         ' IQ PATH ''' + @iq_file + '''' +&lt;br /&gt;
         ' IQ PAGE SIZE ' + convert(varchar,@block_size * @chunk_size) +&lt;br /&gt;
         ' IQ RESERVE ' + convert(varchar,convert(int,(@reserve_size * 1024)/ @block_size)) +&lt;br /&gt;
         ' BLOCK SIZE ' + convert(varchar,@block_size) +&lt;br /&gt;
         ' MESSAGE PATH ''' + @msg_file + '''' +&lt;br /&gt;
         ' TEMPORARY PATH ''' + @temp_file + ''';' as &amp;quot;statement&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 insert  into #statement(statement_txt)&lt;br /&gt;
         select  'alter dbspace ' + d1.dbfile_name +&lt;br /&gt;
                 ' add file ' + d2.dbfile_name + ' ''' + d2.file_name + ''';' as &amp;quot;statement&amp;quot;&lt;br /&gt;
                 from    sysdbfile d1,&lt;br /&gt;
                         sysdbfile d2&lt;br /&gt;
                 where   d1.dbfile_name  in ('IQ_SYSTEM_MAIN', 'IQ_SYSTEM_TEMP')&lt;br /&gt;
                 and     d1.dbfile_id    = d1.dbspace_id&lt;br /&gt;
                 and     d2.dbspace_id   = d1.dbspace_id&lt;br /&gt;
                 and     d2.dbfile_id    != d2.dbspace_id;&lt;br /&gt;
 &lt;br /&gt;
 open    user_dbspaces;&lt;br /&gt;
 &lt;br /&gt;
 user_dbspace_loop:&lt;br /&gt;
 LOOP&lt;br /&gt;
         fetch   next user_dbspaces into @user_dbspace;&lt;br /&gt;
         if      SQLSTATE = end_of_cursor then&lt;br /&gt;
                 leave user_dbspace_loop;&lt;br /&gt;
         end if;&lt;br /&gt;
 &lt;br /&gt;
         insert  into #statement(statement_txt)&lt;br /&gt;
                 select  'create dbspace ' + @user_dbspace + ' using ';&lt;br /&gt;
 &lt;br /&gt;
         set     @counter = 0;&lt;br /&gt;
 &lt;br /&gt;
         open    user_dbfiles;&lt;br /&gt;
 &lt;br /&gt;
         user_dbfiles_loop:&lt;br /&gt;
         LOOP&lt;br /&gt;
                 fetch   next user_dbfiles into @user_dbfile_name, @user_file_name;&lt;br /&gt;
                 if      SQLSTATE = end_of_cursor then&lt;br /&gt;
                 leave   user_dbfiles_loop;&lt;br /&gt;
         end if;&lt;br /&gt;
 &lt;br /&gt;
         if      @counter = 0 then&lt;br /&gt;
                 insert  into #statement(statement_txt)&lt;br /&gt;
                         select  'file ' + @user_dbfile_name + '''' + @user_file_name + '''' as statement;&lt;br /&gt;
 &lt;br /&gt;
                 set     @counter = @counter + 1;&lt;br /&gt;
         else&lt;br /&gt;
                 insert  into #statement(statement_txt)&lt;br /&gt;
                         select  ',file ' + @user_dbfile_name + ' ''' + @user_file_name + '''' as statement;&lt;br /&gt;
         end if;&lt;br /&gt;
 &lt;br /&gt;
         end loop user_dbfiles_loop;&lt;br /&gt;
         close user_dbfiles;&lt;br /&gt;
 &lt;br /&gt;
         insert  into #statement(statement_txt)&lt;br /&gt;
                 select 'iq store;' as &amp;quot;statement&amp;quot;;&lt;br /&gt;
 end loop user_dbspace_loop;&lt;br /&gt;
 &lt;br /&gt;
 close   user_dbspaces;&lt;br /&gt;
 &lt;br /&gt;
 insert  into #statement(statement_txt)&lt;br /&gt;
         select  'alter dbspace ' + d.dbspace_name +&lt;br /&gt;
                 ' striping ' + case sb.striping_on when 'T' then 'on' else 'off' end +&lt;br /&gt;
                 ' stripesizeKb ' + convert(varchar,stripe_size_kb) + ';' as &amp;quot;statement&amp;quot;&lt;br /&gt;
                 from    sysiqdbspace sb,&lt;br /&gt;
                         sysdbspace d&lt;br /&gt;
                 where   d.dbspace_id    = sb.dbspace_id&lt;br /&gt;
                 and     d.store_type    = 2&lt;br /&gt;
                 and     d.dbspace_name  != 'IQ_SYSTEM_MSG';&lt;br /&gt;
 &lt;br /&gt;
 select  statement_txt&lt;br /&gt;
         from    #statement&lt;br /&gt;
         order   by seq;&lt;br /&gt;
 end;&lt;br /&gt;
&lt;br /&gt;
Sample output:&lt;br /&gt;
&lt;br /&gt;
 create database '/appl/sybase/dba/ITA_AM_SUM/ITA_AM_SUM.db' IQ PATH 'dbdev/devd1/main1.iq' IQ PAGE SIZE 131072 IQ RESERVE 69025&lt;br /&gt;
 BLOCK  SIZE 32768 MESSAGE PATH 'ITA_AM_SUM.iqmsg' TEMPORARY PATH 'dbdev/devt1/temp1.iqtmp';&lt;br /&gt;
 &lt;br /&gt;
 alter dbspace IQ_SYSTEM_MAIN add file main2 'dbdev/devd1/main2.iq';&lt;br /&gt;
 &lt;br /&gt;
 alter dbspace IQ_SYSTEM_TEMP add file temp2 'dbdev/devt1/temp2.iqtmp';&lt;br /&gt;
 &lt;br /&gt;
 alter dbspace IQ_SYSTEM_TEMP add file temp3 'dbdev/devt1/temp3.iqtmp';&lt;br /&gt;
 &lt;br /&gt;
 create dbspace user_main using&lt;br /&gt;
 file user_main_1'dbdev/devd1/user_main_1.iq'&lt;br /&gt;
 ,file user_main_2 'dbdev/devd1/user_main_2.iq'&lt;br /&gt;
 ,file user_main_3 'dbdev/devd1/user_main_3.iq'&lt;br /&gt;
 ,file user_main_4 'dbdev/devd1/user_main_4.iq'&lt;br /&gt;
 ,file user_main_5 'dbdev/devd1/user_main_5.iq'&lt;br /&gt;
 iq store;&lt;br /&gt;
 &lt;br /&gt;
 alter dbspace IQ_SYSTEM_MAIN striping on stripesizeKb 32;&lt;br /&gt;
 &lt;br /&gt;
 alter dbspace IQ_SYSTEM_TEMP striping on stripesizeKb 64;&lt;br /&gt;
 &lt;br /&gt;
 alter dbspace user_main striping on stripesizeKb 128;&lt;br /&gt;
&lt;br /&gt;
[[Category:IQ]]&lt;/div&gt;</summary>
		<author><name>Psap</name></author>	</entry>

	</feed>