<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.ora600.be" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Kurt Van Meerbeeck</title>
 <link>http://www.ora600.be/rss/blog</link>
 <description>ora600 blog rss feed</description>
 <language>en</language>
<item>
 <title>Unloading history - old Oracle7 dictionary</title>
 <link>http://www.ora600.be/node/10707</link>
 <description>&lt;div&gt;When I saw &lt;a href=&quot;http://jonathanlewis.wordpress.com/2010/09/01/oracle-versions%20it%20reminded%20me&quot;&gt;Jonathan&#039;s post&lt;/a&gt; it reminded me of the work I did last weekend.&lt;/div&gt;&lt;div&gt;Friday evening I got 2 datafiles - one SYSTEM and one DATA datafile.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I only knew the platform but I had send out a request for more information. You can quite easily find out endianness and blocksizes... but the Oracle version is a bit different.&lt;/div&gt;&lt;div&gt;With this one, I was quite certain they were Oracle 7 datafiles. For one thing, when DUDE scanned the fileheaders it decoded the filenumbers as being a multiple of 2. SYSTEM turned out to be file#=16. I&#039;ll explain later.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Secondly, setting DUDE&#039;s VERSION parameter to &#039;7&#039;, allowed me to unload the dictionary without too much trouble.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, when I wanted to unload data from the actual datafile, no data objectid&#039;s were found in obj$ or tab$ !!! How could that be !&lt;/div&gt;&lt;div&gt;So I started to investigate the dictionary - looking at the SYSTEM tablespace with an hex editor.&lt;/div&gt;&lt;div&gt;Blocks were fine, however, there was huge gap in objectid&#039;s being used, jumping from 3000 to 41000.&lt;/div&gt;&lt;div&gt;Hmm... a serious part of the dictionary was missing - maybe completely overwritten.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I then got word back that this was an Oracle 8.0.x database and even more surprising, the database was up and running except for one datafile that had been offlined. (the one they needed data from).&lt;/div&gt;&lt;div&gt;So, the dictionary had to be good ! &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was too puzzled at the time - it was only when I took a step back and thought about it for a while everything came together. &lt;/div&gt;&lt;div&gt;This was an Oracle 8.0.x, which was once an Oracle 7.3.4 migrated to 8.0.x using Oracle&#039;s &#039;mig&#039; utility. &#039;mig&#039; doesn&#039;t exist anymore - it&#039;s functionality has basically taken over by &#039;startup migrate&#039; and the upgrade scripts. &lt;/div&gt;&lt;div&gt;Back in the day you had to run the mig utility on your database, which would upgrade your dictionary, using &#039;migrate.bsq&#039; script. No startup migrate there!&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;To migrate the dictionary, new dictionary tables were created. For example, if you had obj$, tab$, col$, then mig utility would create obj_mig$, tab_mig$ and col_mig$ and then it would migrate the data from the old dictionary to the new dictionary and basically switch names. That would mean that the objectid&#039;s (and of course data objectid&#039;s) of the base dictionary tables are totally different than a normal 8.0 database.&lt;/div&gt;&lt;div&gt;In this case, they would be in the 41000 range, because that was the range of objectid&#039;s of the most recent created object/segment. &lt;/div&gt;&lt;div&gt;The old dictionary would then be dropped ... but orphaned extents might sit untouched for years in your system tablespace.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;And that&#039;s exactly happened when I unloaded the dictionary with VERSION=&#039;7&#039;. &lt;/div&gt;&lt;div&gt;DUDE found the left-overs of the old dictionary. However, DUDE should have unloaded the new dictionary !&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So how does Oracle find the dictionary ?&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Well, in the tablespace header block of the SYSTEM tablespace, there&#039;s a pointer pointing to the bootstrap$ table. The bootstrap$ table contains ddl for the base dictionary tables (and indexes) including data objectid&#039;s (and table numbers for clustered tables).&lt;/div&gt;&lt;div&gt;(you&#039;ll also find the ddl for the base dictionary in the sql.bsq script which is used when the database is created)&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Here&#039;s an example from bootstrap $: &lt;/div&gt;&lt;div&gt; 17&amp;quot;,&amp;quot;2407&amp;quot;,&amp;quot;CREATE TABLE OBJ$ ( OBJ# NUMBER NOT NULL, DATAOBJ# NUMBER, OWNER# NUMBER NOT NULL, NAME VARCHAR2(30) NOT NULL, NAMESPACE NUMBER NOT NULL, SUBNAME VARCHAR2(30), TYPE# NUMBER NOT NULL, CTIME DATE NOT NULL, MTIME DATE NOT NULL, STIME DATE NOT NULL, STATUS NUMBER NOT NULL, REMOTEOWNER VARCHAR2(30), LINKNAME VARCHAR2(128), FLAGS NUMBER, OID$ RAW(16), SPARE1 NUMBER, SPARE2 NUMBER, SPARE3 NUMBER, SPARE4 VARCHAR2(1000), SPARE5 VARCHAR2(1000), SPARE6 DATE) pctfree 10 pctused 40 initrans 1 maxtrans 255 storage ( initial 10240 next 126976 minextents 1 maxextents 121 pctincrease 50 &lt;b&gt;objno 2407&lt;/b&gt; extents ( &lt;b&gt;file 40 block 247&lt;/b&gt;))&amp;quot;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You&#039;ll notice that it contains some key pointers for the described table, like file# (40), offset (247) and dataobjectid (2407). For tables part of a clustered table, it will also contain the table number within the cluster.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So once we have the bootstrap$ segment, we&#039;ll know the location of dictionary !&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;DUDE actually has the ability to actually &#039;search&#039; for the bootstrap$ segment based on it&#039;s characteristics.&lt;/div&gt;&lt;div&gt;It does not however parse the bootstrap ddl for objectid&#039;s and table numbers - but once you have the output for bootstrap$, it&#039;s quite straightforward to punch in DUDE&#039;s bootstrap parameters like :&lt;/div&gt;&lt;div&gt;&lt;ul&gt;			&lt;li&gt;BOOTSTRAP_FILE_OID&lt;/li&gt;		&lt;li&gt;BOOTSTRAP_OBJ_OID&lt;/li&gt;		&lt;li&gt;BOOTSTRAP_COBJ_OID&lt;/li&gt;		&lt;li&gt;BOOTSTRAP_CFILEBLOCK_OID&lt;/li&gt;		&lt;li&gt;BOOTSTRAP_CTS_OID&lt;/li&gt;		&lt;li&gt;BOOTSTRAP_CUSER_OID&lt;/li&gt;		&lt;li&gt;BOOTSTRAP_TAB_TABNO&lt;/li&gt;		&lt;li&gt;BOOTSTRAP_IND_TABNO&lt;/li&gt;		&lt;li&gt;BOOTSTRAP_ICOL_TABNO&lt;/li&gt;		&lt;li&gt;BOOTSTRAP_COL_TABNO&lt;/li&gt;		&lt;li&gt;BOOTSTRAP_LOB_TABNO&lt;/li&gt;		&lt;li&gt;BOOTSTRAP_SEG_TABNO&lt;/li&gt;		&lt;li&gt;BOOTSTRAP_TS_TABNO&lt;/li&gt;		&lt;li&gt;BOOTSTRAP_USER_TABNO &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;These parameters are explained in the &lt;a href=&quot;http://www.ora600.be/DUDE_PRIMER.pdf&quot; target=&quot;_blank&quot;&gt;DUDE primer here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyway, once I set these parameters, I was home free, unloading a complete Oracle8 dictionary !!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So what about the SYSTEM datafile having a filenumber larger than 1 ?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In Oracle 6 there were only 5 to 6 bits used for the file number. So only a maximum of 2^5-1 (31) or 2^6-1 (63) datafiles could be used (database wide).&lt;/div&gt;&lt;div&gt;In Oracle 7 this changed to 10bits or 2^10-1 (1023) datafiles (database wide). However, because of backward compatibility with Oracle 6 an encoding scheme was introduced splitting up the 10bits for file number into 6 and 4 bits and wrapping them around. It really depends on the platform. On intel windows and IBM AIX for example, I’ve seen an 8/2 split.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;SVRMGR&amp;gt; select dump(chartorowid(&#039;00000000.0000.0001&#039;)) from dual ;&lt;/div&gt;&lt;div&gt;DUMP(CHARTOROWID(&#039;0000000&lt;/div&gt;&lt;div&gt;-------------------------&lt;/div&gt;&lt;div&gt;Typ=69 Len=6: 1,0,0,0,0,0&lt;/div&gt;&lt;div&gt;1 row selected.&lt;/div&gt;&lt;div&gt;SVRMGR&amp;gt; select dump(chartorowid(&#039;00000000.0000.ffff&#039;)) from dual ;&lt;/div&gt;&lt;div&gt;DUMP(CHARTOROWID(&#039;00000000.00&lt;/div&gt;&lt;div&gt;-----------------------------&lt;/div&gt;&lt;div&gt;Typ=69 Len=6: 255,192,0,0,0,0&lt;/div&gt;&lt;div&gt;1 row selected.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;This means that the first file# is :&lt;/div&gt;&lt;div&gt;00000001 00000000 00000000 00000000 -&amp;gt; file# 1&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;And the maximum file# is :&lt;/div&gt;&lt;div&gt;11111111 11000000 00000000 00000000 -&amp;gt; file# 1023&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;So the 10bits encoding scheme is like this :&lt;/div&gt;&lt;div&gt;LLLL LLLL HH&lt;/div&gt;&lt;div&gt;Where L is the low order bits&lt;/div&gt;&lt;div&gt;And H the high order bits&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Now let’s open DUDE on a series of these datafiles :&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;DUDE&amp;gt; Initialising ...&lt;/div&gt;&lt;div&gt;DUDE&amp;gt; Init : creating filenumber map ...&lt;/div&gt;&lt;div&gt;DUDE&amp;gt; Scanning tablespace SYSTEM : BLOCKSIZE = 2048&lt;/div&gt;&lt;div&gt;DUDE&amp;gt; File : &lt;b&gt;G:\sys1orcl.ora resolves to number : 4&lt;/b&gt;&lt;/div&gt;&lt;div&gt;DUDE&amp;gt; File : &lt;b&gt;G:\sys2.ora resolves to number : 40&lt;/b&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;You’ll notice that sys1orcl.ora which is basically the first file of the database has file# equal to 4. And we know that sys2.ora had file# equal to 10. How’s that possible ?&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;File# 1 = 0000 0001 00 (LLLL LLLL HH) EQUALS 4 in Oracle 8 DBA format&lt;/div&gt;&lt;div&gt;File# 10 = 0000 1010 00 (LLLL LLLL HH) EQUALS 40 in Oracle 8 DBA format&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;It’s clear that using the Oracle 8 DBA format encoding on the Oracle 7 wrapped DBA format, results in different file numbers. Basically, &lt;b&gt;the file number shifted 2 bits to the left (or x2x2)&lt;/b&gt;. This is of course platform specific, but if the first file of SYSTEM has a file number that is a multiple of 2, you probably have a migrated database.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;So what happened when Oracle 8.0 came along and introduced 2^10-1 or 1023 datafiles per tablespace !&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Well – the DBA format stayed the same. However, the file numbers became relative to the tablespace. So 2 datafiles of the same database could have potentially the same file number, but belong to 2 different tablespaces!&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;What happened to the Oracle 7 (absolute) file numbers when it was migrated to Oracle8. Surely, the mig utility didn’t update the DBA for all blocks ?&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Let’s check out an Oracle 7 database :&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;SVRMGR&amp;gt; desc file$&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;Column Name &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;			&lt;/span&gt;Null? &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;	&lt;/span&gt;Type&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;------------------------------ -------- ----&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;FILE# &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;				&lt;/span&gt;NOT NULL NUMBER&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;STATUS$ &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;			&lt;/span&gt;NOT NULL NUMBER&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;BLOCKS &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;				&lt;/span&gt;NOT NULL NUMBER&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;TS# &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;				&lt;/span&gt;NOT NULL NUMBER&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;SVRMGR&amp;gt; select file#, ts# from file$ ;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;FILE# &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;TS#&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;---------- ----------&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small; font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;1 &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;		&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;2 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;3 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;4 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;5 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;8&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;6 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;9&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;7 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;8 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;7&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;9 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;11&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;10 &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;		&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;10 rows selected.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Ok – looks logical – we see that tablespace TS#=0 or SYSTEM has 2 datafiles with file#=1 and file#=10.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Let’s do the same after a migration to 8.0 :&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;SVRMGR&amp;gt; desc file$&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;Column Name &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;			&lt;/span&gt;Null? &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;Type&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;------------------------------ -------- &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;	&lt;/span&gt;----&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;FILE# &lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;				&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;NOT NULL &lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;	&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;NUMBER&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;STATUS$ &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;			&lt;/span&gt;NOT NULL &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;	&lt;/span&gt;NUMBER&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;BLOCKS &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;				&lt;/span&gt;NOT NULL &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;	&lt;/span&gt;NUMBER&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;TS# &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;						&lt;/span&gt;NUMBER&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;RELFILE# &lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;					&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;NUMBER&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;MAXEXTEND &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;					&lt;/span&gt;NUMBER&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;INC &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;						&lt;/span&gt;NUMBER&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;CRSCNWRP &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;					&lt;/span&gt;NUMBER&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;CRSCNBAS &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;					&lt;/span&gt;NUMBER&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;OWNERINSTANCE &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;					&lt;/span&gt;VARCHAR2(30)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;SPARE1 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;						&lt;/span&gt;NUMBER&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;SPARE2 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;						&lt;/span&gt;NUMBER&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;SPARE3 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;						&lt;/span&gt;VARCHAR2(1000)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;SPARE4 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;						&lt;/span&gt;DATE&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;SVRMGR&amp;gt; select file#,ts# from file$ ;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;FILE# &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;TS#&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;---------- ----------&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;1 &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;		&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;2 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;3 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;4 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;5 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;8&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;6 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;9&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;7 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;8 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;7&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;9 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;11&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;10 &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;		&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;10 rows selected.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;So – the file# for the datafiles stayed the same. But we can see an add column in file$ - relfile# :&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;SVRMGR&amp;gt; select file#,relfile#,ts# from file$ ;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;FILE# &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;&lt;b&gt;RELFILE#&lt;/b&gt;&lt;/span&gt; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;	&lt;/span&gt;TS#&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;---------- &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;	&lt;/span&gt;---------- &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;	&lt;/span&gt;----------&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;1 &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;		&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;4 &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;		&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;2 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;8 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;3 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;12 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;4 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;16 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;5 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;20 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;8&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;6 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;24 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;9&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;7 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;28 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;8 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;32 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;7&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;9 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;36 &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;		&lt;/span&gt;11&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;10 &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;		&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;40 &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;		&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#039;courier new&#039;, courier&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: small&quot;&gt;10 rows selected.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Here we can clearly see the 2bit shift to the left – &lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #ffff00&quot;&gt;the Oracle 7 absolute filenumber became an Oracle 8 relative filenumber.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;So the mig utility did not have to :&lt;/div&gt;&lt;div&gt;&lt;ul&gt;			&lt;li&gt;update the DBA in a block&lt;/li&gt;		&lt;li&gt;row addresses in chained and migrated rows&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More info on the topic can be found on Metalink - see note 122926.1 ...&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;I think I&#039;ll have to lay down now &lt;img src=&quot;http://www.ora600.be/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif&quot; border=&quot;0&quot; alt=&quot;Wink&quot; title=&quot;Wink&quot; /&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</description>
 <comments>http://www.ora600.be/node/10707#comments</comments>
 <category domain="http://www.ora600.be/category/blog/dude">dude</category>
 <category domain="http://www.ora600.be/category/blog/oracle-dictionary">oracle dictionary</category>
 <pubDate>Thu, 02 Sep 2010 17:11:18 +0200</pubDate>
 <dc:creator>kurtvm</dc:creator>
 <guid isPermaLink="false">10707 at http://www.ora600.be</guid>
