<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUQGRH88fyp7ImA9WhRaFEk.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198</id><updated>2012-02-16T17:48:45.177-08:00</updated><category term="install" /><category term="linux" /><category term="odi_11g" /><category term="apex" /><category term="DNS" /><category term="scd" /><category term="java" /><category term="process" /><category term="vmware" /><category term="skype" /><category term="Oracle" /><category term="jar" /><category term="odi" /><category term="www" /><category term="set" /><category term="antivirus" /><category term="union" /><category term="BSNL" /><category term="Database" /><category term="internet" /><category term="scenario" /><category term="network" /><category term="ubuntu" /><category term="ikm" /><category term="agent" /><title>Technology &amp; Other Worldly Issues</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://askankit.blogspot.com/" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/TechnologyOtherWorldlyIssues" /><feedburner:info uri="technologyotherworldlyissues" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;D0QCQHs5eCp7ImA9WhRWEUo.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-1750499511485168380</id><published>2011-12-29T08:16:00.001-08:00</published><updated>2011-12-29T08:16:01.520-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-29T08:16:01.520-08:00</app:edited><title>Parallelism of scenarios</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Lets take a deep dive into the parallelism capability of ODI using StartScen and Asynchronous mode.&lt;br/&gt;Here is a nice article from Christophe (&lt;a href='http://blogs.oracle.com/dataintegration/entry/parallel_processing_in_odi'&gt;http://blogs.oracle.com/dataintegration/entry/parallel_processing_in_odi&lt;/a&gt;) that illustrates how this can be achieved. &lt;br/&gt;However, the important thing to understand here is that the job kick-off process is not truly parallel.&lt;br/&gt;&lt;br/&gt;A truly parallel process should look like the following where the Start will spawn 3 parallel processes.&lt;br/&gt;&lt;img src='http://lh4.ggpht.com/-BpSFmj7tFA4/TvyIZqWZshI/AAAAAAAAALA/Gp6ptSCqao4/%25255BUNSET%25255D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;Whereas in ODI, the above behavior is mimicked by connecting jobs sequentially to each other and then executing them in Asynchronous mode. &lt;br/&gt;&lt;img src='http://lh3.ggpht.com/-qDJ7qAZVe3E/TvyI8z8DI1I/AAAAAAAAALI/BqYjA6xXio8/%25255BUNSET%25255D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;Does the question arise - What's the difference as long as the jobs are executing in parallel ? &lt;b&gt;A slight difference&lt;/b&gt;.&lt;br/&gt;Consider a scenario when the scenario "StartEmpLoad" cannot start due to some reason (Scenario not available or Agent selected for the Scenario is down). In that case, the next (or did we say parallel) job "StartSalesLoad" will never be kicked off. Since both of them are connected with an "OK" and since the first job wasnt OK, the flow never reaches the next process. This error is a job kick-off error and is different from the data errors that would normally be encountered during a job execution (Duplicate keys, Data not found, etc).&lt;br/&gt;&lt;br/&gt;Each StartScen in here kicks off a job and then moves on to the next StartScen. Being Async jobs, even though they dont wait for the results to come back, they do make sure that the job was kicked off successfully (vs completed successfully).&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=362f62a7-5572-85c5-a3ce-a4d22ca60425' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-1750499511485168380?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/tKqgE_AkULY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/1750499511485168380/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=1750499511485168380" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/1750499511485168380?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/1750499511485168380?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/tKqgE_AkULY/parallelism-of-scenarios.html" title="Parallelism of scenarios" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-BpSFmj7tFA4/TvyIZqWZshI/AAAAAAAAALA/Gp6ptSCqao4/s72-c/%25255BUNSET%25255D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://askankit.blogspot.com/2011/12/parallelism-of-scenarios.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcFR3k4eSp7ImA9WhRWEEQ.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-2787572846740634574</id><published>2011-12-28T10:41:00.000-08:00</published><updated>2011-12-28T10:46:56.731-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-28T10:46:56.731-08:00</app:edited><title>ODI Tools without Hardcodings</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;ODI provides us with a set of utilities that can assist us in day to day tasks such as Ftp, FileCopy, SendMail, SQLUnload, etc. These tools make ODI powerful. &lt;br/&gt;These tools are available in the Toolbox (once you start creating a package).&lt;br/&gt;&lt;br/&gt;A common problem of all the tools is the need of hardcoding file paths, user names, passwords, etc. This is the least desirable of any tool. As a developer you will want the flexibility to change the parameters whenever the need arises. Unfortunately, the way the tools are laid out this change is not very intuitive. &lt;br/&gt;It seems that the values need to be changed and then the scenarios need to be recompiled. &lt;br/&gt;&lt;br/&gt;Wait ... Did I say recompile the scenarios for changing a parameter ? Ohh. Such a basic problem.&lt;br/&gt;C'Mon. Its better to write programs in C where the parameters can be passed from the Command line using &lt;b&gt;argv[]&lt;/b&gt;.&lt;br/&gt;&lt;br/&gt;How did such an excellent tool miss on this one ?&lt;br/&gt;Ok. Ok. Lets explore a couple of ways in which the life can be simplified.&lt;br/&gt;&lt;br/&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Use them as Sunopsis API&lt;/b&gt; - Each tool can be used as a Sunopsis API in the ODI Procedure. Its very easy to see the syntax of the corresponding API for each tool. Once you drag-drop the tool inside a package, in the Properties Explorer click on the "Command" tab. As you keep adding parameters on the "General" tab, the "Command" tab keeps getting updated with the values. ODIexperts specify an excellent way of invoking the ODI tools inside an ODI procedure - &lt;a href='http://odiexperts.com/calling-odisqlunload-using-odi-procedure-with-no-hardcoded-password'&gt;http://odiexperts.com/calling-odisqlunload-using-odi-procedure-with-no-hardcoded-password&lt;/a&gt;&lt;/li&gt;&lt;br/&gt;&lt;li&gt;&lt;b&gt;Use ODI variables&lt;/b&gt; - Define an ODI Refresh variable for each of the parameter that you want to parameterize. Before invoking the tool, refresh the ODI variable from a database configuration table. Use this ODI variable in the parameters section of the tool. The following snapshots will illustrates how this can be done.&lt;img style='max-width: 800px; float: left; margin-top: 10px; margin-bottom: 10px; margin-right: 10px;' src='http://lh6.ggpht.com/-IA7poycvjIU/TvtaCoZ8v3I/AAAAAAAAAKQ/JhR3Of_IfUg/%25255BUNSET%25255D.png?imgmax=800'/&gt;&lt;br/&gt;&lt;img style='max-width: 800px; float: none;' src='http://lh4.ggpht.com/-dzJTYPE4DOg/TvtaLZwPa8I/AAAAAAAAAKg/byI1UVNF0tQ/%25255BUNSET%25255D.png?imgmax=800'/&gt; &lt;br/&gt;&lt;br/&gt;&lt;/li&gt;This method will mandate that the package contains several variables. This may make the package look too full with too many connections.&lt;br/&gt;&lt;br/&gt;&lt;li&gt;Use Jython Variables - This method is an enhancement to the method mentioned above. The only difference being the use of Jython variables instead of ODI variables and a bit more :D . The real advantage of this approach is the less cluttered ODI package as all the variables being used are created in the ODI procedure. &lt;br/&gt;This will be a 2 step process:&lt;ul&gt;&lt;li&gt;Create and Refresh all the Jython variables in an ODI procedure.&lt;/li&gt;&lt;li&gt;Use those variables in parameters of ODI Tool inside the package.&lt;/li&gt;&lt;/ul&gt; &lt;br/&gt; In the example that is provided here, the odiSQLUnload tool is used and the Jython variables are being used for the Connection information. The procedure that will contain the commands to declare and populate the jython variables will look as follows:&lt;br/&gt;&lt;br/&gt;&lt;img style='max-width: 800px;' src='http://lh5.ggpht.com/-6nIitWQIrmw/TvtgfxYyiII/AAAAAAAAAKo/-grNBx2sIWM/%25255BUNSET%25255D.png?imgmax=800'/&gt;&lt;br/&gt;Then the package will be created where this procedure will preceed the ODI tool OdiSqlUnload. &lt;br/&gt;&lt;br/&gt; The OdiSqlUnload tool's command should be configured to look similar to this:&lt;br/&gt;&lt;br/&gt;&lt;font face='Courier New' color='#3366FF'&gt;OdiSqlUnload "-FILE=/MyPath/sqlunloadfile.txt" "-DRIVER=&amp;lt;@=jvJDBC@&amp;gt;" "-URL=&amp;lt;@=jvURL@&amp;gt;" "-USER=&amp;lt;@=jvUser@&amp;gt;" "-PASS=&amp;lt;@=jvPass@&amp;gt;" "-FILE_FORMAT=VARIABLE" "-FIELD_SEP=," "-ROW_SEP=\r\n" "-DATE_FORMAT=yyyy/MM/dd HH:mm:ss" "-CHARSET_ENCODING=ISO8859_1" "-XML_CHARSET_ENCODING=ISO-8859-1" "-FETCH_SIZE=5000"&lt;br/&gt;select emp_no from emp&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;The above method illustrates an effective usage of Jython variables.&lt;br/&gt;In a similar fashion other values can be refreshed from a DB configuration table and then used inside the ODI tools.&lt;br/&gt;&lt;br/&gt;Hope this helps in laying a path towards cleaner usage of ODI tools without hardcoding.&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=341c6a7e-3d42-8bf3-811e-5566f86b3489' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-2787572846740634574?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/f1szJTyDfuo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/2787572846740634574/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=2787572846740634574" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/2787572846740634574?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/2787572846740634574?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/f1szJTyDfuo/odi-tools-without-hardcodings.html" title="ODI Tools without Hardcodings" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-IA7poycvjIU/TvtaCoZ8v3I/AAAAAAAAAKQ/JhR3Of_IfUg/s72-c/%25255BUNSET%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://askankit.blogspot.com/2011/12/odi-tools-without-hardcodings.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcFRXo_cCp7ImA9WhZQE0w.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-8169208289137347566</id><published>2011-04-20T09:09:00.001-07:00</published><updated>2011-04-20T09:13:34.448-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-20T09:13:34.448-07:00</app:edited><title>When Temporary is not Temporary</title><content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Lets have a little questionnaire about the temporary interfaces that are used in Oracle Data Integrator. They are also popularly known as "Yellow Interfaces" because of the Yellow icon that ODI gives them at creation as opposed to the Blue icon of a regular interface.&lt;/div&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;br /&gt;&lt;img src="http://2.bp.blogspot.com/-zddiwsAwI6Q/Ta8F4O3w-tI/AAAAAAAAABM/lsL-HnWhAik/s400/moz-screenshot.png" style="cursor:pointer; cursor:hand;width: 161px; height: 86px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5597699325467622098" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Which of the following statements are false about Temporary interfaces:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span  &gt;The tables get dropped once the calling interface is complete.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span  &gt;The data in the temporary interfaces is deleted once the calling interface is complete.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span  &gt;The table referred to as Target in the Temporary interface is created each time the calling interface invokes it.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span  &gt;They can only be executed in Sunopsis Memory Engine.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;Answer Choices:&lt;/b&gt;&lt;br /&gt;1 is false&lt;br /&gt;2 is false&lt;br /&gt;3 is false&lt;br /&gt;1 and 2 are false&lt;br /&gt;1 and 3 are false&lt;br /&gt;2 and 4 are false&lt;br /&gt;All of the above&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The answer is "All of the above" statements are false.&lt;br /&gt;&lt;br /&gt;I will elucidate upon each of the above points and remove common misconceptions:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The table that gets created stays there forever. It is a physical table that exists.&lt;/li&gt;&lt;li&gt;The data in the temporary interface also stays there. It has to be removed manually or overwritten. Even though, this sounds similar to Global temporary tables in Oracle, it is not.&lt;/li&gt;&lt;li&gt;This is dependent upon how you have configured your interface. If the option "CREATE_TARG_TABLE" is set to "Yes", then ODI will attempt to create this table each time. Otherwise, it will NOT. If the table already exists, the statement to create the table will raise an Error (Warning).&lt;/li&gt;&lt;li&gt;The fact that you create a Temporary interface using Sunopsis Memory Engine doesnt mean that it cannot be created in the RDBMS using are working with. You can also create the temporary interfaces in the database of your choice. The fact of the temporary interface being in Memory is coincidental to the idea of a temporary datastore. If the Sunopsis Memory Engine is chosen as the "Work Schema", then the temporary table will remain there untill the Engine is rebooted/shutdown or an explicit code to drop that table is issued.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;A very important statement  - &lt;big&gt;&lt;b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" &gt;There is nothing temporary about a temporary interface, but its name&lt;/span&gt;&lt;/b&gt;&lt;/big&gt;.&lt;br /&gt;&lt;br /&gt;The term "temporary" comes into picture because the temporary area (or the staging area) can be purged after executions. Though, they have to be purged manually or in a process.&lt;br /&gt;The advantage of using a Yellow interface is ONLY to avoid the actual preparation of the destination datastore in the database or creation of this datastore in the "Model". Since, these are deemed to be temporary, theoretically, they are not part of our data model and hence, dont need to be in the "Model".&lt;br /&gt;&lt;br /&gt;In all cases, the destination data is written to a database (either in memory of RDBMS). This depends on what staging area has been chosen.&lt;br /&gt;&lt;br /&gt;Typically, you will want to create a temporary interface that gets invoked as a source in another permanent (blue) interface. A yellow interface may be invoked as a source in more then one blue interface.&lt;br /&gt;In this case, each of the blue interfaces will share the same table (populated by yellow interface). So, if you are trying to run those jobs in parallel, then you may want to redesign the usage of yellow interface.&lt;br /&gt;&lt;br /&gt;The temporary Interface, has an option to choose its datastore location, being: Data Schema or Work Schema. If the Work Schema is chosen and for StagingArea the Memory Engine then it will remain there until the Engine is shutdown or an explicit code to drop the table is issued.&lt;br /&gt;&lt;br /&gt;&lt;div class="zemanta-pixie"&gt;&lt;img src="http://img.zemanta.com/pixy.gif?x-id=76b20346-3a33-85df-a614-885d0d545e12" alt="" class="zemanta-pixie-img" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-8169208289137347566?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/0Kyq9cRAGP8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/8169208289137347566/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=8169208289137347566" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/8169208289137347566?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/8169208289137347566?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/0Kyq9cRAGP8/when-temporary-is-not-temporary.html" title="When Temporary is not Temporary" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-zddiwsAwI6Q/Ta8F4O3w-tI/AAAAAAAAABM/lsL-HnWhAik/s72-c/moz-screenshot.png" height="72" width="72" /><thr:total>7</thr:total><feedburner:origLink>http://askankit.blogspot.com/2011/04/when-temporary-is-not-temporary.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAMQXg5cCp7ImA9Wx9bFUg.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-569939595290250196</id><published>2011-02-23T07:56:00.001-08:00</published><updated>2011-02-24T06:29:40.628-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-24T06:29:40.628-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="process" /><category scheme="http://www.blogger.com/atom/ns#" term="scenario" /><category scheme="http://www.blogger.com/atom/ns#" term="odi" /><category scheme="http://www.blogger.com/atom/ns#" term="agent" /><title>ODI startscen.sh forks local agent for a scenario</title><content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;I will discuss the behavior of odi startscen.sh/bat command. Often, we use this command to execute a scenario from our custom shell/batch scripts or might even add it to our workflow engine.&lt;br /&gt;The syntax being:&lt;br /&gt;&lt;span  &gt;startscen.sh scn_load_data 001 GLOBAL -NAME=odiSchedAgent001&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;However, there is an important point to know the underlying functioning of the startscen command. This command forks out a new agent process that is local to the machine on which the command was started.&lt;br /&gt;The startscen.sh has a parameter &lt;b&gt;-NAME=&lt;/b&gt;&lt;i&gt;&amp;lt;agentName&amp;gt;&lt;/i&gt; which naturally makes us assume that this agent will be used to execute the scenario. However, this parameter is just used to store the agent name in the logs of the operator. It has nothing to do with using that agent to execute the scenario.&lt;br /&gt;Another obvious side effect is that the OS execution privileges of the user who initiated the startscen command are used to generate log files or any other OS files, which may be different from the execution privileges of the remote agent that you intended to use.&lt;br /&gt;&lt;br /&gt;Consider a small test case:&lt;br /&gt;&lt;br /&gt;(1) Use Unix account "A" to start a background agent process by  agentscheduler.sh.&lt;br /&gt;&lt;br /&gt;&lt;span  &gt;agentscheduler.sh -PORT=20910 -NAME=odiSchedAgent001&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(2)  On the same Unix machine, use Unix account "B" to execute the scenario "scn_load_data" startscen.sh&lt;br /&gt;&lt;br /&gt;&lt;span  &gt;startscen.sh scn_load_data 001 GLOBAL  -NAME=odiSchedAgent001&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;However, in step (2), it would fork a new agent process to  execute the scenario instead of using the existing agent process started in  (1). You can verify this by scanning the processes.&lt;br /&gt;On Unix, you can check that using "ps -ef" and see that a new process would be initiated.&lt;br /&gt;&lt;br /&gt;Even if you use same Unix account "A" to execute startscen.sh, it  would still fork a new agent process.&lt;br /&gt;&lt;br /&gt;This may be a problem. As I said earlier - that the permissions of the user who initiated the agent vs the user who initiated the &lt;span  &gt;startscen &lt;/span&gt;command would differ.&lt;br /&gt;However, there are more cases in which this will be a Bigger problem.&lt;br /&gt;Consider a scenario in which you have 2 Unix systems - System-A and System-B. &lt;b&gt;System-A&lt;/b&gt; is running the agent process and the &lt;b&gt;System-B&lt;/b&gt; is being used to kick-off the scenario using &lt;span  &gt;startscen &lt;/span&gt;command. If there are any OS based activities done by the scenario, then they would be done on the file-system of &lt;b&gt;System-B&lt;/b&gt;, whereas you wanted those to done on &lt;b&gt;System-A &lt;/b&gt;(after all thats where the agent is running. Or so you thought)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Now the Good part... The Solution :&lt;/b&gt;&lt;br /&gt;Use the &lt;b&gt;startcmd.sh&lt;/b&gt; instead of startscen.sh&lt;br /&gt;The syntax is&lt;br /&gt;&lt;pre class="jive-pre"&gt;startcmd.sh OdiStartScen -SCEN_NAME=scn_load_data -SCEN_VERSION=001 -CONTEXT=GLOBAL -AGENT_CODE=odiSchedAgent001&lt;br /&gt;&lt;/pre&gt;This command actually uses the remote agent specified in the parameter.&lt;br /&gt;&lt;br /&gt;&lt;div class="zemanta-pixie"&gt;&lt;img src="http://img.zemanta.com/pixy.gif?x-id=37afa03f-7f86-821b-86b5-221dbec295e3" alt="" class="zemanta-pixie-img" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-569939595290250196?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/5fLCUMK0uYA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/569939595290250196/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=569939595290250196" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/569939595290250196?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/569939595290250196?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/5fLCUMK0uYA/odi-startscensh-forks-local-agent-for.html" title="ODI startscen.sh forks local agent for a scenario" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>6</thr:total><feedburner:origLink>http://askankit.blogspot.com/2011/02/odi-startscensh-forks-local-agent-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUAGRXc-fyp7ImA9Wx9bEk4.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-7917191580776501891</id><published>2011-02-01T07:55:00.001-08:00</published><updated>2011-02-20T12:28:44.957-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-20T12:28:44.957-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="union" /><category scheme="http://www.blogger.com/atom/ns#" term="set" /><category scheme="http://www.blogger.com/atom/ns#" term="odi" /><category scheme="http://www.blogger.com/atom/ns#" term="odi_11g" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><title>ODI 11g Upgrade issues - Set operator disabled</title><content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;In this post, I will be consolidating all the issues that I had with an ODI 11g upgrade from ODI 10g. This is strictly valid for ODI 11g instances which have been migrated from ODI 10g.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;1.) &lt;/b&gt;During the upgrade from 10g to 11g the upgrade, if you forget to upgrade the Technologies, you will find that the SET based functionality doesnt work. Thanks to Nicolas for pointing this out.&lt;br /&gt;In an interface mapping, you cannot add multiple datasets. The Add/Delete buttons for the datasets are disabled.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/__r9iMl-2uL4/TUgrHCcgMDI/AAAAAAAAAJI/0T6Av6WGgdc/%5BUNSET%5D.jpg?imgmax=800" style="max-width: 800px;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The cause - &lt;/b&gt;&lt;br /&gt;The Oracle Technology was not upgraded to support these new features. So, you will see the following in the Topology Manager -&amp;gt; Physical Architecture -&amp;gt; Technologies -&amp;gt; Oracle&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/__r9iMl-2uL4/TUgsADy5wzI/AAAAAAAAAJM/M3DfdTrz8fE/%5BUNSET%5D.jpg?imgmax=600" style="max-width: 600px;" /&gt;&lt;br /&gt;&lt;br /&gt;The options highlighted above are unchecked. Hence, the functionalities of Partitioning, Native Sequences, Lookups, Derived Tables and Set operators is not available.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Solution - &lt;/b&gt;&lt;br /&gt;You will need to make changes to the Oracle Technology as follows:&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/__r9iMl-2uL4/TUgsyLhxhxI/AAAAAAAAAJQ/twiOOo6OhdU/%5BUNSET%5D.jpg?imgmax=600" style="max-width: 600px;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="zemanta-pixie"&gt;&lt;img src="http://img.zemanta.com/pixy.gif?x-id=37afa03f-7f86-821b-86b5-221dbec295e3" alt="" class="zemanta-pixie-img" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-7917191580776501891?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/ifHNnx7jcCE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/7917191580776501891/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=7917191580776501891" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/7917191580776501891?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/7917191580776501891?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/ifHNnx7jcCE/odi-11g-upgrade-issues-set-operator.html" title="ODI 11g Upgrade issues - Set operator disabled" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/__r9iMl-2uL4/TUgrHCcgMDI/AAAAAAAAAJI/0T6Av6WGgdc/s72-c/%5BUNSET%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://askankit.blogspot.com/2011/02/odi-11g-upgrade-issues-set-operator.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QBSXw-eip7ImA9Wx5XF04.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-9215101749345243565</id><published>2010-09-17T09:02:00.001-07:00</published><updated>2010-09-17T09:02:38.252-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-17T09:02:38.252-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="jar" /><category scheme="http://www.blogger.com/atom/ns#" term="odi" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><title>Call Java JAR methods from ODI</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Several times we will see the need of invoking custom Java programs from ODI. Uli has written an excellent article on &lt;a href='http://www.business-intelligence-quotient.com/?p=941' target='_blank'&gt;this&lt;/a&gt;.&lt;br/&gt;This is a good solution for the development environment.&lt;br/&gt;However, the limitation of this approach lies in the fact that mandates the need to copy the Jar file to the drivers directory of ODI. &lt;br/&gt;This also needs the agent to be bounced each time a new jar is added.&lt;br/&gt;Think of a scenario where Java agnostic developers wish to use ODI. This is a maintenance overhead for an ODI administrator and also will clutter up the ODI drivers directory. In my opinion, the ODI drivers directory should be used only for Database drivers or application adaptors. &lt;br/&gt;&lt;br/&gt;Any custom java code should be used in the following way:&lt;br/&gt;&lt;br/&gt;&lt;font face='Courier New'&gt;import os&lt;br/&gt;import sys&lt;br/&gt;&lt;br/&gt;jars = [&lt;br/&gt;    "/home/users/ankit/java/MyFileWrite.jar"&lt;br/&gt;    ]&lt;br/&gt;&lt;br/&gt;for jar in jars:&lt;br/&gt;   sys.path.append(jar)&lt;br/&gt;&lt;br/&gt;from com.mycompany.MyFileWrite import *&lt;br/&gt;&lt;br/&gt;fw=MyFileWrite()&lt;br/&gt;fw.writeFile()&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=37afa03f-7f86-821b-86b5-221dbec295e3' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-9215101749345243565?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/pzzX4ACK9fU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/9215101749345243565/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=9215101749345243565" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/9215101749345243565?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/9215101749345243565?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/pzzX4ACK9fU/call-java-jar-methods-from-odi.html" title="Call Java JAR methods from ODI" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>6</thr:total><feedburner:origLink>http://askankit.blogspot.com/2010/09/call-java-jar-methods-from-odi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAMQn46fip7ImA9Wx5QEk0.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-6792214497006652469</id><published>2010-08-30T13:37:00.001-07:00</published><updated>2010-08-30T13:39:43.016-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-30T13:39:43.016-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="odi" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><title>ODI Object versioning</title><content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Versioning in ODI is a less covered topic.&lt;br /&gt;Lets look today at how ODI handles object versioning. If you recall from the ODI repository architecture diagrams, ODI stores Topology, Security and Versioning information in the Master Repository.&lt;br /&gt;Each time an ODI object (Project, Model, Datastore, etc) is versioned, it is saved in the Master Repository.&lt;br /&gt;&lt;br /&gt;Eg. If we version the package - PKG_ODI_PROCESS as follows:&lt;br /&gt;&lt;img src="http://3.bp.blogspot.com/_Fu7GIrwU88M/THwWyTgnP6I/AAAAAAAAAA0/8qEVzKmCDW0/s320/moz-screenshot-1.png" style="cursor:pointer; cursor:hand;width: 320px; height: 294px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5511305097480978338" /&gt;&lt;br /&gt;&lt;br /&gt;Then, in ODI_MASTER_REPOSITORY, we can see that there are 2 new records added to the SNP_VERSION table. The following query can be used:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;color:#000099;"&gt;SELECT i_instance, ext_version, i_data, instance_name&lt;br /&gt;   FROM snp_version&lt;br /&gt;WHERE 1 = 1&lt;br /&gt;  and instance_name LIKE 'PKG_ODI_PROCESS'&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;In here,&lt;br /&gt;&lt;b&gt;I_INSTANCE &lt;/b&gt;is the Internal ID of the object in the work repository&lt;br /&gt;&lt;b&gt;EXT_VERSION &lt;/b&gt;is the 1.0.0.1 notation version assigned to the object&lt;br /&gt;&lt;b&gt;I_DATA &lt;/b&gt;is the FK into SNP_DATA table that stores the versioned object&lt;br /&gt;&lt;b&gt;INSTANCE_NAME &lt;/b&gt;is the name of the object itself at the time of being versioned&lt;br /&gt;&lt;br /&gt;SNP_VERSION works alongwith SNP_DATA to store the actual versioned object. We can get that information using the following query:&lt;br /&gt;&lt;span style="font-family:Courier New;color:#000099;"&gt;SELECT sv.i_instance,&lt;br /&gt;      sv.i_objects,&lt;br /&gt;      sv.ext_version,&lt;br /&gt;      sv.i_data,&lt;br /&gt;      sv.instance_name,&lt;br /&gt;      sd.data_contents&lt;br /&gt;FROM snp_version sv, snp_data sd&lt;br /&gt;WHERE     1 = 1&lt;br /&gt;     and sv.i_data = sd.i_data&lt;br /&gt;     and &lt;/span&gt;&lt;span style="font-family:Courier New;color:#000099;"&gt;instance_name LIKE 'PKG_ODI_PROCESS'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The DATA_CONTENTS column is of type LONG_RAW and stores the versioned object in a compressed LZW compression form (Unix &lt;span style="font-family:Courier New;"&gt;&lt;b&gt;compress &lt;/b&gt;&lt;/span&gt;command)&lt;br /&gt;&lt;br /&gt;We can save the contents of SNP_DATA.DATA_CONTENTS into an Operating System file named as pkg_odi_process.Z, though we can name it whatever we wish with a .Z extension.&lt;br /&gt;Uncompress this file using Unix uncompress or Windows Winzip, WinRar.&lt;br /&gt;The file that you get by uncompressing, should be given a &lt;b&gt;.xml &lt;/b&gt;extension.&lt;br /&gt;The resulting&lt;b&gt; pkg_odi_process.xml &lt;/b&gt;file is the same file as if we would had exported the package PKG_ODI_PROCESS using Export command in the Designer module into an XML file.&lt;br /&gt;&lt;br /&gt;This file can be used to import back to the Work Repository.&lt;br /&gt;&lt;br /&gt;&lt;div class="zemanta-pixie"&gt;&lt;img src="http://img.zemanta.com/pixy.gif?x-id=a9b7cd3d-30b4-8512-b3f9-10864d8dcfc6" alt="" class="zemanta-pixie-img" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-6792214497006652469?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/UGia12sl6FU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/6792214497006652469/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=6792214497006652469" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/6792214497006652469?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/6792214497006652469?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/UGia12sl6FU/odi-object-versioning.html" title="ODI Object versioning" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_Fu7GIrwU88M/THwWyTgnP6I/AAAAAAAAAA0/8qEVzKmCDW0/s72-c/moz-screenshot-1.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://askankit.blogspot.com/2010/08/odi-object-versioning.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcMQX87fip7ImA9WxFUGEk.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-333289902691780673</id><published>2010-06-29T13:24:00.001-07:00</published><updated>2010-06-29T13:24:40.106-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-29T13:24:40.106-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="odi" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><title>Odi Load Multiple XML Files</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Loading multiple XML files into Oracle using ODI is illustrated in this post.&lt;br/&gt;&lt;br/&gt;The standard reverse engineering driver will parse the dtd or if the dtd is not available, it will parse the XML and generate a DTD on the fly in the same location where the XML file exists.&lt;br/&gt;&lt;br/&gt;To load multiple XML files we will have to employ ODI variables. An ODI variable is needed to store the name of the file that needs to be loaded to Oracle.&lt;br/&gt;Declare the variable in your project &lt;b&gt;V_MYXMLFILE&lt;/b&gt; with the following query:&lt;br/&gt;&lt;i&gt;&lt;font color='#000099'&gt;select xmlfilename from &lt;b&gt;my_metadata_table&lt;/b&gt;&lt;/font&gt;.&lt;/i&gt;&lt;br/&gt;&lt;br/&gt;This &lt;b&gt;my_metadata_table &lt;/b&gt;should exist in an Oracle schema and should contain a column &lt;b&gt;xmlfilename &lt;/b&gt;which lists all the XML filenames (alongwith path).&lt;br/&gt;Each time the variable is refreshed, it will populate the first value from the table. You can follow the instructions found at &lt;a href='http://odiexperts.com/?p=524' target='_blank'&gt;http://odiexperts.com/?p=524&lt;/a&gt; to loop through each row in the table.&lt;br/&gt;&lt;br/&gt;Now create 2 ODI procedures:&lt;br/&gt;&lt;ol&gt;&lt;li&gt;Truncate XML Schema&lt;/li&gt;&lt;li&gt;Load XML Schema&lt;/li&gt;&lt;/ol&gt;&lt;big&gt;&lt;big&gt;1.) Truncate XML Schema&lt;small&gt; will contain 1 command "Truncate"&lt;/small&gt;&lt;/big&gt;&lt;/big&gt;&lt;br/&gt;&lt;br/&gt;Technology = XML and Schema = Logical XML schema that you want to work on.&lt;br/&gt;The "Command on Target" will be "&lt;font color='#000099'&gt;TRUNCATE SCHEMA &lt;b&gt;MYSCHEMA&lt;/b&gt;&lt;/font&gt;".&lt;br/&gt;Here MYSCHEMA is the name of the XML schema that is defined in Topology Manager using the &lt;b&gt;s&lt;/b&gt; tag as in&lt;br/&gt;&lt;font color='#000099'&gt;&lt;i&gt;jdbc:snps:xml?d=E:/XMLDIR/myXML.dtd&amp;amp;&lt;b&gt;s=MYSCHEMA&lt;/b&gt;&lt;/i&gt;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;Truncate XML Schema will wipe out all the records in the data structure that holds the XML data. It can be in memory or it can be set to a physical database schema by using &lt;b&gt;&amp;amp;db_props=&lt;i&gt;mydbparams&lt;/i&gt;&lt;/b&gt; parameter in the xml server definition. Here mydbparams is a reference to a physical file mydbparams.properties created in the $ODI_HOME/oracledi/drivers.&lt;br/&gt;&lt;br/&gt;&lt;big&gt;&lt;big&gt;2.) Load XML Schema &lt;small&gt;will contain 2 commands:&lt;/small&gt;&lt;/big&gt;&lt;/big&gt;&lt;br/&gt;&lt;br/&gt;&lt;big&gt;Show variable value &lt;/big&gt;- This will be created using Jython Technology with the following commands : &lt;br/&gt;&lt;div align='left'&gt;&lt;font face='Courier New' color='#000099'&gt;a = 'Filename = '+ '#V_MYXMLFILE'&lt;br/&gt;raise(a) &lt;br/&gt;&lt;/font&gt;Also, mark the Ignore Errors = Yes, for this step.&lt;br/&gt;&lt;br/&gt;This is cheat to display the value of the ODI variable during execution in the Operator.&lt;br/&gt;Also, this step is somehow needed so that the value of the variable can be accessed by the next step.&lt;br/&gt;If you remove this step, the next step (which actually loads the XML schema with the contents of the file) errors out.&lt;br/&gt;&lt;big&gt;&lt;br/&gt;Load XML Schema &lt;/big&gt;- This will be created using XML Technology and XML logical schema. &lt;br/&gt;Command on Target =&lt;font face='Courier New' color='#000099'&gt; LOAD FILE "&lt;font color='#660000'&gt;&lt;b&gt;#MYPROJECT_NAME.V_MYXMLFILE&lt;/b&gt;&lt;/font&gt;" ON SCHEMA &lt;font color='#660000'&gt;&lt;b&gt;MYSCHEMA &lt;/b&gt;&lt;/font&gt;INSERT_ONLY&lt;br/&gt;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;Now you can create a package using these procedures and refresh the variable V_MYXMLFILE with location/name of the file and execute Load XML Schema.&lt;br/&gt;The procedure "Load XML Schema" can also be executed in a loop to load multiple XML files (that adhere to the same DTD) into the database tables.&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=99ef865f-4711-839b-b8c5-f3baf2a89d61' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-333289902691780673?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/FOS8muxfDn8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/333289902691780673/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=333289902691780673" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/333289902691780673?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/333289902691780673?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/FOS8muxfDn8/odi-load-multiple-xml-files.html" title="Odi Load Multiple XML Files" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>5</thr:total><feedburner:origLink>http://askankit.blogspot.com/2010/06/odi-load-multiple-xml-files.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04GQnw_eyp7ImA9WxFSFEk.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-8722687035345617613</id><published>2010-04-16T13:32:00.001-07:00</published><updated>2010-04-16T13:32:03.243-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-16T13:32:03.243-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="odi" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><title>ODI variables from Work Repository</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;font face='arial'&gt;Ever thought if there was an SQL way of accessing the values of the variables that were evaluated or refreshed by ODI sessions ?&lt;br/&gt;&lt;br/&gt;ODI stores the information about the variables in the following tables in a Development WR:&lt;/font&gt;&lt;br/&gt;&lt;font face='Courier New'&gt;&lt;font color='#000099'&gt;SNP_VAR&lt;br/&gt;SNP_VAR_DATA (historical values of variable)&lt;br/&gt;SNP_VAR_SCEN&lt;br/&gt;SNP_VAR_SESS&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;&lt;font face='arial'&gt;The following query will extract the variable value for a particular session:&lt;br/&gt;&lt;font color='#000099'&gt;&lt;br/&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color='#000099'&gt;SELECT svd.var_name,&lt;br/&gt;       svd.var_n AS numval,&lt;br/&gt;       svd.var_d AS dateval,&lt;br/&gt;       svd.var_v AS strval&lt;br/&gt;FROM snp_var_data svd,&lt;br/&gt;     (SELECT sp.project_code || '.' || sv.var_name AS fullvarname&lt;br/&gt;      FROM snp_project sp, snp_var sv&lt;br/&gt;      WHERE sv.i_project = sp.i_project) svp,&lt;br/&gt;     snp_var_sess svs&lt;br/&gt;WHERE     svd.var_name = svp.fullvarname&lt;br/&gt;      AND svs.var_name = svd.var_name&lt;br/&gt;      AND svs.sess_no = :sess_no&lt;br/&gt;&lt;br/&gt;&lt;font face='arial' color='#000000'&gt;The Execution WR would be a bit different&lt;/font&gt;&lt;br/&gt;&lt;/font&gt;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=b31f6aa5-798d-879f-b872-0c427b0540d6' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-8722687035345617613?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/eTRaw9I_0rI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/8722687035345617613/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=8722687035345617613" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/8722687035345617613?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/8722687035345617613?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/eTRaw9I_0rI/odi-variables-from-work-repository.html" title="ODI variables from Work Repository" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://askankit.blogspot.com/2010/04/odi-variables-from-work-repository.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYCSHY6eSp7ImA9WxBbGEk.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-5959228990018809115</id><published>2010-03-17T09:21:00.001-07:00</published><updated>2010-03-17T09:26:09.811-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-17T09:26:09.811-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="odi" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><title>LKM File to Oracle SQLLDR ODI</title><content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;One of the most common problem people are facing while using Oracle Data Integrator's &lt;b&gt;LKM File to Oracle (SQLLDR)&lt;/b&gt; is that the step which invokes the OS based sqlldr results in an error even if LOA_ERRORS is set to non-zero number.&lt;br /&gt;&lt;br /&gt;For eg. you have a file that contains 1000 records and 10 of them are erroneous (bad), then ODI will create a .bad file and move the records in there. Theoretically, you will expect that setting up the LKM parameter LOA_ERRORS should solve the problem. So, if you want a maximum of 20 records to error out, you will set LOA_ERRORS=20.&lt;br /&gt;But, even if the number of actual errors is less than 20, ODI will indicate failure of that step.&lt;br /&gt;&lt;br /&gt;This is a known bug 8560194 with ODI LKM File to Oracle (SQLLDR) and it has not been resolved yet.&lt;br /&gt;Lets get into the details as to why this is a bug. This has to do with the way sqlldr returns the code when it terminates. Following is the list of codes that sqlldr returns for different conditions:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;SQLLDR if successful returns 0&lt;/li&gt;&lt;li&gt;SQLLDR if unsuccessful returns 1&lt;/li&gt;&lt;li&gt;SQLLDR if successful but even 1 record erred out to .bad or .dsc file returns 2&lt;/li&gt;&lt;/ol&gt;For ODI anything that is not 0 is an error. And that will be true for any system that is dependent on the return codes&lt;br /&gt;&lt;br /&gt;To resolve this bug, you will have to customize this KM and change the step "Invoke SQLLDR" to selectively handle each error condition.&lt;br /&gt;Follow the steps:&lt;br /&gt;&lt;div class="jive-message-body"&gt;&lt;ol&gt;&lt;li&gt;Duplicate the KM.&lt;/li&gt;&lt;li&gt; Goto the step Call sqlldr. and change the technology to &lt;b&gt;Jython&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Replace the existing code with the following:&lt;/li&gt;&lt;/ol&gt;&lt;span style="color: rgb(0, 0, 153);font-family:Courier New;" &gt;import os&lt;br /&gt;retVal = os.system(r'sqlldr control=&lt;%=snpRef.getSrcTablesList("", "[WORK_SCHEMA]/[TABLE_NAME].ctl", "", "")%&gt; log=&lt;%=snpRef.getSrcTablesList("", "[WORK_SCHEMA]/[TABLE_NAME].log", "", "")%&gt; userid=&lt;%=snpRef.getInfo("DEST_USER_NAME")%&gt;/&lt;%=snpRef.getInfo("DEST_PASS")%&gt;@&lt;%=snpRef.getInfo("DEST_DSERV_NAME")%&gt; &gt; &lt;%=snpRef.getSrcTablesList("", "[WORK_SCHEMA]/[TABLE_NAME].out", "", "")%&gt;')&lt;br /&gt;&lt;br /&gt;if  retVal == 1 or retVal &gt; 2:&lt;br /&gt;   &lt;span style="font-weight: bold;"&gt;-----&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-family:Courier New;" &gt;raise 'SQLLDR failed. Please check the &lt;%=snpRef.getSrcTablesList("", "[WORK_SCHEMA]/[TABLE_NAME].log", "", "")%&gt;  for details '&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Replace the  &lt;span style="color: rgb(0, 0, 153);font-family:Courier New;" &gt;-----&gt; &lt;/span&gt;with spaces or tab. You can enhance the above code by putting variables and further checking for the .bad, .dsc and .log files.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="zemanta-pixie"&gt;&lt;img src="http://img.zemanta.com/pixy.gif?x-id=fab07aa5-be89-87fa-8067-f8be480202c3" alt="" class="zemanta-pixie-img" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-5959228990018809115?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/e27EV34ghI8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/5959228990018809115/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=5959228990018809115" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/5959228990018809115?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/5959228990018809115?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/e27EV34ghI8/lkm-file-to-oracle-sqlldr-odi_17.html" title="LKM File to Oracle SQLLDR ODI" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>11</thr:total><feedburner:origLink>http://askankit.blogspot.com/2010/03/lkm-file-to-oracle-sqlldr-odi_17.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QNSHo8eyp7ImA9WxNaEEQ.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-5494371318232999352</id><published>2009-11-24T12:42:00.001-08:00</published><updated>2009-11-24T12:43:19.473-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-24T12:43:19.473-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="scd" /><category scheme="http://www.blogger.com/atom/ns#" term="ikm" /><category scheme="http://www.blogger.com/atom/ns#" term="odi" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><title>IKM Oracle Data Integrator SCD Type 2 Bug</title><content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Oracle Data Integrator 10.1.3.5&lt;br /&gt;IKM Slowly Changing Dimension Type 2&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Problem Statement:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Implement a SCD Type 2 for a table.&lt;br /&gt;Three columns form the Natural Key for the table and all other columns need to be tracked for change.&lt;br /&gt;If the non Natural Key columns were marked as “Overwrite On Change” in the “Slowly Changing Dimensions Behaviour”, the IKM worked fine but if the non Natural Key columns were marked as “Add Row on Change”, the IKM didn’t do anything.&lt;br /&gt;&lt;br /&gt;This is a reported bug no. 8312924 and a patch is available. Metalink note 788747.1 describes the problem and workaround if you cannot deploy the patch.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Solution:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Changed the IKM Step 172 and replaced CX_COL_NAME with EXPRESSION courtesy of forums:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-create.do" target="_blank"&gt;http://forums.oracle.com/forums/thread.jspa?messageID=3816462&lt;/a&gt;&lt;br /&gt;and&lt;br /&gt;&lt;a href="http://www.blogger.com/post-create.do" target="_blank"&gt;http://forums.oracle.com/forums/thread.jspa?messageID=3631382&amp;amp;#3631382&lt;/a&gt;&lt;br /&gt;&lt;div class="zemanta-pixie"&gt;&lt;img src="http://img.zemanta.com/pixy.gif?x-id=d8d894b8-46d8-876a-97d7-be3d5041957b" alt="" class="zemanta-pixie-img" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-5494371318232999352?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/X0845pHpNng" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/5494371318232999352/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=5494371318232999352" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/5494371318232999352?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/5494371318232999352?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/X0845pHpNng/ikm-oracle-data-integrator-scd-type-2.html" title="IKM Oracle Data Integrator SCD Type 2 Bug" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://askankit.blogspot.com/2009/11/ikm-oracle-data-integrator-scd-type-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMNRHcyfSp7ImA9WxNVFks.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-5871424399180159166</id><published>2009-10-27T10:25:00.001-07:00</published><updated>2009-10-27T10:28:15.995-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-27T10:28:15.995-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="install" /><category scheme="http://www.blogger.com/atom/ns#" term="Database" /><category scheme="http://www.blogger.com/atom/ns#" term="apex" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><title>Windows Oracle Apex upgrade on XE from 2.2 to 3.2</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;I was tempted to upgrade my Apex installation to 3.2 from default (2.2) that comes along with Oracle XE database.&lt;br/&gt;I followed the instructions on&lt;br/&gt;&lt;a href='http://www.oracle.com/technology/products/database/application_express/html/3.2_and_xe.html'&gt;http://www.oracle.com/technology/products/database/application_express/html/3.2_and_xe.html&lt;/a&gt;&lt;br/&gt;and&lt;br/&gt;&lt;a href='http://blogs.oracle.com/SanthoshK/2008/09/oracle_xe_apex_3x_installation.html'&gt;http://blogs.oracle.com/SanthoshK/2008/09/oracle_xe_apex_3x_installation.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;But finally got struck during the step of loading images. I had kept the APEX install on D:&lt;br/&gt;&lt;br/&gt;&lt;font face='Courier New'&gt;SQL&amp;gt; @apxldimg.sql D:\Downloads\Oracle_Tools\apex_3.2&lt;br/&gt;&lt;br/&gt;PL/SQL procedure successfully completed.&lt;br/&gt;&lt;br/&gt;old   1: create directory APEX_IMAGES as '&amp;amp;1/apex/images'&lt;br/&gt;new   1: create directory APEX_IMAGES as 'D:\Downloads\Oracle_Tools\apex_3.2/apex/images'&lt;br/&gt;&lt;br/&gt;Directory created.&lt;br/&gt;&lt;br/&gt;declare&lt;br/&gt;*&lt;br/&gt;&lt;font color='#cc0000'&gt;ERROR at line 1:&lt;br/&gt;ORA-22288: file or LOB operation FILEOPEN failed&lt;br/&gt;Access is denied.&lt;br/&gt;ORA-06512: at "SYS.DBMS_LOB", line 523&lt;br/&gt;ORA-06512: at "SYS.XMLTYPE", line 287&lt;br/&gt;ORA-06512: at line 15&lt;/font&gt;&lt;/font&gt;&lt;font color='#cc0000'&gt;&lt;br/&gt;&lt;br/&gt;&lt;/font&gt;I tried several alternatives like changing the apxldimg.sql script and googled atleast 2 hours before trying a simple solution.&lt;br/&gt;&lt;br/&gt;I copied the apex installation folder from D: drive to&lt;br/&gt;C:\apex_32 and reran the step&lt;br/&gt;&lt;br/&gt;&lt;font face='Courier New'&gt;SQL&amp;gt; @apxldimg.sql c:\apex_32&lt;br/&gt;&lt;br/&gt;PL/SQL procedure successfully completed.&lt;br/&gt;&lt;br/&gt;old   1: create directory APEX_IMAGES as '&amp;amp;1/apex/images'&lt;br/&gt;new   1: create directory APEX_IMAGES as 'c:\apex_32/apex/images'&lt;br/&gt;&lt;br/&gt;Directory created.&lt;br/&gt;PL/SQL procedure successfully completed.&lt;br/&gt;PL/SQL procedure successfully completed.&lt;br/&gt;PL/SQL procedure successfully completed.&lt;br/&gt;Commit complete.&lt;br/&gt;&lt;br/&gt;timing for: Load Images&lt;br/&gt;Elapsed: 00:01:01.59&lt;br/&gt;&lt;br/&gt;Directory dropped.&lt;br/&gt;&lt;br/&gt;&lt;/font&gt;Now I can see all the images on http://localhost:8080/apex&lt;br/&gt;Apparently, there are quirks involving any other drive than C: that need to be resolved by Oracle. But for the time this is the quickest way to resolve and enjoy the functionalities of Apex 3.2&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-5871424399180159166?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/adzV250lypI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/5871424399180159166/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=5871424399180159166" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/5871424399180159166?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/5871424399180159166?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/adzV250lypI/oracle-apex-upgrade-for-xe-from-22-to.html" title="Windows Oracle Apex upgrade on XE from 2.2 to 3.2" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://askankit.blogspot.com/2009/10/oracle-apex-upgrade-for-xe-from-22-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEARno7eSp7ImA9WxJTEkg.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-5975833883284806679</id><published>2009-04-20T13:17:00.001-07:00</published><updated>2009-04-20T13:17:27.401-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-20T13:17:27.401-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="www" /><category scheme="http://www.blogger.com/atom/ns#" term="antivirus" /><category scheme="http://www.blogger.com/atom/ns#" term="internet" /><title>Solution for Internet Browser misbehaving after CA Antivirus Install</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;I switched from Norton to CA that comes with my subscription of TimeWarner Cable.&lt;br/&gt;Everything was fine till I opened my web browser(s). The web-browser will not work as desired. &lt;br/&gt;&lt;ul&gt;&lt;li&gt;No cookie will get stored&lt;/li&gt;&lt;li&gt;The layer effect of browser did not work anymore.&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;Yes, this happened to all 3 browsers that I use (Internet Explorer, Firefox, Google Chrome).&lt;br/&gt;So, I was sure that something to do with the install of the new anti-virus suite.&lt;br/&gt;&lt;br/&gt;Assuming that some system files were overwritten, I unnecessarily upgraded from XP-SP2 to Service Pack 3. &lt;br/&gt;But to no avail. The browsers worked still the same.&lt;br/&gt;&lt;br/&gt;Finally, I started playing with the Firewall settings of the CA Security Suite 2007.&lt;br/&gt;I found out that the Cookie settings were blocking all cookies, so I set it to Medium (Do not store 3rd party cookies).&lt;br/&gt;And also, I changed the setting for Popup/Pop-under ads. I set them to Medium too. This was disabling all browsers from giving a layered effect for several websites.&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=31379002-9f78-8fc8-b0ea-e9bc6a3db9c1' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-5975833883284806679?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/BzS-VunG9m8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/5975833883284806679/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=5975833883284806679" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/5975833883284806679?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/5975833883284806679?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/BzS-VunG9m8/solution-for-internet-browser.html" title="Solution for Internet Browser misbehaving after CA Antivirus Install" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://askankit.blogspot.com/2009/04/solution-for-internet-browser.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIBRng8fCp7ImA9WxVaE0w.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-2637372661726199690</id><published>2009-04-09T13:55:00.003-07:00</published><updated>2009-04-09T13:55:57.674-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-09T13:55:57.674-07:00</app:edited><title>Use xmlagg in Oracle to concat multiple rows into String</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Or in other words, Pivot the values from the results of a query.&lt;br/&gt;&lt;br/&gt;The following article contains a lot of information about this problem that we usually face:&lt;br/&gt;&lt;a href='http://tkyte.blogspot.com/2007/03/stringing-them-up.html' target='_blank'&gt;http://tkyte.blogspot.com/2007/03/stringing-them-up.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Read the comments section.&lt;br/&gt;&lt;br/&gt;This is the most intuitive solution that I prefer:&lt;br/&gt;&lt;font face='Courier New'&gt;&lt;br/&gt;&lt;font color='#000066'&gt;SELECT deptno,&lt;br/&gt;       SUBSTR (REPLACE (REPLACE (XMLAGG (XMLELEMENT ("x", ename)&lt;br/&gt;                                 ORDER BY ename),'&amp;lt;/x&amp;gt;'),'&amp;lt;x&amp;gt;','|'),2)  as concated_list&lt;br/&gt;FROM emp&lt;br/&gt;    GROUP BY deptno&lt;br/&gt;    ORDER BY deptno;&lt;/font&gt;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=9b8ed038-d23b-827d-98d8-c99698b54403' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-2637372661726199690?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/gl_KXgfE7gQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/2637372661726199690/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=2637372661726199690" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/2637372661726199690?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/2637372661726199690?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/gl_KXgfE7gQ/use-xmlagg-in-oracle-to-concat-multiple.html" title="Use xmlagg in Oracle to concat multiple rows into String" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://askankit.blogspot.com/2009/04/use-xmlagg-in-oracle-to-concat-multiple.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YAQXg8fip7ImA9WxVQGEs.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-5460425037386573720</id><published>2009-02-05T12:19:00.000-08:00</published><updated>2009-02-05T12:19:00.676-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-05T12:19:00.676-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="Database" /><category scheme="http://www.blogger.com/atom/ns#" term="vmware" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title>Step by Step guide to Install Oracle 11g on Ubuntu VM</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;After downloading the Ubuntu VMWare image, there were few more quirks to settle.&lt;br/&gt;I had to install NFS and SSH on the machine to make it accessible by ssh from Windows.&lt;br/&gt;&lt;br/&gt;Following are the commands:&lt;br/&gt;&lt;big&gt;&lt;big&gt;&lt;font face='Courier New'&gt;&lt;span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: verdana; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;' class='Apple-style-span'&gt;sudo apt-get install openssh-server openssh-client&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: verdana; font-size: 11px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;' class='Apple-style-span'&gt;sudo apt-get install nfs-kernel-server nfs-common portmap&lt;/span&gt;&lt;br/&gt;&lt;/font&gt;&lt;/big&gt;&lt;/big&gt;&lt;br/&gt;One of the forums that helped were:&lt;br/&gt;&lt;a href='http://ubuntuforums.org/archive/index.php/t-492772.html'&gt;http://ubuntuforums.org/archive/index.php/t-492772.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Now I setup the samba share on this machine&lt;br/&gt;&lt;span style='border-collapse: separate; color: rgb(0, 0, 0); font-family: &amp;apos;Helvetica Neue&amp;apos;; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;' class='Apple-style-span'&gt;&lt;pre style='border: 1px dashed rgb(193, 180, 150); padding: 4pt; background-color: rgb(240, 238, 230); font-family: courier,monospace; white-space: pre-wrap;'&gt;sudo aptitude install samba&lt;/pre&gt;&lt;/span&gt;&lt;a href='https://help.ubuntu.com/community/SettingUpSamba'&gt;https://help.ubuntu.com/community/SettingUpSamba&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;After installing the samba, create a directory on the FS which you want to share with Windows or other systems.&lt;br/&gt;Then edit &lt;font face='Courier New'&gt;/etc/samba/smb.conf&lt;/font&gt; and add these lines to the end&lt;br/&gt;&lt;font face='Courier New'&gt;&lt;br/&gt;[&lt;i&gt;share_name&lt;/i&gt;]&lt;br/&gt;        comment = &lt;i&gt;Share to Linux&lt;/i&gt;&lt;br/&gt;        path =&lt;i&gt; /home/user/winshare&lt;/i&gt;&lt;br/&gt;        guest ok = yes&lt;br/&gt;        writeable = yes&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;You can use the following commands to restart the services if needed:&lt;br/&gt;&lt;font face='Courier New'&gt;/etc/init.d/nfs-common restart&lt;br/&gt;/etc/init.d/samba restart&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;Following is a suggested helpful link:&lt;br/&gt;&lt;a href='http://www.howtogeek.com/howto/ubuntu/create-a-samba-user-on-ubuntu/' target='_blank'&gt;http://www.howtogeek.com/howto/ubuntu/create-a-samba-user-on-ubuntu/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;big&gt;&lt;b&gt;Process to install the Oracle on Ubuntu starts&lt;/b&gt;&lt;/big&gt;&lt;br/&gt;&lt;br/&gt;This page is particularly helpful and is worth reading every bit:&lt;br/&gt;&lt;a href='http://www.pythian.com/blogs/654/installing-oracle-11g-on-ubuntu-linux-710-gutsy-gibbon' target='_blank'&gt;http://www.pythian.com/blogs/654/installing-oracle-11g-on-ubuntu-linux-710-gutsy-gibbon&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;It mentions the packages that need to be updated before Oracle Installation.&lt;br/&gt;&lt;br/&gt;&lt;font face='Courier New'&gt;apt-get update&lt;br/&gt;apt-get upgrade&lt;/font&gt; (This would update the packages from the internet and will take sometime)&lt;br/&gt;&lt;br/&gt;Anyways follow step by step the instructions in the above link to complete the installation.&lt;br/&gt;&lt;br/&gt;At some point of time, you will encounter insufficient disk space in Linux due to which you cannot install Oracle.&lt;br/&gt;To add more disk space to the Linux VM, follow the link below&lt;br/&gt;&lt;a href='http://www.matttopper.com/?p=25'&gt;http://www.matttopper.com/?p=25&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I allocated a 20GB SCSI HD to Linux VM and split it into 3 partitions. The FSTAB entries are:&lt;br/&gt;&lt;font face='Courier New' color='#660000'&gt;/dev/sdb1 /u01 ext3 defaults 1 1&lt;br/&gt;/dev/sdb2 /oradata ext3 defaults 1 1&lt;br/&gt;/dev/sdb3 /data ext3 defaults 1 1&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;Also, the Oracle installer needs a GUI. So, you need an X-Server (like eXceed) to complete the installation.&lt;br/&gt;Simply on command prompt, set DISPLAY&lt;br/&gt;&lt;br/&gt;For bash- &amp;gt; &lt;font face='Courier New'&gt;export DISPLAY=ExceedHostIP:0.0&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;And then start Exceed on Windows and connect to the IP address of the VM linux. Try 3-4 times to connect as it may error out.&lt;br/&gt;&lt;br/&gt;If you get a timeout error, ignore the message and press nothing. Continue with Installation and complete the post-installation steps in&lt;br/&gt;&lt;a href='http://www.pythian.com/blogs/654/installing-oracle-11g-on-ubuntu-linux-710-gutsy-gibbon' target='_blank'&gt;http://www.pythian.com/blogs/654/installing-oracle-11g-on-ubuntu-linux-710-gutsy-gibbon&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Good Luck&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-5460425037386573720?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/rm07jxT1_gg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/5460425037386573720/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=5460425037386573720" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/5460425037386573720?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/5460425037386573720?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/rm07jxT1_gg/step-by-step-guide-to-install-oracle.html" title="Step by Step guide to Install Oracle 11g on Ubuntu VM" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://askankit.blogspot.com/2009/02/step-by-step-guide-to-install-oracle.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cGRno_fip7ImA9WxVQGEs.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-4237311339898400174</id><published>2009-02-03T10:00:00.001-08:00</published><updated>2009-02-05T13:23:47.446-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-05T13:23:47.446-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Database" /><category scheme="http://www.blogger.com/atom/ns#" term="apex" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><title>Installing APEX on Oracle 11g from Database Troubleshooting</title><content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;I installed Oracle 11g on Oracle Linux from a VM Image. So I am good with Oracle Installation.&lt;br /&gt;&lt;br /&gt;Now my interest is to use APEX on this database.&lt;br /&gt;&lt;br /&gt;I followed the instructions on the following page:&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/E10513_01/doc/install.310/e10496/db_install.htm#CBHCDBAB"&gt;http://download.oracle.com/docs/cd/E10513_01/doc/install.310/e10496/db_install.htm#CBHCDBAB&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After the installation is complete and I tried to access&lt;br /&gt;http://localhost:8080/apex/apex_admin, I kept getting username/password for &lt;span style="font-weight: bold;"&gt;xdb&lt;/span&gt; account.&lt;br /&gt;I tried unlocking the account xdb and anonymous using&lt;br /&gt;alter user xdb account unlock;&lt;br /&gt;alter user anonymous  account unlock;&lt;br /&gt;&lt;br /&gt;It didnt work.&lt;br /&gt;&lt;br /&gt;If it works for you then, you will be able to access the site. That site requires admin as username.&lt;br /&gt;You will need to change the password for this user in the database by executing the following command:&lt;br /&gt;sql&gt; @apxxepwd.sql &lt;&lt;span style="font-style: italic;"&gt;admin123&lt;/span&gt;&gt;&lt;br /&gt;This command is found in $ORACLE_HOME/apex&lt;br /&gt;&lt;br /&gt;Then I tried executing apex_epg_config script found in&lt;br /&gt;/ora/db/11.1.0/apex&lt;br /&gt;&lt;br /&gt;It asks for a parameter. This parameter should be /ora/db/11.1.0&lt;br /&gt;eg.&lt;br /&gt;sql&amp;gt; @apex_epg_config $ORACLE_HOME&lt;br /&gt;&lt;br /&gt;It basically loads the apex images to the database. Instructions for executing this script is not well-documented.&lt;br /&gt;&lt;br /&gt;But still the problem remains the same. I am not able to access the website.&lt;br /&gt;&lt;br /&gt;Now I stop the listener.&lt;br /&gt;$ lsnrctl stop&lt;br /&gt;&lt;br /&gt;and then&lt;br /&gt;$lsnrctl start&lt;br /&gt;&lt;br /&gt;&lt;small&gt;&lt;small&gt;&lt;span style="font-family:Courier New;"&gt;Copyright (c) 1991, 2007, Oracle.  All rights reserved.&lt;br /&gt;&lt;br /&gt;Starting /ora/db/11.1.0/bin/tnslsnr: please wait...&lt;br /&gt;&lt;br /&gt;TNSLSNR for Linux: Version 11.1.0.6.0 - Production&lt;br /&gt;System parameter file is /ora/db/11.1.0/network/admin/listener.ora&lt;br /&gt;Log messages written to /ora/diag/tnslsnr/oracle2go/listener/alert/log.xml&lt;br /&gt;Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle2go.us.oracle.com)&lt;br /&gt;(PORT=1521)))&lt;br /&gt;Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))&lt;br /&gt;&lt;br /&gt;Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle2go.us.oracle.com)&lt;br /&gt;(PORT=1521)))&lt;br /&gt;STATUS of the LISTENER&lt;br /&gt;------------------------&lt;br /&gt;Alias                     LISTENER&lt;br /&gt;Version                   TNSLSNR for Linux: Version 11.1.0.6.0 - Production&lt;br /&gt;Start Date                03-FEB-2009 08:26:18&lt;br /&gt;Uptime                    0 days 0 hr. 0 min. 0 sec&lt;br /&gt;Trace Level               off&lt;br /&gt;Security                  ON: Local OS Authentication&lt;br /&gt;SNMP                      OFF&lt;br /&gt;Listener Parameter File   /ora/db/11.1.0/network/admin/listener.ora&lt;br /&gt;Listener Log File         /ora/diag/tnslsnr/oracle2go/listener/alert/log.xml&lt;br /&gt;Listening Endpoints Summary...&lt;br /&gt; (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle2go.us.oracle.com)(PORT=1521))&lt;br /&gt;)&lt;br /&gt; (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))&lt;br /&gt;The listener supports no services&lt;br /&gt;The command completed successfully&lt;br /&gt;&lt;/span&gt;&lt;/small&gt;&lt;/small&gt;&lt;br /&gt;Then waited for 5 minutes. Somehow it didnt work for me the next instant. I think it takes some time to refresh.&lt;br /&gt;&lt;br /&gt;Now I can access the&lt;br /&gt;&lt;a href="http://oracle2go.us.oracle.com:8080/apex"&gt;http://localhost:8080/apex&lt;/a&gt; website.&lt;br /&gt;&lt;br /&gt;The key is to restart the listener after unlocking the xdb account.&lt;br /&gt;&lt;br /&gt;There is another page that I hit while searching for the solutions to APEX installation:&lt;br /&gt;&lt;a href="http://www.uaex.edu/srea/Application_Express_Installation.htm"&gt;http://www.uaex.edu/srea/Application_Express_Installation.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-4237311339898400174?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/YYYch_jrqzQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/4237311339898400174/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=4237311339898400174" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/4237311339898400174?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/4237311339898400174?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/YYYch_jrqzQ/installing-apex-on-oracle-11g-from.html" title="Installing APEX on Oracle 11g from Database Troubleshooting" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://askankit.blogspot.com/2009/02/installing-apex-on-oracle-11g-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4ARnk6eyp7ImA9WxVQFUk.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-6520345704421706552</id><published>2009-02-01T19:41:00.001-08:00</published><updated>2009-02-01T19:55:47.713-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-01T19:55:47.713-08:00</app:edited><title>Funny Matrix Windows XP Video</title><content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;I stumbled upon this hilarious Matrix and Windows XP video&lt;br /&gt;&lt;object type="application/x-shockwave-flash" data="http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=1886349&amp;fullscreen=1" width="450" height="270" &gt;&lt;param name="allowfullscreen" value="true"/&gt;&lt;param name="wmode" value="transparent"/&gt;&lt;param name="AllowScriptAccess" value="true"/&gt;&lt;param name="movie" quality="best" value="http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=1886349&amp;fullscreen=1"/&gt;&lt;br /&gt;&lt;embed src="http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=1886349&amp;fullscreen=1" type="application/x-shockwave-flash" wmode="transparent"  width="450" height="270"  allowScriptAccess="always"&gt;&lt;br /&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-6520345704421706552?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/9kOxK9Df-2M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/6520345704421706552/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=6520345704421706552" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/6520345704421706552?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/6520345704421706552?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/9kOxK9Df-2M/funny-matrix-windows-xp-video.html" title="Funny Matrix Windows XP Video" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://askankit.blogspot.com/2009/02/funny-matrix-windows-xp-video.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQNR3w8fCp7ImA9WxVQEUs.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-4365784776628438377</id><published>2009-01-28T10:20:00.001-08:00</published><updated>2009-01-28T10:29:56.274-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-28T10:29:56.274-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="DNS" /><category scheme="http://www.blogger.com/atom/ns#" term="skype" /><category scheme="http://www.blogger.com/atom/ns#" term="network" /><category scheme="http://www.blogger.com/atom/ns#" term="internet" /><category scheme="http://www.blogger.com/atom/ns#" term="BSNL" /><title>BSNL DNS Internet access disrupted yet Skype is functional</title><content type="html">&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Users of &lt;b&gt;BSNL &lt;/b&gt;might encounter this issue quite often.&lt;br /&gt;No website can be opened using Internet Explorer, Firefox, Chrome, etc. Yahoo Messenger wont work too.&lt;br /&gt;But &lt;b&gt;Skype &lt;/b&gt;works without a problem.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The reason :&lt;/b&gt;&lt;br /&gt;The DNS server of BSNL doesn't work for some reason. Each website that you try to access eg. &lt;a href="http://www.neooug.org/"&gt;www.neooug.org&lt;/a&gt; gets translated to an IP address. This translation is provided by the &lt;b&gt;DNS server&lt;/b&gt;. And if the DNS server is unavailable, your computer doesn't get back an IP address and hence you are unable to access the website.&lt;br /&gt;But if you try to access the website using the IP address directly ( On command prompt : ping www.yahoo.com&lt;br /&gt;gives you&lt;br /&gt;&lt;span style="font-family:Courier New;color:#000099;"&gt;H:\&amp;gt;ping www.yahoo.com&lt;br /&gt;&lt;br /&gt;Pinging www.yahoo-ht3.akadns.net [69.147.76.15] with 32 bytes of data:&lt;br /&gt;&lt;br /&gt;Reply from 69.147.76.15: bytes=32 time=10ms TTL=54&lt;br /&gt;Reply from 69.147.76.15: bytes=32 time=10ms TTL=54&lt;br /&gt;Reply from 69.147.76.15: bytes=32 time=10ms TTL=54&lt;br /&gt;Reply from 69.147.76.15: bytes=32 time=16ms TTL=54&lt;br /&gt;&lt;br /&gt;Ping statistics for 69.147.76.15:&lt;br /&gt;    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),&lt;br /&gt;Approximate round trip times in milli-seconds:&lt;br /&gt;    Minimum = 10ms, Maximum = 16ms, Average = 11ms&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;So, if you put &lt;a href="http://69.147.76.15/"&gt;http://69.147.76.15/&lt;/a&gt; in the web-browser, you can access the website. But its just not possible to get the IP address if the DNS server is down.&lt;br /&gt;In case of &lt;b&gt;Skype&lt;/b&gt;, this issue doesn't arise because skype connects using the IP address.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Solution:&lt;br /&gt;&lt;/b&gt;Open the Network Connection/Wireless connection properties on your computer. Open Properties for TCP/IP and change the "Obtain DNS server address automatically" to "Use the following DNS Server addresses"&lt;/div&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;img src="file:///C:/windows/temp/moz-screenshot-1.jpg" alt="" /&gt;&lt;img src="http://1.bp.blogspot.com/_Fu7GIrwU88M/SYCjHV1hYzI/AAAAAAAAAAM/lQqznCOUggs/s320/tcp_ip_properties.JPG" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 286px; height: 320px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5296412508303745842" /&gt;&lt;br /&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;208.67.222.222&lt;/div&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;and &lt;/div&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;208.67.220.220&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;These addresses are provided by &lt;a href="http://www.opendns.com%20/"&gt;http://www.opendns.com &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can also configure your wireless router to use this address so that you don't have to configure each machine on your network to set this DNS information.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;More instructions can be found at&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.opendns.com/smb/start"&gt;https://www.opendns.com/smb/start&lt;/a&gt;&lt;/div&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-4365784776628438377?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/PSf14irplx4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/4365784776628438377/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=4365784776628438377" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/4365784776628438377?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/4365784776628438377?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/PSf14irplx4/bsnl-dns-internet-access-disrupted-yet.html" title="BSNL DNS Internet access disrupted yet Skype is functional" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_Fu7GIrwU88M/SYCjHV1hYzI/AAAAAAAAAAM/lQqznCOUggs/s72-c/tcp_ip_properties.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://askankit.blogspot.com/2009/01/bsnl-dns-internet-access-disrupted-yet.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYCRHY_cSp7ImA9WxRRGEs.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-4191945141110587030</id><published>2008-10-01T06:19:00.001-07:00</published><updated>2008-10-01T06:19:25.849-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-01T06:19:25.849-07:00</app:edited><title>Oracle External Table error for Subquery</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;b&gt;Oracle 10g 10.2.0.4 and below (BUG 5600425 at metalink)&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;Oracle says that the bug is fixed in 10.2.0.4 but it is not.&lt;br/&gt;&lt;br/&gt;So, if you are trying to access an external table using a subquery and a NOT IN clause, the query may error out due to field formatting errors. Even if you use SKIP 1 for the external table definition and your external file has a header row, the following query may return a SQL Loader error.&lt;br/&gt;&lt;br/&gt;&lt;font face='Courier New' color='#cc0000'&gt;      DELETE FROM cfgview&lt;br/&gt;        WHERE cfgviewid NOT IN (SELECT view_id&lt;br/&gt;                                FROM vw_ext_acc_configview);&lt;br/&gt;&lt;/font&gt;&lt;br/&gt;An alternative is to use &lt;br/&gt;&lt;br/&gt;&lt;font face='Courier New' color='#006600'&gt;      DELETE FROM cfgview cv&lt;br/&gt;        WHERE NOT EXISTS (SELECT NULL&lt;br/&gt;                 FROM vw_ext_acc_configview vecv&lt;br/&gt;                WHERE vecv.view_id = CV.cfgviewid);  &lt;/font&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-4191945141110587030?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/Sr8zvfjetjs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/4191945141110587030/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=4191945141110587030" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/4191945141110587030?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/4191945141110587030?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/Sr8zvfjetjs/oracle-external-table-error-for.html" title="Oracle External Table error for Subquery" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://askankit.blogspot.com/2008/10/oracle-external-table-error-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUNR304cSp7ImA9WxRRFE4.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-6253230724348769557</id><published>2008-09-26T06:59:00.001-07:00</published><updated>2008-09-26T07:11:36.339-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-26T07:11:36.339-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Database" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><title>Oracle Subquery bug - Test each subquery individually</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Here arises the importance of unit testing each subquery individually. Consider the scenario below:&lt;br/&gt;&lt;br/&gt;I have this code:&lt;br/&gt;&lt;br/&gt;&lt;font face='Courier New' color='#000099'&gt; DELETE FROM cfgview&lt;br/&gt;        WHERE cfgviewid NOT IN (SELECT &lt;/font&gt;&lt;font face='Courier New' color='#cc0000'&gt;&lt;b&gt;cfgviewid&lt;/b&gt;&lt;/font&gt;&lt;font face='Courier New'&gt;&lt;font color='#000099'&gt;&lt;br/&gt;                                FROM vw_ext_acc_configview);&lt;/font&gt;&lt;br/&gt;&lt;/font&gt;&lt;br/&gt;The inner subquery if executed alone, returns an error because the columnname &lt;b&gt;cfgviewid &lt;/b&gt;doesn't exist.&lt;br/&gt;&lt;br/&gt;But if you execute the full query, it returns successfully and deletes 0 rows.&lt;br/&gt;&lt;br/&gt;So, this implies that you need to unit test each query before adding it as a subquery.&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-6253230724348769557?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/_sRNwrsP-Zo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/6253230724348769557/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=6253230724348769557" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/6253230724348769557?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/6253230724348769557?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/_sRNwrsP-Zo/oracle-subquery-bug-test-each-subquery.html" title="Oracle Subquery bug - Test each subquery individually" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://askankit.blogspot.com/2008/09/oracle-subquery-bug-test-each-subquery.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8ESXo8eCp7ImA9WxdWFUk.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-7458369583010276718</id><published>2008-07-08T13:10:00.001-07:00</published><updated>2008-07-08T13:10:08.470-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-08T13:10:08.470-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Database" /><category scheme="http://www.blogger.com/atom/ns#" term="Oracle" /><title>Oracle Enterprise Manager 10g Job Scheduler Configuration Problem Resolution for Solaris</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Oracle Enterprise Manager 10g is a powerful tool that comes with many administrative features which make database management much more simpler.&lt;br/&gt;It has an inbuilt job scheduler that lets you schedule jobs. Its not a very feature rich scheduler but still does quite a lot considering the fact that it is free with Oracle's License.&lt;br/&gt;&lt;br/&gt;I am outlining a configuration problem that may save some time to diagnose:&lt;br/&gt;If a shell script or a Java program is executed using OEM under the credentials of a user who doesnt belong to the Oracle user group on Solaris, it fails with the following error:&lt;br/&gt;&lt;br/&gt;Shell script :&lt;br/&gt;&lt;br/&gt;&lt;font face='Courier New' color='#cc0000'&gt;/bin/sh: cannot determine current directory&lt;/font&gt;&lt;br/&gt;or&lt;br/&gt;&lt;br/&gt;&lt;font face='Courier New' color='#cc0000'&gt;shell-init: could not get current directory: getcwd: cannot access parent directories: Permission denied&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;Java Proram :&lt;br/&gt;&lt;br/&gt;&lt;font face='Courier New' color='#cc0000'&gt;Error occurred during initialization of VM&lt;br/&gt;java.lang.Error: Properties init: Could not determine current working directory&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;This is due to permission lacking on the directory where the OEM agent is installed&lt;br/&gt;&lt;font color='#000099'&gt;/u01/app/oracle/product/agent10g/sysman/emd&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;Check the permissions on this directory.&lt;br/&gt;&lt;font color='#000099'&gt;drwxr-x--- 6 oracle dba 512 May 12 13:40 emd&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;Change the permissions to&lt;br/&gt;&lt;font color='#000099'&gt;drwxr-xr-x 6 oracle dba 512 May 12 13:40 emd&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;I believe that OEM's working directory is the above location and since the underlying user doesnt have access to this directory, hence all the programs error out.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-7458369583010276718?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/ozRWagI8N88" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/7458369583010276718/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=7458369583010276718" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/7458369583010276718?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/7458369583010276718?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/ozRWagI8N88/oracle-enterprise-manager-10g-job_8656.html" title="Oracle Enterprise Manager 10g Job Scheduler Configuration Problem Resolution for Solaris" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://askankit.blogspot.com/2008/07/oracle-enterprise-manager-10g-job_8656.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0QHRX86fCp7ImA9WxdXEkk.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-1434459250666920910</id><published>2008-06-23T12:28:00.001-07:00</published><updated>2008-06-23T12:28:54.114-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-23T12:28:54.114-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="www" /><title>My favorite firefox Addons</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;My favorite firefox plugins&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Download Them All&lt;/b&gt;&lt;br/&gt;&lt;a href='https://addons.mozilla.org/en-US/firefox/addon/201' target='_blank'&gt;https://addons.mozilla.org/en-US/firefox/addon/201&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Users of DAP (Download Accelerator Plus) will find this quite useful. It helps download huge files in upto 10 chunks maximizing your available bandwidth usage. &lt;br/&gt;&lt;br/&gt;&lt;b&gt;ScrapBook&lt;/b&gt;&lt;br/&gt;&lt;a href='https://addons.mozilla.org/en-US/firefox/addon/201' target='_blank'&gt;https://addons.mozilla.org/en-US/firefox/addon/427&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Ever thought that you had the ability to just store a block of paragraph from a webpage. Well, here is the addon that lets you to copy scraps out of webpage and lets you organize them in a hierarchical structure.&lt;br/&gt;&lt;b&gt;&lt;br/&gt;Ad Block Plus&lt;/b&gt;&lt;br/&gt;&lt;a href='https://addons.mozilla.org/en-US/firefox/addon/201' target='_blank'&gt;https://addons.mozilla.org/en-US/firefox/addon/1865&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Want to get rid of the annoying ads filling up the web page.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;FireFTP &lt;/b&gt;&lt;br/&gt;&lt;a href='https://addons.mozilla.org/en-US/firefox/addon/201' target='_blank'&gt;https://addons.mozilla.org/en-US/firefox/addon/684&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;An integrated FTP solution. It becomes slower if there are thousands of files in the directory that you are trying to traverse.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Fox Clocks&lt;/b&gt;&lt;br/&gt;&lt;a href='https://addons.mozilla.org/en-US/firefox/addon/201' target='_blank'&gt;https://addons.mozilla.org/en-US/firefox/addon/1117&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Working in an office spread over several timezones. This tool can help you track times in all part of the world in the status bar of your browser.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Tab Splitter&lt;/b&gt; (Experimental)&lt;br/&gt;&lt;a href='https://addons.mozilla.org/en-US/firefox/addon/201' target='_blank'&gt;https://addons.mozilla.org/en-US/firefox/addon/7327&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Amazon Price Drop tracker&lt;/b&gt; (Experimental)&lt;br/&gt;&lt;a href='https://addons.mozilla.org/en-US/firefox/addon/201' target='_blank'&gt;https://addons.mozilla.org/en-US/firefox/addon/7264&lt;/a&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-1434459250666920910?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/TgLsp4Isvdw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/1434459250666920910/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=1434459250666920910" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/1434459250666920910?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/1434459250666920910?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/TgLsp4Isvdw/my-favorite-firefox-addons.html" title="My favorite firefox Addons" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total><feedburner:origLink>http://askankit.blogspot.com/2008/06/my-favorite-firefox-addons.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YNRHk4fSp7ImA9WxdXE08.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-53056290284745318</id><published>2008-06-17T11:11:00.001-07:00</published><updated>2008-06-24T09:33:15.735-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-24T09:33:15.735-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Database" /><title>Oracle Transparent Gateway SQL Server Encoding issues resolution</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;This article for all those who are involved in migration of data from Oracle to SQL server or vice versa.&lt;br/&gt;It highlights a number of encoding issues that you might be facing.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You cannot represent the left and right quotation marks in Latin 8859-1.&lt;br/&gt;They are represented as â€˜(â\200\230) and â€™ (\200\231).&lt;br/&gt;Only when you set the format to UTF-8 (Unicode Transport Format), you can see them as ( ‘ ) and ( ’ ). These symbols are not found on the Windows keyboards but they are generated by tools like Microsoft Word.&lt;br/&gt;&lt;br/&gt;When inserted inside the database, they may get messed up.&lt;br/&gt;&lt;br/&gt;There is another problem while inserting these characters in SQL Server database using TG:&lt;br/&gt;SS uses Collation &lt;strong&gt;Latin1_General_CI_AS &lt;/strong&gt;by default. And UCS-2 is the UTF8 equivalent of Oracle in SS. But by no means, they are compatible.&lt;br/&gt;&lt;br/&gt;So, a character needs to be converted to ANSI before moving over to SS.&lt;br/&gt;&lt;br/&gt;Another problem with UTF8 is with the German characters involving Umlauts. If that is the last character in an insert statement, then '&lt;font face='Courier New' color='#cc0000'&gt;ORA-01756: quoted string not properly terminated&lt;/font&gt;' is encountered.&lt;br/&gt;&lt;font color='#000099'&gt;eg: &lt;/font&gt;&lt;font face='Courier New' color='#000099'&gt;insert into tmp_enc@dblinkToSS values ('Umlauts ä ö ü ß Ä Ö Ü ');&lt;/font&gt; &lt;br/&gt;would result in an error.&lt;br/&gt;&lt;br/&gt;Adding a space before the terminating quote character will result in Success.&lt;br/&gt;&lt;font face='Courier New' color='#000099'&gt;insert into tmp_enc@dblinkToSS values ('Umlauts ä ö ü ß Ä Ö Ü ');&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;This is being discussed at the following thread too:&lt;br/&gt;&lt;br/&gt;http://www.orafaq.com/forum/t/89484/0/&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-53056290284745318?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/HtilVu0DFrQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/53056290284745318/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=53056290284745318" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/53056290284745318?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/53056290284745318?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/HtilVu0DFrQ/oracle-transparent-gateway-sql-server_17.html" title="Oracle Transparent Gateway SQL Server Encoding issues resolution" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://askankit.blogspot.com/2008/06/oracle-transparent-gateway-sql-server_17.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUHQns-fyp7ImA9WxdQF08.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-9156909448090586695</id><published>2008-06-17T11:10:00.001-07:00</published><updated>2008-06-17T11:10:33.557-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-17T11:10:33.557-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Database" /><title>SQL Server create table as Syntax Oracle</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;SQL server syntax for creating a table from a query&lt;br/&gt;&lt;br/&gt;select * into new_table from&lt;br/&gt;(select col1, col2 from old_tab1,old_tab2 where 1=1) &lt;b&gt;a&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;&lt;b&gt;&lt;br/&gt;&lt;/b&gt;Keep in mind that the alias needs to be specified. SQL Server is not that forgiving.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I find the Oracle syntax much intuitive:&lt;br/&gt;create table new_table &lt;br/&gt;as &lt;br/&gt;select * from ....&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-9156909448090586695?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/YH4GUuc5zzk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/9156909448090586695/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=9156909448090586695" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/9156909448090586695?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/9156909448090586695?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/YH4GUuc5zzk/sql-server-create-table-as-syntax.html" title="SQL Server create table as Syntax Oracle" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://askankit.blogspot.com/2008/06/sql-server-create-table-as-syntax.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MNRno_fip7ImA9WxdQE00.&quot;"><id>tag:blogger.com,1999:blog-7520011559741642198.post-872602299136560532</id><published>2008-06-12T15:24:00.001-07:00</published><updated>2008-06-12T15:24:57.446-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-12T15:24:57.446-07:00</app:edited><title>Make the maximum from a Skype IN account</title><content type="html">&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;strong&gt;Using Skype IN&lt;/strong&gt; - &lt;br/&gt;&lt;br/&gt;The Skype In number alone costs $60 per annum. &lt;br/&gt;If you buy it as part of a package with Skype Pro, you will pay $36 for skype Pro + $24 for Skype In number.&lt;br/&gt;&lt;br/&gt;Now, how to get it even cheaper.&lt;br/&gt;&lt;br/&gt;A little planning is needed to get the maximum worth of your money with skype.&lt;br/&gt;&lt;br/&gt;Buy a Skype Pro account for $36 for one year.&lt;br/&gt;Now you are given a credit of $12 as talk time. They also call it Skype credit. This credit can be used as cash to purchase most services on skype.&lt;br/&gt;Ask a friend to use his her skype account to send you paypal money of $12.&lt;br/&gt;&lt;br/&gt;Pay him/her back by any means that you like or even using the same paypal service available with skype.&lt;br/&gt;&lt;br/&gt;Now you have 12+12 dollars in your account. And you can buy a Skype In number with these $24.&lt;br/&gt;&lt;br/&gt;So, one year of unlimited calling + Skype In number + more services cost you just $36 + $12 = $48.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Ankit Jain&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7520011559741642198-872602299136560532?l=askankit.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TechnologyOtherWorldlyIssues/~4/_Y7QkfIdr9U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://askankit.blogspot.com/feeds/872602299136560532/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7520011559741642198&amp;postID=872602299136560532" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/872602299136560532?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7520011559741642198/posts/default/872602299136560532?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TechnologyOtherWorldlyIssues/~3/_Y7QkfIdr9U/make-maximum-from-skype-in-account.html" title="Make the maximum from a Skype IN account" /><author><name>Ankit Jain</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://askankit.blogspot.com/2008/06/make-maximum-from-skype-in-account.html</feedburner:origLink></entry></feed>

