<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Oracle Warehouse Builder (OWB) Weblog</title>
      <link>http://blogs.oracle.com/warehousebuilder/</link>
      <description>ETL for the Oracle Database, with New 11gR2 Features</description>
      <language>en</language>
      <copyright>Copyright 2009</copyright>
      <lastBuildDate>Wed, 18 Nov 2009 00:51:58 -0800</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

      
      <item>
         <title>How to turn on Logging for OWB 11.2 Design Client</title>
         <description><![CDATA[<p>OWB 11.2 uses one of the widely used logging API: the Java<sup>TM</sup> Logging APIs to handle log messages. The Java<sup>TM</sup> Logging APIs are introduced in package <a href="http://java.sun.com/j2se/1.5.0/docs/guide/logging/index.html">java.util.logging</a><font color="#000000"></font>, whose central goal is to support maintaining and servicing software at customer sites. With this built-in logging system, user can define OWB client logging with a configuration file that will be read at startup, such as defining delivering plain text or XML-formatted log records to the console or to a file. </p>
<h4><font style="font-size: 1.25em;"><b>Where does the configuration file locate?</b></font></h4>
<p>On Linux there is a text file called "logging.properties" under directory "&lt;owb installation path&gt;/owb/bin/" when OWB is installed. Copy "logging.properties" to "&lt;owb installation path&gt;/owb/bin/admin/", and change the file name to "owbclient.logging.properties". The same for Windows, copy "&lt;owb installation path&gt;\owb\bin\logging.properties" to "&lt;owb installation path&gt;\owb\bin\admin\", and change the file name to "owbclient.logging.properties".</p>
<p>This .properties file establishes the configuration of the logger as you desire. It is a text file in standard java.util.Properties format, with each line in format as "&lt;key&gt;=&lt;value&gt;". Any changes in this file like adding a new parameter will take effect next time you startup OWB.</p>
<h4><font style="font-size: 1.25em;"><b>How to configure the file?</b></font></h4>
<p>In the .properties file, you can specify "handlers" which export the logs to different places (to the console or a file), "messageFormat" of each handler (to format the output) and "levels" at many different points (so you only see messages of certain priorities), and you can even specify these options on a per-package or per-class basis. </p>
<p><strong>Here is an example file</strong>:</p>
<blockquote>
<p><i>handlers=java.util.logging.FileHandler,java.util.logging.ConsoleHandler</i></p>
<p><i>console.messageFormat={2}</i></p>
<p><i>file.message Format={1,time}:{2}</i></p>
<p><i>.level = INFO</i></p>
<p><i>sun.level = OFF</i></p>
<p><i>oracle.level = ALL</i></p>
<p><i></i></p>
<p><i>java.util.logging.FileHandler.pattern = %h/java%u.log</i></p>
<p><i>java.util.logging.FileHandler.limit = 50000</i></p>
<p><i>java.util.logging.FileHandler.count = 1</i></p>
<p><i>java.util.logging.FileHandler.level = ALL</i></p>
<p><i>java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter</i></p>
<p><i></i></p>
<p><i>java.util.logging.ConsoleHandler.level = CONFIG</i></p>
<p><i>java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter</i></p>
<p><em></em></p></blockquote>
<p><strong>Let us consider what each line in the configuration file is doing.</strong></p>
<blockquote>
<p align="left"><i>handlers=java.util.logging.FileHandler,java.until.logging.ConsoleHandler</i></p>
<p>Messages are sent to a FileHandler that writes log messages to a file and to a ConsoleHandler where messages are exported to the console.</p>
<p><i>console.messageFormat={2}</i></p>
<p>Messages output to the console consist of just the message.</p>
<p>&nbsp;<i>file.messageFormat={1,time}:{2}</i></p>
<p>Messages sent to the log file include the time a message was logged along with the message.</p>
<p>&nbsp;<i>.level = INFO</i></p>
<p>Set the root logger's level to INFO. This is the default level for all loggers. By setting the level of the root logger we ensure that all other loggers inherit that level except for the ones we set otherwise.</p>
<p>&nbsp;<i>sun.level = OFF</i></p>
<p>Messages logged by sun.* loggers will be filtered.</p>
<p>&nbsp;<i>oracle.level = ALL</i></p>
<p>Messages logged by oracle.* loggers will not be filtered (all).</p>
<p>&nbsp;<i>java.util.logging.FileHandler.pattern = %h/java%u.log</i></p>
<p>Set output file name. In this case the log file is placed in user's home directory as "~/java0.log" on Linux, and something like "C:\Documents and Settings\&lt;username&gt;\java0.log" on Windows, depending on Windows version and configurations. Pattern can consist of: %h - user's home directory, %t - temporary directory, %u - a unique identifier, %g - file count.</p>
<p>&nbsp;<i>java.util.logging.FileHandler.limit = 50000</i></p>
<p>Limit size of output file in bytes to 50000.</p>
<p><i>java.util.logging.FileHandler.count = 1</i></p>
<p>This is the number of output files to cycle through, by appending an integer to the base file name.</p>
<p>&nbsp;<i>java.util.logging.FileHandler.level = ALL</i></p>
<p>Override of global logging level. Define level for FileHandler to ALL, which means all messages will be written into log file.</p>
<p><i>java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter</i></p>
<p>Messages sent to log file are XML-formatted.</p>
<p>&nbsp;<i>java.util.logging.ConsoleHandler.level = CONFIG</i></p>
<p>Override of global logging level. Set level for ConsoleHandler to CONFIG, which means messages with level CONFIG or higher will be exported to the console.</p>
<p>&nbsp;<i>java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter</i></p>
<p>Messages output to the console are in plain text format</p></blockquote>
<p><strong>Let's go into details of this configuration file.</strong></p>
<ul>
<li>Handlers</li></ul>
<blockquote>
<p>The handler defines how the message is exported. For example, write them to the console or log them to a file. There are two standard handlers that are available, java.util.logging.FileHandler and java.util.logging.ConsoleHandler. In the following example a FileHandler is added which exports log messages to a file.</p></blockquote>
<blockquote><blockquote>
<p><i>handlers=java.util.logging.FileHandler</i></p></blockquote></blockquote>
<ul>
<li>MessageFormat</li></ul>
<blockquote>
<p>The messageFormat defines how the message is formatted. Each logging handler can have a messageFormat associated with it. The format can contain the following: </p></blockquote>
<blockquote>
<blockquote>
<p>{0} = level being logged </p>
<p>{1} = date/time of logged message</p>
<p>{2} = the log message</p>
<p>{3} = the 'class' that is logging the message</p></blockquote>
<blockquote>
<p>{4} = the 'method' that is logging the message</p></blockquote></blockquote>
<blockquote>
<p>For example if you set <i>file.messageFormat={1,date} {1,time}: {0} {2}</i>, messages printed to log file will be in format as</p>
<blockquote>
<blockquote></blockquote>
<p><i>Nov 17, 2009 6:54:59 AM: DEBUG_ALL Initializing the backend controllers.</i></p>
<blockquote></blockquote>
<p><i>Nov 17, 2009 6:54:59 AM: DEBUG_ALL Controller Initializer: oracle.wh.repos.pdl.APIController</i></p>
<p><i>Nov 17, 2009 6:54:59 AM: DEBUG_ALL JVM LIMIT DISABLED: 256M</i></p>
<p><i>Nov 17, 2009 6:55:00 AM: DEBUG_ALL Thread[Thread-2,5,main]CacheMediator.init:</i><br /></p></blockquote></blockquote>
<ul>
<li>Formatters</li></ul>
<blockquote></blockquote>
<blockquote>
<p>Possible formatters are <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/logging/SimpleFormatter.html"><font color="#000000">SimpleFormatter</font></a> which means printing message in a human readable format, and <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/logging/XMLFormatter.html"><font color="#000000">XMLFormatter</font></a> which means printing into a standard XML format. For example output messages to console in plain text format by setting</p></blockquote>
<blockquote>
<blockquote>
<p><i>java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter</i></p></blockquote></blockquote>
<ul>
<li>Levels</li></ul>
<blockquote>
<p>A level describes the lowest logging level of the message to process. Possible values in descending order are SEVERE, WARNING, INFO, DEBUG_CUSTOM, DEBUG_VERBOSE, DEBUG_ALL, CONFIG, FINE, FINER, FINEST. In addition there are two levels: OFF that can be used to turn off logging, and ALL to enable logging of all messages. You can set level SEVERE to ConsoleHandler with command</p>
<blockquote>
<p><i>Java.util.logging.ConsoleHandler.level = SEVERE</i></p></blockquote>
<blockquote></blockquote>
<p>Enabling logging at a given level also enables logging at all higher levels. For example, if you set level to INFO, then logged message of level INFO or higher will be output, while those lower will be filtered out. </p>
<p>Level can be applied at either handler or at the class name level, which means that you can control what the lowest level for output for a handler is, along with controlling the lowest level for output for a class name. For example you can set level of FileHandler to CONFIG, meanwhile set level of messages output from class oracle.owb.mapping.map to ALL by</p>
<blockquote>
<p><i>java.util.logging.FileHandler.level = CONFIG</i></p>
<p><i>oracle.owb.mapping.map.level = ALL</i></p></blockquote></blockquote>
<blockquote></blockquote>
<blockquote>
<p><em></em></p></blockquote>
<p>For detailed settings and complete use of Java<sup>TM</sup> Logging APIs see the JDK reference for <a href="http://java.sun.com/j2se/1.5.0/docs/guide/logging/index.html">java.util.logging</a><font color="#000000"></font>.</p>
<h4><font style="font-size: 1.25em;"><b>Things to consider when setting the log parameters</b></font></h4>
<p>Using logging in an application benefits in many ways, such as logging can generate detailed information about the operation, which helps support staff with troubleshooting. However, logging does not come without costs. For example, logging adds runtime overhead from generating log messages and from device I/O, also if logs are too verbose or badly formatted, extracting information from them can be difficult. Then how to log efficiently?</p>
<ul>
<li>Properly set logging level.</li></ul>
<blockquote style="margin-right: 0px;" dir="ltr">
<p>The lower the level is, the more messages will be logged. For example level SEVERE indicates just logging serious failures, while ALL indicates that all messages should be logged.</p></blockquote>
<ul>
<li>Turn off logging output from the packages you are not interested in.</li></ul>
<blockquote style="margin-right: 0px;" dir="ltr">
<p>For example if you are only interested in logging output from the "oracle.owb.mapping" package, you could do the following:</p>
<blockquote>
<p><em>.level=OFF</em></p></blockquote>
<blockquote>
<p><em>oracle.owb.mapping.level=ALL</em></p></blockquote></blockquote>
<ul>
<li>Turn off System.out.</li></ul>
<blockquote style="margin-right: 0px;" dir="ltr">
<p>The OWB Logger 'intercepts' the System.out stream and 're-routes' them as "DEBUG_CUSTOM" messages. So you can use the same mechanism to control how much System.out stuff you want to see. If you set the level on a logger to "CONFIG" or lower, you will see the System.out stuff, if you set it to INFO or higher, it will not be displayed. </p>
<p>You can completely disable this interception process by adding </p>
<blockquote>
<p><em>System.out.level = OFF</em></p></blockquote></blockquote>
<h4><font style="font-size: 1.25em;"><b>More examples</b></font></h4>
<p>Logging configuration can be modified for different target uses. For example if you only want to capture serious problems or common problems that can be fixed or tracked locally, such as running out of resources or simple configuration errors, you can set default level to SEVERE, or you need a log file sent to support for troubleshooting, then add a FileHandler and set its level to DEBUG_ALL to log more detailed information on the internal execution. </p>
<p>An example of configuration file with which only serious problems are captured:</p>
<blockquote>
<p><i>Handlers = java.util.logging.FileHandler,java.util.logging.ConsoleHandler</i></p>
<p><i>.level = SEVERE</i></p>
<p><i>file.messageFormat = {1,date} {1,time}: {2}</i></p>
<p><i>java.util.logging.FileHandler.pattern = %h/java%u.log</i></p>
<p><i>java.util.logging.FileHandler.limit = 50000</i></p>
<p><i>java.util.logging.FileHandler.count = 1</i></p>
<p><i>java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter</i></p>
<p><i>java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter</i></p></blockquote>
<p><i></i></p>
<p><i></i></p>
<p>An example of configuration file with which detailed information will be logged for troubleshooting:</p>
<p><i></i></p>
<blockquote>
<p><i>handlers = java.util.logging.FileHandler</i></p>
<p><i>.level = DEBUG_ALL</i></p>
<p><i>file.messageFormat = </i><i>{1,date} {1,time}: {0} {2}</i></p>
<p><i>java.util.logging.FileHandler.pattern = %h/java%u.log</i></p>
<p><i>java.util.logging.FileHandler.limit = 50000</i></p>
<p><i>java.util.logging.FileHandler.count = 1</i></p>
<p><i>java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter</i></p></blockquote>]]></description>
         <link>http://blogs.oracle.com/warehousebuilder/2009/11/how_to_turn_on_logging_for_owb_112_design_client.html</link>
         <guid>http://blogs.oracle.com/warehousebuilder/2009/11/how_to_turn_on_logging_for_owb_112_design_client.html</guid>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11gR2</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Logging</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">configuration</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">howto</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">owb</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">startup</category>
        
         <pubDate>Wed, 18 Nov 2009 00:51:58 -0800</pubDate>
      </item>
      
      <item>
         <title>OWB 11gR2 - Subquery</title>
         <description><![CDATA[<p>One of the new mapping operators introduced in 11gR2 is the much talked about (over the years) subquery filter operator. As well as the heterogeneous capabilities added, a number of enhancements to existing operators (such as joiner and lookup operator) and a few new ones were added. The subquery filter supports the SQL grammar for exists, in, no exists and not in.</p>  <p>This simple example illustrated here illustrates a scenario where we want to get all the addresses of customers where they have a high credit limit and are married for example. The filter on customers gets the customers who are married and have a credit limit &gt; 10000;</p>  <p>   <br /><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2Subquery_C14C/subquery_example1.jpg"><img title="subquery_example1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="subquery_example1" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2Subquery_C14C/subquery_example1_thumb.jpg" width="586" border="0" /></a>     <br /></p>  <p>The subquery filter operator is defined to use the Exists query type and a condition since we have a correlated subquery;</p>  <p>   <br /><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2Subquery_C14C/subquery_example2.jpg"><img title="subquery_example2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="subquery_example2" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2Subquery_C14C/subquery_example2_thumb.jpg" width="532" border="0" /></a>     <br /></p>  <p>The generated SQL with the correlated subquery looks like this;</p>  <p><font face="Courier New" size="1">SELECT     <br />&#160; &quot;ADDRESSES&quot;.&quot;CUSTOMER_ID&quot; &quot;CUSTOMER_ID&quot;,      <br />&#160; &quot;ADDRESSES&quot;.&quot;PHONE_NUMBER&quot; &quot;PHONE_NUMBER&quot;,      <br />&#160; &quot;ADDRESSES&quot;.&quot;CUST_STREET_ADDRESS&quot; &quot;CUST_STREET_ADDRESS&quot;,      <br />&#160; &quot;ADDRESSES&quot;.&quot;CUST_POSTAL_CODE&quot; &quot;CUST_POSTAL_CODE&quot;,      <br />&#160; &quot;ADDRESSES&quot;.&quot;CITY_ID&quot; &quot;CITY_ID&quot;      <br />FROM      <br />&#160; &quot;ADDRESSES&quot;&#160; &quot;ADDRESSES&quot;      <br />&#160; WHERE       <br />&#160; (EXISTS (SELECT      <br />&#160; 1&#160; <br />&#160; FROM      <br />&#160; &quot;CUSTOMERS&quot;&#160; &quot;CUSTOMERS&quot;      <br />&#160; WHERE       <br />&#160; ( &quot;CUSTOMERS&quot;.&quot;MARITAL_STATUS&quot; = 'married' )&#160; AND      <br />&#160; ( &quot;CUSTOMERS&quot;.&quot;CREDIT_LIMIT&quot; &gt; 10000)&#160; AND      <br />&#160; ( <strong>&quot;CUSTOMERS&quot;.&quot;ID&quot; = &quot;ADDRESSES&quot;.&quot;CUSTOMER_ID&quot;</strong> ) )) </font></p>  <p>When the mapping is executed the result is a table with contact information;</p>  <p>   <br /><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2Subquery_C14C/subquery_example4.jpg"><img title="subquery_example4" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="subquery_example4" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2Subquery_C14C/subquery_example4_thumb.jpg" width="397" border="0" /></a>&#160;</p>  <p>The OWB mapping operators are all pluggable together, so we can take this example further to utilize a lookup operator for example, so the CITY_ID is also taken from addresses and we lookup the CITY_NAME and STATE_PROVINCE from the CITIES table, and the resultant table has this information.    <br />So the mapping now looks like;     <br /><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2Subquery_C14C/subquery_example5.jpg"><img title="subquery_example5" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="154" alt="subquery_example5" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2Subquery_C14C/subquery_example5_thumb.jpg" width="644" border="0" /></a>     <br />The data after execution in the resultant table has;</p>  <p>   <br /><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2Subquery_C14C/subquery_example6.jpg"><img title="subquery_example6" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="326" alt="subquery_example6" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2Subquery_C14C/subquery_example6_thumb.jpg" width="644" border="0" /></a> </p>  <p>So the subquery filter lets you model more scenarios than previous releases, there are still some cases that are not supported such as using less than (&lt;) for example rather than exists/in etc. So the following style where clause 'where quantity &lt; (select max(quantity) from sales where book_key = s.book_key)' cannot be modeled.</p>  <p>So what to do in this case? There is another new mapping related feature which is interesting is the in-line view operator. The view operator has an inline property such that if this is checked the SQL defined within OWB for the view will be placed 'in-line' in the generated code rather than the view name.</p>  <p>Here we have seen the subquery filter mapping operator introduced in 11gR2. The subquery filter supports the SQL grammar for exists, in, no exists and not in.</p>]]></description>
         <link>http://blogs.oracle.com/warehousebuilder/2009/11/owb_11gr2_-_subquery.html</link>
         <guid>http://blogs.oracle.com/warehousebuilder/2009/11/owb_11gr2_-_subquery.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">ETL</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11gR2</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Data Integrator</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Data integration</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ODI</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">OWB</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">SQL</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Subquery</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">correlated</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">filter</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">mapping</category>
        
         <pubDate>Tue, 10 Nov 2009 23:02:46 -0800</pubDate>
      </item>
      
      <item>
         <title>Introducing the new startup configuration file for OWB 11.2</title>
         <description><![CDATA[<p>As OWB adopts the Fusion Client Platform (FCP), it is now using the new FCP startup configuration file for specifying the startup parameters for OWB. Unlike previous versions of OWB, where startup parameters are directly set inside the file owbclient.sh (for Linux) or owbclient.bat (for Windows), we now have a specific file named &quot;owb.conf&quot; that stores those startup settings for both Windows and Linux. You can navigate to &quot;&lt;owb installation path&gt;/owb/bin/&quot;, and there it is! Just go and take a look at the file.</p>  <p><strong>1. Let's examine "owb.conf"</strong></p>  <p>Below is an example of &quot;owb.conf&quot;. &quot;owb.conf&quot; is a text file, and each startup setting is organized per line. Settings are sequence-insensitive, as each of them refers to different meaning. Looking into each line, the setting has such format as "&lt;command&gt; &lt;parameter(s)&gt;", where &lt;command&gt; is FCP specific and &lt;parameter(s)&gt; is specific to each command.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/Introducingthenewstartupconfigurationf.2_C502/blog%20pic_1.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="blog pic" border="0" alt="blog pic" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/Introducingthenewstartupconfigurationf.2_C502/blog%20pic_thumb_1.jpg" width="434" height="280" /></a> </p>  <p>Here are some useful commands for your reference. All commands are CASE SENSITIVE.</p>  <p>1) AddVMOption</p>  <p>Include command-line option when invoking the JVM. The standard options recognized by Java VM are described on the Java Application Launcher reference pages for <a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/java.html">Windows</a> and <a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/linux/java.html">Linux</a>.</p>  <p>2) AddJavaLibFile</p>  <p>Add jar/zip file or directory to classpath for OWB.</p>  <p>3) SetJavaHome</p>  <p>Set the path where JDK/JRE are installed.</p>  <p>4) SetSkipJ2SDKCheck</p>  <p>This parameter is used to specify whether checking JRE installation under JAVA_HOME. If "SetSkipJ2SDKCheck" is set, JRE installation checking is skipped during OWB startup. For OWB, we always set "SetSkipJ2SDKCheck" true.</p>  <p>5) IncludeConfFile</p>  <p>Include another .conf file so that you can allow common or specific configuration to be defined into separate .conf files. For example the preceding "owb.conf" includes "owb-nodebug.conf" which specifies JVM logging setting.</p>  <p><strong>2. JAVA: Out of Memory Error</strong></p>  <p>The default settings in the "owb.conf" that comes with our OWB 11.2 release shall satisfy most of our customers' needs. Occasionally, you may find a need to modify this configuration file. </p>  <p>For example, if you have a huge MDL file that you want to import, you may run into this JAVA error: </p>  <p>Exception in thread &quot;xxxx&quot; java.lang.OutOfMemoryError: Java heap space</p>  <p>To get rid of the issue, you can simply increase the maximum Java heap size based on your physical memory. Go ahead and add following line into "owb.conf":</p>  <p>AddVMOption -Xmx768M</p>  <p>There we go! Restart OWB and try import that MDL file again, the new VM setting should be applied and you should be able to import the same MDL file successfully.</p>]]></description>
         <link>http://blogs.oracle.com/warehousebuilder/2009/11/introducing_the_new_startup_configuration_file_for_owb_112.html</link>
         <guid>http://blogs.oracle.com/warehousebuilder/2009/11/introducing_the_new_startup_configuration_file_for_owb_112.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">How to ...</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11gR2</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">configuration</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">fcp</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">flexibility</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">howto</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">owb</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">startup</category>
        
         <pubDate>Tue, 10 Nov 2009 22:01:37 -0800</pubDate>
      </item>
      
      <item>
         <title>OWB Certification Information in New Metalink/My Oracle Support</title>
         <description><![CDATA[<p>Just a quick tip: The new My Oracle Support launched a couple of days ago, and information in the Certification section has been rearranged. OWB is now listed under:<a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWBCertificationInformationinNewMetalink_144F5/screenshot0031-cropped_2.jpg"><img title="screenshot0031-cropped" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="94" alt="screenshot0031-cropped" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWBCertificationInformationinNewMetalink_144F5/screenshot0031-cropped_thumb.jpg" width="244" align="right" border="0" /></a></p>  <ul>   <li>Product Line Middleware </li>    <li>Product Family Business Intelligence </li>    <li>Product Area Oracle Warehouse Builder</li> </ul>  <p> A screenshot from the new support UI is attached. This covers even older OWB versions that were shipped by or with the database division.</p>  <p>Took me a while to find it; figured I’d save some of you some time. :)</p>]]></description>
         <link>http://blogs.oracle.com/warehousebuilder/2009/11/owb_certification_information_in_new_metalinkmy_oracle_support.html</link>
         <guid>http://blogs.oracle.com/warehousebuilder/2009/11/owb_certification_information_in_new_metalinkmy_oracle_support.html</guid>
        
        
         <pubDate>Mon, 09 Nov 2009 23:06:53 -0800</pubDate>
      </item>
      
      <item>
         <title>OWB 11gR2: A New User Interface and How to Restore Factory Layouts</title>
         <description><![CDATA[<p>Starting from 11gR2, OWB has adopted the Fusion Client Platform (FCP), which is the same IDE platform as Jdeveloper and SQL Developer. FCP provides an efficient and flexible way to manage navigators, panels and editors. When we login to OWB Design Client the first time, we have a interface as shown in fig 1. Projects Navigator, Locations Navigator, Globals Navigator, Graphical Navigator and Structure Explorer are bundled on the left. The main window is a Start Page, which links to many useful documentations as well as online resources, and is a good place to get started. </p>  <p align="center"><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2ANewUserInterfaceandHowtoRestore_BF6E/owb_start_4.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="owb_start" border="0" alt="owb_start" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2ANewUserInterfaceandHowtoRestore_BF6E/owb_start_thumb_1.jpg" width="484" height="344" /></a>&#160;<b>Fig. 1</b></p>  <p>With 11gR2, multiple editors can be opened for editing at the same time. Take a look at fig 2, we have two mapping editors and one table editor. Projects navigator is minimized for better utilization of screen space, while Property Inspectors and Component Palette are docked for easier manipulation of mappings and access to component properties. All panels and editors can be dragged, resized, or docked as preferred, and the layout is fully customizable. If you would like to change the overall window layout, you can go to menu Tools-&gt;Preference-&gt;Environment-&gt;Dockable Windows. </p>  <p align="center"><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2ANewUserInterfaceandHowtoRestore_BF6E/owb_multi_editors_4.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="owb_multi_editors" border="0" alt="owb_multi_editors" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2ANewUserInterfaceandHowtoRestore_BF6E/owb_multi_editors_thumb_1.jpg" width="484" height="346" /></a>&#160;<b>Fig. 2</b></p>  <p>Interested in OWB 11gR2 user interface? Take a <a href="http://download.oracle.com/docs/cd/E11882_01/owb.112/e10581/uitour.htm#BABFDIHH">User Interface Tour</a>.</p>  <p>However, in rare cases, the layouts just get messed up. For instance, Property Inspector is gone missing. Fortunately, we can restore the factory default layout by removing the layout setting files. There was <a href="http://blogs.oracle.com/warehousebuilder/2007/05/lost_your_panels_in_the_ui_her.html">a post</a> talking about this, but as time goes by, the content is outdated and may not be applied to 11gR2. Let's look into how to fix this in 11gR2.</p>  <p><strong>1. Locate the settings directory.</strong></p>  <p>On Linux, it is &quot;~/.owb&quot; (aka $HOME/.owb). This is a hidden folder under your home directory. Suppose your login handler is &quot;tom&quot;, and you started OWB Design Client before, the setting directory for you sould be &quot;/home/tom/.owb&quot;.</p>  <p>On Windows, it is &quot;%APPDATA%/OWB&quot;. Depending on Windows version and configurations, it should be something like &quot;C:\Documents and Settings\&lt;username&gt;\Application Data\OWB&quot; on Windows XP.</p>  <p>(Note: For earlier releases, &quot;$OWB_HOME/owb/bin/admin&quot; is used.)</p>  <p><strong>2. Change current working directory to the settings direcotry and delete setting files.</strong></p>  <p>Under the settings directory, there is a folder named system11.2.0.X.X, where X.X is version numbers. Usually on a fresh install, you only have one folder, but if you upgraded from previous versions, there might be more than one. By removing these folders, the layout will be restored to factory defaults. </p>  <p>Following is an example on how to remove the setting directory from command line. If you prefer, you can also use a GUI explorer instead, but make sure hidden files are shown.</p>  <p>On Linux:</p>  <blockquote>   <pre><code>
$ cd ~/.owb
$ ls 
system11.2.0.1.85
$ rm -rf system11.2.0.*
$
  </code></pre>
</blockquote>

<p>On Windows:</p>

<blockquote>
  <pre><code>
&gt;cd %APPDATA%/OWB
&gt;dir
08/28/2009&#160; 01:54 PM&#160;&#160;&#160; &lt;DIR&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; system11.2.0.1.85
&gt;del /s /f system11.2.0.*
&gt;
  </code></pre>
</blockquote>

<p>Now, if you start the Design Client, you should see the factory default layout as shown in fig 1 again. And don't worry. Your data stored in database repository are kept safe and untouched. </p>

<p>&#160;</p>

<p><strong>Extended Reading:</strong></p>

<p><a href="http://download.oracle.com/docs/cd/E11882_01/owb.112/e10581/uitour.htm#BABFDIHH">OWB User Interface Tour</a></p>

<p><a href="http://download.oracle.com/docs/cd/E11882_01/owb.112/e10581/whatsnew.htm">What's New in OWB 11gR2</a></p>]]></description>
         <link>http://blogs.oracle.com/warehousebuilder/2009/11/owb_11gr2_a_new_user_interface_and_how_to_restore_factory_layouts.html</link>
         <guid>http://blogs.oracle.com/warehousebuilder/2009/11/owb_11gr2_a_new_user_interface_and_how_to_restore_factory_layouts.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">How to ...</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11gR2</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">UI</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">fcp</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">features</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">flexibility</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">howto</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">layout</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">userinterface</category>
        
         <pubDate>Tue, 03 Nov 2009 21:48:43 -0800</pubDate>
      </item>
      
      <item>
         <title>More Developers to Join OWB Blog</title>
         <description><![CDATA[<p>David Allan's posts have been a major part of making the OWB Blog a must-read for our users. Soon, though, he will be joined by more members of our development staff, who will be bringing you more how-tos and insights into OWB 11.2 features that help you get the most value out of the tool. </p>

<p>The first of these should be up shortly-- keep an eye out for it. </p>]]></description>
         <link>http://blogs.oracle.com/warehousebuilder/2009/11/more_developers_to_join_owb_blog.html</link>
         <guid>http://blogs.oracle.com/warehousebuilder/2009/11/more_developers_to_join_owb_blog.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Metadata</category>
        
        
         <pubDate>Tue, 03 Nov 2009 15:59:50 -0800</pubDate>
      </item>
      
      <item>
         <title><![CDATA[OWB 11gR2 &ndash; Template mapping variables?]]></title>
         <description><![CDATA[<p>Here we'll see how you can add runtime variables and reference them from code template mappings in OWB 11gR2; variables can be used in many places including expressions, filters, joiners and execution unit code template assignments. This lets you control how some aspects of the mapping will behave at execution time. Traditional database resident mappings support mapping input parameters, in 11gR2 the template mappings can be extended in many ways and this is one illustration.</p>  <p>This is essentially a small extension where a table holding the variable names and values is defined, a data source in the agent to identify where the variable table is defined and there is a JAR file with the support for setting and getting variable values.</p>  <p><strong>Setup</strong></p>  <p>There are a few steps to configure OWB to support this (the zip is <a href="http://blogs.oracle.com/warehousebuilder/variables.zippy">here</a>) using a small custom extension I have created. Firstly copy the owbutils.jar file to the owb/lib/ext directory of the CCA host, then stop and start the agent. The table OWB_CT_VARIABLES should be defined in a schema of the user's choice, there is a SQL script supplied for Oracle named variables_oracle.sql in the zip, execute this in a schema of your choice.</p>  <p>The table OWB_CT_VARIABLES is defined with the following columns to represent the variable name and the variable value:</p>  <ul>   <li>variable_name </li>    <li>variable_value </li> </ul>  <p>So to define a new variable insert a name and value into this table, for example the variable VAR_REGEXP is added below with the vale orderitems.*gz;</p>  <blockquote>   <p>insert into owb_ct_variables values ('VAR_REGEXP', 'orderitems.*gz');</p>    <p>commit;</p> </blockquote>  <p>You can refer to variables inside expressions in OWB, for example within filter, join and expression operators, they can also refer to variables from within code template options in a mapping.</p>  <p><strong>Configuring the Agent</strong></p>  <p>Finally create a data source named <strong>jdbc/OWBCTVariablesDS</strong> in the Control Center Agent (CCA). The data source points to the schema containing the table used for storing the variables. Below is an example of a data-sources.xml file (in owb/jrt/config) that has a data sources added.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2Runtimevariables_135E6/owb_data_source.jpg"><img title="owb_data_source" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="owb_data_source" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2Runtimevariables_135E6/owb_data_source_thumb.jpg" width="402" border="0" /></a> </p>  <p>The data source named jdbc/OWBCTVariablesDS is used by the variable API that provides operations on variables to get and set variable values (the API is available when the jar file is copied to owb/lib/ext) - there are also increment/decrement operations for integers.<b></b></p>  <p><strong>Illustrations</strong></p>  <p>To illustrate lets look at an example that loads sets of files into a target table. The file list is dynamic and needs to be a regular expression that can be supplied to load all order items files with the gz (compression) suffix in one run. Another example will load all records from files with a transaction date greater than some date we define at runtime. The table OWB_CT_VARIABLES has the variable names and values;    <table cellpadding="0" border="1"><tbody>       <tr>         <td>           <p><b>variable_name</b></p>         </td>          <td>           <p><b>variable_value</b></p>         </td>       </tr>        <tr>         <td>           <p>VAR_REGEXP</p>         </td>          <td>           <p>orderitems.*gz</p>         </td>       </tr>        <tr>         <td>           <p>VAR_TXNDATE</p>         </td>          <td>           <p>5-MAY-2009</p>         </td>       </tr>     </tbody></table> </p>  <p>Taking the mapping from the <a href="http://blogs.oracle.com/warehousebuilder/2009/10/owb_11gr2_bulk_file_loading_-_more_faster_easier.html">post on bulk loading files</a>, if we look at code template options we can also use variables here too, so we can solve our challenge by getting the variable value for the filename regular expression to use, the example will use the VAR_REGEXP variable name to obtain the expression for file names at runtime.</p>  <p>&#160;<a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2Runtimevariables_135E6/owb_file_reg_exp_variables_2.jpg"><img title="owb_file_reg_exp_variables" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="463" alt="owb_file_reg_exp_variables" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2Runtimevariables_135E6/owb_file_reg_exp_variables_thumb.jpg" width="644" border="0" /></a>     <br />This lets us deploy the mapping once and execute the mapping with whatever values we desire for the regular expression since the value is pulled at runtime.</p>  <p><strong>Another illustration using a filter</strong></p>  <p>In this example we define a filter to get all records after the date defined in the variable, we define the condition below, using the API (ctvariable.get) passing the variable name;    <br /><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2Runtimevariables_135E6/clip_image002%5B4%5D.jpg"><img title="clip_image002[4]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="387" alt="clip_image002[4]" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2Runtimevariables_135E6/clip_image002%5B4%5D_thumb.jpg" width="468" border="0" /></a>     <br />Note the \u0022 character which will give us the required quotes through the code generation. Depending on where the expression is defined will change how the code is written, inside a mapping expression the Unicode character is required, in the mapping template options use the quotation mark. </p>  <p><strong>Summary</strong></p>  <p>Here we have seen how you can add runtime variables and reference them from code template mappings in OWB 11gR2; the variables can be used in many places including expressions, filters, joiners and execution unit code template assignments letting you control aspects of the execution at runtime.</p>]]></description>
         <link>http://blogs.oracle.com/warehousebuilder/2009/10/owb_11gr2_template_mapping_variables.html</link>
         <guid>http://blogs.oracle.com/warehousebuilder/2009/10/owb_11gr2_template_mapping_variables.html</guid>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11gR2</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Data Integration</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">dynamic</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">flexibility</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">integration</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">odi</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">owb</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">template</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">variable</category>
        
         <pubDate>Sun, 25 Oct 2009 21:26:22 -0800</pubDate>
      </item>
      
      <item>
         <title><![CDATA[OWB 11gR2 &ndash; Cube Organized Materialized Views]]></title>
         <description><![CDATA[<p>Here we will look at building cube organized materialized views for a relational fact table. The illustration uses the Oracle OLAP 11g Sample Schema and rather than the cube organized materialized views being created via the script in the demo, they will be designed and generated from OWB. The cubes and dimensions designed in OWB can serve multiple purposes;</p>  <ul>   <li>physical data warehouse tables may be generated </li>    <li>dimensionally aware ETL operators for maintaining data </li>    <li>cube organized materialized views generated for summary management and performance </li>    <li>derive the OBIEE layers - a great metadata integration scenario. </li> </ul>  <p>OWB 11gR2 supports the design of 11g form Analytic Workspaces (as well as 10g form AWs), multidimensional designs can be deployed as 11g cubes PLUS the relational fact table can be summarized using cube organized materialized views.</p>  <p>Firstly let's download the OLAP training example <a href="http://www.oracle.com/technology/products/bi/olap/11g/samples/schemas/readme.html">here</a>. Complete the 'Installing the base OLAPTRAIN schema' step, do not install the analytic workspace (I did this on Linux). We must then import the base table metadata into OWB, we will build dimensions and cubes on top of these tables next. There are further performance illustrations based on these examples that we will illustrate leverage on, the Oracle database viewlet can be found on OTN at <a href="http://www.oracle.com/technology/products/bi/olap/11g/demos/olap_cube_mvs_demo.html">Improving Query Performance with Oracle OLAP Cube MVs</a>.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap1_2.jpg"><img title="owb_olap1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="owb_olap1" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap1_thumb.jpg" width="262" border="0" /></a> </p>  <p>Now execute the OWB OMB script (download <a href="http://blogs.oracle.com/warehousebuilder/owb_olaptrain.tcl">here</a>) to create the cubes and dimensions which are bound to these tables. The script creates the dimensional model.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap2_2.jpg"><img title="owb_olap2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="111" alt="owb_olap2" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap2_thumb.jpg" width="249" border="0" /></a> </p>  <p>This will define the dimensions and cubes and setup the storage type which will inform OWB to generate cube organized materialized views.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap3_2.jpg"><img title="owb_olap3" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="243" alt="owb_olap3" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap3_thumb.jpg" width="252" border="0" /></a> </p>  <p>For example the SALES_CUBE object is bound to the underlying fact table SALES_FACT below. The dimensional model defined is skeletal, so the dimensions primarily just have their hierarchies defined for demo purposes (ie. not all dimension attributes are defined).</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap4_2.jpg"><img title="owb_olap4" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="210" alt="owb_olap4" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap4_thumb.jpg" width="404" border="0" /></a> </p>  <p>We can see the cube and dimensions are all defined to be stored as relational using cube organized materialized views, they have the 'ROLAP: with Cube MVs' option enabled. This lets the user select information from both the relational storage options (such as create bitmap indexes) and from the multidimensional storage options such as the name for the analytic workspace.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap5_2.jpg"><img title="owb_olap5" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="owb_olap5" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap5_thumb.jpg" width="242" border="0" /></a> </p>  <p>As it stands if we deployed the summary in the AW would have the same grain as the base fact table, which is much more than we need for summary management. To illustrate, if the code is generated for the cube we can see the join from the SALES_FACT table to the TIMES table is based on the DAY_KEY and also the expression loaded into the cube is DAY_KEY (see the Expression and JoinCondition properties below). Remember the DAY level is our lowest level for the time dimension in our cube.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap6_2.jpg"><img title="owb_olap6" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="owb_olap6" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap6_thumb.jpg" width="343" border="0" /></a> </p>  <p>So what about storing summaries at the non-leaf level...? Read on...</p>  <p><strong>Summary levels in cube organized materialized view</strong></p>  <p>If we want to summarize at a non-leaf level in the cube, then we must change the dependent dimensions' summary load level. For example we can see just now in the TIMES_DIM dimension the summary load level is not set (so the leaf is used).</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap7_2.jpg"><img title="owb_olap7" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="146" alt="owb_olap7" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap7_thumb.jpg" width="404" border="0" /></a> </p>  <p>We can set the MONTH level for the STANDARD hierarchy as the summary level, the base facts are still stored in the relational fact table at DAY, but the summary is loaded into the cube organized materialized view for MONTH.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap8_2.jpg"><img title="owb_olap8" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="153" alt="owb_olap8" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap8_thumb.jpg" width="404" border="0" /></a> </p>  <p>Now if we generate the cube we will see the join condition is still the same but the expression for TIMES is now MONTH_ID (see the Expression="TIMES.MONTH_ID" name value pair below).</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap9_2.jpg"><img title="owb_olap9" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="owb_olap9" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap9_thumb.jpg" width="350" border="0" /></a> </p>  <p>Generating the dimensions generates multiple scripts; one script is the relational DDL which goes to the DAY level, and the other script is to build the dimension definitions in the AW which have the summary level in the cube organized view as MONTH.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap10_2.jpg"><img title="owb_olap10" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="160" alt="owb_olap10" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap10_thumb.jpg" width="404" border="0" /></a> </p>  <p>What's the point of storing the entire fact table in the MV again? Silly right? Just as well we can define the summary level that is loaded in the cube organized materialized view. We can for example change the PRODUCT_DIM dimension to have a summary level of SUBTYPE rather than the base of ITEM. Note this is done on the dimension, not on the cube.</p>  <p><strong>So why will this generate a materialized view....?</strong></p>  <p>There are configuration properties that tell the OWB code generator to enable the MV creation, see the figure below initially the script created the Enable Query Rewrite with value DISABLE, we must change this to ENABLE.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap11_2.jpg"><img title="owb_olap11" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="158" alt="owb_olap11" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap11_thumb.jpg" width="246" border="0" /></a>&#160;&#160;&#160; ==&gt;Enable==<strong>&gt;</strong>&#160;<a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap12_2.jpg"><img title="owb_olap12" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="155" alt="owb_olap12" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_olap12_thumb.jpg" width="269" border="0" /></a>&#160;&#160;&#160; </p>  <p>Once this has been changed then when we generate and deploy all the dimensions and cube an AW is created with a cube setup for rewrite using cube organized materialized views.</p>  <p><strong>Show me the MVs....</strong></p>  <p>After the dimensions and cubes have been deployed, you can inspect the Oracle dictionary to see the materialized views created, and even open up AWM and see the cubes and dimensions created by OWB to represent the cube organized materialized view.</p>  <p>Here we see the materialized views created;</p>  <p><em>SQL&gt; select mview_name from user_mviews; </em></p>  <p><em>MVIEW_NAME      <br />------------------------------       <br />CB$SALES_CUBE       <br />CB$CHANNELS_DIM_STANDARD       <br />CB$CUSTOMERS_DIM_STANDARD       <br />CB$PRODUCTS_DIM_STANDARD       <br />CB$TIMES_DIM_STANDARD</em></p>  <p>In AWM we can see the TIMES_DIM dimension for example does not have the DAY level loaded, the summary in the AW starts at the MONTH level, base fact data is stored in the relational fact table, and is not replicated in the AW.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_cubemv_awm1_2.jpg"><img title="owb_cubemv_awm1" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="221" alt="owb_cubemv_awm1" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_cubemv_awm1_thumb.jpg" width="404" border="0" /></a> </p>  <p>The cube is defined with all of the desired materialized view options enabled.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_cubemv_awm2_2.jpg"><img title="owb_cubemv_awm2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="owb_cubemv_awm2" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2CubeOrganizedMaterializedViews_E162/owb_cubemv_awm2_thumb.jpg" width="366" border="0" /></a> </p>  <p>&#160;</p>  <p><strong>Refreshing the materialized views...</strong></p>  <p>Above we configured the materialized views to refresh on demand, with this options we have to manually execute the refresh of the materialized views. The views can also be refreshed on commit (when the data is inserted into the fact or dimension table, the summary is automatically refreshed) or periodically using a simple schedule (using start date and next date expressions).</p>  <p>To manually refresh, detach from the AW in AWM. Now let's manually refresh the materialized views from SQLPlus (just like regular database materialized views you can refresh on demand, on commit, on a scheduler etc.). </p>  <ul>   <li>execute DBMS_SNAPSHOT.REFRESH('CB$CHANNELS_DIM_STANDARD','C') </li>    <li>execute DBMS_SNAPSHOT.REFRESH('CB$CUSTOMERS_DIM_STANDARD','C') </li>    <li>execute DBMS_SNAPSHOT.REFRESH('CB$PRODUCTS_DIM_STANDARD','C') </li>    <li>execute DBMS_SNAPSHOT.REFRESH('CB$TIMES_DIM_STANDARD','C') </li>    <li>execute DBMS_SNAPSHOT.REFRESH('CB$SALES_CUBE','C') </li> </ul>  <p>These steps could be included in a process flow for example or other OWB objects (transformations, pre mapping transformation and so on) and executed.</p>  <p><strong>Summary</strong></p>  <p>In summary we have see how cube organized materialized views can be generated from a relational data warehouse design in OWB 11gR2. The rich metadata definitions captured in the OWB designer provide many benefits from data warehouse design to a rich set of operators built specifically for loading warehouses, to summary management capabilities and business reporting integration. In subsequent postings we'll see the query plans and integration with OBIEE.</p>]]></description>
         <link>http://blogs.oracle.com/warehousebuilder/2009/10/owb_11gr2_cube_organized_materialized_views.html</link>
         <guid>http://blogs.oracle.com/warehousebuilder/2009/10/owb_11gr2_cube_organized_materialized_views.html</guid>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11gr2</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Data Integration</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">aw</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">cube</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">cube mvs</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">dimension</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">odi</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">olap</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">olaptrain</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">owb</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">performance</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">rewrite</category>
        
         <pubDate>Sun, 25 Oct 2009 21:16:03 -0800</pubDate>
      </item>
      
      <item>
         <title><![CDATA[Yesterday: Successful Unconference Event &ndash; Today: OWB @ The W]]></title>
         <description><![CDATA[<p>So yesterday’s Unconference event at OOW was a great success, The Overlook was mostly full, the technology mostly cooperated, and attendees mostly chose to stick with us till the end rather than running for the keynote :) </p>  <p>Mark Rittman presented his experiences with the OBI EE integration in OWB 11.2 and the rest of the product, and David Allan described some of the more advanced possibilities of OWB 11.2 Hybrid Mappings.&#160; The audience was mostly current OWB users and partners, some of whom had also worked with 11.2 and had their own positive feedback.</p>  <p>This afternoon’s customer event (<a href="http://blogs.oracle.com/warehousebuilder/2009/09/owb_the_w_hotel_warehouse_builder_goes_hybrid.html" target="_blank"><strong>OWB @ the W Hotel: Warehouse Builder Goes Hybrid</strong></a><strong>,</strong> 2-4PM, W Hotel, Workroom 2) should be an even bigger draw, with more speakers, more interactivity, and more time to delve into detail. Talk with a panel of OWB gurus (Oracle staff and independent experts) about the latest release, OWB 11.2.</p>]]></description>
         <link>http://blogs.oracle.com/warehousebuilder/2009/10/yesterday_successful_unconference_event_today_owb_the_w.html</link>
         <guid>http://blogs.oracle.com/warehousebuilder/2009/10/yesterday_successful_unconference_event_today_owb_the_w.html</guid>
        
        
         <pubDate>Thu, 15 Oct 2009 09:51:09 -0800</pubDate>
      </item>
      
      <item>
         <title><![CDATA[OWB 11gR2 &ndash; Bulk File Loading - more, faster, easier]]></title>
         <description><![CDATA[<p>A common problem in warehouses is to load a number of similar files into the database, often the filenames are dynamic so the names cannot be hard-wired, if they are known its easy enough to configure the external table or SQL*Loader mapping with those names. What to do in the dynamic case? Well, here we will see one approach using code templates, we can create a design for what we want and apply it in a code template. We can load more files, faster and easier. This is a great example of customizations of the power of customizations where new templates can be created to solve real world problems.</p>  <p>There are 2 requirements we will specify for the file loading mechanics - the first is to allow a regular expression to be supplied in order to load all files that match a pattern and the second is to support compressed file loading.</p>  <p><strong>The Starting Point</strong></p>  <p>Where to start? The File to External Table code template is a fair starting point, this creates an external table for staging a single file from the file-system via an external table in the Oracle database. Currently the template stages a single file with some small changes we can enhance this to stage many files and also incorporate the preprocessor to handle compressed data.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/9e31fc2dc492_E72D/owb_bulk_files_2.gif"><img title="owb_bulk_files" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="209" alt="owb_bulk_files" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/9e31fc2dc492_E72D/owb_bulk_files_thumb.gif" width="644" border="0" /></a> </p>  <p>Essentially all we have to do is define some options on a code template so that a regular expression could be supplied for the desired file names, we will change the template so that it retrieves all filenames that matched the regular expression. An additional change will be to support the preprocessor directive to load directly from compressed files (for example). This will provide better performance of moving the file over the network - often very large files are compressed, this significantly reduces the time to transfer. Rather than having to uncompress this compressed file it can be streamed directly into the database. The Oracle database's external table has a PREPROCESSOR directive to fulfill this exact requirement. Including this as an option in the code template will add significant capabilities.</p>  <p><strong>The Template</strong></p>  <p>Rather than editing the File to Oracle external table seeded template we will use this as a basis. Using the OWB OMB scripting language, we will copy-paste the file to external table code template and apply the changes. Using this approach we can take updates to this base and apply the changes using the script (download <a href="http://blogs.oracle.com/warehousebuilder/lct_files_to_oracle_exttab.tcl">here</a>). Below we will look at excerpts of it. Firstly using OMB we can copy paste existing templates to customize.</p>  <blockquote>   <p><font face="Courier New" size="1">OMBCOPY CT '/PUBLIC_PROJECT/BUILT_IN_CT/LCT_FILE_TO_ORACLE_EXTER_TABLE' TO 'LCT_FILES_TO_ORACLE_EXT_TABLE'</font></p> </blockquote>  <p>Then add new options to the code template to allow the user to define which preprocessor to use and an regular expression for the file (below we add FILE_REGEXP, EXT_EXE_DIR and EXT_EXE options to the template).</p>  <blockquote>   <p><font face="Courier New" size="1">FILE_REGEXP - Process all files in the directory matching the regular expression.        <br />EXT_EXE_DIR - SQL directory where the preprocessor program resides. This must exist prior to executing the mapping.         <br />EXT_EXE - Name of the preprocessor script. If this value is set the PREPROCESSOR directive will be used in the external table.</font></p> </blockquote>  <p>When the template is complete there are changes to 2 parts of the create external table statement, the first change is to use the PREPROCESSOR directive if the EXT_EXE options is defined, this variable defines the name of the preprocessor;</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/9e31fc2dc492_E72D/owb_files_mapping0_2.jpg"><img title="owb_files_mapping0" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="378" alt="owb_files_mapping0" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/9e31fc2dc492_E72D/owb_files_mapping0_thumb.jpg" width="644" border="0" /></a> </p>  <p>The second change above checks for the existence of the regular expression, if no regular expression is defined it uses the file defined in the mapping, if a regular expression is defined then some code is executed to get all the file names that match the regular expression and include those in the external table definition.</p>  <p><strong>The Mapping</strong></p>  <p>The sample mapping below stages the ORDERS and ORDERITEMS data files using the Files to External Table code template, the stage tables are joined with some additional tables and then loaded into the cube/fact, this example illustrates using code templates for staging data in different ways and data warehouse operators (such as cube) integrated using the hybrid mapping design.</p>  <p>The mapping uses a regular expression orderit.*gz to get all COMPRESSED (gzipped) files in the directory, these will be included in the external table. The file names in our example are:</p>  <ul>   <li>orderitems_uk.csv.gz </li>    <li>orderitems_us.csv.gz </li> </ul>  <p>Should we add new data files into this directory that match this pattern we could just rerun the mapping to pick them up! We would not have to change anything, simply copy the compressed file into the directory and we can dynamically pick up the data.</p>  <p>The preprocessor program gzunzipdb is a script defined in the SQL directory referenced by EXEC_DIR, and the script calls</p>  <ul>   <li>/bin/gunzip -c -d $* </li> </ul>  <p>The Oracle external table preprocessor feature takes the standard output of the preprocessor and pumps the data right through the external table. For details of the preprocessor directive see the article '<a href="http://www.oracle.com/technology/products/database/utilities/pdf/xtables11g2009_preproc_0905.pdf">Using the Preprocessor Feature with External Tables in Oracle Database 11g'</a> on OTN.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/9e31fc2dc492_E72D/owb_files_mapping2_2.jpg"><img title="owb_files_mapping2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="428" alt="owb_files_mapping2" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/9e31fc2dc492_E72D/owb_files_mapping2_thumb.jpg" width="644" border="0" /></a> </p>  <p>When the mapping is executed we can see the how these properties are applied in the template;</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/9e31fc2dc492_E72D/owb_files_mapping3_2.jpg"><img title="owb_files_mapping3" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="434" alt="owb_files_mapping3" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/9e31fc2dc492_E72D/owb_files_mapping3_thumb.jpg" width="644" border="0" /></a> </p>  <p>&#160;</p>  <p>If we then look at the actual table definition in SQLDeveloper for example we can see the files are defined in the LOCATION clause and the preprocessor is also included.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/9e31fc2dc492_E72D/owb_files_mapping4_2.jpg"><img title="owb_files_mapping4" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="owb_files_mapping4" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/9e31fc2dc492_E72D/owb_files_mapping4_thumb.jpg" width="407" border="0" /></a> </p>  <p>What we have seen here is a way in which a new code template can be designed, and where the logical mapping design has remained the same. When the template is applied to the mapping we can define various characteristics that let the same map design move <u>more</u> data, <u>faster</u> and <u>easier</u> than before;</p>  <ul>   <li>there is no custom coding, </li>    <li>file data can be transferred compressed over the network to the data warehouse, </li>    <li>it is then uncompressed without landing the data on the file system and piped directly through the external table </li> </ul>  <p>and best of all, the mapping design remains the same. In subsequent postings I'll show how you add yet another level of dynamic capabilities by providing the regular expression at runtime.</p>]]></description>
         <link>http://blogs.oracle.com/warehousebuilder/2009/10/owb_11gr2_bulk_file_loading_-_more_faster_easier.html</link>
         <guid>http://blogs.oracle.com/warehousebuilder/2009/10/owb_11gr2_bulk_file_loading_-_more_faster_easier.html</guid>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">Code templates</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Data Integration</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ELT</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ETL</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">OWB</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">external table</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">performance</category>
        
         <pubDate>Thu, 15 Oct 2009 07:11:24 -0800</pubDate>
      </item>
      
      <item>
         <title>Reminder: Open World Unconference Session on OWB 11.2</title>
         <description><![CDATA[<p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/ReminderOpenWorldUnconferenceSessionon.2_14CD5/mosconewest-plan_2.jpg" target="_blank"><img title="mosconewest-plan" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 0px 20px; border-right-width: 0px" height="244" alt="mosconewest-plan" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/ReminderOpenWorldUnconferenceSessionon.2_14CD5/mosconewest-plan_thumb.jpg" width="203" align="right" border="0" /></a>As already announced, the OpenWorld Unconference session on Oracle Warehouse Builder 11.2 is being held 14 October 2009, Moscone West, Third Floor, Overlook 2, 2-3PM. </p>  <p>For the convenience of attendees, here’s a floorplan.&#160; Overlook 2 is right across from room 3018.</p>  <p>Mark Rittman will be presenting on OBI-EE integration and his experiences with OWB 11.2, I’ll be presenting on OWB Code Template Mappings that bring ODI Knowledge Module technology to OWB, and David Allan will be showing off some of the more advanced applications of code templates. </p>  <p>Hope to see you there. </p>]]></description>
         <link>http://blogs.oracle.com/warehousebuilder/2009/10/reminder_open_world_unconference_session_on_owb_112.html</link>
         <guid>http://blogs.oracle.com/warehousebuilder/2009/10/reminder_open_world_unconference_session_on_owb_112.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Events</category>
        
        
         <pubDate>Tue, 13 Oct 2009 22:43:47 -0800</pubDate>
      </item>
      
      <item>
         <title>Upcoming OWB Events</title>
         <description><![CDATA[<p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/UpcomingOWBEvents_F298/di-pods-2009_2.jpg"><img title="di-pods-2009" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="457" alt="di-pods-2009" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/UpcomingOWBEvents_F298/di-pods-2009_thumb.jpg" width="526" align="right" border="0" /></a>  <p><big><strong>Events at Oracle Open World 2009</strong></big>    <br />The following events require an Open World pass for attendance:    <br />&#160;</p>  <p><strong>OWB @ Oracle Open World DEMOgrounds</strong>    <br />Mon, Tues, &amp; Wed Oct 12,13,&amp; 14 2009     <br />Moscone West, Pods W-093 &amp; W-094 <a href="http://blogs.oracle.com/warehousebuilder/assets_c/2009/09/di-pods-2009-1428.html">See map</a>     <br />Come chat with OWB developers and product management about our latest release.</p>  <p>   <br /><strong>An ETL Framework Using Oracle Warehouse Builder</strong>    <br />Monday October 12 2009    <br />13:00 -14:00 in Moscone South Room 270    <br />Speaker: Ian Abramson from Thoughtcorp, Inc    <br />Session: S307863</p>  <p>   <br /><strong>Case Study: Building a Data Warehouse Cost-Effectively</strong>    <br />Tuesday October 13 2009    <br />11:30 - 12:30 in Moscone South Room 301    <br />Speaker: Dr. Holger Friedrich from SumIT AG    <br />Session: S307710     <br /><strong>     <br />Unconference on OWB </a></strong>    <br />Wednesday October 14 2009    <br />14:00 -15:00 at Moscone West, Third Floor, Overlook II    <br />Panel discussion    <br />Register <a href="http://blogs.oracle.com/warehousebuilder/2009/09/oow_special_unconference_on_owb_112_14_october_2pm_moscone_west.html">here</a></p>  <p></p>  <p></p>  <p><big><strong>Other Events</strong></big>    <br />The following events are open to the public unless otherwise noted:</p>  <p><strong>Warehouse Builder Goes Hybrid</a> </strong>    <br />Thursday October 15 2009    <br />14:00 -16:00 at The W Hotel    <br />Panel discussion    <br />Register <a href="http://blogs.oracle.com/warehousebuilder/2009/09/owb_the_w_hotel_warehouse_builder_goes_hybrid.html">here</a></p>  <p></p>  <p><strong>OWB 11.2: Enterprise-grade Data Integration for the Oracle Data Warehouse </strong>    <br />Wednesday October 21 2009    <br />12:00 -13:00 Eastern Time, virtual event hosted by <a href="http://ioug.itconvergence.com/pls/apex/f?p=219:1:3630288938788612::NO">Business Intelligence, Warehousing and Analytics SIG</a>    <br />Speaker: Antonio Romero, Product Manager from Oracle    <br />Register for this webcast <a href="http://ioug.itconvergence.com/pls/apex/f?p=219:1:3630288938788612">here </a></strong>    <br /><span class="mt-enclosure mt-enclosure-image" style="display: inline"><a onclick="window.open(&#39;http://blogs.oracle.com/warehousebuilder/assets_c/2009/09/di-pods-2009-thumb-1117x969-1428-thumb-160x138-1430-1433.html&#39;,&#39;popup&#39;,&#39;width=160,height=138,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0&#39;); return false" href="http://blogs.oracle.com/warehousebuilder/assets_c/2009/09/di-pods-2009-thumb-1117x969-1428-thumb-160x138-1430-1433.html"></a></span></p></p>]]></description>
         <link>http://blogs.oracle.com/warehousebuilder/2009/09/upcoming_owb_events.html</link>
         <guid>http://blogs.oracle.com/warehousebuilder/2009/09/upcoming_owb_events.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Events</category>
        
        
         <pubDate>Mon, 28 Sep 2009 13:30:54 -0800</pubDate>
      </item>
      
      <item>
         <title>OWB @ the W Hotel: Warehouse Builder Goes Hybrid</title>
         <description><![CDATA[<p><strong>When?</strong> Thursday October 15th, 2-4 pm<br />
<strong>Where? </strong>The W Hotel, Workroom 2<br />
<strong>Who?</strong> OWB users, LinkedIn members, Open World attendees<br />
<strong>How?</strong> Register using <a href="http://events.linkedin.com/OWB-W-Hotel-Warehouse-Builder-Goes/pub/131757">LinkedIn</a> or send an <a href="mailto:dwhdoc_us@oracle.com">email</a>.</p>

<p>Come to this 2-hr interactive session to talk with a panel of OWB gurus about the latest release, OWB 11.2. </p>

<p>The spotlight will be on what many herald as the most significant enhancement to OWB in years-- <strong>hybrid mappings</strong> which combine:<br />
<ul><br />
	<li>OWB's traditional ETL capabilities (dimensional modeling, data cleansing, etc.)<br />
 <li>plus a new, more flexible method for accessing heterogeneous sources<br />
<li>plus the ability to control where transformations are performed (source vs. staging area or target)<br />
<li>all in a single tool with one repository, one set of operators, one set of table definitions</li><br />
</ul></p>

<p><br />
For those familiar with Oracle Data Integrator (ODI), you'll recognize hybrid mappings as a combination of OWB technology plus ODI's knowledge module technology.<br />
For those familiar with OWB, come to this session to learn how you can take your existing OWB mappings and leverage the new technology for heterogeneous access.</p>]]></description>
         <link>http://blogs.oracle.com/warehousebuilder/2009/09/owb_the_w_hotel_warehouse_builder_goes_hybrid.html</link>
         <guid>http://blogs.oracle.com/warehousebuilder/2009/09/owb_the_w_hotel_warehouse_builder_goes_hybrid.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">Events</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">Warehouse Builder</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">code templates</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">open world</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">owb</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">owb 11.2</category>
        
         <pubDate>Wed, 23 Sep 2009 09:39:42 -0800</pubDate>
      </item>
      
      <item>
         <title><![CDATA[OWB 11gR2 &ndash; Architecture Overview]]></title>
         <description><![CDATA[<p>This post gives an overview of the OWB 11gR2 code template framework and runtime infrastructure, the code template framework is a key component in the product's customization and open connectivity capabilities. This framework enables OWB to integrate much more data than before, faster, in many more ways and gives customers the capabilities to leverage their existing assets efficiently. There are lots of new features to check out, see the list within the Concepts guide <a href="http://download.oracle.com/docs/cd/E11882_01/owb.112/e10581/whatsnew.htm#NEWFTCH1">here</a>.</p>  <p>Oracle Warehouse Builder is built on top of a metadata repository that captures your design. Once you have created your design in the repository, Warehouse Builder generates the code, and you deploy it somewhere. Prior to the 11gR2 release, for data integration routines, the tool generated a combination of SQL and PL/SQL (plus ABAP and SQL*Loader), allowing you to perform complex transformations on the data you are moving. It was primarily focused on Oracle, files and SAP sources with heterogeneous connectivity to all other systems using the Database Gateways. It was never possible to roll your sleeves up and reconfigure the physical execution of the    <br />mapping to make better use of the assets at hand. It was never possible to change the built-in templates to support features that were not supported out of the box. As we know, technology and the world around us is forever changing! There is a need to be able to integrate new types of data in new and different ways.</p>  <p>With Warehouse Builder 11gR2 it all changes.</p>  <p>The 11gR2 release supports both the existing code generation capabilities and an open extensible code template and connectivity framework based on the Oracle Data Integrator Knowledge Module framework. The benefits of open, extensible code template support is that you can: </p>  <ul>   <li>Have much greater architectural flexibility; you can apply technology at the right place and at the right time (push code to execute wherever it can be optimally executed). </li>    <li>Use alternative data movement strategies (bulk extract, ftp, scp, piped etc). </li>    <li>Integrate with additional systems through the Open Connectivity framework (platforms and code templates) </li>    <li>Provide implementations for standard design patterns for these systems (CDC, control, slowly changing dimensions etc). </li>    <li>Integrate database features that were not incorporated in the core product (for example, data pump external tables, pre-process files for external table) out of product release cycles. </li>    <li>Construct templates in a modular manner to share across common patterns. </li> </ul>  <p><strong>Code Templates</strong></p>  <p>There are different categories of code templates which serve different purposes; there are templates for moving data over the wire (Load), templates for capturing changes (CDC), templates for some data quality tasks (Control) and for data integration (Integrate and Oracle Target). The illustration below gives an overview of how they fit together.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2ArchitectureOverview_A30B/owb_pluggable_code_templates.jpg"><img title="owb_pluggable_code_templates" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="148" alt="owb_pluggable_code_templates" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2ArchitectureOverview_A30B/owb_pluggable_code_templates_thumb.jpg" width="404" border="0" /></a> </p>  <p>With the OWB 11gR2 repository a number of code templates are already pre-seeded. There are a number of seeded platforms for integration such as Oracle, File, DB2 UDB etc and this set can be extended, allowing the reach of data to grow dynamically and the supporting integration capabilities extensible - a truly pluggable framework. </p>  <p>Code Code Templates (CTs) are components of Oracle Warehouse Builder's open connectivity framework. CTs contain the knowledge required by Oracle Warehouse Builder to perform a specific set of tasks against a specific system or set of systems. Combined with a connectivity layer such as JDBC, CTs define an open connector that performs tasks against a system, such as connecting to this system, extracting data from it, transforming the data, checking it, integrating it, etc.</p>  <p>Open connectors contain a combination of:</p>  <ul>   <li>Connection strategy (JDBC, database utilities for instance). </li>    <li>Correct syntax (SQL etc.) for the platforms involved. </li>    <li>Control over the creation and deletion of all temporary/work tables, views, triggers, etc. </li>    <li>Data processing and transformation strategies. </li>    <li>Data movement options (create target table, insert/delete, update etc.). </li> </ul>  <p>With these concepts the template builder is in complete control of fulfilling the implementation. When extending the reach of the data to be integrated, a new platform can be added, defining a new platform allows system specific code templates to be built that leverage specific features of that system. The platform defines the characteristics of a system such as how to connect to it, SQL characteristics (such as column alias separators, null keyword and so on) and the data types the system supports.</p>  <p><strong>Code Template Mappings</strong></p>  <p>The mapping design is mostly as before, a single logical design with a major shift that you can now configure the physical design and assign customizable code templates or assign the existing non-customizable Oracle Target template. The mapping can include a mixture of <strong>both</strong>, so you can leverage the flexibility offered for staging data via the open connectivity framework and the transformation and data warehouse operators (for example) provided by the traditional Oracle Target template - for example can leverage the CDC code templates for capturing changes and the data warehouse operators to build the warehouse.</p>  <p>The illustration below shows how a logical map design is physically configured into execution units which are assigned code templates, and the physical design is per configuration.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2ArchitectureOverview_A30B/owb_mapping_overview.jpg"><img title="owb_mapping_overview" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="owb_mapping_overview" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2ArchitectureOverview_A30B/owb_mapping_overview_thumb.jpg" width="361" border="0" /></a> </p>  <p>When we were building this we drew an analogy to islands and bridges, some code templates are bridges that move data from one island to another, and transformations or integration tasks can be performed on an island.</p>  <p>The code template based mappings reside in a different module, since they are executed in a different engine (the Control Center Agent), this module (just like other modules in OWB) is assigned a location, an Agent. The agent is where the mapping will be deployed and when executed this agent will orchestrate its execution.</p>  <p><strong>Control Center Agent</strong></p>  <p>The code template based mappings and web service support is facilitated through the Control Center Agent, a program that can be run on a machine to orchestrate the tasks in the mappings.</p>  <p>A mapping executes on a single Control Center Agent. If you want to remotely execute parts of the map on different systems you will have to use remote API calls including JDBC invocations, remote execute, database jobs using agent and so on.</p>  <p>The agent itself could be placed on a source or transformation system for example if you wanted to unload data using a native un-loader. The code templates are based on the Oracle Data Integrator 10g Substitution Reference interface, this interface (its only an interface, you can't deploy OWB maps to an ODI agent) has been implemented based on the metadata OWB deploys for locations, connectors, mappings, web services and OWB Control Center Agent components.</p>  <p>The figure below illustrates the mechanics and dependencies of code template based mappings within the Control Center Agent.</p>  <p><a href="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2ArchitectureOverview_A30B/owb_cca_11gR2_2.jpg"><img title="owb_cca_11gR2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="owb_cca_11gR2" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OWB11gR2ArchitectureOverview_A30B/owb_cca_11gR2_thumb.jpg" width="330" border="0" /></a> </p>  <p>The mappings are deployed to this OWB agent in a completely headless manner. They are deployed as J2EE applications but are not heavyweight java applications - the application is basically a very small driver script and a some metadata about the map. The connectors (from agent to source and target system) are deployed as J2EE data sources.</p>  <p>The objects following the same pattern as previous design items, just you can get much more control of what capabilities of a system you would like to leverage. Can envisage some interesting templates leveraging the different loading capabilities of DBFS into database machine in the future.</p>  <p>Anyway that's a quick update which was easier to do that laying bamboo flooring and building closets (how many times did I hammer my hand, I know get a nail gun next time).</p>]]></description>
         <link>http://blogs.oracle.com/warehousebuilder/2009/09/owb_11gr2_architecture_overview.html</link>
         <guid>http://blogs.oracle.com/warehousebuilder/2009/09/owb_11gr2_architecture_overview.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">ETL</category>
        
        
          <category domain="http://www.sixapart.com/ns/types#tag">11gR2</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Code Templates</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Data Integration</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ELT</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">ETL</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">KM</category>
        
          <category domain="http://www.sixapart.com/ns/types#tag">Push</category>
        
         <pubDate>Sun, 20 Sep 2009 13:22:49 -0800</pubDate>
      </item>
      
      <item>
         <title>OOW Special: Unconference on OWB 11.2, 14 October, 2PM, Moscone West</title>
         <description><![CDATA[<div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:cfd02c28-0dc7-48f6-96c3-a4095b961389" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/OWB" rel="tag">OWB</a>,<a href="http://technorati.com/tags/Oracle" rel="tag">Oracle</a>,<a href="http://technorati.com/tags/Open+World" rel="tag">Open World</a>,<a href="http://technorati.com/tags/ETL" rel="tag">ETL</a>,<a href="http://technorati.com/tags/data+warehousing" rel="tag">data warehousing</a>,<a href="http://technorati.com/tags/data+integration" rel="tag">data integration</a>,<a href="http://technorati.com/tags/business+intelligence" rel="tag">business intelligence</a>,<a href="http://technorati.com/tags/BI" rel="tag">BI</a>,<a href="http://technorati.com/tags/DW" rel="tag">DW</a>,<a href="http://technorati.com/tags/ODI" rel="tag">ODI</a></div>  <p>While the formal sessions at Oracle Open World provide a lot of valuable information, sometimes the choicest nuggets turn up at the <strong>Unconference sessions</strong>, where Oracle employees, customers and partners can delve into the topics that interest them most in an interactive forum. </p>  <p>For OWB customers the<strong> best chance to see OWB 11.2 at OpenWorld</strong> will be an Unconference session conducted jointly by <strong>Oracle DW and BI guru Mark Rittman </strong>and <strong>data integration product manager Antonio Romero. </strong></p>  <p><a href="http://events.linkedin.com/Oracle-Open-World-Unconference-Oracle/pub/129305" target="_blank"><img title="unconference" style="border-right: 0px; border-top: 0px; display: inline; margin: 0px 0px 0px 10px; border-left: 0px; border-bottom: 0px" height="80" alt="unconference" src="http://blogs.oracle.com/warehousebuilder/WindowsLiveWriter/OOWSpecialUncon.214October2PMMosconeWest_12A48/unconference_3.jpg" width="260" align="right" border="0" /></a>The real treat, though, will be the <strong>special guest appearance by OWB architect David Allan</strong>! Through this blog, David has become one of the public faces of OWB and his knowledge of how to get the most out of the tool has been invaluable to internal and external users. </p>  <p>Planned topics include: </p>  <ul>   <li><strong>ODI-based code template mapping capabilities</strong> </li>    <li><strong>Integration of Warehouse Builder with OBI-EE</strong></li>    <li><strong>Right-time Data Warehousing: CDC, Trickle-feed mappings</strong></li> </ul>  <p>...but since we're in Unconference mode, we can do a little off-roading, time permitting, as the audience demands it. </p>  <p>Schedule details: <strong>Wednesday, October 14, Moscone West, Third Floor, Overlook II. </strong></p>  <p>While this is a bit unstructured, it helps to have a preliminary headcount. To register, you'll need to take a second to join our LinkedIn Group if you haven't already. <a href="http://events.linkedin.com/Oracle-Open-World-Unconference-Oracle/pub/129305" target="_blank">Click here to register!</a></p>]]></description>
         <link>http://blogs.oracle.com/warehousebuilder/2009/09/oow_special_unconference_on_owb_112_14_october_2pm_moscone_west.html</link>
         <guid>http://blogs.oracle.com/warehousebuilder/2009/09/oow_special_unconference_on_owb_112_14_october_2pm_moscone_west.html</guid>
        
          <category domain="http://www.sixapart.com/ns/types#category">ETL</category>
        
          <category domain="http://www.sixapart.com/ns/types#category">Press</category>
        
          <category domain="http://www.sixapart.com/ns/types#category">Resources</category>
        
          <category domain="http://www.sixapart.com/ns/types#category">SOA and Web Services</category>
        
          <category domain="http://www.sixapart.com/ns/types#category">Success Stories</category>
        
        
         <pubDate>Sat, 19 Sep 2009 20:12:46 -0800</pubDate>
      </item>
      
   </channel>
</rss>