</item>
<item>
 <title>ORA600 - 5years later</title>
 <link>http://www.ora600.be/ORA600-5-years-later</link>
 <description>&lt;div&gt;This summer is ORA600&#039;s 5th anniversary - and DUDE&#039;s 10th !&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;So I thought it would be appropriate to look back and reflect on all crazy and weird things we&#039;ve gone through.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;As many of you know, DUDE started out as jDUL on sourceforge. I started on it while I was working in South Africa - me and my buddy Kugendran Naidoo came up with all kinds of crazy idea&#039;s whilst enjoying a smoke in the smoking room. Wow, remember the days you could still smoke in the office ? &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;I can&#039;t say the&#039;Oracle community&#039; was very appreciative to the idea of a DUL-like tool. Back in the day, the Oracle community, for me, consisted mostly of the cdos newsgroup (&lt;a href=&quot;http://groups.google.com/group/comp.databases.oracle.server/topics&quot;&gt;comp.database.oracle.server&lt;/a&gt;). To be honest, I found cdos quite a hostile place - a lot of flames, rants, newbie bashing etc… all in all  sending out negative vibes. Thinking about it, it&#039;s just the opposite of the Oracle-l mailing list (&lt;a href=&quot;http://www.freelists.org/archive/oracle-l&quot;&gt;http://www.freelists.org/archive/oracle-l&lt;/a&gt;). I&#039;m not surprised cdos is now full of spam messages and almost completely abandoned. If it wasn&#039;t for cdos … I might have gone through open-sourcing jDUL/DUDE !&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Anyway - flash forward to the summer of 2005 - after a meeting with Mogens Norgaard from Miracle AS, ORA600 is born. (see also &lt;a href=&quot;http://www.ora600.be/history&quot;&gt;here&lt;/a&gt;). That particular summer was quite fruitful as I spent most of my time implementing new features. To give you an idea - in 2001 the source code was 131Kb in size and 4393 lines long. By the end of 2005 it was 12390 lines of code and 446Kb in size. The current version is 1049Kb and 27817 lines long. I must admit, a lot of that is code documentation !&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Although Miracle AS worked as an incubator, Mogens introduced me to Daniel Fink in 2007 at a Miracle Scotland event in Edinburgh. Daniel was interested in representing DUDE in the US. Mogens didn&#039;t mind. Dan is a great guy to work with - very professional! After that I started collaborating with different companies around the globe, like &lt;a href=&quot;http://www.pythian.com&quot;&gt;Pythian&lt;/a&gt;, &lt;a href=&quot;http://www.evdbt.com/&quot;&gt;Evdbt Inc&lt;/a&gt; (Tim Gorman), &lt;a href=&quot;http://www.nrgc.co.za&quot;&gt;NRG Consulting&lt;/a&gt; and &lt;a href=&quot;http://www.hbtec.com.br&quot;&gt;HBTec&lt;/a&gt;. I really think local support is very important for potential customers even if it squeezes my profit margins.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;I have to admit - I have encountered some amazing corruption cases over the last 5 years. Some were solved fast and swiftly - others have costs me several years of my life &lt;img src=&quot;http://www.ora600.be/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif&quot; title=&quot;Wink&quot; alt=&quot;Wink&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;&lt;div&gt;Here are some recovery cases I will never remember :&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;1.&lt;span style=&quot;white-space: pre&quot; class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;The one with the mixed data in a LONG column&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;This case was *by far* the most stressful recovery I have done. The customer was a newspaper publisher and they needed their database online before Sunday 2PM. Having a deadline is always stressful, but this database contained a table with a LONG column that was on average a gigabyte large. Normally that&#039;s not a problem, but at that time I had a bug in my DMP API related to Java&#039;s garbage collector, that caused the unload to slow down …. It actually appeared to be hanging as there were no error messages being generated. I didn&#039;t know about the bug right away so I investigated the situation up to the point I opened several blocks in a hexeditor, following pointers of chained rows manually (did I mention the deadline?). What I saw was that the column contained readable text and then suddenly what looked like binary data. I immediately thought some blocks were partially corrupted and what I was seeing was garbage. Quite often on windows platforms you&#039;ll see file corruption, where files are partially overwritten by junk in multiples of 512bytes, spread all over. It&#039;s like someone takes a machinegun and puts some holes in the files. Worst case, the corruption is in the middle of a block so header and tail are fine and the corruption goes almost unnoticed. Until you try to trail the row directory to the row headers and you suddenly hit junk. It gets even worse, if by coincidence the header is identified as a chained row and thus you try to read the next dba…. Which of course will point to some non-existing datafile and offset!!!&lt;/div&gt;&lt;div&gt;Anyway that&#039;s what it look like at first glance … until I actually started to put things together with an hex-editor (try doing that at 3AM at night!). The blocks were fine, the row directory was valid, row headers were ok, chained row headers were pointing to valid row pieces. This led me to the conclusion the data was valid, just extremely weird !&lt;/div&gt;&lt;div&gt;At that point I focused on my DMP API and found out the garbage collector was doing too much work, cleaning up after processing 1Gb columns. &lt;/div&gt;&lt;div&gt;Once I fixed that, the unload was blazing fast - and I made the deadline… but boy… what an adrenaline rush !!!&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;2.&lt;span style=&quot;white-space: pre&quot; class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;The one with the even larger column&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;DUDE is written in java - most JVM&#039;s are/were 32bit. Although DUDE is multithreaded (it has producer and consumer threads) and some platforms turn threads into procs,  I have to work with a 2Gb memory limitation in mind. At one point I had a case were DNA strands were being stored in CLOBs. These were all around 2Gb large. Needless to say I ran into some memory related issues ;-) At that point I had to react quickly - and these things always happen at night. The solution was to write on-disk data structures and thus avoiding the 2Gb limit. Performance is of course affected by this - but I can safely say that DUDE will unload very large LOB&#039;s on a 32bit platform. &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;3.&lt;span style=&quot;white-space: pre&quot; class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;The one without a system tablespace and just toooo many tables&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;This one I will also never forget. Losing your system tablespace, and thus your dictionary is a disaster. But no worries - DUDE can identify tables and datatypes using an heuristic algorithm. However, table names, column names, logical column order … that&#039;s all stored in the dictionary. So recovery from such a situation involves intimate knowledge of your data, and a lot of guessing to map the flat files to the correct table. I&#039;ve done it a number of times with a  hundred or so tables, always with the developer by my side. It&#039;s time consuming and very hard. One time we had a &#039;lost system tablespace&#039; case. The db in itself was about 68Gb but it was a BAAN ERP system. That means thousands (5000+) of tables !&lt;/div&gt;&lt;div&gt;It took a team of 8 BAAN consultants to rebuild the database in 2 weeks ! I specially changed the code for them so that DUDE would generate BAAN specific flatfiles for easy loading through BAAN&#039;s loader tool. This is where the DUDE license really pays off for the customer - one fixed price no matter how long you need it !!!&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;4.&lt;span style=&quot;white-space: pre&quot; class=&quot;Apple-tab-span&quot;&gt;	&lt;/span&gt;The &#039;we don&#039;t use backups&#039; case… but we&#039;re happy with that&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;One time I got a call from a company who had a SAN crash. They had a 4TB datawarehouse sitting on it, and apparently were unable to restore the database. Because of the size of the DB I suggested to go with the license as clearly, the unload would take some time. A license is fixed priced for as long the unload takes and 4TB… well it can take a while! The next day I get a call back - &#039;hey this thing really works - we&#039;ve got another database on that SAN we would like to see unload&#039; - me:&#039;what&#039;s the size?&#039; - answer &#039;about 4TB&#039;…   That&#039;s not all ! A year later - got a call from the same company different branch. &#039;We have a db crash - we&#039;ve used your tool before - we would like to use it again. The DB size is 2TB!&amp;quot;. So in 2years, 3 databases and a total of 10TB recovered for the same customer… my favorite customer… ever! They were also the first one who used table compression - so I can safely say my block compression algorithm has been tested on multiple terabytes &lt;img src=&quot;http://www.ora600.be/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif&quot; title=&quot;Wink&quot; alt=&quot;Wink&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; As you can see - recovering data can be really stressful, but we take great pride in what we do, and if it means we have to change the code for your specific needs, we&#039;ll do it and make it work !&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;The ORA600 vehicle also made it easier to network and meet new people - which is a bonus as I don&#039;t like large crowds. I can definitely say OOW is not for me - but UKOUG is. It&#039;s one of the best conferences out there and it allowed me to meet all sorts of interesting new people (you know who you are!). Well, I tasted HOTSOS first which was really great … but I don&#039;t like long flights either … and I definitely don&#039;t like all male dance parties …. Give me an English pub anytime &lt;img src=&quot;http://www.ora600.be/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif&quot; title=&quot;Wink&quot; alt=&quot;Wink&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;&lt;div&gt; Here&#039;s a picture of an infamous evening - you&#039;ll recognize a certain scottsman in the back, a couple of Danes and a couple of Finns... oh and me !&lt;/div&gt;&lt;div style=&quot;text-align: center&quot;&gt; &lt;img src=&quot;/system/files/u1/trouw.jpg&quot; height=&quot;375&quot; width=&quot;500&quot; /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Anyway -  because of the anniversary I&#039;ll be giving &lt;b&gt;away the very last ORA600 poloshirts&lt;/b&gt; !!!&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;(to be honest, I have been remodeling the house to accommodate a nursery room as I will become father in December … so everything has got to go!!! &lt;img src=&quot;http://www.ora600.be/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif&quot; title=&quot;Laughing&quot; alt=&quot;Laughing&quot; border=&quot;0&quot; /&gt; )&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div style=&quot;text-align: center&quot;&gt;&lt;img src=&quot;/system/files/u1/dudeshirt.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;I have &lt;b&gt;&lt;s&gt;5x size medium (M)&lt;/s&gt;&lt;/b&gt;&lt;s&gt;, &lt;/s&gt;&lt;b&gt;&lt;s&gt;1x extra large (XL)&lt;/s&gt;&lt;/b&gt;&lt;s&gt; and &lt;/s&gt;&lt;b&gt;&lt;s&gt;3x extra extra large (XXL) &lt;/s&gt;&lt;/b&gt;- the first to respond to &lt;a href=&quot;mailto:dude@ora600.be&quot;&gt;dude@ora600.be &lt;/a&gt;will get one !!! (don&#039;t forget to mention your size and address!!!)&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;b&gt;Update - all polo shirts are gone !!! &lt;/b&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Up to the next five years ! &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</description>
 <comments>http://www.ora600.be/ORA600-5-years-later#comments</comments>
 <category domain="http://www.ora600.be/category/blog/dude">dude</category>
 <category domain="http://www.ora600.be/category/blog/ora600">ora600</category>
 <pubDate>Thu, 26 Aug 2010 12:48:26 +0200</pubDate>
 <dc:creator>kurtvm</dc:creator>
 <guid isPermaLink="false">10520 at http://www.ora600.be</guid>
