<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7520011559741642198</id><updated>2024-09-14T08:19:21.876-07:00</updated><category term="Oracle"/><category term="odi"/><category term="Database"/><category term="apex"/><category term="internet"/><category term="www"/><category term="BSNL"/><category term="DNS"/><category term="agent"/><category term="antivirus"/><category term="ikm"/><category term="install"/><category term="jar"/><category term="java"/><category term="linux"/><category term="network"/><category term="odi_11g"/><category term="process"/><category term="scd"/><category term="scenario"/><category term="set"/><category term="skype"/><category term="ubuntu"/><category term="union"/><category term="vmware"/><title type='text'>Technology &amp;amp; Other Worldly Issues</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://askankit.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7520011559741642198.post-6001722115371806022</id><published>2017-05-10T19:13:00.001-07:00</published><updated>2017-05-10T19:13:23.888-07:00</updated><title type='text'>Recover from Oracle 11g XE database file corruption on Windows 7</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Recently, I experienced an eerie Hard Disk screeching sound from my laptop, a worst nightmare a professional can have - The sign that the hard disk was on its last legs.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Apart from the valuable documents, my machine contained a prototype Oracle XE 11g database. It also contained several Apex screens that I had recently developed as part of the prototype.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;With the early warning of the screeching sound, I was able to recover most of the documents. However, for the Oracle database, there was one DBF file that was corrupted. The OS copy of this file continued to fail.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: yellow; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;This blog post will discuss the methodology of recovering the Oracle DBF files if you run into corruption of the database files and do not have any backups.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;I ran Windows chkdsk on the server and it ran fine with 0 indications of the bad sectors.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;I tried using the &quot;Backup Database&quot; feature of the XE database but it would fail indicating the corruption in the DBF file.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;After doing some search on the web, I was enlightened with the DBV utility that Oracle database comes with. Its an acronym for DB Verify. This tool validates the integrity of the DB files.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;I ran this tool against a few files that were known to be good.&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;C:\oracle\product\oraclexe\app\oracle\oradata\XE&amp;gt;dbv file=SALES_REP.DBF&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;DBVERIFY: Release 11.2.0.2.0 - Production on Wed May 10 21:44:31 2017&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;Copyright (c) 1982, 2009, Oracle and/or its affiliates. &amp;nbsp;All rights reserved.&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;DBVERIFY - Verification starting : FILE = C:\ORACLE\PRODUCT\ORACLEXE\APP\ORACLE\ORADATA\XE\SALES_REP.DBF&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;DBVERIFY - Verification complete&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Total Pages Examined &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : 2824&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Total Pages Processed (Data) : 465&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Total Pages Failing &amp;nbsp; (Data) : 0&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Total Pages Processed (Index): 710&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Total Pages Failing &amp;nbsp; (Index): 0&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Total Pages Processed (Other): 803&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Total Pages Processed (Seg) &amp;nbsp;: 0&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Total Pages Failing &amp;nbsp; (Seg) &amp;nbsp;: 0&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Total Pages Empty &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: 846&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Total Pages Marked Corrupt &amp;nbsp; : 0&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Total Pages Influx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : 0&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Total Pages Encrypted &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: 0&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Highest block SCN &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: 2086537 (0.2086537)&lt;/span&gt;&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;I ran this tool against the known bad file and voila, it validated that the file was indeed corrupt.&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;C:\oracle\product\oraclexe\app\oracle\oradata\XE&amp;gt;dbv file=ORDERS_REP.&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;DBF&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;DBVERIFY: Release 11.2.0.2.0 - Production on Wed May 10 21:46:44 2017&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Copyright (c) 1982, 2009, Oracle and/or its affiliates. &amp;nbsp;All rights reserved.&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;DBVERIFY - Verification starting : FILE = C:\ORACLE\PRODUCT\ORACLEXE\APP\ORACLE\&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;ORADATA\XE\ORDERS_REP.DBF&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;b style=&quot;background-color: yellow;&quot;&gt;DBV-00600: Fatal Error - [28] [27070] [0] [0]&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;So, Oracle validated that the file was corrupt even though the OS didnt think so 😈&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;As I mentioned earlier, the normal OS file copy did not work. I used &lt;b&gt;xcopy &lt;/b&gt;instead. This forgotten command from the world of MSDOS 6.0 has an option /C that lets the copy continue even if the errors are encountered.&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; xcopy ORDERS_REP.DBF ORDERS_REP_W.DBF /C&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;and the file got copied successfully.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Now, I ran the DB Verify again on this new file and the results were better.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;C:\oracle\product\oraclexe\app\oracle\oradata\XE&amp;gt;dbv file=ORDER_REP_W.DBF&lt;br /&gt;DBVERIFY: Release 11.2.0.2.0 - Production on Wed May 10 21:48:17 2017&lt;br /&gt;Copyright (c) 1982, 2009, Oracle and/or its affiliates. &amp;nbsp;All rights reserved.&lt;br /&gt;DBVERIFY - Verification starting : FILE = C:\ORACLE\PRODUCT\ORACLEXE\APP\ORACLE\&lt;br /&gt;ORADATA\XE\ORDERS_REP_W.DBF&lt;br /&gt;&lt;br /&gt;DBVERIFY - Verification complete&lt;br /&gt;Total Pages Examined &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : 150168&lt;br /&gt;Total Pages Processed (Data) : 41226&lt;br /&gt;Total Pages Failing &amp;nbsp; (Data) : 0&lt;br /&gt;Total Pages Processed (Index): 11763&lt;br /&gt;Total Pages Failing &amp;nbsp; (Index): 0&lt;br /&gt;Total Pages Processed (Other): 85845&lt;br /&gt;Total Pages Processed (Seg) &amp;nbsp;: 0&lt;br /&gt;Total Pages Failing &amp;nbsp; (Seg) &amp;nbsp;: 0&lt;br /&gt;Total Pages Empty &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: 11334&lt;br /&gt;Total Pages Marked Corrupt &amp;nbsp; : 0&lt;br /&gt;Total Pages Influx &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : 0&lt;br /&gt;Total Pages Encrypted &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: 0&lt;br /&gt;Highest block SCN &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: 2117572 (0.2117572)&lt;/span&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Now, the time to attach this file to the database.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Shutdown the database using the following commands&lt;/span&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;sqlplus / as sysdba&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;sqlplus&amp;gt; shutdown immediate&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;Database dismounted.&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;ORACLE instance shut down.&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Rename the ORDERS_REP.DBF to ORDER_REP_original.DBF&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Rename the file from ORDERS_REP_W.DBF to ORDERS_REP.DBF&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Bring the database back&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;SQL&amp;gt; startup&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ORACLE instance started.&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Total System Global Area 1068937216 bytes&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Fixed Size &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2260048 bytes&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Variable Size &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 784335792 bytes&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Database Buffers &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;276824064 bytes&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Redo Buffers &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5517312 bytes&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;Database mounted.&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ORA-01113: file 6 needs media recovery&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;ORA-01110: data file 6:&lt;/span&gt;&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&#39;C:\ORACLE\PRODUCT\ORACLEXE\APP\ORACLE\ORADATA\XE\ORDERS_REP.DBF&#39;&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;The copied file will not work. So, the media recovery needs to be performed.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;span style=&quot;background-color: yellow;&quot;&gt;SQL&amp;gt; shutdown immediate&lt;/span&gt;ORA-01109: database not open&lt;br /&gt;&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;&lt;span style=&quot;background-color: yellow;&quot;&gt;SQL&amp;gt; startup mount&lt;/span&gt;ORACLE instance started.&lt;br /&gt;Total System Global Area 1068937216 bytes&lt;br /&gt;Fixed Size &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2260048 bytes&lt;br /&gt;Variable Size &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 784335792 bytes&lt;br /&gt;Database Buffers &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;276824064 bytes&lt;br /&gt;Redo Buffers &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;5517312 bytes&lt;br /&gt;Database mounted.&lt;br /&gt;&lt;span style=&quot;background-color: yellow;&quot;&gt;SQL&amp;gt; recover database&lt;/span&gt;Media recovery complete.&lt;br /&gt;&lt;span style=&quot;background-color: yellow;&quot;&gt;SQL&amp;gt; alter database open;&lt;/span&gt;Database altered.&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;I&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt; was able to bring the database up.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Also, the Backup Database command worked now with the newly created DB file.&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://askankit.blogspot.com/feeds/6001722115371806022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7520011559741642198/6001722115371806022' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/6001722115371806022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/6001722115371806022'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2017/05/recover-from-oracle-11g-xe-database.html' title='Recover from Oracle 11g XE database file corruption on Windows 7'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7520011559741642198.post-3478611818620741726</id><published>2012-10-14T09:52:00.001-07:00</published><updated>2012-10-14T09:52:45.100-07:00</updated><title type='text'>A tale of two agents</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;&lt;p class=&#39;MsoNormal&#39;&gt;With ODI 11g, Oracle has provided integration of ODI agents with J2EE infrastructure to provide High Availability and Load Balancing in a RAC environment. However, there are several small to mid size businesses which do not want to invest in this infrastructure&lt;span style=&#39;mso-spacerun:yes&#39;&gt; &lt;/span&gt;and hence cannot use High Availability and Load balancing feature of ODI agents in the J2EE environment.&lt;/p&gt;  &lt;p class=&#39;MsoNormal&#39;&gt;The good news is that Oracle is continuing to maintain the Standalone agent for ODI 11g and with its basic features of load balancing, this may be enough in some situations.&lt;/p&gt;  &lt;p class=&#39;MsoNormal&#39;&gt;We cannot achieve the high availability as promised by the Weblogic implementation but we can certainly configure the standalone agents in a way where we can load balance, have minimum downtime and yet maintenance can be done on the agents.&lt;/p&gt;  &lt;p class=&#39;MsoNormal&#39;&gt;I have seen many implementations where it is chosen to use only &lt;b style=&#39;mso-bidi-font-weight:normal&#39;&gt;One instance of an agent&lt;/b&gt; and everything might seem to work well initially. And then there is a long way to go. &lt;/p&gt;  &lt;p class=&#39;MsoNormal&#39;&gt;And that does beg a question - In what cases, would a &quot;single agent&quot; implementation be not enough.&lt;/p&gt;&lt;p class=&#39;MsoNormal&#39;&gt;Will I need to perform maintenance operations on the agent, reboot the agent and if at that time a second agent is available, surely, it can come to the rescue of my long running processes and also share/transfer the load.&lt;/p&gt;&lt;p class=&#39;MsoNormal&#39;&gt;Here are a few cases to think:&lt;br/&gt;  &lt;/p&gt;  &lt;p class=&#39;MsoNormal&#39;&gt;1.) You make extensive use of Jython and external Java libraries inside the ODI JVM. This may cause the JVM overflow and make an agent unresponsive.&lt;/p&gt;  &lt;p class=&#39;MsoNormal&#39;&gt;2.) New code needs to be deployed to the agent which warrants an agent bounce. In case of a single agent, the processes that are running will be impacted. However, if you have a multi-agent setup, then the currently running processes can be shifted over to the other running agent.&lt;/p&gt;  &lt;p class=&#39;MsoNormal&#39;&gt;3.) The agent JVM parameters need to be changed - adding more memory to JVM or changing the path where the JVM creates its log files, etc&lt;/p&gt;  &lt;p class=&#39;MsoNormal&#39;&gt;ODI supports the notion of a Master Agent and several slave agents and ideally each ODI implementation should have atleast 3 agents - 1 Master and 2 slave. This is how a minimal ODI configuration should look like for a Master - Slave setup:&lt;/p&gt;   &lt;p class=&#39;MsoNormal&#39;&gt;&lt;img src=&#39;http://lh3.ggpht.com/-tYehJxoWvsU/UHrqin9eyzI/AAAAAAAAAL8/yauIK7mi3GU/%25255BUNSET%25255D.png?imgmax=800&#39; style=&#39;max-width: 800px;&#39;/&gt;&lt;br/&gt;&lt;/p&gt;&lt;p class=&#39;MsoNormal&#39;&gt;The master agent accepts the job and passes it to the available slave agent. This configuration can be specified in the ODI topology: &lt;br/&gt;&lt;/p&gt;&lt;p class=&#39;MsoNormal&#39;&gt;&lt;img src=&#39;http://lh6.ggpht.com/-wk_zNmZYWd4/UHrqv27sXeI/AAAAAAAAAME/jrn3rVDoZ9Y/%25255BUNSET%25255D.png?imgmax=800&#39; style=&#39;max-width: 800px;&#39;/&gt;&lt;br/&gt;&lt;/p&gt;  &lt;p class=&#39;MsoNormal&#39;&gt;The master agent is the one that is tied to a logical agent and a context. You can chose to have master agent to be a &quot;worker agent&quot;  - it can also perform processing and share load (by selecting it as &quot;linked&quot; agent). Or it can be configured to be merely a delegator. Its advisable to configure the master agent in a &quot;delegator&quot; mode only. So, this agent can have basic ODI configuration and doesnt do anything fancy. This way there would less chances of this agent going down (either buffer overflow or other maintenance operations).&lt;/p&gt;&lt;p class=&#39;MsoNormal&#39;&gt;The other &quot;n&quot; slave agents can be tied to the Master agent as &quot;linked&quot; agents. Now when a job is submitted to the Master agent, it finds which slave agent that has less load and delegates the job to that agent. In case, a slave agent is unavailable, it will re-assign the job to other available agent(s).&lt;/p&gt;&lt;p class=&#39;MsoNormal&#39;&gt;So, in case you want to bring an agent down, the load can be diverted to the other available agent:&lt;/p&gt;&lt;p class=&#39;MsoNormal&#39;&gt;&lt;img src=&#39;http://lh3.ggpht.com/-kLIs6AVFWP4/UHrsiWp32KI/AAAAAAAAAMM/buqLHA2n_L4/%25255BUNSET%25255D.png?imgmax=800&#39; style=&#39;max-width: 800px;&#39;/&gt;&lt;br/&gt;&lt;/p&gt;  &lt;p class=&#39;MsoNormal&#39;&gt;However, its not simple that you simply bring an agent down and the Master would divert the load other agents. The sessions that are running need to be completed. The available sessions parameter of the agent to be brought down should be set to 0. So, that no new connections are accepted. Once the existing job is complete, the &quot;Use new Load Balancing&quot; parameter - if set to Yes will rebalance the load and start using the other agents for subsequent steps.&lt;br/&gt;&lt;/p&gt;  &lt;br/&gt;&lt;br/&gt;&lt;div class=&#39;zemanta-pixie&#39;&gt;&lt;img src=&#39;http://img.zemanta.com/pixy.gif?x-id=19171628-9221-8bdc-b332-8f6847aea3a0&#39; alt=&#39;&#39; class=&#39;zemanta-pixie-img&#39;/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://askankit.blogspot.com/feeds/3478611818620741726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/7520011559741642198/3478611818620741726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/3478611818620741726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/3478611818620741726'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2012/10/a-tale-of-two-agents.html' title='A tale of two agents'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-tYehJxoWvsU/UHrqin9eyzI/AAAAAAAAAL8/yauIK7mi3GU/s72-c/%25255BUNSET%25255D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><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><title type='text'>Parallelism of scenarios</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&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=&#39;http://blogs.oracle.com/dataintegration/entry/parallel_processing_in_odi&#39;&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=&#39;http://lh4.ggpht.com/-BpSFmj7tFA4/TvyIZqWZshI/AAAAAAAAALA/Gp6ptSCqao4/%25255BUNSET%25255D.png?imgmax=800&#39; style=&#39;max-width: 800px;&#39;/&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=&#39;http://lh3.ggpht.com/-qDJ7qAZVe3E/TvyI8z8DI1I/AAAAAAAAALI/BqYjA6xXio8/%25255BUNSET%25255D.png?imgmax=800&#39; style=&#39;max-width: 800px;&#39;/&gt;&lt;br/&gt;Does the question arise - What&#39;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 &quot;StartEmpLoad&quot; 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 &quot;StartSalesLoad&quot; will never be kicked off. Since both of them are connected with an &quot;OK&quot; 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=&#39;zemanta-pixie&#39;&gt;&lt;img src=&#39;http://img.zemanta.com/pixy.gif?x-id=362f62a7-5572-85c5-a3ce-a4d22ca60425&#39; alt=&#39;&#39; class=&#39;zemanta-pixie-img&#39;/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/1750499511485168380' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/1750499511485168380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/1750499511485168380'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2011/12/parallelism-of-scenarios.html' title='Parallelism of scenarios'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.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></entry><entry><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><title type='text'>ODI Tools without Hardcodings</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&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&#39;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 &quot;Command&quot; tab. As you keep adding parameters on the &quot;General&quot; tab, the &quot;Command&quot; tab keeps getting updated with the values. ODIexperts specify an excellent way of invoking the ODI tools inside an ODI procedure - &lt;a href=&#39;http://odiexperts.com/calling-odisqlunload-using-odi-procedure-with-no-hardcoded-password&#39;&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=&#39;max-width: 800px; float: left; margin-top: 10px; margin-bottom: 10px; margin-right: 10px;&#39; src=&#39;http://lh6.ggpht.com/-IA7poycvjIU/TvtaCoZ8v3I/AAAAAAAAAKQ/JhR3Of_IfUg/%25255BUNSET%25255D.png?imgmax=800&#39;/&gt;&lt;br/&gt;&lt;img style=&#39;max-width: 800px; float: none;&#39; src=&#39;http://lh4.ggpht.com/-dzJTYPE4DOg/TvtaLZwPa8I/AAAAAAAAAKg/byI1UVNF0tQ/%25255BUNSET%25255D.png?imgmax=800&#39;/&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=&#39;max-width: 800px;&#39; src=&#39;http://lh5.ggpht.com/-6nIitWQIrmw/TvtgfxYyiII/AAAAAAAAAKo/-grNBx2sIWM/%25255BUNSET%25255D.png?imgmax=800&#39;/&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&#39;s command should be configured to look similar to this:&lt;br/&gt;&lt;br/&gt;&lt;font face=&#39;Courier New&#39; color=&#39;#3366FF&#39;&gt;OdiSqlUnload &quot;-FILE=/MyPath/sqlunloadfile.txt&quot; &quot;-DRIVER=&amp;lt;@=jvJDBC@&amp;gt;&quot; &quot;-URL=&amp;lt;@=jvURL@&amp;gt;&quot; &quot;-USER=&amp;lt;@=jvUser@&amp;gt;&quot; &quot;-PASS=&amp;lt;@=jvPass@&amp;gt;&quot; &quot;-FILE_FORMAT=VARIABLE&quot; &quot;-FIELD_SEP=,&quot; &quot;-ROW_SEP=\r\n&quot; &quot;-DATE_FORMAT=yyyy/MM/dd HH:mm:ss&quot; &quot;-CHARSET_ENCODING=ISO8859_1&quot; &quot;-XML_CHARSET_ENCODING=ISO-8859-1&quot; &quot;-FETCH_SIZE=5000&quot;&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=&#39;zemanta-pixie&#39;&gt;&lt;img src=&#39;http://img.zemanta.com/pixy.gif?x-id=341c6a7e-3d42-8bf3-811e-5566f86b3489&#39; alt=&#39;&#39; class=&#39;zemanta-pixie-img&#39;/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/2787572846740634574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/2787572846740634574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/2787572846740634574'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2011/12/odi-tools-without-hardcodings.html' title='ODI Tools without Hardcodings'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.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></entry><entry><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><title type='text'>When Temporary is not Temporary</title><content type='html'>&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;Lets have a little questionnaire about the temporary interfaces that are used in Oracle Data Integrator. They are also popularly known as &quot;Yellow Interfaces&quot; 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=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;br /&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMSgvIhluzwW43n3X930qXz7EkLzDyTAYORwS18j2FR9_WHrdr3qGAIl45hizn94DdirbPgKZtH4GHjc-Dy6HcxOLLzqKjPJKwEug3jvM6RNE4T4hLDHkJxHVOu-P_3KAVKt1EHra3qOJl/s400/moz-screenshot.png&quot; style=&quot;cursor:pointer; cursor:hand;width: 161px; height: 86px;&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5597699325467622098&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&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 &quot;All of the above&quot; 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 &quot;CREATE_TARG_TABLE&quot; is set to &quot;Yes&quot;, 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 &quot;Work Schema&quot;, 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=&quot;Apple-style-span&quot; &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 &quot;temporary&quot; 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 &quot;Model&quot;. Since, these are deemed to be temporary, theoretically, they are not part of our data model and hence, dont need to be in the &quot;Model&quot;.&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=&quot;zemanta-pixie&quot;&gt;&lt;img src=&quot;http://img.zemanta.com/pixy.gif?x-id=76b20346-3a33-85df-a614-885d0d545e12&quot; alt=&quot;&quot; class=&quot;zemanta-pixie-img&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/8169208289137347566' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/8169208289137347566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/8169208289137347566'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2011/04/when-temporary-is-not-temporary.html' title='When Temporary is not Temporary'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMSgvIhluzwW43n3X930qXz7EkLzDyTAYORwS18j2FR9_WHrdr3qGAIl45hizn94DdirbPgKZtH4GHjc-Dy6HcxOLLzqKjPJKwEug3jvM6RNE4T4hLDHkJxHVOu-P_3KAVKt1EHra3qOJl/s72-c/moz-screenshot.png" height="72" width="72"/><thr:total>7</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="agent"/><category scheme="http://www.blogger.com/atom/ns#" term="odi"/><category scheme="http://www.blogger.com/atom/ns#" term="process"/><category scheme="http://www.blogger.com/atom/ns#" term="scenario"/><title type='text'>ODI startscen.sh forks local agent for a scenario</title><content type='html'>&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&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 &quot;A&quot; 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 &quot;B&quot; to execute the scenario &quot;scn_load_data&quot; 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 &quot;ps -ef&quot; and see that a new process would be initiated.&lt;br /&gt;&lt;br /&gt;Even if you use same Unix account &quot;A&quot; 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=&quot;jive-pre&quot;&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=&quot;zemanta-pixie&quot;&gt;&lt;img src=&quot;http://img.zemanta.com/pixy.gif?x-id=37afa03f-7f86-821b-86b5-221dbec295e3&quot; alt=&quot;&quot; class=&quot;zemanta-pixie-img&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/569939595290250196' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/569939595290250196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/569939595290250196'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2011/02/odi-startscensh-forks-local-agent-for.html' title='ODI startscen.sh forks local agent for a scenario'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><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><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"/><category scheme="http://www.blogger.com/atom/ns#" term="set"/><category scheme="http://www.blogger.com/atom/ns#" term="union"/><title type='text'>ODI 11g Upgrade issues - Set operator disabled</title><content type='html'>&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&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=&quot;http://lh5.ggpht.com/__r9iMl-2uL4/TUgrHCcgMDI/AAAAAAAAAJI/0T6Av6WGgdc/%5BUNSET%5D.jpg?imgmax=800&quot; style=&quot;max-width: 800px;&quot; /&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=&quot;http://lh6.ggpht.com/__r9iMl-2uL4/TUgsADy5wzI/AAAAAAAAAJM/M3DfdTrz8fE/%5BUNSET%5D.jpg?imgmax=600&quot; style=&quot;max-width: 600px;&quot; /&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=&quot;http://lh6.ggpht.com/__r9iMl-2uL4/TUgsyLhxhxI/AAAAAAAAAJQ/twiOOo6OhdU/%5BUNSET%5D.jpg?imgmax=600&quot; style=&quot;max-width: 600px;&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;zemanta-pixie&quot;&gt;&lt;img src=&quot;http://img.zemanta.com/pixy.gif?x-id=37afa03f-7f86-821b-86b5-221dbec295e3&quot; alt=&quot;&quot; class=&quot;zemanta-pixie-img&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/7917191580776501891' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/7917191580776501891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/7917191580776501891'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2011/02/odi-11g-upgrade-issues-set-operator.html' title='ODI 11g Upgrade issues - Set operator disabled'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.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></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="jar"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="odi"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><title type='text'>Call Java JAR methods from ODI</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&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=&#39;http://www.business-intelligence-quotient.com/?p=941&#39; target=&#39;_blank&#39;&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=&#39;Courier New&#39;&gt;import os&lt;br/&gt;import sys&lt;br/&gt;&lt;br/&gt;jars = [&lt;br/&gt;    &quot;/home/users/ankit/java/MyFileWrite.jar&quot;&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=&#39;zemanta-pixie&#39;&gt;&lt;img src=&#39;http://img.zemanta.com/pixy.gif?x-id=37afa03f-7f86-821b-86b5-221dbec295e3&#39; alt=&#39;&#39; class=&#39;zemanta-pixie-img&#39;/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/9215101749345243565' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/9215101749345243565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/9215101749345243565'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2010/09/call-java-jar-methods-from-odi.html' title='Call Java JAR methods from ODI'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="odi"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><title type='text'>ODI Object versioning</title><content type='html'>&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&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=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisFIholwcZ4zXHeVX7LuyzSECuu-vnuZm_w8B8tEqBYufMUYmXSurqNBihl71Hcep3bXxMBClzApqFw4x-V0SVmDoJz7oocxITTNZiwnGiRRHHyNDEu8EPfFi7_peaCG0YFM1VthC6nNk4/s320/moz-screenshot-1.png&quot; style=&quot;cursor:pointer; cursor:hand;width: 320px; height: 294px;&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5511305097480978338&quot; /&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=&quot;font-family:Courier New;color:#000099;&quot;&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 &#39;PKG_ODI_PROCESS&#39;&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=&quot;font-family:Courier New;color:#000099;&quot;&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=&quot;font-family:Courier New;color:#000099;&quot;&gt;instance_name LIKE &#39;PKG_ODI_PROCESS&#39;&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=&quot;font-family:Courier New;&quot;&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=&quot;zemanta-pixie&quot;&gt;&lt;img src=&quot;http://img.zemanta.com/pixy.gif?x-id=a9b7cd3d-30b4-8512-b3f9-10864d8dcfc6&quot; alt=&quot;&quot; class=&quot;zemanta-pixie-img&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/6792214497006652469' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/6792214497006652469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/6792214497006652469'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2010/08/odi-object-versioning.html' title='ODI Object versioning'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisFIholwcZ4zXHeVX7LuyzSECuu-vnuZm_w8B8tEqBYufMUYmXSurqNBihl71Hcep3bXxMBClzApqFw4x-V0SVmDoJz7oocxITTNZiwnGiRRHHyNDEu8EPfFi7_peaCG0YFM1VthC6nNk4/s72-c/moz-screenshot-1.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="odi"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><title type='text'>Odi Load Multiple XML Files</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&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=&#39;#000099&#39;&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=&#39;http://odiexperts.com/?p=524&#39; target=&#39;_blank&#39;&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 &quot;Truncate&quot;&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 &quot;Command on Target&quot; will be &quot;&lt;font color=&#39;#000099&#39;&gt;TRUNCATE SCHEMA &lt;b&gt;MYSCHEMA&lt;/b&gt;&lt;/font&gt;&quot;.&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=&#39;#000099&#39;&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=&#39;left&#39;&gt;&lt;font face=&#39;Courier New&#39; color=&#39;#000099&#39;&gt;a = &#39;Filename = &#39;+ &#39;#V_MYXMLFILE&#39;&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=&#39;Courier New&#39; color=&#39;#000099&#39;&gt; LOAD FILE &quot;&lt;font color=&#39;#660000&#39;&gt;&lt;b&gt;#MYPROJECT_NAME.V_MYXMLFILE&lt;/b&gt;&lt;/font&gt;&quot; ON SCHEMA &lt;font color=&#39;#660000&#39;&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 &quot;Load XML Schema&quot; 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=&#39;zemanta-pixie&#39;&gt;&lt;img src=&#39;http://img.zemanta.com/pixy.gif?x-id=99ef865f-4711-839b-b8c5-f3baf2a89d61&#39; alt=&#39;&#39; class=&#39;zemanta-pixie-img&#39;/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/333289902691780673' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/333289902691780673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/333289902691780673'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2010/06/odi-load-multiple-xml-files.html' title='Odi Load Multiple XML Files'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="odi"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><title type='text'>ODI variables from Work Repository</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;&lt;font face=&#39;arial&#39;&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=&#39;Courier New&#39;&gt;&lt;font color=&#39;#000099&#39;&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=&#39;arial&#39;&gt;The following query will extract the variable value for a particular session:&lt;br/&gt;&lt;font color=&#39;#000099&#39;&gt;&lt;br/&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color=&#39;#000099&#39;&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 || &#39;.&#39; || 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=&#39;arial&#39; color=&#39;#000000&#39;&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=&#39;zemanta-pixie&#39;&gt;&lt;img src=&#39;http://img.zemanta.com/pixy.gif?x-id=b31f6aa5-798d-879f-b872-0c427b0540d6&#39; alt=&#39;&#39; class=&#39;zemanta-pixie-img&#39;/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/8722687035345617613' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/8722687035345617613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/8722687035345617613'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2010/04/odi-variables-from-work-repository.html' title='ODI variables from Work Repository'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="odi"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><title type='text'>LKM File to Oracle SQLLDR ODI</title><content type='html'>&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;One of the most common problem people are facing while using Oracle Data Integrator&#39;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 &quot;Invoke SQLLDR&quot; to selectively handle each error condition.&lt;br /&gt;Follow the steps:&lt;br /&gt;&lt;div class=&quot;jive-message-body&quot;&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=&quot;color: rgb(0, 0, 153);font-family:Courier New;&quot; &gt;import os&lt;br /&gt;retVal = os.system(r&#39;sqlldr control=&lt;%=snpRef.getSrcTablesList(&quot;&quot;, &quot;[WORK_SCHEMA]/[TABLE_NAME].ctl&quot;, &quot;&quot;, &quot;&quot;)%&gt; log=&lt;%=snpRef.getSrcTablesList(&quot;&quot;, &quot;[WORK_SCHEMA]/[TABLE_NAME].log&quot;, &quot;&quot;, &quot;&quot;)%&gt; userid=&lt;%=snpRef.getInfo(&quot;DEST_USER_NAME&quot;)%&gt;/&lt;%=snpRef.getInfo(&quot;DEST_PASS&quot;)%&gt;@&lt;%=snpRef.getInfo(&quot;DEST_DSERV_NAME&quot;)%&gt; &gt; &lt;%=snpRef.getSrcTablesList(&quot;&quot;, &quot;[WORK_SCHEMA]/[TABLE_NAME].out&quot;, &quot;&quot;, &quot;&quot;)%&gt;&#39;)&lt;br /&gt;&lt;br /&gt;if  retVal == 1 or retVal &gt; 2:&lt;br /&gt;   &lt;span style=&quot;font-weight: bold;&quot;&gt;-----&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 153);font-family:Courier New;&quot; &gt;raise &#39;SQLLDR failed. Please check the &lt;%=snpRef.getSrcTablesList(&quot;&quot;, &quot;[WORK_SCHEMA]/[TABLE_NAME].log&quot;, &quot;&quot;, &quot;&quot;)%&gt;  for details &#39;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Replace the  &lt;span style=&quot;color: rgb(0, 0, 153);font-family:Courier New;&quot; &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=&quot;zemanta-pixie&quot;&gt;&lt;img src=&quot;http://img.zemanta.com/pixy.gif?x-id=fab07aa5-be89-87fa-8067-f8be480202c3&quot; alt=&quot;&quot; class=&quot;zemanta-pixie-img&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/5959228990018809115' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/5959228990018809115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/5959228990018809115'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2010/03/lkm-file-to-oracle-sqlldr-odi_17.html' title='LKM File to Oracle SQLLDR ODI'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><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><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"/><category scheme="http://www.blogger.com/atom/ns#" term="scd"/><title type='text'>IKM Oracle Data Integrator SCD Type 2 Bug</title><content type='html'>&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&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=&quot;http://www.blogger.com/post-create.do&quot; target=&quot;_blank&quot;&gt;http://forums.oracle.com/forums/thread.jspa?messageID=3816462&lt;/a&gt;&lt;br /&gt;and&lt;br /&gt;&lt;a href=&quot;http://www.blogger.com/post-create.do&quot; target=&quot;_blank&quot;&gt;http://forums.oracle.com/forums/thread.jspa?messageID=3631382&amp;amp;#3631382&lt;/a&gt;&lt;br /&gt;&lt;div class=&quot;zemanta-pixie&quot;&gt;&lt;img src=&quot;http://img.zemanta.com/pixy.gif?x-id=d8d894b8-46d8-876a-97d7-be3d5041957b&quot; alt=&quot;&quot; class=&quot;zemanta-pixie-img&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/5494371318232999352' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/5494371318232999352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/5494371318232999352'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2009/11/ikm-oracle-data-integrator-scd-type-2.html' title='IKM Oracle Data Integrator SCD Type 2 Bug'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="apex"/><category scheme="http://www.blogger.com/atom/ns#" term="Database"/><category scheme="http://www.blogger.com/atom/ns#" term="install"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><title type='text'>Windows Oracle Apex upgrade on XE from 2.2 to 3.2</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&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=&#39;http://www.oracle.com/technology/products/database/application_express/html/3.2_and_xe.html&#39;&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=&#39;http://blogs.oracle.com/SanthoshK/2008/09/oracle_xe_apex_3x_installation.html&#39;&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=&#39;Courier New&#39;&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 &#39;&amp;amp;1/apex/images&#39;&lt;br/&gt;new   1: create directory APEX_IMAGES as &#39;D:\Downloads\Oracle_Tools\apex_3.2/apex/images&#39;&lt;br/&gt;&lt;br/&gt;Directory created.&lt;br/&gt;&lt;br/&gt;declare&lt;br/&gt;*&lt;br/&gt;&lt;font color=&#39;#cc0000&#39;&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 &quot;SYS.DBMS_LOB&quot;, line 523&lt;br/&gt;ORA-06512: at &quot;SYS.XMLTYPE&quot;, line 287&lt;br/&gt;ORA-06512: at line 15&lt;/font&gt;&lt;/font&gt;&lt;font color=&#39;#cc0000&#39;&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=&#39;Courier New&#39;&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 &#39;&amp;amp;1/apex/images&#39;&lt;br/&gt;new   1: create directory APEX_IMAGES as &#39;c:\apex_32/apex/images&#39;&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=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/5871424399180159166' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/5871424399180159166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/5871424399180159166'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2009/10/oracle-apex-upgrade-for-xe-from-22-to.html' title='Windows Oracle Apex upgrade on XE from 2.2 to 3.2'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="antivirus"/><category scheme="http://www.blogger.com/atom/ns#" term="internet"/><category scheme="http://www.blogger.com/atom/ns#" term="www"/><title type='text'>Solution for Internet Browser misbehaving after CA Antivirus Install</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&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=&#39;zemanta-pixie&#39;&gt;&lt;img src=&#39;http://img.zemanta.com/pixy.gif?x-id=31379002-9f78-8fc8-b0ea-e9bc6a3db9c1&#39; class=&#39;zemanta-pixie-img&#39;/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/5975833883284806679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/5975833883284806679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/5975833883284806679'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2009/04/solution-for-internet-browser.html' title='Solution for Internet Browser misbehaving after CA Antivirus Install'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><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><title type='text'>Use xmlagg in Oracle to concat multiple rows into String</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&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=&#39;http://tkyte.blogspot.com/2007/03/stringing-them-up.html&#39; target=&#39;_blank&#39;&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=&#39;Courier New&#39;&gt;&lt;br/&gt;&lt;font color=&#39;#000066&#39;&gt;SELECT deptno,&lt;br/&gt;       SUBSTR (REPLACE (REPLACE (XMLAGG (XMLELEMENT (&quot;x&quot;, ename)&lt;br/&gt;                                 ORDER BY ename),&#39;&amp;lt;/x&amp;gt;&#39;),&#39;&amp;lt;x&amp;gt;&#39;,&#39;|&#39;),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=&#39;zemanta-pixie&#39;&gt;&lt;img src=&#39;http://img.zemanta.com/pixy.gif?x-id=9b8ed038-d23b-827d-98d8-c99698b54403&#39; class=&#39;zemanta-pixie-img&#39;/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/2637372661726199690' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/2637372661726199690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/2637372661726199690'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2009/04/use-xmlagg-in-oracle-to-concat-multiple.html' title='Use xmlagg in Oracle to concat multiple rows into String'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="Database"/><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="vmware"/><title type='text'>Step by Step guide to Install Oracle 11g on Ubuntu VM</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&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=&#39;Courier New&#39;&gt;&lt;span style=&#39;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;&#39; class=&#39;Apple-style-span&#39;&gt;sudo apt-get install openssh-server openssh-client&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;span style=&#39;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;&#39; class=&#39;Apple-style-span&#39;&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=&#39;http://ubuntuforums.org/archive/index.php/t-492772.html&#39;&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=&#39;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;&#39; class=&#39;Apple-style-span&#39;&gt;&lt;pre style=&#39;border: 1px dashed rgb(193, 180, 150); padding: 4pt; background-color: rgb(240, 238, 230); font-family: courier,monospace; white-space: pre-wrap;&#39;&gt;sudo aptitude install samba&lt;/pre&gt;&lt;/span&gt;&lt;a href=&#39;https://help.ubuntu.com/community/SettingUpSamba&#39;&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=&#39;Courier New&#39;&gt;/etc/samba/smb.conf&lt;/font&gt; and add these lines to the end&lt;br/&gt;&lt;font face=&#39;Courier New&#39;&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=&#39;Courier New&#39;&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=&#39;http://www.howtogeek.com/howto/ubuntu/create-a-samba-user-on-ubuntu/&#39; target=&#39;_blank&#39;&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=&#39;http://www.pythian.com/blogs/654/installing-oracle-11g-on-ubuntu-linux-710-gutsy-gibbon&#39; target=&#39;_blank&#39;&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=&#39;Courier New&#39;&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=&#39;http://www.matttopper.com/?p=25&#39;&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=&#39;Courier New&#39; color=&#39;#660000&#39;&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=&#39;Courier New&#39;&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=&#39;http://www.pythian.com/blogs/654/installing-oracle-11g-on-ubuntu-linux-710-gutsy-gibbon&#39; target=&#39;_blank&#39;&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=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/5460425037386573720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/5460425037386573720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/5460425037386573720'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2009/02/step-by-step-guide-to-install-oracle.html' title='Step by Step guide to Install Oracle 11g on Ubuntu VM'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="apex"/><category scheme="http://www.blogger.com/atom/ns#" term="Database"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><title type='text'>Installing APEX on Oracle 11g from Database Troubleshooting</title><content type='html'>&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&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=&quot;http://download.oracle.com/docs/cd/E10513_01/doc/install.310/e10496/db_install.htm#CBHCDBAB&quot;&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=&quot;font-weight: bold;&quot;&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=&quot;font-style: italic;&quot;&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=&quot;font-family:Courier New;&quot;&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=&quot;http://oracle2go.us.oracle.com:8080/apex&quot;&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=&quot;http://www.uaex.edu/srea/Application_Express_Installation.htm&quot;&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=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/4237311339898400174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/4237311339898400174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/4237311339898400174'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2009/02/installing-apex-on-oracle-11g-from.html' title='Installing APEX on Oracle 11g from Database Troubleshooting'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><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><title type='text'>Funny Matrix Windows XP Video</title><content type='html'>&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;I stumbled upon this hilarious Matrix and Windows XP video&lt;br /&gt;&lt;object type=&quot;application/x-shockwave-flash&quot; data=&quot;http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=1886349&amp;fullscreen=1&quot; width=&quot;450&quot; height=&quot;270&quot; &gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;/&gt;&lt;param name=&quot;AllowScriptAccess&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;movie&quot; quality=&quot;best&quot; value=&quot;http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=1886349&amp;fullscreen=1&quot;/&gt;&lt;br /&gt;&lt;embed src=&quot;http://www.collegehumor.com/moogaloop/moogaloop.swf?clip_id=1886349&amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot;  width=&quot;450&quot; height=&quot;270&quot;  allowScriptAccess=&quot;always&quot;&gt;&lt;br /&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/6520345704421706552' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/6520345704421706552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/6520345704421706552'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2009/02/funny-matrix-windows-xp-video.html' title='Funny Matrix Windows XP Video'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="BSNL"/><category scheme="http://www.blogger.com/atom/ns#" term="DNS"/><category scheme="http://www.blogger.com/atom/ns#" term="internet"/><category scheme="http://www.blogger.com/atom/ns#" term="network"/><category scheme="http://www.blogger.com/atom/ns#" term="skype"/><title type='text'>BSNL DNS Internet access disrupted yet Skype is functional</title><content type='html'>&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&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&#39;t work for some reason. Each website that you try to access eg. &lt;a href=&quot;http://www.neooug.org/&quot;&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&#39;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=&quot;font-family:Courier New;color:#000099;&quot;&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=&quot;http://69.147.76.15/&quot;&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&#39;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 &quot;Obtain DNS server address automatically&quot; to &quot;Use the following DNS Server addresses&quot;&lt;/div&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;img src=&quot;file:///C:/windows/temp/moz-screenshot-1.jpg&quot; alt=&quot;&quot; /&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBxuO1OukuuPZOXnZ24h3irxBEisyeCxKXjnEImkdmd7wJv_lmSjUM126S3HmlruaxcZNyzHUxxdq-4o2AcwHteAdPk3wxYU50Jev_nh7KLJ2VpmeM7Axe3SvnOQwFijHezPXHJqxKbNt8/s320/tcp_ip_properties.JPG&quot; style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 286px; height: 320px;&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5296412508303745842&quot; /&gt;&lt;br /&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;208.67.222.222&lt;/div&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;and &lt;/div&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;208.67.220.220&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;These addresses are provided by &lt;a href=&quot;http://www.opendns.com%20/&quot;&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&#39;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=&quot;http://www.w3.org/1999/xhtml&quot;&gt;More instructions can be found at&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.opendns.com/smb/start&quot;&gt;https://www.opendns.com/smb/start&lt;/a&gt;&lt;/div&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/4365784776628438377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/4365784776628438377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/4365784776628438377'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2009/01/bsnl-dns-internet-access-disrupted-yet.html' title='BSNL DNS Internet access disrupted yet Skype is functional'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBxuO1OukuuPZOXnZ24h3irxBEisyeCxKXjnEImkdmd7wJv_lmSjUM126S3HmlruaxcZNyzHUxxdq-4o2AcwHteAdPk3wxYU50Jev_nh7KLJ2VpmeM7Axe3SvnOQwFijHezPXHJqxKbNt8/s72-c/tcp_ip_properties.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><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><title type='text'>Oracle External Table error for Subquery</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&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=&#39;Courier New&#39; color=&#39;#cc0000&#39;&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=&#39;Courier New&#39; color=&#39;#006600&#39;&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=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/4191945141110587030' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/4191945141110587030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/4191945141110587030'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2008/10/oracle-external-table-error-for.html' title='Oracle External Table error for Subquery'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="Database"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><title type='text'>Oracle Subquery bug - Test each subquery individually</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&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=&#39;Courier New&#39; color=&#39;#000099&#39;&gt; DELETE FROM cfgview&lt;br/&gt;        WHERE cfgviewid NOT IN (SELECT &lt;/font&gt;&lt;font face=&#39;Courier New&#39; color=&#39;#cc0000&#39;&gt;&lt;b&gt;cfgviewid&lt;/b&gt;&lt;/font&gt;&lt;font face=&#39;Courier New&#39;&gt;&lt;font color=&#39;#000099&#39;&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&#39;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=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/6253230724348769557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/6253230724348769557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/6253230724348769557'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2008/09/oracle-subquery-bug-test-each-subquery.html' title='Oracle Subquery bug - Test each subquery individually'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="Database"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><title type='text'>Oracle Enterprise Manager 10g Job Scheduler Configuration Problem Resolution for Solaris</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&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&#39;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=&#39;Courier New&#39; color=&#39;#cc0000&#39;&gt;/bin/sh: cannot determine current directory&lt;/font&gt;&lt;br/&gt;or&lt;br/&gt;&lt;br/&gt;&lt;font face=&#39;Courier New&#39; color=&#39;#cc0000&#39;&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=&#39;Courier New&#39; color=&#39;#cc0000&#39;&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=&#39;#000099&#39;&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=&#39;#000099&#39;&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=&#39;#000099&#39;&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&#39;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=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/7458369583010276718' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/7458369583010276718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/7458369583010276718'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2008/07/oracle-enterprise-manager-10g-job_8656.html' title='Oracle Enterprise Manager 10g Job Scheduler Configuration Problem Resolution for Solaris'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="www"/><title type='text'>My favorite firefox Addons</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&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=&#39;https://addons.mozilla.org/en-US/firefox/addon/201&#39; target=&#39;_blank&#39;&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=&#39;https://addons.mozilla.org/en-US/firefox/addon/201&#39; target=&#39;_blank&#39;&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=&#39;https://addons.mozilla.org/en-US/firefox/addon/201&#39; target=&#39;_blank&#39;&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=&#39;https://addons.mozilla.org/en-US/firefox/addon/201&#39; target=&#39;_blank&#39;&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=&#39;https://addons.mozilla.org/en-US/firefox/addon/201&#39; target=&#39;_blank&#39;&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=&#39;https://addons.mozilla.org/en-US/firefox/addon/201&#39; target=&#39;_blank&#39;&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=&#39;https://addons.mozilla.org/en-US/firefox/addon/201&#39; target=&#39;_blank&#39;&gt;https://addons.mozilla.org/en-US/firefox/addon/7264&lt;/a&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/1434459250666920910' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/1434459250666920910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/1434459250666920910'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2008/06/my-favorite-firefox-addons.html' title='My favorite firefox Addons'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><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><category scheme="http://www.blogger.com/atom/ns#" term="Database"/><title type='text'>Oracle Transparent Gateway SQL Server Encoding issues resolution</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&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 &#39;&lt;font face=&#39;Courier New&#39; color=&#39;#cc0000&#39;&gt;ORA-01756: quoted string not properly terminated&lt;/font&gt;&#39; is encountered.&lt;br/&gt;&lt;font color=&#39;#000099&#39;&gt;eg: &lt;/font&gt;&lt;font face=&#39;Courier New&#39; color=&#39;#000099&#39;&gt;insert into tmp_enc@dblinkToSS values (&#39;Umlauts ä ö ü ß Ä Ö Ü &#39;);&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=&#39;Courier New&#39; color=&#39;#000099&#39;&gt;insert into tmp_enc@dblinkToSS values (&#39;Umlauts ä ö ü ß Ä Ö Ü &#39;);&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=&quot;blogger-post-footer&quot;&gt;Ankit Jain&lt;/div&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/fullpage/post/7520011559741642198/53056290284745318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/53056290284745318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7520011559741642198/posts/default/53056290284745318'/><link rel='alternate' type='text/html' href='http://askankit.blogspot.com/2008/06/oracle-transparent-gateway-sql-server_17.html' title='Oracle Transparent Gateway SQL Server Encoding issues resolution'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>