</item>
<item>
 <title>Oaktable Site</title>
 <link>http://www.ora600.be/oaktable-website</link>
 <description>&lt;div&gt;Long overdue … and by now old news !&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Seems everybody has already mentioned it on their blog - I reckon so can I ;-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It seems the topic of &#039;a&#039; new website had already been discussed during several Oracle events but there were no immediate plans to actually implement it.&lt;/div&gt;&lt;div&gt;So when a mail requesting volunteers popped up, Doug Burns made sure to mention my name.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A quick ask-around revealed that the #1 must-have-feature was an oakie blog aggregator. &lt;/div&gt;&lt;div&gt;James Morle also had mentioned to scrap the old site and redo the whole thing in an open-source CMS, preferable Drupal. Which was fine by me as I had already done some work in drupal, including some custom drupal modules (like a drupal module to integrate user management with Oracle SSO/OID).&lt;/div&gt;&lt;div&gt;Anyway - as the only real requirement was a blog aggregator of Oaktable member&#039;s blogs and then some, I just started working on it in a kind of agile way ;-) &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are some of the modules I used :&lt;/div&gt;&lt;div&gt;&lt;ul&gt;			&lt;li&gt;must-have modules : admin_menu, CCK (and several cck fields like email, date, imagefield), panels for the frontpage and you can&#039;t do without the views module&lt;/li&gt;		&lt;li&gt;Imageapi, imagecache : needed for some on-the-fly rescaling of uploaded images, like for example member&#039;s avatars or book covers&lt;/li&gt;		&lt;li&gt;Feedapi and feedapi_mapper : I prefer these modules for creating a blog aggregator instead of the standard aggregator module as it allows you to save feed content in a node, and thus making the content searchable and easier for google to digest. Also, you can map tags within feeds to node tags so they show up in your tag-cloud (double-bonus!)&lt;/li&gt;		&lt;li&gt;Cumulus and tagadelic : for creating a funky tag-cloud&lt;/li&gt;		&lt;li&gt;Twitter and juitter modules : for aggregating twitter feeds and showing twitter trends. I will add the twitter trends for all major events as I did for HOTSOS2010 and MOW2010.&lt;/li&gt;		&lt;li&gt;Browscap and mobile_theme : if you use a mobile device, the site will switch to the iwebkit theme… looks ok on an iphone &lt;img src=&quot;http://www.ora600.be/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif&quot; border=&quot;0&quot; alt=&quot;Wink&quot; title=&quot;Wink&quot; /&gt;&lt;/li&gt;		&lt;li&gt;Content_slider : which allows you to create a kind of slide show from node content (for example the events and books slides)&lt;/li&gt;		&lt;li&gt;Google_analytics, google_cse, pathauto, seo_checklist : make sure the whole thing is SEO &lt;/li&gt;		&lt;li&gt;Subscriptions : authenticated users can subscribe to content - they will be notified when content is added or modified&lt;/li&gt;		&lt;li&gt;Faq and faq_ask : I&#039;ve used these to implement the oaktable challenge. It&#039;s not ideally as it does not allow me to migrate the old questions but it does the job.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;I&#039;ve also used some modules for oakie&#039;s only - like :&lt;br /&gt;&lt;ul&gt;			&lt;li&gt;Announcements : add announcements to the site encouraging oakies to post content or start their own blog on the oaktable site… the site does not only aggregate but also allows members to write blogposts that are automatically included in the sites blog RSS feeds&lt;/li&gt;		&lt;li&gt;Votingapi and advpoll : providing democracy to the oaktable when choosing when or where to eat during the next Oracle event using polls&lt;/li&gt;		&lt;li&gt;Webform and webform_report : allows you to easily create html forms without programming and report on the results - already came in useful for ordering the new oaktable polo shirt &lt;img src=&quot;http://www.ora600.be/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-cool.gif&quot; border=&quot;0&quot; alt=&quot;Cool&quot; title=&quot;Cool&quot; /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you can see - these are all basic modules. There was some custom work though :&lt;/div&gt;&lt;div&gt;&lt;ul&gt;			&lt;li&gt;I have a &#039;oakie&#039; module : this provides a mapping between the user profile and feedapi, so users can add their blog rss feed through their profile instead of the more complex feedapi form&lt;/li&gt;		&lt;li&gt;I had to tweak ask_faq for the oaktable challenge&lt;/li&gt;		&lt;li&gt;By far the most difficult task was tweaking the themes 		&lt;ul&gt;						&lt;li&gt;&#039;admire_gray&#039; is the main theme - I had some issues on smaller resolutions so I had to make some modifications in its stylesheet&lt;/li&gt;				&lt;li&gt;&#039;iwebkit&#039; - the mobile theme had some real bugs in it as it did not show pagers - had to dive in the theme code here to fix it !&lt;/li&gt;		&lt;/ul&gt;		&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I migrated some old articles and scripts from the old site, leaving the rest to the original authors (as you can see … that didn&#039;t work out so well) - however, Jonathan Lewis, Tanel Poder and Christian Antognini have already added some new articles which gives me hope &lt;img src=&quot;http://www.ora600.be/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif&quot; border=&quot;0&quot; alt=&quot;Wink&quot; title=&quot;Wink&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Anyways - I hope you like it. &lt;/div&gt;&lt;div&gt; &lt;/div&gt;</description>
 <comments>http://www.ora600.be/oaktable-website#comments</comments>
 <category domain="http://www.ora600.be/category/blog/drupal">drupal</category>
 <category domain="http://www.ora600.be/taxonomy/term/57">oaktable</category>
 <pubDate>Wed, 19 May 2010 10:45:54 +0200</pubDate>
 <dc:creator>kurtvm</dc:creator>
 <guid isPermaLink="false">9188 at http://www.ora600.be</guid>
</item>
<item>
 <title>Expert Oracle Practices</title>
 <link>http://www.ora600.be/expert-oracle-practices</link>
 <description>&lt;div&gt;I was just woken up by the mailman, ringing my doorbell several times. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;I jumped out of bed and opened the door half naked and still sleep drunk - I was on call this week and although there weren&#039;t many calls I went to bed at 2AM, each day. If there&#039;s one thing I hate is going to bed and getting a call an hour later - so I go to bed late at night and hope I don&#039;t get a call until 8AM when a colleague takes over.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Anyway, I knew it was the postman delivering the new Oaktable book &#039;&lt;a href=&quot;http://www.amazon.co.uk/Expert-Oracle-Practices-M-Moller/dp/1430226684/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1264759825&amp;amp;sr=8-1&quot; target=&quot;_blank&quot;&gt;Expert Oracle Practices&lt;/a&gt;&#039;. &lt;/div&gt;&lt;div&gt;Because I had bought it at Amazon in the US, I knew I had to pay import taxes (10euro) and thus needed personal delivery. Hey, I wanted to have it asap &lt;img src=&quot;/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif&quot; title=&quot;Wink&quot; alt=&quot;Wink&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is one of those books you just need to have !&lt;/div&gt;&lt;div&gt;I&#039;ve already mentioned here that I love going to the UKOUG - and one of the main reasons is because I love to hear how other DBA&#039;s/developers do their work. How do they backup their databases, how do they tune their databases, what problems are they having.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;The new Oaktable book is very much like that - how do some of the most respected database consultants handle their environments. It&#039;s not a low, lower, loooower, Steve Adams low level book. But at first glance it looks more technical than the first Oaktable book (&lt;a href=&quot;http://www.amazon.co.uk/Insights-Jonathan-McDonald-Millsap-Vaidyanatha/dp/1590593871/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1264757070&amp;amp;sr=8-2&quot; target=&quot;_blank&quot;&gt;Oracle Insights - Tales of the Oaktable&lt;/a&gt;)  &lt;/div&gt;&lt;div&gt;And that was also the aim - competing with the other new Oracle 11g books out there.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;I&#039;m ashamed to admit that I turned down an offer to write a chapter (even two chapters). I was offered a chapter on backup and recovery and one on NLS issues.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;The first one is obvious as I have some experiences with recovery &lt;img src=&quot;/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif&quot; title=&quot;Wink&quot; alt=&quot;Wink&quot; border=&quot;0&quot; /&gt; - and I could have written some funny anecdotes and picked out some cases that went bad and why. &lt;/div&gt;&lt;div&gt;But the aim wasn&#039;t to write funny stories but technical content. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;I have a confession to make - I hate writing technical content/documentation - but I love programming. &lt;/div&gt;&lt;div&gt;If you want to punish me - get me to write technical docs. One of the reasons I quit my previous job was because at one point, they had me writing more technical docs to be ISO9000/1/2 compliant than actually programming stuff. I don&#039;t know why I agreed on 2 chapters but with the words of a famous entrepreneur &#039;screw it, let&#039;s do it&#039;, I set myself a goal :&lt;/div&gt;&lt;div&gt;&lt;ul&gt;	&lt;li&gt;try to write 10% of one chapter in one week&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Mind you this was the beginning of the summer, the worst possible timing for me, as I had filled up most of the summer weekends with other things to do. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;For the backup and recovery chapter, I already had some ideas on how to handle the chapter - I wanted to do a bottom up approach. &lt;/div&gt;&lt;div&gt;Most books do a top down approach - they explain the concept, the wider picture, go to the commands and then some examples, and maybe some internals. &lt;/div&gt;&lt;div&gt;I seem to always learn things bottom up - start with the internals and then work my way up to the commands. It&#039;s like a bottom up and top down parser &lt;img src=&quot;/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif&quot; title=&quot;Wink&quot; alt=&quot;Wink&quot; border=&quot;0&quot; /&gt;. If you understand the internals, the mechanics, you know what you&#039;re doing and thus, don&#039;t need to memorize all the commands ... you just need to understand to know what&#039;s possible!&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Anyway the idea was to first explain block internals, how data is stored and how redo logging works, using a chessboard. &lt;/div&gt;&lt;div&gt;Let&#039;s say 2 guys are playing 10 chess games on 10 boards at the same time in the outdoors. They each move pieces, the movement  of the pieces get logged by a third person on a piece of paper and once in a while a 4th guy writes down the location of every chess piece on each board to another piece of paper. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;The 2 guys playing the chess games are database processes changing rowpieces (chess pieces) in the datablocks (chess board) - the guy writing down the movement of the pieces (redo vectors) is the logwriter process. They guy writing down the complete chessboards to paper is the dbwr process. If it starts to rain, they just scrap the boards (shutdown abort). When they start playing again, they get the paper containing the complete chessboard layouts and the paper with the chess piece movements and redo the movements (instance recovery). It is basic journaling !&lt;/div&gt;&lt;div&gt;With this story in mind I could have explained backup and recovery in a very simple way so everybody understands, and then move my way up.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Anyways - after a week of writing in the evenings I had one page ! One page and I was so bored !!! I&#039;m definitely not a technical writer … a blog now and then…ok. A presentation once a year … fine. But 2 chapters in a book … I don&#039;t think so.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;So I got back to Jonathan Gennick after a week - I didn&#039;t make my goal - I could not see, with the deadlines in place, how I could find time (I have 2 jobs and need to sleep now and then)  to write those two chapters and I thought it would be best to let him know before I signed a contract. And you know what, I have not regret it since !&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Btw - about the second chapter, NLS issues - I live in Belgium. We have 3 official languages : Dutch, French and German. And we use English to keep everybody happy. So we know allllll about NLS issues &lt;img src=&quot;/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-cool.gif&quot; title=&quot;Cool&quot; alt=&quot;Cool&quot; border=&quot;0&quot; /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Now - go buy this book - it&#039;s awesome !&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;On a different note …. I do have more time in the winter season and I was able to qualify for the Flemish Poker championship or &#039;Pokerkampioen Van Vlaanderen&#039;. It&#039;s a freeze-out tournament covered by TV. It will be aired on March on 2BE and JimTV. There were 674 entries for the regional finals.  I made it through the semi finals and busted out on place 28. I wrote about it &lt;a href=&quot;/pkvv&quot;&gt;here&lt;/a&gt;. It&#039;s all non-technical content ! &lt;span style=&quot;font-style: normal&quot; class=&quot;Apple-style-span&quot;&gt;&lt;img src=&quot;/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif&quot; title=&quot;Laughing&quot; alt=&quot;Laughing&quot; border=&quot;0&quot; /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</description>
 <comments>http://www.ora600.be/expert-oracle-practices#comments</comments>
 <category domain="http://www.ora600.be/taxonomy/term/58">book</category>
 <category domain="http://www.ora600.be/taxonomy/term/57">oaktable</category>
 <pubDate>Fri, 29 Jan 2010 11:08:07 +0100</pubDate>
 <dc:creator>kurtvm</dc:creator>
 <guid isPermaLink="false">7510 at http://www.ora600.be</guid>
</item>
<item>
 <title>UKOUG2009 - I too can blog about it ...</title>
 <link>http://www.ora600.be/ukoug-2009</link>
 <description>&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;I don&#039;t know how they do it ! &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;When I go to a conference, I make an agenda and mostly follow it all the way through - I might make a few changes here or there, but I won’t easily skip a slot… unless an emergency comes up … which happened only twice in these 3 days &lt;img src=&quot;/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-wink.gif&quot; title=&quot;Wink&quot; alt=&quot;Wink&quot; border=&quot;0&quot; /&gt; &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;That brings me to my first observation of UKOUG2009 … wifi sucked !!! &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;When I go to a conference I still need to be available – I *need*wifi access to survive. I only was able to get the ICC wifi to work during the parties! &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;The mickey mouse portables available at the exibition hall and registration area didn’t do me any good either – I couldn’t ssh out of them ! &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;Luckily I found some unprotected wifi signals in the exhibition area – my gratitude goes out to the people who had setup the NETGEAR wifi appliance – you delivered excellent internet services although I reckon this was unintentionally as it was protected the last day of the conference &lt;img src=&quot;/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif&quot; title=&quot;Laughing&quot; alt=&quot;Laughing&quot; border=&quot;0&quot; /&gt; &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;Here ‘s a way to get people to come to your booth – if you have wifi – name the network to your company, and give people the password if they visit you – success guaranteed ! &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;Anyway – I got deferred – I was wondering how people do it –blogging and twittering during a conference while there is so much to do, so much to see, so much to process. And I reckon, a lot of people were twitteringand blogging … that probably was the cause for the bad wifi !!! &lt;img src=&quot;/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-cool.gif&quot; title=&quot;Cool&quot; alt=&quot;Cool&quot; border=&quot;0&quot; /&gt; &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;So I decided to blog a bit about UKOUG2009 when I got home. &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;We arrived on Sunday at Jurys Inn – which is about the best hotel you can get without going to the Hyatt. Every year I seem to bring mor eand more people of the company with me – this year our company had sent 9 people ! The hotel looked a bit quiet so we decided to head to All-bar-one.Which again looked a bit deserted … it seems the credit crunch had taken it’s toll here ! &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;So what about the sessions – I have a broad interest – the last couple of years I do more and more application server stuff, networking, identity management and programming than hardcore DBA work. &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;I had sessions on my agenda ranging from ‘Getting the best out of hardware loadbalancers’ to ‘Integrating forms with apex’ over ‘Authentication,SSO and authorization for WLS’ and Tanel’s ‘Latches and mutexes’ talk. And they say I am a database geek – I reckon I attend more talks on middleware thandatabases. &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;Now for those of you moaning about how bad some presentations were and how you could do so much better – go out there and do it. Write a apresentation and/or whitepaper and get your butt out there. &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;One of my colleagues attended a talk on ADF 11g by someonefrom Oracle – afterwards they had a chat and in between my colleague mentions how his team had created a kick ass app in ADF 11g. In which he got the reply ‘well– show it to me’ ! End result – if he writes a paper about it, he may present it at Oracle Openworld 2010! &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;So what about the sessions I attended – here are some highlights : &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;Alex Keh’s talk on Active Directory and Windows Security integration with Oracle databases – Alex presentation was great – excellent topic, good presentation style, working demos and I learned a couple of new things. &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;Joel Goodman from Oracle education had a strange presentation title – something about DB Links PART 2. I couldn’t find part 1 in the agenda. Apparently he had submitted 2 presentations but part 1 didn’t get accepted. Nonetheless – Joel Goodman knows his stuff – he also reminds me of Wolverine – deep voice, American accent … it’s almost as if he tries to hypnotize you while pumping valuable knowledge into your brain. (I wouldn’t mind having him around in a street fight ;-) ) This presentation was all about distributed transactions and how crashing databases, involved in distributed transaction,can lock complete tables until you force commit or force rollback the transactions. I had completely forgotten about that. The last time I had to do something like that was in the Oracle7 era. So 2 thumbs up ! Joel puts hispresentations free for downloading here: &lt;a href=&quot;http://dbatrain.wordpress.com/articles-papers-and-presentations/&quot; style=&quot;font-weight: bold; color: #333333; text-decoration: none&quot; target=&quot;_blank&quot;&gt;http://dbatrain.wordpress.com/articles-papers-and-presentations&lt;/a&gt;  &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;Joel’s partner in crime Harald Van Breederode, and equally excellent presenter talked about 11g SQL Plan Management. This is something I get confronted with quite a lot – plan stability. Don’t you hate it when a new execution plan just hogs down a complete database. In my opinion, Oracle should have introduced SQL Plan Management when they introduced the CBO ! The one can’t live without the other and yet it has taken over a decade to get this feature –my guess is it was just too resource hungry for the hardware available back in the days. I love to quote Hannibal Smith on this : ‘I love it when a plan comes together!’ Harald hasn’t posted his presentation on his &lt;a href=&quot;http://prutser.wordpress.com/&quot; target=&quot;_blank&quot;&gt;blog&lt;/a&gt; – but who knows, one day he might!  &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;I’m a java guy but that doesn’t mean I can’t appreciate plsql – I like it better then say … perl – so I went to see Steven Feuerstein’s‘High Performance PL/SQL’ – very interesting stuff. He spent quite some time on ways to cache data in the pga/uga using all sorts of tricks, ending up with 11g’s result cache. Not too bad I thought – but Connor McDonald showed a little bit more skepticisms on the result cache. He proofed that if the result cache isbeing populated and concurrent sessions are running the same query which ispopulating the cache, extra locking occurs. As usual, Connor delivered one of the best, well probably most definitely *the* best presentation of UKOUG2009 inhis usual style, firing away *485* slides in 45 minutes ! &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;I went to quite a lot of weblogic/ias presentations. It looks like people that are Oracle acquired from the acquisitions haven’t the slightest idea of what Oracle Portal/Forms/Reports are, and *how many* people are still using it. Every presentation was heavily (not heavenly) focused on java functionality, with Forms/reports dangling, almost falling of the slides ! One guy was quite hilarious – it was a talk about SSO and WLS … to be honest I was expecting something about how ‘legacy’ apps like Oracle Forms/reports/portal and Oracle SSO (OC4J_Security) would integrate with the new Weblogic App server. Instead it was a talk about Oracle’s Identity &amp;amp; Access Management suite build on top of WLS. No biggy – quite interesting especially from someone who co-wrote the SAML standards. &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;But what I suspected would happen, did happen … someone asked a question about how all this would integrate with Oracle Portal if they migrate from IAS 10.1.2.3 to Weblogic ………………. &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;This was going to be good as I was also interested in that. The answer was way off, it was quite clear he had no idea what Oracle Portal was or how it is deeply integrate with PLSQL (and the PLSQL SSO api) and OID. The person who asked the question tried to reframe the question but again … no serious answer –‘no, but in java … blah blah blah’ … you could see the disappointment as the person who asked the question politely nodded along and thanked the presenter for this very straightforward answer. &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;This confirms to me that Portal is *dead*. If you run a public website on Portal – get drupal. It’s cheap, it has way better SEO and thrives on a very large community. Oh – and I have created a drupal module that integrates drupal user management with Oracle SSO. Throw away Portal – it’s a real pain to migrate upwards (I’m stuck at Portal 10.1.2.3 as I’m unable to migrate to 10.1.4.2 even after a 2 week SR with Oracle). Throw it out… you’ll feel much better and people will like you for it &lt;img src=&quot;/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif&quot; title=&quot;Tongue out&quot; alt=&quot;Tongue out&quot; border=&quot;0&quot; /&gt; &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;One other hilarious moment was Julian Dyke’s presentation on 11gR2 new features. Julian makes excellent presentation/slides/animations. So for that reason alone, if I can, I tend to go to any of his talks. However, at the beginning of his presentation, he mentioned he had forgotten a word in his title : ‘RAC’ – ‘11gR2 *RAC* new features’. This resulted in quite a lot of people leaving the room. I decided to stay purely based on Julian’s reputation.However, I had to leave afterwards when I got an important phone call …(damn wifi) and I was glad I had an excuse to leave the room. I took the 11g RAC course in February of this year. When Julian started to talk about all the new RAC stuff like SCAN, I felt depressed. It was like I could throw away half thet hings I had learned in the course – ‘this is new, that’s new, that’s changed,this is obsolete, this works like that now …’ … too depressing … &lt;/p&gt;&lt;o:p&gt; &lt;/o:p&gt; &lt;p class=&quot;MsoNormal&quot;&gt;To end this post – here’s a picture of a collegue of mine at the Fire &amp;amp; Ice Party (disclaimer – the girl had already left – she’s not under the table)  &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&lt;img src=&quot;/system/files/u1/gert.jpg&quot; title=&quot;Gert at UKOUG fire &amp;amp; ice party&quot; height=&quot;400&quot; alt=&quot;Gert at UKOUG fire &amp;amp; ice party&quot; width=&quot;300&quot; /&gt;  &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;I need to lay down now after another great UKOUG conference .... till next year !!!!  &lt;/p&gt;&lt;p class=&quot;MsoNormal&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
 <comments>http://www.ora600.be/ukoug-2009#comments</comments>
 <category domain="http://www.ora600.be/taxonomy/term/7">ukoug</category>
 <pubDate>Thu, 03 Dec 2009 15:24:27 +0100</pubDate>
 <dc:creator>kurtvm</dc:creator>
 <guid isPermaLink="false">6536 at http://www.ora600.be</guid>
</item>
</channel>
</rss>
