<?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: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-7118467286958151494</id><updated>2012-02-16T01:21:07.278-08:00</updated><category term='RAC'/><category term='installation'/><category term='Linux'/><category term='Troubleshooting'/><category term='tuning'/><category term='ODI'/><category term='Problems'/><category term='Dataguard'/><category term='SQL/PLSQL'/><category term='Oracle Tools'/><category term='AIX'/><category term='ASM'/><category term='Administration'/><title type='text'>Oracle Log</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>64</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-7106625232753443290</id><published>2011-09-29T04:16:00.000-07:00</published><updated>2011-09-29T04:18:51.870-07:00</updated><title type='text'>How to Trace an Oracle Error</title><content type='html'>In order to trace an oracle error ORA-XXXX, first login database using a privileged account and enable trace:&lt;br /&gt;&lt;br /&gt;alter system set events 'XXXX trace name errorstack level 1';&lt;br /&gt;&lt;br /&gt;(XXXX is the oracle error number not beginning with zero. You may set trace level up to 3 for more detailed trace)&lt;br /&gt;&lt;br /&gt;After trace enabled if ORA-XXXX occurs, you can find a trace file generated in trace (dump) directory.&lt;br /&gt;&lt;br /&gt;In order to disable trace:&lt;br /&gt;&lt;br /&gt;alter system set events 'XXXX trace name errorstack off';&lt;br /&gt;&lt;br /&gt;Generated trace file is more like a memory dump then an error stack. So you may not find what you are looking for...easily...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-7106625232753443290?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/7106625232753443290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=7106625232753443290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/7106625232753443290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/7106625232753443290'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2011/09/how-to-trace-oracle-error.html' title='How to Trace an Oracle Error'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-4727955852666635073</id><published>2011-07-07T04:08:00.000-07:00</published><updated>2011-07-07T04:08:51.539-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RAC'/><title type='text'>How to configure 10g database with 11g RAC SCAN</title><content type='html'>If you have a 10g database in a 11.2g cluster and want to connect 10g database using SCAN then you should update local/remote listener parameters of 10g database manually. Here is an example for 2-node RAC:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;mycluster-crs-scan.mydomain.com&lt;/span&gt;&lt;/strong&gt; : My scan name (DNS)&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;mynode1-vip.mydomain.com&lt;/span&gt;&lt;/strong&gt;: vip of node 1&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;MYSID1&lt;/span&gt;&lt;/strong&gt;: Instance Name running on node 1&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;mynode2-vip.mydomain.com&lt;/span&gt;&lt;/strong&gt;: vip of node 2&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;MYSID2&lt;/span&gt;&lt;/strong&gt;: Instance Name running on node 2&lt;br /&gt;&lt;br /&gt;alter system set remote_listener='mycluster-crs-scan.mydomain.com:1521' scope=both SID='*';&lt;br /&gt;alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=mynode1-vip.mydomain.com)(PORT=1521))))' scope=both SID='MYSID1';&lt;br /&gt;alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=mynode2-vip.mydomain.com)(PORT=1521))))' scope=both SID='MYSID2';&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-4727955852666635073?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/4727955852666635073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=4727955852666635073' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4727955852666635073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4727955852666635073'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2011/07/how-to-configure-10g-database-with-11g.html' title='How to configure 10g database with 11g RAC SCAN'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-1439306972217736922</id><published>2011-03-03T23:56:00.000-08:00</published><updated>2011-03-03T23:56:22.346-08:00</updated><title type='text'>How to find CPU-core information on Sun Solaris</title><content type='html'>Here is 4 CPU, 16 cores...&lt;br /&gt;&lt;br /&gt;$ prtdiag -v&lt;br /&gt;System Configuration:&amp;nbsp; Sun Microsystems&amp;nbsp; sun4u SPARC Enterprise M9000 Server&lt;br /&gt;System clock frequency: 960 MHz&lt;br /&gt;Memory size: 20480 Megabytes&lt;br /&gt;==================================== CPUs ====================================&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Run&amp;nbsp;&amp;nbsp;&amp;nbsp; L2$&amp;nbsp;&amp;nbsp;&amp;nbsp; CPU&amp;nbsp;&amp;nbsp; CPU&lt;br /&gt;LSB&amp;nbsp;&amp;nbsp; Chip&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MHz&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MB&amp;nbsp;&amp;nbsp;&amp;nbsp; Impl. Mask&lt;br /&gt;---&amp;nbsp;&amp;nbsp; ----&amp;nbsp; ----------------------------------------&amp;nbsp; ----&amp;nbsp;&amp;nbsp; ---&amp;nbsp;&amp;nbsp;&amp;nbsp; ----- ----&lt;br /&gt;&amp;nbsp;&lt;span style="color: red;"&gt;00&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;2&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: orange;"&gt;16,&amp;nbsp; 17,&amp;nbsp; 18,&amp;nbsp; 19&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2280&amp;nbsp;&amp;nbsp; 5.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp; 146&lt;br /&gt;&amp;nbsp;&lt;span style="color: red;"&gt;02&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;1&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: orange;"&gt;72,&amp;nbsp; 73,&amp;nbsp; 74,&amp;nbsp; 75&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2280&amp;nbsp;&amp;nbsp; 5.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp; 146&lt;br /&gt;&amp;nbsp;&lt;span style="color: red;"&gt;03&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;2&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: orange;"&gt;112, 113, 114, 115&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2280&amp;nbsp;&amp;nbsp; 5.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp; 146&lt;br /&gt;&amp;nbsp;&lt;span style="color: red;"&gt;04&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;3&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: orange;"&gt;152, 153, 154, 155&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2280&amp;nbsp;&amp;nbsp; 5.0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp; 146&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-1439306972217736922?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/1439306972217736922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=1439306972217736922' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1439306972217736922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1439306972217736922'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2011/03/how-to-find-cpu-core-information-on-sun.html' title='How to find CPU-core information on Sun Solaris'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-5086511667502019362</id><published>2011-02-01T03:41:00.000-08:00</published><updated>2011-02-01T04:23:43.222-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><title type='text'>Incremental statistics</title><content type='html'>In order to&amp;nbsp;gether incremental statistics on a table :&lt;br /&gt;1-) Set incremental statistic pref for the table&lt;br /&gt;exec dbms_stats.set_table_prefs('MYSCHEMA','MYTABLE','INCREMENTAL' ,'TRUE') ;&lt;br /&gt;2-) Chek if it is set (should return TRUE)&lt;br /&gt;select dbms_stats.get_prefs('INCREMENTAL','MYSCHEMA','MYTABLE') from dual;&lt;br /&gt;3-) Gather statistics on a partition using GRANULARITY set to AUTO&lt;br /&gt;&lt;br /&gt;For official documentation:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/stats.htm"&gt;http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/stats.htm&lt;/a&gt;&amp;nbsp;(13.3.1.3 Statistics on Partitioned Objects)&lt;br /&gt;&lt;br /&gt;Setting Global/Database prefs:&lt;br /&gt;1-) In order to set database stat gathering&amp;nbsp;preferences excluding oracle system tables:&lt;br /&gt;exec DBMS_STATS.SET_DATABASE_PREFS('METHOD_OPT','FOR ALL COLUMNS SIZE 254');&lt;br /&gt;2-) In order to set database stat gathering&amp;nbsp;preferences globally:&lt;br /&gt;exec DBMS_STATS.SET_GLOBAL_PREFS('METHOD_OPT','FOR ALL COLUMNS SIZE 254');&lt;br /&gt;to see preference value:&lt;br /&gt;select dbms_stats.get_prefs('METHOD_OPT') from dual;&lt;br /&gt;&lt;br /&gt;Preferences:&lt;br /&gt;AUTOSTATS_TARGET&lt;br /&gt;CASCADE&lt;br /&gt;DEGREE&lt;br /&gt;ESTIMATE_PERCENT&lt;br /&gt;METHOD_OPT&lt;br /&gt;NO_INVALIDATE&lt;br /&gt;GRANULARITY&lt;br /&gt;PUBLISH&lt;br /&gt;INCREMENTAL&lt;br /&gt;STALE_PERCENT&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-5086511667502019362?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/5086511667502019362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=5086511667502019362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/5086511667502019362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/5086511667502019362'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2011/02/incremental-statistics.html' title='Incremental statistics'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-627351386075593436</id><published>2011-02-01T00:33:00.000-08:00</published><updated>2011-02-01T00:33:30.207-08:00</updated><title type='text'>CPU count</title><content type='html'>AIX Lpar CPU count:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;lparstat -i|grep "Entitled Capacity"|grep -v Pool&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-627351386075593436?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/627351386075593436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=627351386075593436' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/627351386075593436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/627351386075593436'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2011/02/cpu-count.html' title='CPU count'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-227118326509075964</id><published>2011-01-06T04:59:00.000-08:00</published><updated>2011-01-06T04:59:32.598-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='RAC'/><title type='text'>Disabling Parallel Load Balancing</title><content type='html'>Normally, parallel load balancing is a good&amp;nbsp;feature which distributes parallel sessions among rac nodes depending on node workloads. However there is a little problem with this algorithm. Node load statistics are calculated on very little time intervals (i don't remember now, let say in a few milliseconds). What happens if a big batch allocates large number of parallel sessions within this time period? All parallel sessions are allocated depending on this constant statistic which may lead one node to be overloaded.&lt;br /&gt;&lt;br /&gt;Let me explain with an example. Let say there is 3-node rac cluster and we will run a big batch which will open 128 parallel sessions. Let assume before running batch 2 nodes are 50% loaded, 1 is idle (&amp;lt;3%). When we run batch, oracle starts distributing parallel sessions to nodes depending on their workload and he may decided to open all parallel sessions on idle node. This is because all parallel sessions are opened in a very short time interval in which node load statistics are not updated so oracle decides to open every connection in idle node which seems best suitable. The result 2 nodes with 50% load and 1 with 100%.&lt;br /&gt;&lt;br /&gt;In order to eliminate this, you may set following variable on batch session:&lt;br /&gt;&lt;br /&gt;alter session set "_parallel_load_balancing"=FALSE;&lt;br /&gt;&lt;br /&gt;which disables load balancing and distributes all sessions one by one to all nodes ignoring workload.&lt;br /&gt;&lt;br /&gt;However, you should be very careful while using this parameter. Because if one node is already 100% loaded and if you set this parameter, oracle will try to open 1/3 of the 128 parallel session on this already 100% loaded node which may kill node. However load balancing would prevent opening new sessions on loaded node.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-227118326509075964?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/227118326509075964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=227118326509075964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/227118326509075964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/227118326509075964'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2011/01/disabling-parallel-load-balancing.html' title='Disabling Parallel Load Balancing'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-6751114443631174214</id><published>2010-12-13T04:31:00.000-08:00</published><updated>2010-12-13T04:31:37.338-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RAC'/><title type='text'>PRKP-1001 and CRS-0215 while starting 10g RAC database on 11gr2 cluster using srvctl</title><content type='html'>Recently we created 10g RAC database on 11gR2 cluster but could not able to start database with srvctl altough we can using sqlplus. Solution is to copy tnsnames.ora and listener.ora files from TNS_ADMIN location to ORACLE_HOME/network/admin:&lt;br /&gt;&lt;br /&gt;problem:&lt;br /&gt;srvctl start instance -d&amp;nbsp;MYDB -i MYINST&lt;br /&gt;PRKP-1001 : Error starting instance&amp;nbsp;MYINST on node mynode&lt;br /&gt;CRS-0215: Could not start resource 'ora.MYDB.MYINST.inst'.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;cp $TNS_ADMIN/listener.ora $ORACLE_HOME/network/admin/listener.ora&lt;br /&gt;cp $TNS_ADMIN/tnsnames.ora $ORACLE_HOME/network/admin/tnsnames.ora&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-6751114443631174214?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/6751114443631174214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=6751114443631174214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6751114443631174214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6751114443631174214'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/12/prkp-1001-and-crs-0215-while-starting.html' title='PRKP-1001 and CRS-0215 while starting 10g RAC database on 11gr2 cluster using srvctl'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-4043954870245667414</id><published>2010-12-06T04:55:00.000-08:00</published><updated>2010-12-06T04:55:40.524-08:00</updated><title type='text'>Using fked to restore ASM Disk Header (test)</title><content type='html'>&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;Recently i tested kfed for restoring ASM disk header corruption. Here are the steps:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;1-) Create a test Diskgroup,&amp;nbsp; test tablespace and test table&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;CREATE DISKGROUP TEST EXTERNAL REDUNDANCY&lt;br /&gt;DISK&lt;br /&gt;'/dev/rhdisk6',&lt;br /&gt;'/dev/rhdisk7'&lt;br /&gt;ATTRIBUTE &lt;br /&gt;'compatible.asm' = '11.2',&lt;br /&gt;'compatible.rdbms' = '11.2';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;CREATE TABLESPACE TEST_TS DATAFILE '+TEST' SIZE 100M AUTOEXTEND ON NEXT 125M MAXSIZE 10240M&lt;br /&gt;LOGGING&lt;br /&gt;ONLINE&lt;br /&gt;PERMANENT&lt;br /&gt;EXTENT MANAGEMENT LOCAL AUTOALLOCATE&lt;br /&gt;BLOCKSIZE 8K&lt;br /&gt;SEGMENT SPACE MANAGEMENT AUTO&lt;br /&gt;FLASHBACK ON;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;create table SCOTT.TEST_TABLE (a int, b varchar2(1000)) tablespace TEST_TS;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;insert into SCOTT.TEST_TABLE values (1, 'asddghmsddfuh');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;insert into SCOTT.TEST_TABLE values (2, 'asddghmsddfuh');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;insert into SCOTT.TEST_TABLE values (3,'sdfghfasdfgywbefg');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;2-) Check ASM &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SQL&amp;gt; select GROUP_NUMBER, NAME, ALLOCATION_UNIT_SIZE, TYPE, TOTAL_MB-FREE_MB USED_MB, TOTAL_MB, COMPATIBILITY, DATABASE_COMPATIBILITY from v$asm_diskgroup;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;GROUP_NUMBER NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ALLOCATION_UNIT_SIZE TYPE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USED_MB&amp;nbsp;&amp;nbsp; TOTAL_MB COMPATIBIL DATABASE_C&lt;br /&gt;------------ ------------------------------ -------------------- ------ ---------- ---------- ---------- ----------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 DATACRS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1048576 EXTERN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2123&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10240 11.2.0.0.0 10.1.0.0.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 TEST&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1048576 EXTERN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 163&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10240 11.2.0.0.0 11.2.0.0.0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SQL&amp;gt; select GROUP_NUMBER, HEADER_STATUS, PATH,NAME, LIBRARY, FAILGROUP_TYPE,&amp;nbsp; trunc(OS_MB/1024*1024*1024/1024/1024) SUM_OS from V$ASM_DISK;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;GROUP_NUMBER HEADER_STATU PATH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LIBRARY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FAILGRO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUM_OS&lt;br /&gt;------------ ------------ ------------------------------ ------------------------------ -------------------- ------- ----------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 CANDIDATE&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev/rhdisk9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REGULAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 CANDIDATE&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev/rhdisk8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REGULAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 MEMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev/rhdisk2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DATACRS_0000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REGULAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 MEMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev/rhdisk3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DATACRS_0001&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REGULAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 MEMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev/rhdisk6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST_0000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REGULAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 MEMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev/rhdisk7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST_0001&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REGULAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;2-) Corrupt disk hdisk6&amp;nbsp;(with root):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;node1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;lquerypv -h /dev/rhdisk6&lt;br /&gt;00000000&amp;nbsp;&amp;nbsp; 00820101 00000000 80000000 B8CC7719&amp;nbsp; |..............w.|&lt;br /&gt;00000010&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;00000020&amp;nbsp;&amp;nbsp; 4F52434C 4449534B 00000000 00000000&amp;nbsp; |ORCLDISK........|&lt;br /&gt;00000030&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;00000040&amp;nbsp;&amp;nbsp; 0B200000 00000103 54455354 5F303030&amp;nbsp; |. ......TEST_000|&lt;br /&gt;00000050&amp;nbsp;&amp;nbsp; 30000000 00000000 00000000 00000000&amp;nbsp; |0...............|&lt;br /&gt;00000060&amp;nbsp;&amp;nbsp; 00000000 00000000 54455354 00000000&amp;nbsp; |........TEST....|&lt;br /&gt;00000070&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;00000080&amp;nbsp;&amp;nbsp; 00000000 00000000 54455354 5F303030&amp;nbsp; |........TEST_000|&lt;br /&gt;00000090&amp;nbsp;&amp;nbsp; 30000000 00000000 00000000 00000000&amp;nbsp; |0...............|&lt;br /&gt;000000A0&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;000000B0&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;000000C0&amp;nbsp;&amp;nbsp; 00000000 00000000 01F6B0CB 6422B400&amp;nbsp; |............d"..|&lt;br /&gt;000000D0&amp;nbsp;&amp;nbsp; 01F6B0CB 64C47000 02001000 00100000&amp;nbsp; |....d.p.........|&lt;br /&gt;000000E0&amp;nbsp;&amp;nbsp; 0001BC80 00001400 00000002 00000001&amp;nbsp; |................|&lt;br /&gt;000000F0&amp;nbsp;&amp;nbsp; 00000002 00000002 00000000 00000000&amp;nbsp; |................|&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;#stop crs before. Other case ASM will protect disk from corruption&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;./crsctl stop crs&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;chdev -l hdisk6 -a pv=yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;lquerypv -h /dev/rhdisk6 #corrupted!!!&lt;br /&gt;00000000&amp;nbsp;&amp;nbsp; C9C2D4C1 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;00000010&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;00000020&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;00000030&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;00000040&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;00000050&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;00000060&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;00000070&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;00000080&amp;nbsp;&amp;nbsp; 00C2E250 BB2CE1C7 00000000 00000000&amp;nbsp; |...P.,..........|&lt;br /&gt;00000090&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;000000A0&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;000000B0&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;000000C0&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;000000D0&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;000000E0&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;000000F0&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;3-) TEST DG seem to be unmounted. Try to mount it:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;ASMCMD&amp;gt; mount TEST&lt;br /&gt;ORA-15032: not all alterations performed&lt;br /&gt;ORA-15017: diskgroup "TEST" cannot be mounted&lt;br /&gt;ORA-15063: ASM discovered an insufficient number of disks for diskgroup "TEST" (DBD ERROR: OCIStmtExecute)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;SQL&amp;gt; select * from SCOTT.TEST_TABLE ;&lt;br /&gt;select * from SCOTT.TEST_TABLE&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-01157: cannot identify/lock data file 6 - see DBWR trace file&lt;br /&gt;ORA-01110: data file 6: '+TEST/mydb/datafile/test_ts.256.737033885'&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;4-) Restore disk header using kfed (with root)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;"&gt;kfed REPAIR /dev/rhdisk6&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Courier New;"&gt;#now it seems to be ok!&lt;/span&gt;&lt;br /&gt;lquerypv -h /dev/rhdisk6&lt;br /&gt;00000000&amp;nbsp;&amp;nbsp; 00820101 00000000 80000000 B8CC7719&amp;nbsp; |..............w.|&lt;br /&gt;00000010&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;00000020&amp;nbsp;&amp;nbsp; 4F52434C 4449534B 00000000 00000000&amp;nbsp; |ORCLDISK........|&lt;br /&gt;00000030&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;00000040&amp;nbsp;&amp;nbsp; 0B200000 00000103 54455354 5F303030&amp;nbsp; |. ......TEST_000|&lt;br /&gt;00000050&amp;nbsp;&amp;nbsp; 30000000 00000000 00000000 00000000&amp;nbsp; |0...............|&lt;br /&gt;00000060&amp;nbsp;&amp;nbsp; 00000000 00000000 54455354 00000000&amp;nbsp; |........TEST....|&lt;br /&gt;00000070&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;00000080&amp;nbsp;&amp;nbsp; 00000000 00000000 54455354 5F303030&amp;nbsp; |........TEST_000|&lt;br /&gt;00000090&amp;nbsp;&amp;nbsp; 30000000 00000000 00000000 00000000&amp;nbsp; |0...............|&lt;br /&gt;000000A0&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;000000B0&amp;nbsp;&amp;nbsp; 00000000 00000000 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;000000C0&amp;nbsp;&amp;nbsp; 00000000 00000000 01F6B0CB 6422B400&amp;nbsp; |............d"..|&lt;br /&gt;000000D0&amp;nbsp;&amp;nbsp; 01F6B0CB 64C47000 02001000 00100000&amp;nbsp; |....d.p.........|&lt;br /&gt;000000E0&amp;nbsp;&amp;nbsp; 0001BC80 00001400 00000002 00000001&amp;nbsp; |................|&lt;br /&gt;000000F0&amp;nbsp;&amp;nbsp; 00000002 00000002 00000000 00000000&amp;nbsp; |................|&lt;br /&gt;&lt;br /&gt;5-) Try to mount again:&lt;br /&gt;&lt;br /&gt;ASMCMD&amp;gt; mount TEST #ok!!!&lt;br /&gt;&lt;br /&gt;6-) Now do some tests (everything ok)&lt;br /&gt;CREATE TABLESPACE TEST_TS2 DATAFILE '+TEST' SIZE 100M AUTOEXTEND ON NEXT 125M MAXSIZE 10240M&lt;br /&gt;LOGGING&lt;br /&gt;ONLINE&lt;br /&gt;PERMANENT&lt;br /&gt;EXTENT MANAGEMENT LOCAL AUTOALLOCATE&lt;br /&gt;BLOCKSIZE 8K&lt;br /&gt;SEGMENT SPACE MANAGEMENT AUTO&lt;br /&gt;FLASHBACK ON;&lt;br /&gt;create table SCOTT.TEST_TABLE2 (a int, b varchar2(1000)) tablespace TEST_TS;&lt;br /&gt;&lt;br /&gt;insert into SCOTT.TEST_TABLE2 values (4, 'asddghmsddfuh');&lt;br /&gt;insert into SCOTT.TEST_TABLE2 values (5, 'asddghmsddfuh');&lt;br /&gt;insert into SCOTT.TEST_TABLE2 values (6,'sdfghfasdfgywbefg');&lt;br /&gt;drop table SCOTT.TEST_TABLE;&lt;br /&gt;drop tablespace TEST_TS;&lt;br /&gt;alter diskgroup TEST add disk '/dev/rhdisk8','/dev/rhdisk9' drop disk 'TEST_0000','TEST_0001';&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQL&amp;gt; select GROUP_NUMBER, HEADER_STATUS, PATH,NAME, LIBRARY, FAILGROUP_TYPE,&amp;nbsp; trunc(OS_MB/1024*1024*1024/1024/1024) SUM_OS from V$ASM_DISK;&lt;br /&gt;GROUP_NUMBER HEADER_STATU PATH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LIBRARY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FAILGRO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUM_OS&lt;br /&gt;------------ ------------ ------------------------------ ------------------------------ -------------------- ------- ----------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 FORMER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev/rhdisk6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REGULAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 FORMER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev/rhdisk7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REGULAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 MEMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev/rhdisk2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DATACRS_0000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REGULAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 MEMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev/rhdisk3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DATACRS_0001&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REGULAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 MEMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev/rhdisk8&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST_0002&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REGULAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 MEMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev/rhdisk9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TEST_0003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REGULAR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-4043954870245667414?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/4043954870245667414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=4043954870245667414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4043954870245667414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4043954870245667414'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/12/using-fked-to-restore-asm-disk-header.html' title='Using fked to restore ASM Disk Header (test)'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-4260446263625597435</id><published>2010-12-06T01:20:00.000-08:00</published><updated>2010-12-06T01:20:43.605-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RAC'/><category scheme='http://www.blogger.com/atom/ns#' term='ASM'/><title type='text'>CRS-0222 and CRS-2640 while removing RAC datagourp</title><content type='html'>Recently I tried to drop a datagroup from RAC cluster. It was previously registered with cluster while creating a RAC database:&lt;br /&gt;&lt;br /&gt;HA Resource&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Target&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; State&lt;br /&gt;ora.FRA.dg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ONLINE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OFFLINE&lt;br /&gt;&lt;br /&gt;I moved all database files from this datagroup to an other. Then when i tried to drop it, following error occured:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;srvctl remove diskgroup -g FRA &lt;br /&gt;PRCA-1002 : Failed to remove CRS resource ora.FRA.dg for ASM Disk Group FRA&lt;br /&gt;PRCR-1028 : Failed to remove resource ora.FRA.dg&lt;br /&gt;PRCR-1072 : Failed to unregister resource ora.FRA.dg&lt;br /&gt;CRS-0222: Resource 'ora.FRA.dg' has dependency error.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The right thing was to remove datagroup as told in &lt;a href="http://www.dbdummy.com/128/crs-2640-required-resource-ora-arc2_dg-dg-is-missing.html"&gt;here&lt;/a&gt;. &lt;br /&gt;1-) srvctl modify database -d MYDB -a “DATA,OTHER_DG,...”&lt;br /&gt;2-) srvctl disable diskgroup -g FRA&lt;br /&gt;3-) srvctl remove diskgroup -g FRA –f&lt;br /&gt;&lt;br /&gt;However, I removed datagroup first:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;srvctl remove diskgroup -g FRA -f&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then, when i tried to open database, It gave me fallowing error:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;srvctl start database -d mydb&lt;br /&gt;PRCR-1079 : Failed to start resource ora.mydb.db&lt;br /&gt;CRS-2640: Required resource 'ora.FRA.dg' is missing.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That was because altough i removed datagroup with force option, dependency was remained. You can see it with similar command:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;./crsctl status resource ora.mydb.db -f|grep FRA&lt;br /&gt;START_DEPENDENCIES=hard(ora.DATA.dg,ora.FRA.dg) weak(type:ora.listener.type,global:type:ora.scan_listener.type,uniform:ora.ons,uniform:ora.eons) pullup(ora.DATA.dg)&lt;br /&gt;STOP_DEPENDENCIES=hard(intermediate:ora.asm,shutdown:ora.DATA.dg,shutdown:ora.FRA.dg)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I run fallowing command to remove FRA dependency:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;srvctl modify database -d MYDB -a “DATA”&amp;nbsp; (step 1)&lt;/span&gt;&lt;br /&gt;When i check dependency again, i saw that FRA was gone:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;./crsctl status resource ora.mydb.db -f|grep FRA &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;(nothing)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;./crsctl status resource ora.mydb.db -f|grep DATA&lt;br /&gt;START_DEPENDENCIES=hard(ora.DATA.dg) weak(type:ora.listener.type,global:type:ora.scan_listener.type,uniform:ora.ons,uniform:ora.eons) pullup(ora.DATA.dg)&lt;br /&gt;STOP_DEPENDENCIES=hard(intermediate:ora.asm,shutdown:ora.DATA.dg)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After that, i could able to open my database&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;srvctl start database -d mydb&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-4260446263625597435?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/4260446263625597435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=4260446263625597435' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4260446263625597435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4260446263625597435'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/12/crs-0222-and-crs-2640-while-removing.html' title='CRS-0222 and CRS-2640 while removing RAC datagourp'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-1484841442827629092</id><published>2010-12-03T03:54:00.000-08:00</published><updated>2010-12-03T03:54:32.982-08:00</updated><title type='text'>How to Copy Files in ASM</title><content type='html'>cp command in ASMCMD actually not copies system generated the file but creates an alias for real file. Here is a procedure to copy system generated file (redo log) from one asm datagroup to an other:&lt;br /&gt;&lt;br /&gt;1-) Login a database which has access to asm disk groups&lt;br /&gt;&lt;br /&gt;2-) Create following directories&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE DIRECTORY SOURCE_DIR AS '+DG1/DBNAME/ONLINELOG';&lt;br /&gt;CREATE OR REPLACE DIRECTORY DEST_DIR AS '/..filesystem_path../ONLINELOG';&lt;br /&gt;&lt;br /&gt;3-) Copy asm file to filesystem&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp; dbms_file_transfer.copy_file(source_directory_object =&amp;gt;&lt;br /&gt;&amp;nbsp; 'SOURCE_DIR', source_file_name =&amp;gt; 'filename',&lt;br /&gt;&amp;nbsp; destination_directory_object =&amp;gt; 'DEST_DIR',&lt;br /&gt;&amp;nbsp; destination_file_name =&amp;gt; 'filename');&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;4-) Copy file on filesystem back to asm&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE DIRECTORY SOURCE_DIR AS '/..filesystem_path../ONLINELOG';&lt;br /&gt;CREATE OR REPLACE DIRECTORY DEST_DIR AS '+DG2/DBNAME/ONLINELOG';&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp; dbms_file_transfer.copy_file(source_directory_object =&amp;gt;&lt;br /&gt;&amp;nbsp; 'SOURCE_DIR', source_file_name =&amp;gt; 'filename',&lt;br /&gt;&amp;nbsp; destination_directory_object =&amp;gt; 'DEST_DIR',&lt;br /&gt;&amp;nbsp; destination_file_name =&amp;gt; 'new_filename');&lt;br /&gt;END;&lt;br /&gt;/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-1484841442827629092?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/1484841442827629092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=1484841442827629092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1484841442827629092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1484841442827629092'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/12/how-to-copy-files-in-asm.html' title='How to Copy Files in ASM'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-6429844710062202764</id><published>2010-10-18T04:21:00.000-07:00</published><updated>2010-10-18T04:21:44.070-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AIX'/><category scheme='http://www.blogger.com/atom/ns#' term='ASM'/><title type='text'>AIX: ASM Metadata &amp; DISKS</title><content type='html'>lspv: command used to get disk list (disk, assigned PVID, vg, status)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$lspv&lt;br /&gt;hdisk0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;00c2e2503cddd971 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rootvg &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;active&lt;br /&gt;hdisk9 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;00c2e2508b71c3a9 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sw_vg &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; active&lt;br /&gt;hdisk1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;none &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;None &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;hdisk2 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;none &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;None &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;hdisk3 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;none &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;None &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;ASM disks should not have PVID assigned to them (&lt;a href="http://download.oracle.com/docs/cd/E11882_01/install.112/e10814/storage.htm#CWAIX276"&gt;Configuring Storage for Grid Infrastructure&lt;/a&gt;,&amp;nbsp;3.3.3 Configuring Disk Devices for Oracle ASM, step 7). They should be removed with fallowing command before assigned to ASM:&lt;br /&gt;&lt;br /&gt;$/usr/sbin/chdev -l hdiskn -a pv=clear&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: red;"&gt;Note:&lt;/span&gt;&lt;/b&gt; If you already assigned disks without clearing PVID, don't clear it using above command. It corrupts asm disks while clearing header. Because it is the same header where asm keeps its internal info. Actually ASM clears header and PVID and writes its own header when a disk assigned to a datagroup. However because OS odm (aix's internal database) is not updated, you can see PVIDs using lspv although it is not there.&lt;br /&gt;&lt;br /&gt;By using following command you can query disk header in order to see ASM internal information written on disk (requires root permission)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$lquerypv -h /dev/rhdisk5&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;00000000 00820101 00000000 80000000 81AA935B |...............[|&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;00000010 00000000 00000000 00000000 00000000 |................|&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;00000020 4F52434C 4449534B 00000000 00000000 |ORCLDISK........|&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;00000030 00000000 00000000 00000000 00000000 |................|&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;00000040 0A100000 00000103 54455354 5F303030 |........TEST_000|&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;00000050 30000000 00000000 00000000 00000000 |0...............|&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;00000060 00000000 00000000 54455354 00000000 |........TEST....|&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;00000070 00000000 00000000 00000000 00000000 |................|&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;00000080 00000000 00000000 54455354 5F303030 |........TEST_000|&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In 11g you can backup and recover corrupted disk headers using md_backup and md_restore. The corrupted&amp;nbsp;diskgroup must be specified with the ‘-g’ flag for the restore to complete&lt;br /&gt;successfully:&lt;br /&gt;&lt;br /&gt;ASMCMD&amp;gt; md_restore -b /oracle/backup/asm_metadata020409.bkp -g 'TEST'&lt;br /&gt;&lt;br /&gt;Ref:&lt;br /&gt;11gRAC_ASM_1.pdf (&lt;a href="http://www-03.ibm.com/support/techdocs/atsmastr.nsf/WebIndex/WP101449"&gt;doc link&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-6429844710062202764?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/6429844710062202764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=6429844710062202764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6429844710062202764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6429844710062202764'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/10/aix-asm-metadata-disks.html' title='AIX: ASM Metadata &amp; DISKS'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-8459560732480056192</id><published>2010-10-18T02:23:00.000-07:00</published><updated>2010-10-18T02:23:04.320-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='ASM'/><title type='text'>How to Drop ASM Datagroup while not mounted and disks corrupted</title><content type='html'>In a test environment we accidentally corrupt asm disks and reset their headers. When I query&amp;nbsp;V$ASM_DISK view, I saw that disks were discovered as "CANDIDATE". It was like newly added disks available for ASM. The problem was, my datagroup which was using these disks, was exists but i could not drop it. That was because a diskgroup has to be mounted in order to be dropped, but its disks were corrupted so i could not mount it:&lt;br /&gt;&lt;br /&gt;SQL&amp;gt; drop diskgroup DATA;&lt;br /&gt;drop diskgroup DATA&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-15039: diskgroup not dropped&lt;br /&gt;ORA-15001: diskgroup "DATA" does not exist or is not mounted&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQL&amp;gt; ALTER DISKGROUP DATA mount;&lt;br /&gt;ALTER DISKGROUP DATA mount&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-15032: not all alterations performed&lt;br /&gt;ORA-15017: diskgroup "DATA" cannot be mounted&lt;br /&gt;ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DATA"&lt;br /&gt;&lt;br /&gt;How can i drop/delete datagroup which i can not mount?&lt;br /&gt;&lt;br /&gt;Solution is to create a new datagroup, add all disks to new datagroup. At the end, old datagroup disappears... Then you may drop newly added diskgroup.&lt;br /&gt;&lt;br /&gt;create diskgroup DATA_DROP external redundancy disk '/dev/rhdisk#' force;&lt;br /&gt;alter diskgroup DATA_DROP add disk '/dev/rhdisk#';&lt;br /&gt;...&lt;br /&gt;DATA disappears when i add all its disks to DATA_DROP...&lt;br /&gt;...&lt;br /&gt;drop diskgroup DATA_DROP including contents;&lt;br /&gt;&lt;br /&gt;now, DATA diskgroup has gone and all its disks are in "FORMER" status.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-8459560732480056192?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/8459560732480056192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=8459560732480056192' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/8459560732480056192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/8459560732480056192'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/10/how-to-drop-asm-datagroup-while-not.html' title='How to Drop ASM Datagroup while not mounted and disks corrupted'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-3168592968372361584</id><published>2010-09-19T23:52:00.000-07:00</published><updated>2010-09-19T23:52:11.849-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>How to get process path on linux</title><content type='html'>$ps -eaf | grep pmon&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;oracle 24771 1 0 Aug14 ? 00:02:59 ora_pmon_INST1&lt;br /&gt;oracle 28486 1 0 Sep05 ? 00:04:00 ora_pmon_INST2&lt;br /&gt;&lt;br /&gt;$readlink -f /proc/24771/exe&lt;br /&gt;/.../bin/oracle&lt;br /&gt;$readlink -f /proc/28486/exe&lt;br /&gt;/.../bin/oracle&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-3168592968372361584?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/3168592968372361584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=3168592968372361584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/3168592968372361584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/3168592968372361584'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/09/how-to-get-process-path-on-linux.html' title='How to get process path on linux'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-325558741896464710</id><published>2010-08-25T00:48:00.000-07:00</published><updated>2010-08-25T00:48:14.234-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='RAC'/><title type='text'>SCAN IP Configuration</title><content type='html'>In order to display scan configuration of RAC cluster:&lt;br /&gt;&lt;br /&gt;$srvctl config scan&lt;br /&gt;&lt;br /&gt;SCAN name: my-scan.mydomain.com.tr, Network: X/XXX.XXX.XXX.XXX/XXX.XXX.XXX.XXX/en0&lt;br /&gt;SCAN VIP name: scan1, IP: /XXX.XXX.XXX.XXX/XXX.XXX.XXX.XXX&lt;br /&gt;SCAN VIP name: scan2, IP: /XXX.XXX.XXX.XXX/XXX.XXX.XXX.XXX&lt;br /&gt;SCAN VIP name: scan3, IP: /XXX.XXX.XXX.XXX/XXX.XXX.XXX.XXX&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-325558741896464710?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/325558741896464710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=325558741896464710' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/325558741896464710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/325558741896464710'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/08/scan-ip-configuration.html' title='SCAN IP Configuration'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-857518721659602204</id><published>2010-08-16T04:02:00.000-07:00</published><updated>2010-08-16T04:02:49.777-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='AIX'/><title type='text'>AIX: list top 10 processes consume memory</title><content type='html'>ps aux | head -1; ps aux | sort -rn +5 | head -10&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-857518721659602204?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/857518721659602204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=857518721659602204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/857518721659602204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/857518721659602204'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/08/aix-list-top-10-processes-consume.html' title='AIX: list top 10 processes consume memory'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-1911928167213674243</id><published>2010-08-13T03:57:00.000-07:00</published><updated>2010-08-13T03:57:37.720-07:00</updated><title type='text'>AIX mount-point hdisk information</title><content type='html'>In order to find relations between mount point and disks follow this procedure:&lt;br /&gt;1-) Find logical volume groups:&lt;br /&gt;lsvg&lt;br /&gt;2-) Find which mount points are belong to which logical volume:&lt;br /&gt;lsvg -l {volume group}&lt;br /&gt;3-) Find which hdisks are belong to logical volume&lt;br /&gt;lslv -l {logical volume}&lt;br /&gt;4-) Finally find storage serial and other information&lt;br /&gt;lscfg -vl {hdisk}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-1911928167213674243?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/1911928167213674243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=1911928167213674243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1911928167213674243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1911928167213674243'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/08/aix-mount-point-hdisk-information.html' title='AIX mount-point hdisk information'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-8262991644019481050</id><published>2010-07-16T00:28:00.000-07:00</published><updated>2010-07-20T01:13:42.130-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dataguard'/><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><title type='text'>11GR2: Creating Physical Standby on ASM usign Active Database Duplicate</title><content type='html'>You can follow official documents:&lt;br /&gt;e10642.pdf: Backup and Recovery User's Guide&amp;nbsp; page:24-1 "Duplicating a Database"&lt;br /&gt;e10700.pdf: Data Guard Concepts and Administration&amp;nbsp; page: F-4 "Using the DUPLICATE Command to Create a Standby Database"&lt;br /&gt;e10643.pdf: "Backup and Recovery Reference "&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Prepare Auxiliary database&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;#Create Password File for the Auxiliary Instance&lt;br /&gt;$orapwd file=$ORACLE_HOME/dbs/orapwMYSID password=xxxx entries=5&lt;br /&gt;&lt;br /&gt;#Create a static listener (single-instance)&lt;br /&gt;&lt;br /&gt;LISTENER=&lt;br /&gt;(DESCRIPTION=&lt;br /&gt;(ADDRESS_LIST=&lt;br /&gt;(ADDRESS = (PROTOCOL = TCP)(HOST = myserver)(PORT = 1521))&lt;br /&gt;(ADDRESS = (PROTOCOL = TCP)(HOST = myserverip)(PORT = 1521)(IP = FIRST))&lt;br /&gt;))&lt;br /&gt;SID_LIST_LISTENER =&lt;br /&gt;(SID_LIST =&lt;br /&gt;(SID_DESC =&lt;br /&gt;(ORACLE_HOME = /oracle_home_path)&lt;br /&gt;(SID_NAME = MYSID)&lt;br /&gt;))&lt;br /&gt;&lt;br /&gt;#Create necessary folders and prepare paths for new database:&lt;br /&gt;ORACLE_BASE&lt;br /&gt;ORACLE_BASE\DBNAME&lt;br /&gt;ORACLE_BASE\DBNAME\adump&lt;br /&gt;ORACLE_BASE\DBNAME\dpdump &lt;br /&gt;ORACLE_BASE\DBNAME\hdump &lt;br /&gt;ORACLE_BASE\DBNAME\pfile&lt;br /&gt;ORACLE_BASE\DBNAME\scripts&lt;br /&gt;&lt;br /&gt;Normally documents say that you need to create a pfile including only db_name parameter at Auxiliary site. Then you can start instance with nomount mode and Auxiliary configuration is done. However, at later steps&amp;nbsp;you may have troupble with&amp;nbsp;rman dublicate command&amp;nbsp;including SPFILE configuration parameters (like me): &lt;br /&gt;&amp;nbsp; &lt;br /&gt;DUPLICATE TARGET DATABASE &lt;br /&gt;FOR STANDBY&lt;br /&gt;FROM ACTIVE DATABASE&lt;br /&gt;SPFILE&lt;br /&gt;....&lt;br /&gt;SET "db_unique_name"="..."&lt;br /&gt;SET DB_CREATE_FILE_DEST "+ASMDISK";&lt;br /&gt;&lt;br /&gt;An other choice, you can manually create Auxiliary spfile and set all spfile parameters here instead of rman duplicate command. Later we will use only command to create standby....&lt;br /&gt;DUPLICATE TARGET DATABASE &lt;br /&gt;FOR STANDBY&lt;br /&gt;FROM ACTIVE DATABASE&lt;br /&gt;Here is my previously created pfile at Auxiliary database:&lt;br /&gt;&lt;br /&gt;MYDBNAME.__db_cache_size=XXXXXXXX&lt;br /&gt;MYDBNAME.__java_pool_size=XXXXXXXX&lt;br /&gt;MYDBNAME.__large_pool_size=XXXXXXXX&lt;br /&gt;MYDBNAME.__oracle_base='/oracle_base_path'#ORACLE_BASE set from environment&lt;br /&gt;MYDBNAME.__pga_aggregate_target=XXXXXXXX&lt;br /&gt;MYDBNAME.__sga_target=XXXXXXXX&lt;br /&gt;MYDBNAME.__shared_io_pool_size=0&lt;br /&gt;MYDBNAME.__shared_pool_size=XXXXXXXX&lt;br /&gt;MYDBNAME.__streams_pool_size=XXXXXXXX&lt;br /&gt;*.audit_file_dest='/adump_path'&lt;br /&gt;*.audit_trail='db'&lt;br /&gt;*.compatible='11.2.0.0.0'&lt;br /&gt;*.control_files='/db_ctrl_path/ctrl1.ctl','/db_ctrl_path/ctrl2.ctl'&lt;br /&gt;*.db_block_size=XXXXXXXX&lt;br /&gt;*.db_create_file_dest='+ASMDISK'&lt;br /&gt;*.db_domain=''&lt;br /&gt;*.db_file_multiblock_read_count=XXXXXXXX&lt;br /&gt;*.db_name='MYDBNAME'&lt;br /&gt;*.db_recovery_file_dest='+ASMRECODISK'&lt;br /&gt;*.db_recovery_file_dest_size=XXXXXXXX&lt;br /&gt;*.db_unique_name='MYDBNAME'&lt;br /&gt;*.diagnostic_dest='/oracle_base_path'&lt;br /&gt;*.dispatchers='(PROTOCOL=TCP) (SERVICE=MYDBNAME2XDB)'&lt;br /&gt;*.memory_max_target=XXXXXXXX&lt;br /&gt;*.memory_target=XXXXXXXX&lt;br /&gt;*.open_cursors=XXXXXXXX&lt;br /&gt;*.processes=XXXXXXXX&lt;br /&gt;*.remote_login_passwordfile='EXCLUSIVE'&lt;br /&gt;*.result_cache_max_size=XXXXXXXX&lt;br /&gt;*.service_names='MYDBNAME',...&lt;br /&gt;*.sessions=XXXXXXXX&lt;br /&gt;*.sort_area_size=XXXXXXXX&lt;br /&gt;*.undo_retention=XXXXXXXX&lt;br /&gt;*.undo_tablespace='MYUNDOTS'&lt;br /&gt;&lt;br /&gt;Note:&amp;nbsp;I dont suggest using&amp;nbsp;"db_file_name_convert" or "log_file_name_convert" parameters. If you use them both with db_create_file_dest parameter, then datafiles and logfiles&amp;nbsp;are created at paths "{db_create_file_dest}/{db_unique_name}/DATAFILE", "{db_create_file_dest}/{db_unique_name}/ONLINELOG"&amp;nbsp;and aliases are created at paths&amp;nbsp;"{db_file_name_convert}", "{log_file_name_convert}". &lt;br /&gt;Note:&amp;nbsp;Because db_unique_name&amp;nbsp;is used as a template parameter&amp;nbsp;for asm paths, chose it&amp;nbsp;wisely. Then It will&amp;nbsp;be&amp;nbsp;difficult to&amp;nbsp;move them and rename in controlfile.&amp;nbsp;I suggest use&amp;nbsp;DBNAME as unique name.&amp;nbsp;However both primary and standby can not have same db_unique_name so decide what to set which. If you decide to change db_unique_name of the primary, it resuires restart...&lt;br /&gt;&lt;br /&gt;When your pfile is ready, first startup instance with nomount option using this pfile and then create spfile. Then shutdown, startup again with nomount option, this time using spfile. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Prepare&amp;nbsp;Source database and run RMAN DUPLICATE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Before beginning duplication, force database logging:&lt;br /&gt;&lt;br /&gt;ALTER DATABASE FORCE LOGGING;&lt;br /&gt;&lt;br /&gt;You need to configure sql net connections for both source and auxiliary databases. Here is the tnsnames.ora:&lt;br /&gt;&lt;br /&gt;MYDBNAMEPROD =&lt;br /&gt;(DESCRIPTION =&lt;br /&gt;(ADDRESS_LIST =&lt;br /&gt;(ADDRESS = (PROTOCOL = TCP)(HOST = prodhost)(PORT = 1521))&lt;br /&gt;(CONNECT_DATA = (SID = MYSID))&lt;br /&gt;))&lt;br /&gt;&lt;br /&gt;MYDBNAMESTBY =&lt;br /&gt;(DESCRIPTION =&lt;br /&gt;(ADDRESS = (PROTOCOL = TCP)(HOST = stbyhost)(PORT = 1521))&lt;br /&gt;(CONNECT_DATA =(SERVER = DEDICATED)(SID = MYSID))&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;You should be able to connect both instance with sys as sysdba through sql.net:&lt;br /&gt;&lt;br /&gt;sqlplus /nolog&lt;br /&gt;SQL&amp;gt; connect &lt;a href="mailto:SYS@MYDBNAMEPROD"&gt;SYS@MYDBNAMEPROD&lt;/a&gt; as sysdba&lt;br /&gt;SQL&amp;gt; connect SYS@MYDBNAMESTBY as sysdba&lt;br /&gt;&lt;br /&gt;If you could not connect, you should correct this before proceeding.&lt;br /&gt;&lt;br /&gt;Now connect rman and start duplicate:&lt;br /&gt;&lt;br /&gt;$rman&lt;br /&gt;RMAN&amp;gt; CONNECT TARGET &lt;a href="mailto:SYS@MYDBNAMEPROD"&gt;SYS@MYDBNAMEPROD&lt;/a&gt;&lt;br /&gt;target database Password: &lt;br /&gt;connected to target database:&amp;nbsp;MYDBNAME (DBID=XXXXXX)&lt;br /&gt;&lt;br /&gt;RMAN&amp;gt; CONNECT AUXILIARY &lt;a href="mailto:SYS@MYDBNAMESTBY"&gt;SYS@MYDBNAMESTBY&lt;/a&gt;&lt;br /&gt;auxiliary database Password: &lt;br /&gt;connected to auxiliary database: MYDBNAME (not mounted)&lt;br /&gt;&lt;br /&gt;RMAN&amp;gt; DUPLICATE TARGET DATABASE&lt;br /&gt;2&amp;gt; FOR STANDBY&lt;br /&gt;3&amp;gt; FROM ACTIVE DATABASE&lt;br /&gt;4&amp;gt; ;&lt;br /&gt;....&lt;br /&gt;&lt;br /&gt;Note: If datafiles are created with aliases and you decide to remove aliases, dont use "rm" command of asmcmd. It will remove both alias and file itself. Instead, use "rmalias". I removed a file accidently by removing alias with rm command and could not find a way to get that&amp;nbsp;single datafile from source&amp;nbsp;directly into&amp;nbsp;auxillary asm. If you have a filesystem drive at auxillary&amp;nbsp;big enough to hold that datafile, then there seems a way...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Prepare Dataguard Configuration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Put standby control files into ASM:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;First of all, prepare paths for controlfiles. If necessary, create asm directories.&lt;br /&gt;&lt;br /&gt;SQL&amp;gt; shutdown immediate&lt;br /&gt;&lt;br /&gt;ORA-01109: database not open&lt;br /&gt;Database dismounted.&lt;br /&gt;ORACLE instance shut down.&lt;br /&gt;SQL&amp;gt; startup nomount&lt;br /&gt;&lt;br /&gt;ORACLE instance started.&lt;br /&gt;Total System Global Area 2.6724E+10 bytes&lt;br /&gt;Fixed Size 2219408 bytes&lt;br /&gt;Variable Size 1.2885E+10 bytes&lt;br /&gt;Database Buffers 1.3824E+10 bytes&lt;br /&gt;Redo Buffers 12148736 bytes&lt;br /&gt;SQL&amp;gt; exit&lt;br /&gt;&lt;br /&gt;$rman target /&lt;br /&gt;&lt;br /&gt;RMAN&amp;gt; restore controlfile to '+ASMDISK' from '/db_ctrl_path/ctrl1.ctl';&lt;br /&gt;RMAN&amp;gt; restore controlfile to '+ASMRECODISK' from '/db_ctrl_path/ctrl2.ctl';&lt;br /&gt;&lt;br /&gt;Check that new control files are created at paths:&lt;br /&gt;+ASMDISK/MYDBNAME/CONTROLFILE&lt;br /&gt;+ASMRECODISK/MYDBNAME/CONTROLFILE&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Go to asm and find out newly created control files: &lt;br /&gt;+ASMDISK/MYDBNAME/CONTROLFILE/current.XXX.XXXXXXXXX &lt;br /&gt;&lt;br /&gt;+ASMRECODISK/MYDBNAME/CONTROLFILE/current.XXX.XXXXXXXXX&lt;br /&gt;&lt;br /&gt;Then update control_files and&amp;nbsp;mount database: &lt;br /&gt;&lt;br /&gt;sqlplus '/ AS SYSDBA'&amp;nbsp; &lt;br /&gt;SQL&amp;gt; alter system set control_files='+ASMDISK/MYDBNAME/CONTROLFILE/current.XXX.XXXXXXXXX', &lt;br /&gt;'+ASMRECODISK/MYDBNAME/CONTROLFILE/current.XXX.XXXXXXXXX' scope=spfile; &lt;br /&gt;SQL&amp;gt; startup mount&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Follow this procedure to setup dataguard:&lt;br /&gt;&lt;a href="http://erkanorclog.blogspot.com/2008/03/setting-up-dataguard-configuration-for.html"&gt;http://erkanorclog.blogspot.com/2008/03/setting-up-dataguard-configuration-for.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Configure dynamic (local) listener:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;You may want to register standby with local listener&amp;nbsp;:&lt;br /&gt;&lt;br /&gt;ALTER SYSTEM SET LOCAL_LISTENER='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=mystbyhost)(PORT=1521))))' scope=both;&lt;br /&gt;&lt;br /&gt;Check and see if local listener registration is ok. Change "MYDBNAMESTBY" tns at primary side to use this new listener configuration. If it is ok and you see dataguard is working fine&amp;nbsp;then you can unset static listener configuration created previously.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-8262991644019481050?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/8262991644019481050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=8262991644019481050' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/8262991644019481050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/8262991644019481050'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/07/11gr2-creating-physical-standby-on-asm.html' title='11GR2: Creating Physical Standby on ASM usign Active Database Duplicate'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-4900598317386226537</id><published>2010-07-15T23:21:00.000-07:00</published><updated>2010-07-15T23:21:47.383-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Tools'/><title type='text'>Using Sql loader (sqlldr.exe)</title><content type='html'>Here is an example of using sql loader to load data from flat file to oracle table. In order to solve input-client time format conflicts, time format for timestamp columns specified manually in parameter file.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;C:\&amp;gt;set NLS_LANG=TURKISH_TURKEY.TR8MSWIN1254&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;C:\&amp;gt;sqlldr &lt;/span&gt;&lt;a href="mailto:myuser@mydb"&gt;&lt;span style="color: blue;"&gt;myuser@mydb&lt;/span&gt;&lt;/a&gt;&lt;span style="color: blue;"&gt; control=loader.ctl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;loader.ctl:&lt;/strong&gt;&lt;br /&gt;load data&lt;br /&gt;&lt;br /&gt;infile 'myinputfile'&lt;br /&gt;into table MYSCHEMA.MYTABLE&lt;br /&gt;fields terminated by "\t" OPTIONALLY ENCLOSED BY '"' &lt;br /&gt;(COLUMN1,&amp;nbsp;TIMESTAMP_COLUMN &lt;span style="color: red;"&gt;TIMESTAMP "DDMONYYYY:HH24:MI:SS"&lt;/span&gt;, COLUMN2, COLUMN3...)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-4900598317386226537?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/4900598317386226537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=4900598317386226537' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4900598317386226537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4900598317386226537'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/07/using-sql-loader-sqlldrexe.html' title='Using Sql loader (sqlldr.exe)'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-8454852520776107480</id><published>2010-07-15T02:21:00.000-07:00</published><updated>2010-07-15T02:21:58.642-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><title type='text'>How to change DBNAME &amp; SID without changing DBID</title><content type='html'>This procedure does not require resetlogs so previously taken backups will&amp;nbsp;be valid after this operation. However database restart is needed&amp;nbsp;at some points so maintenance with downtime should be scheduled for this operation. &lt;br /&gt;&lt;br /&gt;You may follow “Changing Only the Database Name”&amp;nbsp; topic at official document:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/B14117_01/server.101/b10825/dbnewid.htm#i1004734"&gt;http://download.oracle.com/docs/cd/B14117_01/server.101/b10825/dbnewid.htm#i1004734&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;$cd $ORACLE_HOME/dbs&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;#backup old initora file&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;$mv initMYOLDSID.ora initMYOLDSID.ora.org&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;#create pfile from spfile&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;$sqlplus '/ AS SYSDBA' &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;SQL&amp;gt; create pfile from spfile;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;SQL&amp;gt; exit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;#replace all old dbname parameters with new dbname in pfile. Becareful, if you change some path variables,&amp;nbsp;make sure that new path (including new dbname) also exists on system. If not, create manually.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;$vi initMYOLDSID.ora&lt;/span&gt;&lt;br /&gt;vi=&amp;gt; :%s/MYOLDDBNAME/MYNEWDBNAME/g&lt;br /&gt;&lt;br /&gt;vi=&amp;gt; :wq&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;#now database goes offline...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;$sqlplus '/ AS SYSDBA'&lt;/span&gt; &lt;br /&gt;&lt;span style="color: red;"&gt;SQL&amp;gt; SHUTDOWN IMMEDIATE &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;SQL&amp;gt; STARTUP MOUNT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;SQL&amp;gt; exit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;#change dbname using nid. Output is similar to fallowing...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;$nid TARGET=/ DBNAME=MYNEWDBNAME SETNAME=YES&lt;/span&gt; &lt;br /&gt;DBNEWID: Release 11.2.0.1.0 - Production on .... &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.&lt;br /&gt;&lt;br /&gt;Connected to database MYOLDDBNAME (DBID=XXXXXXXXX)&lt;br /&gt;&lt;br /&gt;Connected to server version 11.2.0&lt;br /&gt;&lt;br /&gt;Control Files in database:&lt;br /&gt;/db_ctrl_path/ctrl1.ctl&lt;br /&gt;/db_ctrl_path/ctrl2.ctl&lt;br /&gt;&lt;br /&gt;Change database name of database MYOLDDBNAME to MYNEWDBNAME? (Y/[N]) =&amp;gt; Y&lt;br /&gt;&lt;br /&gt;Proceeding with operation&lt;br /&gt;Changing database name from MYOLDDBNAME to MYNEWDBNAME&lt;br /&gt;Control File /db_ctrl_path/ctrl1.ctl - modified&lt;br /&gt;Control File /db_ctrl_path/ctrl2.ctl - modified&lt;br /&gt;Datafile /db_data_path/file1.db - wrote new name&lt;br /&gt;Datafile /db_data_path/file2.db - wrote new name&lt;br /&gt;Datafile /db_data_path/file3.db - wrote new name&lt;br /&gt;...&lt;br /&gt;Control File /db_ctrl_path/ctrl1.ctl - wrote new name&lt;br /&gt;Control File /db_ctrl_path/ctrl2.ctl - wrote new name&lt;br /&gt;Instance shut down&lt;br /&gt;&lt;br /&gt;Database name changed to MYNEWDBNAME.&lt;br /&gt;Modify parameter file and generate a new password file before restarting.&lt;br /&gt;Succesfully changed database name.&lt;br /&gt;DBNEWID - Completed succesfully.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;#Change ORACLE_SID environment variable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;$vi $HOME/.profile&lt;/span&gt;&lt;br /&gt;vi=&amp;gt; change ORACLE_SID from MYOLDSID to MYNEWSID&lt;br /&gt;&lt;span style="color: blue;"&gt;$. $HOME/.profile&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;$env|grep SID&lt;/span&gt;&lt;br /&gt;ORACLE_SID=MYNEWSID&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;#Create new password file and rename pfile..&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;$orapwd file=$ORACLE_HOME/dbs/orapwMYNEWSID password=xxxx entries=5 &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;$mv initMYOLDSID.ora initMYNEWSID.ora&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;#Start database with new pfile and create spfile. &lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;$sqlplus '/ AS SYSDBA'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;SQL&amp;gt; startup pfile=oracle_home_path/dbs/initMYNEWSID.ora&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;ORACLE instance started.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;…&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;SQL&amp;gt; select name from v$database;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;NAME&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;---------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;MYNEWDBNAME&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;SQL&amp;gt; create spfile from pfile;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;#Note that database is opened using pfile so no spfile operation will be allowed. You should restart database again without pfile parameter to open it with spfile. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-8454852520776107480?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/8454852520776107480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=8454852520776107480' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/8454852520776107480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/8454852520776107480'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/07/how-to-change-dbname-sid-without.html' title='How to change DBNAME &amp; SID without changing DBID'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-636250445458442338</id><published>2010-07-12T00:57:00.000-07:00</published><updated>2010-07-12T00:58:52.398-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ODI'/><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshooting'/><title type='text'>ODI: connection to repository failed</title><content type='html'>If connection string for the repository database has been changed, you may face following error while connecting to repository altough you have changed url parameter of client tool:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;java.sql.SQLException: Io Exception: The Network Adapter could not establish the connection &lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:274)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:328)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;at oracle.jdbc.driver.PhysicalConnection.&lt;init&gt;(PhysicalConnection.java:361)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;at oracle.jdbc.driver.T4CConnection.&lt;init&gt;(T4CConnection.java:151)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:595)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;at com.sunopsis.sql.SnpsConnection.u(SnpsConnection.java)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;at com.sunopsis.sql.SnpsConnection.c(SnpsConnection.java)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;at com.sunopsis.sql.h.run(h.java)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is because, altough tool connects to repository successfully, it retrieves repository connection string from repository database and reconnects&amp;nbsp;using&amp;nbsp;it&amp;nbsp;(or tries to open a new connection with it&amp;nbsp;and fails). As a result, you can not connect and correct repository connection parameter. &lt;br /&gt;&lt;br /&gt;I solved this problem by manually logging into repository database and updating repository connection&amp;nbsp; parameter:&lt;br /&gt;&lt;br /&gt;select TXT from snp_mtxt_part where i_txt=( select I_TXT_JAVA_URL from SNP_CONNECT where CON_NAME='MY_PROD_WORK_REP_NAME')&lt;br /&gt;&lt;br /&gt;update snp_mtxt_part set TXT='{correct repository connection string}&lt;new_conn_str&gt;' where i_txt=....;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-636250445458442338?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/636250445458442338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=636250445458442338' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/636250445458442338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/636250445458442338'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/07/odi-connection-to-repository-failed.html' title='ODI: connection to repository failed'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-8002502436241426176</id><published>2010-07-05T06:08:00.000-07:00</published><updated>2010-07-05T06:08:23.738-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RAC'/><title type='text'>Creating New 11gr2 database on existing 11gr2 RAC</title><content type='html'>It is assumed that 11gr2 cluster has been installed. ASM is configured and disks are prepared for new database.&lt;br /&gt;&lt;br /&gt;1-) Create new OS user for new database. New user should be in the same group with grid's OS user (Using different os users for databases is optional, not a must)&lt;br /&gt;&lt;br /&gt;2-) Set ssh trust between the nodes for the newly created os user:&lt;br /&gt;&lt;br /&gt;From each node, logged in as new user: &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;mkdir ~/.ssh&lt;br /&gt;chmod 755 ~/.ssh&lt;br /&gt;/usr/bin/ssh-keygen -t rsa&lt;br /&gt;/usr/bin/ssh-keygen -t dsa&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;$ mkdir ~/.ssh&lt;br /&gt;$ chmod 755 ~/.ssh&lt;br /&gt;$ /usr/bin/ssh-keygen -t rsa&lt;br /&gt;Generating public/private rsa key pair. &lt;br /&gt;Enter file in which to save the key (.../.ssh/id_rsa): &lt;br /&gt;Enter passphrase (empty for no passphrase): &lt;br /&gt;Enter same passphrase again: &lt;br /&gt;&lt;br /&gt;Your identification has been saved in .../.ssh/id_rsa. &lt;br /&gt;Your public key has been saved in .../.ssh/id_rsa.pub. &lt;br /&gt;The key fingerprint is: &lt;br /&gt;XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX &lt;a href="mailto:os_user@my.domain.com"&gt;os_user@my.domain.com&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;$ /usr/bin/ssh-keygen -t dsa&lt;br /&gt;Generating public/private dsa key pair. &lt;br /&gt;Enter file in which to save the key (.../.ssh/id_dsa): &lt;br /&gt;Enter passphrase (empty for no passphrase): &lt;br /&gt;Enter same passphrase again: &lt;br /&gt;&lt;br /&gt;Your identification has been saved in .../.ssh/id_dsa. &lt;br /&gt;Your public key has been saved in .../.ssh/id_dsa.pub. &lt;br /&gt;&amp;nbsp;The key fingerprint is: &lt;br /&gt;XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX &lt;a href="mailto:os_user@my.domain.com"&gt;os_user@my.domain.com&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Append all public keys to authorized_keys of all nodes:&lt;br /&gt;&lt;br /&gt;FIRST NODE&lt;br /&gt;&lt;br /&gt;cat ~/.ssh/id_rsa.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys &lt;br /&gt;cat ~/.ssh/id_dsa.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys &lt;br /&gt;ssh &lt;a href="mailto:os_user@node2"&gt;os_user@node2&lt;/a&gt; cat ~/.ssh/id_rsa.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys &lt;br /&gt;ssh &lt;a href="mailto:os_user@node2"&gt;os_user@node2&lt;/a&gt; cat ~/.ssh/id_dsa.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys &lt;br /&gt;chmod 644 ~/.ssh/authorized_keys &lt;br /&gt;&lt;br /&gt;SECOND NODE&lt;br /&gt;&lt;br /&gt;cat ~/.ssh/id_rsa.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys &lt;br /&gt;cat ~/.ssh/id_dsa.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys &lt;br /&gt;ssh &lt;a href="mailto:os_user@node1"&gt;os_user@node1&lt;/a&gt; cat ~/.ssh/id_rsa.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys &lt;br /&gt;ssh &lt;a href="mailto:os_user@node1"&gt;os_user@node1&lt;/a&gt; cat ~/.ssh/id_dsa.pub &amp;gt;&amp;gt; ~/.ssh/authorized_keys &lt;br /&gt;chmod 644 ~/.ssh/authorized_keys&lt;br /&gt;&lt;br /&gt;ssh command run at previous step will register each node's ssh identity to the known_hosts file at other node (confirmation appeared when you run ssh first). However, every node should also has a know_hosts entry for itself. In order to do that, run following command at each node and answer yes at confirmation. &lt;br /&gt;&lt;br /&gt;ssh &lt;a href="mailto:os_user@nodeitself"&gt;os_user@nodeitself&lt;/a&gt; ls&lt;br /&gt;&lt;br /&gt;Finally, check that each node does a ssh ls to orher node without requiring any password or confirmation.&lt;br /&gt;&lt;br /&gt;ssh &lt;a href="mailto:os_user@othernode"&gt;os_user@othernode&lt;/a&gt; ls&lt;br /&gt;ssh &lt;a href="mailto:os_user@nodeitself"&gt;os_user@nodeitself&lt;/a&gt; ls&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3-) edit user profile and set following variables: &lt;br /&gt;&amp;nbsp; &lt;br /&gt;ORACLE_HOME &lt;br /&gt;&lt;br /&gt;RDBMS_HOME&lt;br /&gt;ASM_HOME&lt;br /&gt;CRS_HOME&lt;br /&gt;ORACLE_BASE&lt;br /&gt;PATH&lt;br /&gt;ORACLE_SID&lt;br /&gt;LD_LIBRARY_PATH&lt;br /&gt;4-) Check permisions&amp;nbsp;of ORACLE HOME and BASE so new user has write permission on these (on both nodes) &lt;br /&gt;5-) Set new environments paramaters on both nodes. &lt;br /&gt;6-) Start Installer and install software only... Create database? maybe next time... &lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-8002502436241426176?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/8002502436241426176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=8002502436241426176' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/8002502436241426176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/8002502436241426176'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/07/creating-new-11gr2-database-on-existing.html' title='Creating New 11gr2 database on existing 11gr2 RAC'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-1128836008688458829</id><published>2010-07-01T07:44:00.000-07:00</published><updated>2010-07-01T07:44:37.151-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><title type='text'>System Wide Stats Gathering</title><content type='html'>It is recommended to run&amp;nbsp;gather statistics reqularly, especially after upgrades or running catalog scripts:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;exec DBMS_STATS.GATHER_DICTIONARY_STATS();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;exec DBMS_STATS.GATHER_FIXED_OBJECTS_STATS();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Also it is recommended to gather hardware based statistics after database first created or a hardware maintenance has been done&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;exec DBMS_STATS.gather_system_stats('start');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;exec DBMS_STATS.gather_system_stats('stop');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You may query aux_stats$ system view to see system stat results:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;select * from aux_stats$&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-1128836008688458829?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/1128836008688458829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=1128836008688458829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1128836008688458829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1128836008688458829'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/07/system-wide-stats-gathering.html' title='System Wide Stats Gathering'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-6817289382055904426</id><published>2010-07-01T03:39:00.000-07:00</published><updated>2010-07-01T03:39:48.435-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshooting'/><category scheme='http://www.blogger.com/atom/ns#' term='RAC'/><title type='text'>Oracle 11GR2 SCAN, ORA-12502: TNS:listener received no CONNECT_DATA from client</title><content type='html'>While local_listener parameter of RAC database was something like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=node-vip)(PORT=1521))))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;connecting to database using SCAN listener gave following error (after a short period of hang time)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;ORA-12502: TNS:listener received no CONNECT_DATA from client&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After setting local_listener as:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=node-vip&lt;strong&gt;&lt;span style="color: orange;"&gt;.mycompany.com&lt;/span&gt;&lt;/strong&gt;)(PORT=1521))))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;problem resolved...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-6817289382055904426?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/6817289382055904426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=6817289382055904426' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6817289382055904426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6817289382055904426'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/07/oracle-11gr2-scan-ora-12502-tnslistener.html' title='Oracle 11GR2 SCAN, ORA-12502: TNS:listener received no CONNECT_DATA from client'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-1129525772847177291</id><published>2010-07-01T00:49:00.000-07:00</published><updated>2010-07-01T03:40:16.670-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='RAC'/><title type='text'>Oracle 11gR2 RAC and crs_stat</title><content type='html'>In Oracle 11gR2 RAC cluster, crs_stat does not show database instance (node,online,offline) information any more. In order to get this information, you should use srvctl commands...&lt;br /&gt;&lt;br /&gt;example: mydb2 is offline&amp;nbsp;at mynode2 &lt;br /&gt;&lt;br /&gt;$crs_stat -t&amp;nbsp;&amp;nbsp; (no information at output)&lt;br /&gt;Name Type Target State Host &lt;br /&gt;------------------------------------------------------------&lt;br /&gt;ora.DATA.dg ora....up.type ONLINE ONLINE mynode1 &lt;br /&gt;ora.DATA10G.dg ora....up.type ONLINE ONLINE mynode1 &lt;br /&gt;ora....ER.lsnr ora....er.type ONLINE ONLINE mynode1 &lt;br /&gt;ora....N1.lsnr ora....er.type ONLINE ONLINE mynode2 &lt;br /&gt;ora....N2.lsnr ora....er.type ONLINE ONLINE mynode1 &lt;br /&gt;ora....N3.lsnr ora....er.type ONLINE ONLINE mynode1 &lt;br /&gt;ora....TING.dg ora....up.type ONLINE ONLINE mynode1 &lt;br /&gt;ora.RECO.dg ora....up.type ONLINE ONLINE mynode1 &lt;br /&gt;ora.asm ora.asm.type ONLINE ONLINE mynode1 &lt;br /&gt;ora.eons ora.eons.type ONLINE ONLINE mynode1 &lt;br /&gt;ora....SM1.asm application ONLINE ONLINE mynode1 &lt;br /&gt;ora....A1.lsnr application ONLINE ONLINE mynode1 &lt;br /&gt;ora....ca1.gsd application OFFLINE OFFLINE &lt;br /&gt;ora....ca1.ons application ONLINE ONLINE mynode1 &lt;br /&gt;ora....ca1.vip ora....t1.type ONLINE ONLINE mynode1 &lt;br /&gt;ora....SM2.asm application ONLINE ONLINE mynode2 &lt;br /&gt;ora....A2.lsnr application ONLINE ONLINE mynode2 &lt;br /&gt;ora....ca2.gsd application OFFLINE OFFLINE &lt;br /&gt;ora....ca2.ons application ONLINE ONLINE mynode2 &lt;br /&gt;ora....ca2.vip ora....t1.type ONLINE ONLINE mynode2 &lt;br /&gt;ora.gsd ora.gsd.type OFFLINE OFFLINE &lt;br /&gt;ora....network ora....rk.type ONLINE ONLINE mynode1 &lt;br /&gt;ora.oc4j ora.oc4j.type OFFLINE OFFLINE &lt;br /&gt;ora.ons ora.ons.type ONLINE ONLINE mynode1 &lt;br /&gt;&lt;span style="color: red;"&gt;ora.mydb.db ora....se.type ONLINE ONLINE mynode1&lt;/span&gt; &lt;br /&gt;ora.scan1.vip ora....ip.type ONLINE ONLINE mynode2 &lt;br /&gt;ora.scan2.vip ora....ip.type ONLINE ONLINE mynode1 &lt;br /&gt;ora.scan3.vip ora....ip.type ONLINE ONLINE mynode1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$srvctl status database -d mydb&lt;br /&gt;Instance mydb1 is running on node mynode1&lt;br /&gt;Instance mydb2 is &lt;b&gt;&lt;span style="color: red;"&gt;not running&lt;/span&gt; &lt;/b&gt;on node mynode2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-1129525772847177291?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/1129525772847177291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=1129525772847177291' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1129525772847177291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1129525772847177291'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/07/oracle-11gr2-rac-and-crsstat.html' title='Oracle 11gR2 RAC and crs_stat'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-4478088166355061112</id><published>2010-04-29T01:53:00.000-07:00</published><updated>2010-04-29T01:57:14.139-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL/PLSQL'/><title type='text'>DUMP_CVS: Procedure to dump table data into csv</title><content type='html'>Here is a procedure which can be used to dump table data into csv format. &lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE PROCEDURE MYSCHEMA.dump_csv( p_query        in varchar2, p_separator in varchar2 default ',', p_dir in varchar2 , p_filename  in varchar2 )&lt;br /&gt;is&lt;br /&gt;l_output        utl_file.file_type;&lt;br /&gt;l_theCursor     integer default dbms_sql.open_cursor;&lt;br /&gt;l_columnValue   varchar2(2000);&lt;br /&gt;l_status        integer;&lt;br /&gt;l_colCnt        number default 0;&lt;br /&gt;l_separator     varchar2(10) default '';&lt;br /&gt;l_cnt           number default 0;&lt;br /&gt;begin&lt;br /&gt;l_output := utl_file.fopen( p_dir, p_filename, 'w' );&lt;br /&gt;&lt;br /&gt;dbms_sql.parse(  l_theCursor,  p_query,&lt;br /&gt;dbms_sql.native );&lt;br /&gt;&lt;br /&gt;for i in 1 .. 255 loop&lt;br /&gt;begin&lt;br /&gt;dbms_sql.define_column( l_theCursor, i,&lt;br /&gt;l_columnValue, 2000 );&lt;br /&gt;l_colCnt := i;&lt;br /&gt;exception&lt;br /&gt;when others then&lt;br /&gt;if ( sqlcode = -1007 ) then exit;&lt;br /&gt;else&lt;br /&gt;raise;&lt;br /&gt;end if;&lt;br /&gt;end;&lt;br /&gt;end loop;&lt;br /&gt;&lt;br /&gt;dbms_sql.define_column( l_theCursor, 1,&lt;br /&gt;l_columnValue, 2000 );&lt;br /&gt;&lt;br /&gt;l_status := dbms_sql.execute(l_theCursor);&lt;br /&gt;&lt;br /&gt;loop&lt;br /&gt;exit when ( dbms_sql.fetch_rows(l_theCursor) &lt;= 0 );&lt;br /&gt;l_separator := '';&lt;br /&gt;for i in 1 .. l_colCnt loop&lt;br /&gt;dbms_sql.column_value( l_theCursor, i,&lt;br /&gt;l_columnValue );&lt;br /&gt;utl_file.put( l_output,&lt;br /&gt;l_separator || l_columnValue );&lt;br /&gt;l_separator := p_separator;&lt;br /&gt;end loop;&lt;br /&gt;utl_file.new_line( l_output );&lt;br /&gt;l_cnt := l_cnt+1;&lt;br /&gt;end loop;&lt;br /&gt;dbms_sql.close_cursor(l_theCursor);&lt;br /&gt;&lt;br /&gt;utl_file.fclose( l_output );&lt;br /&gt;dbms_output.put_line( to_char(l_cnt) ||' rows exported into '||p_filename||' file...' );&lt;br /&gt;end dump_csv;&lt;br /&gt;/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-4478088166355061112?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/4478088166355061112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=4478088166355061112' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4478088166355061112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4478088166355061112'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/04/dumpcvs-procedure-to-dump-table-data.html' title='DUMP_CVS: Procedure to dump table data into csv'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-185159632573492650</id><published>2010-04-28T23:57:00.000-07:00</published><updated>2010-04-29T01:56:51.760-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshooting'/><title type='text'>ORA-39126 and ORA-01017 while executing dbms_datapump import over database link</title><content type='html'>I hit this problem when executing DBMS_DATAPUMP IMPORT operation over database link. Here is the full error message:&lt;br /&gt;&lt;br /&gt;Starting "SYS"."import_MYTASK":&lt;br /&gt;ORA-39126: Worker unexpected fatal error in KUPW$WORKER.POST_MT_INIT [SELECT SYS.KUPM$MCP.GET_ENDIANNESS@MYDBLINK FROM SYS.DUAL]&lt;br /&gt;ORA-04052: error occurred when looking up remote object SYS.KUPM$MCP@MYDBLINK&lt;br /&gt;ORA-00604: error occurred at recursive SQL level 3&lt;br /&gt;ORA-01017: invalid username/password; logon denied&lt;br /&gt;ORA-02063: preceding line from MYDBLINK&lt;br /&gt;ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95&lt;br /&gt;ORA-06512: at "SYS.KUPW$WORKER", line 8164&lt;br /&gt;----- PL/SQL Call Stack -----&lt;br /&gt;object      line  object&lt;br /&gt;handle    number  name&lt;br /&gt;70000058f38e5b8     19028  package body SYS.KUPW$WORKER&lt;br /&gt;70000058f38e5b8      8191  package body SYS.KUPW$WORKER&lt;br /&gt;70000058f38e5b8      2072  package body SYS.KUPW$WORKER&lt;br /&gt;70000058f38e5b8      1438  package body SYS.KUPW$WORKER&lt;br /&gt;70000058e31ea78         2  anonymous block&lt;br /&gt;Job "SYS"."import_MYTASK" stopped due to fatal error at 09:33:35&lt;br /&gt;&lt;br /&gt;Database link was working fine when i query manually. Restarting database solved the problem however i dont know what was the cause...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-185159632573492650?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/185159632573492650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=185159632573492650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/185159632573492650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/185159632573492650'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/04/ora-39126-and-ora-01017-while-executing.html' title='ORA-39126 and ORA-01017 while executing dbms_datapump import over database link'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-9191038062528914135</id><published>2010-04-24T11:02:00.000-07:00</published><updated>2010-04-29T01:56:31.771-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL/PLSQL'/><title type='text'>How to generate move/rebuild script to migrate partitioned tables from one tablespace to other</title><content type='html'>declare&lt;br /&gt;cflag number;&lt;br /&gt;oldDataTablespaceName varchar2(100);&lt;br /&gt;newDataTablespaceName varchar2(100);&lt;br /&gt;oldIndexTablespaceName varchar2(100);&lt;br /&gt;newIndexTablespaceName varchar2(100);&lt;br /&gt;parallel_level varchar2(2);&lt;br /&gt;begin&lt;br /&gt;DBMS_OUTPUT.ENABLE(1000000);&lt;br /&gt;-------------------- SET VARIABLES ----------------------------&lt;br /&gt;oldDataTablespaceName:=OLD_TABLESPACE';&lt;br /&gt;newDataTablespaceName:='NEW_TABLESPACE';&lt;br /&gt;newIndexTablespaceName:='NEW_INDEX_TABLESPACE';&lt;br /&gt;parallel_level:='8';&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;dbms_output.put_line('alter session enable parallel ddl;');&lt;br /&gt;for l in ( select table_owner, table_name, partition_name, partition_position from dba_tab_partitions where tablespace_name=oldDataTablespaceName order by table_owner, table_name, partition_position )&lt;br /&gt;loop&lt;br /&gt;cflag := 0;&lt;br /&gt;dbms_output.put_line('alter table '||l.table_owner||'.'||l.table_name||' move partition "'||l.partition_name||'" tablespace '||newDataTablespaceName||' parallel '||parallel_level||';');&lt;br /&gt;for k in (select dip.index_owner, dip.index_name, dip.partition_name from dba_ind_partitions dip, dba_indexes di where di.table_owner=l.table_owner and di.table_name=l.table_name and di.owner=dip.index_owner and di.index_name=dip.index_name and dip.partition_position=l.partition_position)&lt;br /&gt;loop&lt;br /&gt;dbms_output.put_line('alter index '||k.index_owner||'.'||k.index_name||' rebuild partition "'||k.partition_name||'" tablespace '||newIndexTablespaceName||' parallel '||parallel_level||';');&lt;br /&gt;end loop;&lt;br /&gt;end loop;&lt;br /&gt;END;&lt;br /&gt;/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-9191038062528914135?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/9191038062528914135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=9191038062528914135' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/9191038062528914135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/9191038062528914135'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/04/how-to-generate-moverebuild-script-to.html' title='How to generate move/rebuild script to migrate partitioned tables from one tablespace to other'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-6100484992859374817</id><published>2010-04-22T23:11:00.000-07:00</published><updated>2010-04-29T01:55:37.294-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshooting'/><title type='text'>Recover Database with allow corruption</title><content type='html'>Here is an example of block corruption faced during database recovery:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;recover database;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;RA-00600: internal error code, arguments: [3020], [48], [41103361], [41103361], [], [], [], [], [], [], [], []&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;ORA-10567: Redo is inconsistent with data block (file# 48, block# 41103361)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;ORA-10564: tablespace MYTS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;ORA-01110: data file 48: '+MYDISC/mydb/datafile/myts.14714.699899641'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;ORA-10561: block type 'TRANSACTION MANAGED DATA BLOCK', data object# 323837&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;Errors in file /mytracepath/mydb_pr06_4728.trc:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can skip recovery of this corrupted block by running following command:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;recover database datafile '+MYDISC/mydb/datafile/myts.14714.699899641' allow 1 corruption;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If there are more then 1 corruption, you may repeat this step or run command with allow many corruption. However, dont forget to note corrupted file and block numbers. After opening database, we will use following query to find out to which segment corrupted block belogns to:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;SELECT tablespace_name, segment_type, owner, segment_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;FROM dba_extents WHERE file_id = 48 and 41103361 between block_id AND block_id + blocks - 1;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-6100484992859374817?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/6100484992859374817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=6100484992859374817' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6100484992859374817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6100484992859374817'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2010/04/recover-database-with-allow-corruption.html' title='Recover Database with allow corruption'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-1683463434991031107</id><published>2009-10-07T23:22:00.001-07:00</published><updated>2009-10-08T00:01:51.483-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshooting'/><title type='text'>Log Miner</title><content type='html'>These are steps to use log miner:&lt;br /&gt;&lt;br /&gt;1-) Execute following PL/SQL block as sys user (note that first dbms_logmnr.add_logfile procedure is called with dbms_logmnr.new argument while others are called with dbms_logmnr.addfile argument):&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;begin&lt;br /&gt;sys.dbms_logmnr.add_logfile (logfilename =&gt; '{oracle log file name}',options=&gt;sys.dbms_logmnr.new);&lt;br /&gt;sys.dbms_logmnr.add_logfile (logfilename =&gt; '{oracle log file name}',options=&gt;sys.dbms_logmnr.addfile);&lt;br /&gt;...&lt;br /&gt;sys.DBMS_LOGMNR.START_LOGMNR(options =&gt; sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG);&lt;br /&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2-) You can select log content using following query:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;select * from V$LOGMNR_CONTENTS;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;3-) Because content is read from file sequencely, it is very slow. If you are planning to query it multiple times, i strongly suggest you to insert log miner data to a local table and create an index on timestamp column. Requested storage for local table and its index is usually at around 4*(log size)*(number of log files).&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;create table LOGMNR TABLESPACE TOOLS as select * from V$LOGMNR_CONTENTS;&lt;br /&gt;CREATE INDEX LOGMNR_IX1 ON LOGMNR ("TIMESTAMP") TABLESPACE TOOLS ;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4-) After you finish with log miner, execute following query:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;begin&lt;br /&gt;sys.dbms_logmnr.end_logmnr;&lt;br /&gt;end;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-1683463434991031107?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/1683463434991031107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=1683463434991031107' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1683463434991031107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1683463434991031107'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2009/10/log-miner.html' title='Log Miner'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-5515500423175664600</id><published>2009-10-01T01:23:00.000-07:00</published><updated>2009-10-01T01:59:06.668-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='Problems'/><title type='text'>How to find remote session executing over a database link</title><content type='html'>Follow this procedure to find remote session created by local session executing query over database link:&lt;br /&gt;&lt;br /&gt;1-) Find local session id from v$session&lt;br /&gt;&lt;br /&gt;2-) Execute following script on both local and remote databases:&lt;br /&gt;&lt;br /&gt;Select /*+ ORDERED */&lt;br /&gt;s.sid,substr(s.username,1,15),substr(s.ksusemnm,1,10)'-' substr(s.ksusepid,1,10) "ORIGIN",&lt;br /&gt;substr(g.K2GTITID_ORA,1,35) "GTXID",&lt;br /&gt;substr(s.indx,1,4)'.' substr(s.ksuseser,1,5) "LSESSION" ,&lt;br /&gt;substr(decode(bitand(ksuseidl,11),1,'ACTIVE',0,&lt;br /&gt;decode(bitand(ksuseflg,4096),0,'INACTIVE','CACHED'),&lt;br /&gt;2,'SNIPED',3,'SNIPED', 'KILLED'),1,1) "S",&lt;br /&gt;substr(w.event,1,10) "WAITING"&lt;br /&gt;from x$k2gte g, x$ktcxb t, x$ksuse s, v$session_wait w ,v$session s&lt;br /&gt;where g.K2GTDXCB =t.ktcxbxba&lt;br /&gt;and g.K2GTDSES=t.ktcxbses&lt;br /&gt;and s.addr=g.K2GTDSES&lt;br /&gt;and w.sid=s.indx&lt;br /&gt;and w.sid=s.sid&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;3-) From the script output on local database find GTXID value for local session&lt;br /&gt;4-) From the script output on remote database, search for a GTXID value matches the one we find on step 3. When you find it, sid column of the same row is the session we are looking for on remote database.&lt;br /&gt;&lt;br /&gt;Another method is using lsof (assuming it is a unix server)&lt;br /&gt;&lt;br /&gt;1-) Find process id of the local session&lt;br /&gt;&lt;br /&gt;select spid from v$session s ,v$process p  where s.paddr=p.addr and s.sid={local_sid}&lt;br /&gt;&lt;br /&gt;2-) On the server (running local database) find out TCP connections of the session&lt;br /&gt;&lt;br /&gt;lsof -p {process id}&lt;br /&gt;&lt;br /&gt;3-) Search for a line containing remote server name (or IP) in output of step 2. When you find it, take destination port number&lt;br /&gt;4-) On remote server run following command to find oracle process listening on this port&lt;br /&gt;&lt;br /&gt;lsof -i tcp:{port_number}&lt;br /&gt;&lt;br /&gt;5-) Now you can find remote session by running following script on remote database:&lt;br /&gt;&lt;br /&gt;select s.sid from v$session s ,v$process p  where s.paddr=p.addr and spid={oracle_process_id}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-5515500423175664600?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/5515500423175664600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=5515500423175664600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/5515500423175664600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/5515500423175664600'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2009/10/how-to-find-remote-session-executing.html' title='How to find remote session executing over a database link'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-4936796858776962510</id><published>2009-07-13T06:43:00.000-07:00</published><updated>2009-07-13T06:49:19.156-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><category scheme='http://www.blogger.com/atom/ns#' term='RAC'/><title type='text'>How to determine database segments which are participated in global cache wait events.</title><content type='html'>Here is a sql script to determine database segments which are participated in global cache wait events.&lt;br /&gt;&lt;br /&gt;select /*+ rule */&lt;br /&gt;  ash.sql_id, de.owner, de.segment_name, de.segment_type,&lt;br /&gt;  ash.event,&lt;br /&gt;  sum(ash.time_waited) total_time,&lt;br /&gt;  count(*) count,&lt;br /&gt;  trunc(sum(ash.time_waited)/count(*)) Avg_wait&lt;br /&gt;from&lt;br /&gt;  gV$ACTIVE_SESSION_HISTORY ash,&lt;br /&gt;  dba_extents de&lt;br /&gt;where&lt;br /&gt;  ash.event like 'gc%' and&lt;br /&gt;  ash.P1TEXT='file#' and&lt;br /&gt;  ash.P2TEXT='block#' and&lt;br /&gt;  ash.p1=de.file_id and&lt;br /&gt;  ash.time_waited &gt; 0 and&lt;br /&gt;  ash.p2 between de.block_id AND (de.block_id+de.blocks-1)&lt;br /&gt;group by ash.sql_id,de.owner, de.segment_name, de.segment_type, ash.event&lt;br /&gt;order by 6 desc;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-4936796858776962510?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/4936796858776962510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=4936796858776962510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4936796858776962510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4936796858776962510'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2009/07/how-to-determine-database-segments.html' title='How to determine database segments which are participated in global cache wait events.'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-6389101191773708297</id><published>2009-04-09T01:41:00.000-07:00</published><updated>2009-04-09T01:50:20.658-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><title type='text'>How to move/rename a datafile while database is online but tablespace is required to be taken offline</title><content type='html'>1-) First take tablespace offline to which datafile belongs:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;ALTER TABLESPACE MYTABLESPACE OFFLINE NORMAL;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2-) Move datafile to new location&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;mv /datadir/datafile.dbf /newdatadir/datafile.dbf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3-) Rename datafile name in database&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;ALTER TABLESPACE MYTABLESPACE RENAME DATAFILE '/datadir/datafile.dbf' TO '/newdatadir/datafile.dbf';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4-) Bring tablespace online:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;ALTER TABLESPACE MYTABLESPACE ONLINE;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-6389101191773708297?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/6389101191773708297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=6389101191773708297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6389101191773708297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6389101191773708297'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2009/04/how-to-moverename-datafile-while.html' title='How to move/rename a datafile while database is online but tablespace is required to be taken offline'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-5113318192986934287</id><published>2009-04-01T05:52:00.001-07:00</published><updated>2009-11-19T23:52:42.439-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL/PLSQL'/><title type='text'>Searching dba_views giving text condition</title><content type='html'>If you try to run a query like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;SQL&amp;gt;select * from dba_views where text like '%some text here%';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;following error occurs:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;select * from dba_views where text like '%&lt;/span&gt;&lt;span style="color: #000099;"&gt;some text here&lt;/span&gt;&lt;span style="color: #000099;"&gt;%'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;*&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;ERROR at line 1:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;ORA-00932: inconsistent datatypes: expected NUMBER got LONG&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can use following function to search dba_views giving text condition:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;create or replace&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;FUNCTION SEARCH_VIEW_TEXT( in_owner varchar,in_view_name varchar, in_search_str &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;varchar)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;RETURN INTEGER IS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;w_crs integer;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;r_val integer;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;num_bytes INTEGER := 32000;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;offset INTEGER := 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;out_val VARCHAR2(32000);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;out_length INTEGER;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;w_crs := DBMS_SQL.OPEN_CURSOR;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;DBMS_SQL.PARSE(w_crs, 'select text from dba_views where owner=:OWNR and view_name=:VNAME ',dbms_sql.native);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;DBMS_SQL.BIND_VARIABLE(w_crs, ':OWNR', in_owner);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;DBMS_SQL.BIND_VARIABLE(w_crs, ':VNAME', in_view_name);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;DBMS_SQL.DEFINE_COLUMN_LONG(w_crs,1);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;r_val := DBMS_SQL.EXECUTE(w_crs);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;r_val := DBMS_SQL.FETCH_ROWS(w_crs);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;LOOP&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;DBMS_SQL.COLUMN_VALUE_LONG(w_crs, 1, num_bytes, offset, out_val, out_length);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;IF (INSTR(UPPER(out_val),upper(in_search_str))&amp;gt;0) THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;DBMS_SQL.CLOSE_CURSOR(w_crs);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;RETURN 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;offset := offset+num_bytes;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #003300;"&gt;&lt;span style="color: #cc6600;"&gt;IF out_length &amp;lt; num_bytes THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;EXIT;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;END LOOP;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;DBMS_SQL.CLOSE_CURSOR(w_crs); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;RETURN 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;EXCEPTION&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;WHEN OTHERS THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;IF DBMS_SQL.IS_OPEN(w_crs) then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;DBMS_SQL.CLOSE_CURSOR(w_crs);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;RAISE;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #cc6600;"&gt;END;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;SQL&amp;gt; select * from dba_views where owner not in ('SYS','SYSTEM') and SEARCH_VIEW_TEXT(owner, view_name, 'some text here') = 1 &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-5113318192986934287?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/5113318192986934287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=5113318192986934287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/5113318192986934287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/5113318192986934287'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2009/04/searching-dbaviews-giving-text.html' title='Searching dba_views giving text condition'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-5598080076951918349</id><published>2009-03-31T01:03:00.000-07:00</published><updated>2009-03-31T01:31:18.791-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Problems'/><title type='text'>ORA-02449: unique/primary keys in table referenced by foreign keys</title><content type='html'>When you hit this error, it means that you can not drop(modify) current table (or index) because there are some foreign keys defined on some other tables referencing unique/primary keys of the current table. You should drop these foreign keys in order to drop/modify current table/index.&lt;br /&gt;&lt;br /&gt;SQL script to find out these foreign keys:&lt;br /&gt;&lt;br /&gt;select * from dba_constraints where R_CONSTRAINT_NAME in (select CONSTRAINT_NAME from dba_constraints where owner='MYOWNER' and table_name='MYTABLE') and CONSTRAINT_TYPE='R';&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-5598080076951918349?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/5598080076951918349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=5598080076951918349' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/5598080076951918349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/5598080076951918349'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2009/03/ora-02449-uniqueprimary-keys-in-table.html' title='ORA-02449: unique/primary keys in table referenced by foreign keys'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-5757485685831989366</id><published>2009-03-11T01:37:00.000-07:00</published><updated>2009-03-11T01:40:46.976-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL/PLSQL'/><title type='text'>How to Create Function Based Index</title><content type='html'>Here is an example of creating function based index setting null values to default values:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;CREATE INDEX ERKAN.MYTABLE_FUNC_IX on ERKAN.MYTABLE&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  (COL1, COL2,nvl(COL3,COL1),  nvl(COL4,to_date('01/01/2009 00:00:00','DD/MM/YYYY hh24:mi:ss')), nvl(COL5,0))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  tablespace MYTABLESPACE; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-5757485685831989366?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/5757485685831989366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=5757485685831989366' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/5757485685831989366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/5757485685831989366'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2009/03/how-to-create-function-based-index.html' title='How to Create Function Based Index'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-5989263915939250081</id><published>2009-03-05T23:59:00.000-08:00</published><updated>2009-03-06T03:53:08.819-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><title type='text'>How to trace session(s)</title><content type='html'>&lt;span style="color: rgb(255, 102, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;Using DBMS_SUPPORT package&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Starting Trace:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Alter system set max_dump_file_size=unlimited;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;exec sys.dbms_support.START_TRACE_IN_SESSION(sid,serial#,waits=&gt;&lt;/span&gt;&lt;st1:stockticker style="color: rgb(0, 0, 153);"&gt;TRUE&lt;/st1:stockticker&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;, binds=&gt;&lt;/span&gt;&lt;st1:stockticker style="color: rgb(0, 0, 153);"&gt;TRUE&lt;/st1:stockticker&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; ) ;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stopping Trace:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Exec sys.DBMS_SUPPORT.STOP_TRACE_IN_SESSION( sid , null )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Alter system set max_dump_file_size=102400;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Generating Start-Stop Trace script for sessions (trace.sql):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;ACCEPT USERNAME char prompt 'Enter the User Name &gt; '&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;variable b0 varchar2(50)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;exec :b0 := upper('&amp;amp;USERNAME');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;select '------------ START TRACE ------------' TRACE_SCRIPT from dual&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;union all&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;select 'Alter system set max_dump_file_size=unlimited;' TRACE_SCRIPT from dual&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;union all&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;select 'exec sys.dbms_support.START_TRACE_IN_SESSION('||sid||','||serial#||',waits=&gt;TRUE,binds=&gt;TRUE ) ;' TRACE_SCRIPT from v$session where username=:b0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;union all&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;select '------------ STOP TRACE ------------' TRACE_SCRIPT from dual&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;union all&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;select 'Exec sys.DBMS_SUPPORT.STOP_TRACE_IN_SESSION('||sid||',null);' TRACE_SCRIPT from v$session where username=:b0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;union all&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;select 'Alter system set max_dump_file_size=102400;' TRACE_SCRIPT from dual&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;/&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;Using Oradebug&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Find server process id of the session:&lt;br /&gt;&lt;br /&gt;select spid from v$session s ,v$process p where s.paddr=p.addr  and s.sid=&amp;amp;sid&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Starting Trace:&lt;/span&gt;&lt;br /&gt;sqlplus '/ AS SYSDBA'&lt;br /&gt;SQL&gt; oradebug setospid {spid}&lt;br /&gt;Oracle pid: {pid}, Unix process pid: {spid}, image: oracle@... (TNS V1-V3)&lt;br /&gt;SQL&gt; oradebug event 10046 trace name context forever, level 12&lt;br /&gt;Statement processed.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;Stopping Trace:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SQL&gt; oradebug event 10046 trace name context off&lt;br /&gt;Statement processed.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-5989263915939250081?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/5989263915939250081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=5989263915939250081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/5989263915939250081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/5989263915939250081'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2009/03/how-to-trace-sessions.html' title='How to trace session(s)'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-1567135747026281713</id><published>2009-03-05T22:56:00.000-08:00</published><updated>2009-03-05T23:17:38.501-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><title type='text'>How to create new service name</title><content type='html'>In order to define a new service name:&lt;br /&gt;&lt;br /&gt;1-) Modify service_names parameter and add new service name:&lt;br /&gt;if spfile is used then&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;alter system set service_names='..., &lt;span style="color: rgb(255, 0, 0);"&gt;{new_service_name}&lt;/span&gt;' scope=both;&lt;/span&gt;&lt;br /&gt;if init ora file is used then&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;alter system set service_names='..., &lt;span style="color: rgb(255, 0, 0);"&gt;{new_service_name}&lt;/span&gt;';&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;modify init ora file and add {new_service_name} to &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;service_names parameter&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;2-) Add following SID description to listener configuration (listener.ora)&lt;br /&gt;SID_LIST_... =&lt;br /&gt;( SID_LIST=&lt;br /&gt;   (SID_DESC =&lt;br /&gt;      (ORACLE_HOME =...)&lt;br /&gt;      (SID_NAME = ...))&lt;br /&gt;  ....&lt;br /&gt;  &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;(SID_DESC =&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;      (GLOBAL_DBNAME=&lt;span style="color: rgb(255, 0, 0);"&gt;{new_service_name}&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;      (SID_NAME = &lt;span style="color: rgb(255, 0, 0);"&gt;{oracle_sid}&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;      (ORACLE_HOME =&lt;span style="color: rgb(255, 0, 0);"&gt;{oracle_home}&lt;/span&gt;))&lt;/span&gt;&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;3-) Restart listener.&lt;br /&gt;&lt;br /&gt;Now you may connect to database using following tnsnames.ora configuration:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{tnsname}&lt;/span&gt;.WORLD = (DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(Host = &lt;span style="color: rgb(255, 0, 0);"&gt;{host_name}&lt;/span&gt;)(Port = &lt;span style="color: rgb(255, 0, 0);"&gt;{port}&lt;/span&gt;))(CONNECT_DATA =(SERVICE_NAME =&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{new_service_name}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;)))&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After login if you query v$session system view, you will see new service name in SERVICE_NAME column for your session.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-1567135747026281713?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/1567135747026281713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=1567135747026281713' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1567135747026281713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1567135747026281713'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2009/03/how-to-create-new-service-name.html' title='How to create new service name'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-7641728360275551865</id><published>2008-10-30T03:04:00.000-07:00</published><updated>2008-10-30T03:21:25.695-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Problems'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL/PLSQL'/><title type='text'>Commit from a Procedure/Function Executed Through a Database Link, ORA-02064: distributed operation not supported</title><content type='html'>&lt;div&gt;It is not supported to issue a commit from a procedure with OUT parameters or a function with return value, when the procedure/function is executed through a database link.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Here is a test case, working fine:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;1-) At remote database create following procedure:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;create or replace procedure erkan_trunc&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;is&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;insert into XXX values(1,1,'erkan saka');&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt;-- Create a transaction at remote db&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;EXECUTE IMMEDIATE 'TRUNCATE TABLE ERKAN.XXX';&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt;-- This is a DDL! which also autocommits&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;/&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2-) At source database create following procedure&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;create or replace procedure erkan_dene&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;is&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;insert into erkan.A values(1);&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt;-- Create a transaction at local (source) db&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;erkan_trunc@{db_link};&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt;-- remote procedure call&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;rollback;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt;-- End local transaction&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;/&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3-) Working fine:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;SQL&gt;exec erkan_dene&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;Elapsed: 00:00:00.03&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 0, 0);"&gt;Here is an other test case with &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; white-space: pre; "&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(204, 0, 0);"&gt;ORA-02064: distributed operation not supported:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; white-space: pre; "&gt;1-) &lt;span class="Apple-style-span" style="font-family: Georgia; font-size: 16px; white-space: normal; "&gt;At remote database create following procedure:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;create or replace function erkan_trunc2&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;RETURN NUMBER &lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt; -- This is the reason causing ORA-02064&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;is&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;insert into XXX values(1,1,'erkan saka');&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;EXECUTE IMMEDIATE 'TRUNCATE TABLE ERKAN.XXX';&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;RETURN (0);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;/&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2-) At source run following PL/SQL&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;SQL&gt;declare&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;  2     de_return number;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;  3  begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;  4     de_return := erkan_trunc2@{db_link};&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;  5             dbms_output.put_line('de_return='||de_return);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;  6  end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;  7  /&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;declare&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;*&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;ERROR at line 1:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;ORA-02064: distributed operation not supported&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;ORA-06512: at "ERKAN.ERKAN_TRUNC2", line 6&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;ORA-06512: at line 4&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;Elapsed: 00:00:00.01&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-7641728360275551865?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/7641728360275551865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=7641728360275551865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/7641728360275551865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/7641728360275551865'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/10/commit-from-procedurefunction-executed.html' title='Commit from a Procedure/Function Executed Through a Database Link, ORA-02064: distributed operation not supported'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-6155582593681485909</id><published>2008-10-07T07:09:00.000-07:00</published><updated>2008-10-07T07:31:07.635-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Problems'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL/PLSQL'/><title type='text'>ORA-02064: distributed operation not supported</title><content type='html'>If a commit/rollback or autocommit(DDL) operation is executed within a procedure or function which is called remotely via database link then ORA-02064 may occur. Exact explanation is:&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;It is not supported to issue a commit from a procedure with OUT parameters or a function with return value, when the procedure/function is executed through a database link.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;I tested following two senarios. First works fine while second fails with ORA-02064:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Senario 1-)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0); font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;* Create following procedure at remote database:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;create or replace procedure erkan_trunc&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;is&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;insert into XXX values(1,1,'erkan');&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt; -- in order to create a local transaction at remote database  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;EXECUTE IMMEDIATE 'TRUNCATE TABLE ERKAN.XXX';&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt; -- autocommits &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;/&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Create following procedure at source database:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;create or replace procedure erkan_dene&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;is&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;insert into erkan.A values(1); --in order to create a local transaction in source database&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;BEGIN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;erkan_trunc@remote_tns;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;EXCEPTION&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;      &lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;WHEN OTHERS&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;      &lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;THEN&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;dbms_output.put_line('Error while truncate: ' || SUBSTR (SQLERRM, 1, 100););&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;END;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;rollback;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;/&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Works fine:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;SQL&gt;exec erkan_dene&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;PL/SQL procedure successfully completed.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;Elapsed: 00:00:00.03&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;if i hold lock on table XXX at remote database...&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;SQL&gt;exec erkan_dene&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;Error while truncate: ORA-00054: resource busy and acquire with NOWAIT specified&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;ORA-06512: at "ERKAN.ERKAN_TRUNC", line 5&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;PL/SQL procedure successfully completed.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;Elapsed: 00:00:00.03&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Senario 2-)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0); font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;* Create following function at remote database:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153); "&gt;create or replace function erkan_trunc2&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;RETURN NUMBER&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;is&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;insert into XXX values(1,1,'erkan');&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;EXECUTE IMMEDIATE 'TRUNCATE TABLE ERKAN.XXX';&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;RETURN (0);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;/&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Run following pl/sql script at source database:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;SQL&gt;declare&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;  2     de_return number;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;  3  begin&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;  4     de_return := erkan_trunc2@remote_tns;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;  5             dbms_output.put_line('de_return='||de_return);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;  6  end;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;  7  /&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;declare&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;*&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;ERROR at line 1:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;ORA-02064: distributed operation not supported&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;ORA-06512: at "ERKAN.ERKAN_TRUNC2", line 6&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;ORA-06512: at line 4&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 153); "&gt;Elapsed: 00:00:00.01&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-6155582593681485909?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/6155582593681485909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=6155582593681485909' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6155582593681485909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6155582593681485909'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/10/ora-02064-distributed-operation-not.html' title='ORA-02064: distributed operation not supported'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-4119714469506405092</id><published>2008-09-16T23:52:00.000-07:00</published><updated>2009-07-08T05:25:24.180-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Problems'/><title type='text'>ORA-38029: object statistics are locked</title><content type='html'>If this error occurs while trying to analyze a table then run following to unlock the statistics:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;exec DBMS_STATS.UNLOCK_TABLE_STATS('{owner}','{table name}');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can see list of all locked tables by running following query:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;select owner, table_name, stattype_locked from dba_tab_statistics where stattype_locked is not null and owner not in ('SYS','SYSTEM');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;select 'exec DBMS_STATS.UNLOCK_TABLE_STATS('''||owner||''','''||table_name||''');' from dba_tab_statistics where stattype_locked is not null and owner not in ('SYS','SYSTEM')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For further detail, refer to metalink doc id &lt;span style="font-family:helvetica;"&gt;&lt;strong&gt;433240.1&lt;/strong&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-4119714469506405092?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/4119714469506405092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=4119714469506405092' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4119714469506405092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4119714469506405092'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/09/ora-38029-object-statistics-are-locked.html' title='ORA-38029: object statistics are locked'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-4587139678424685531</id><published>2008-09-10T04:44:00.000-07:00</published><updated>2010-04-01T00:08:25.085-07:00</updated><title type='text'>LOCALLY MANAGED TABLESPACE with SPACE MANAGEMENT AUTO</title><content type='html'>CREATE TABLESPACE DATA_1M DATAFILE &lt;br /&gt;'/data01/dbfs/data_1m01.dbf' SIZE 2048M AUTOEXTEND OFF&lt;br /&gt;LOGGING&lt;br /&gt;ONLINE&lt;br /&gt;PERMANENT&lt;br /&gt;EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M&lt;br /&gt;SEGMENT SPACE MANAGEMENT AUTO;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;alter tablespace DATA_1M add datafile '/data01/dbfs/data_1m02.dbf' SIZE 1024M AUTOEXTEND ON NEXT 512M MAXSIZE 2048M;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;alter database datafile '/data01/dbfs/data_1m02.dbf' AUTOEXTEND ON NEXT 1024M MAXSIZE 3072M;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-4587139678424685531?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/4587139678424685531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=4587139678424685531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4587139678424685531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4587139678424685531'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/09/locally-managed-tablespace-with-space.html' title='LOCALLY MANAGED TABLESPACE with SPACE MANAGEMENT AUTO'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-3935212961561728276</id><published>2008-08-29T03:54:00.000-07:00</published><updated>2008-08-29T04:06:49.417-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dataguard'/><category scheme='http://www.blogger.com/atom/ns#' term='Problems'/><title type='text'>ARCHIVED_SEQ# column of v$ARCHIVE_DEST_STATUS is not being updated</title><content type='html'>Check and correct fal_client and fal_server system parameters at standby database:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;alter system set fal_client=&lt;standby&gt; scope=both;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;alter system set fal_server=&lt;prod&gt; scope=both;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-3935212961561728276?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/3935212961561728276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=3935212961561728276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/3935212961561728276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/3935212961561728276'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/08/archivedseq-column-of.html' title='ARCHIVED_SEQ# column of v$ARCHIVE_DEST_STATUS is not being updated'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-2759292797624223462</id><published>2008-08-28T23:55:00.000-07:00</published><updated>2008-08-29T03:50:38.951-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dataguard'/><title type='text'>Dataguard Swithover</title><content type='html'>switchover commands:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#cc0000;"&gt;Prod Site:&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY WITH SESSION SHUTDOWN; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#cc0000;"&gt;Standby Site:&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;alter database commit to switchover to primary;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;alter database open ;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#cc0000;"&gt;Old Prod Site:&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;SHUTDOWN;&lt;br /&gt;STARUP MOUNT;&lt;br /&gt;alter database recover managed standby database using current logfile disconnect from session;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-2759292797624223462?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/2759292797624223462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=2759292797624223462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/2759292797624223462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/2759292797624223462'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/08/dataguard-swithover.html' title='Dataguard Swithover'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-6693286262779228965</id><published>2008-08-18T06:51:00.000-07:00</published><updated>2008-08-18T07:07:04.595-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL/PLSQL'/><title type='text'>Identity (Autoincrement) Column on Oracle</title><content type='html'>You can do this by using a sequence and before insert trigger on oracle:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;create table ABC (id int, data varchar2(200));&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;create sequence INCABC&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;start with 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;increment by 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;maxvalue 999999999999&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;minvalue 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;nocyclecache 10&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;order;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;create or replace trigger ABC_IDENTITY&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;before insert on ABC&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;FOR EACH ROW&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;select INCABC.nextval into :new.id from dual;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;However in order to insert table, all column names except "id" should be provided in insert statement like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;insert into ABC (data) values ('abc');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;or a dummy value should be provided for "id" column:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;insert into abc values('abc',5);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;other case following error occurs:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;SQL&gt; insert into abc values('abc');&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;insert into abc values('abc')            &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;ERROR at line 1:&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;ORA-00947: not enough values&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-6693286262779228965?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/6693286262779228965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=6693286262779228965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6693286262779228965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6693286262779228965'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/08/identity-autoincrement-column-on-oracle.html' title='Identity (Autoincrement) Column on Oracle'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-2144683654419188043</id><published>2008-08-14T05:09:00.000-07:00</published><updated>2008-08-29T03:44:41.225-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Problems'/><title type='text'>sqlplus / as sysdba, ORA-01031: insufficient privileges</title><content type='html'>Follow following steps to correct problem:&lt;br /&gt;1-) go to $ORACLE_HOME/rdbms/lib&lt;br /&gt;2-) correct dba OS user group name in config.s file:&lt;br /&gt;a) type "id" command in shell in order to get group name of your OS user&lt;br /&gt;b)correct group name in config.s file. It is written just after the ".string"&lt;br /&gt;.csect H.12.NO_SYMBOL{RO}, 3&lt;br /&gt;.string "&lt;span style="color:#990000;"&gt;dbat&lt;/span&gt;"&lt;br /&gt;# End csect H.12.NO_SYMBOL{RO}&lt;br /&gt;.csect H.14.NO_SYMBOL{RO}, 3&lt;br /&gt;.string "&lt;span style="color:#990000;"&gt;dbat&lt;/span&gt;"&lt;br /&gt;# End csect H.14.NO_SYMBOL{RO}&lt;br /&gt;c) run following commands to backup &amp;amp; compile:&lt;br /&gt;mv config.o config.o.org&lt;br /&gt;make -f ins_rdbms.mk ioracle&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;Note:&lt;/span&gt; sometimes dba OS dba group is correct in config.s file so you dont need to change anything and compile (next step) solves the problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-2144683654419188043?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/2144683654419188043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=2144683654419188043' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/2144683654419188043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/2144683654419188043'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/08/sqlplus-as-sysdba-ora-01031.html' title='sqlplus / as sysdba, ORA-01031: insufficient privileges'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-8382079599422366919</id><published>2008-08-14T01:51:00.000-07:00</published><updated>2008-08-14T01:57:13.318-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><title type='text'>Error: OiifbStackLayout: can't understand "FİLL LEFT TOP"</title><content type='html'>This error may occur while running oracle installer if LANG environment variable is set to tr_TR. When this problem occurs, you see curruptions on GUI screen. Running following command before running installer corrects the problem:&lt;br /&gt;&lt;br /&gt;export LANG=en_EN&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-8382079599422366919?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/8382079599422366919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=8382079599422366919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/8382079599422366919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/8382079599422366919'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/08/error-oiifbstacklayout-cant-understand.html' title='Error: OiifbStackLayout: can&apos;t understand &quot;FİLL LEFT TOP&quot;'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-3019551958280340643</id><published>2008-04-28T23:02:00.000-07:00</published><updated>2008-04-28T23:12:20.869-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dataguard'/><title type='text'>How to correct UNNAMED{nnnnn} datafile problem</title><content type='html'>&lt;span style="font-size:85%;"&gt;When standby_file_management is auto and file path which is added to the primary database does not exist on standby site, then standby database creates a dummy datafile such as&lt;br /&gt;&lt;br /&gt;{path}/UNNAMED&lt;span style="font-style: italic;"&gt;nnnnn&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To correct this problem, you should set standby_file_management to manual and &lt;/span&gt;&lt;span style="font-size:85%;"&gt;create standby datafile :&lt;br /&gt;&lt;br /&gt;alter system set standby_file_management=manual;&lt;br /&gt;alter database create datafile '{path}/UNNAMED&lt;span style="font-style: italic;"&gt;nnnnn&lt;/span&gt;' as '{standby file path}/{data file name}.dbf' size xxxM;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-3019551958280340643?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/3019551958280340643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=3019551958280340643' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/3019551958280340643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/3019551958280340643'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/04/how-to-correct-unnamednnnnn-datafile.html' title='How to correct UNNAMED{nnnnn} datafile problem'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-2803159624383292080</id><published>2008-04-17T05:08:00.000-07:00</published><updated>2008-04-17T05:10:33.846-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><title type='text'>How to change oracle dba group in unix</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;cd $ORACLE_HOME/rdbms/lib&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;cat config.[cs] &lt;/span&gt;&lt;br /&gt;The line '#define SS_DBA_GRP "group"' should name the chosen DBA group. If you wish to change the DBA group change the group name shown in this file. Eg: Change:&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;#define SS_DBA_GRP "dba" to: &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt;#define SS_DBA_GRP "mygroup" &lt;/span&gt;&lt;br /&gt;To effect any changes to the DBA group and to be sure you are using the group defined in this file relink the Oracle executable as below. Be sure to shutdown all databases before relinking:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;rm config.o  &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;make -f ins_rdbms.mk config.o ioracle &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-2803159624383292080?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/2803159624383292080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=2803159624383292080' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/2803159624383292080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/2803159624383292080'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/04/how-to-change-oracle-dba-group-in-unix.html' title='How to change oracle dba group in unix'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-6084592035892813237</id><published>2008-04-16T04:16:00.000-07:00</published><updated>2008-04-16T05:16:23.562-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><title type='text'>Getting sql text from hash value</title><content type='html'>&lt;span style="font-size:85%;"&gt;Here is a function and sql script which uses this function to display sql text from its hash value:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;create or replace function user.hashsql(hnum number) return user.sqltable PIPELINED is&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   sqlline varchar2(64);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   sqlt user.sqlline:=user.sqlline('');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   tmptxt varchar(2000);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   ln int;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   ind int;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   cursor cor_sql is&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       select SQL_TEXT from v$sqltext_with_newlines where HASH_VALUE=hnum order by PIECE;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  open cor_sql;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  fetch  cor_sql into sqlline;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;           while cor_sql%FOUND loop&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;--               SELECT REPLACE(sqlline,chr(32),'') into sqlline from dual;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;               ln := length(sqlline);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;               ind:=1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                while (ind &lt;&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                             if substr(sqlline,ind,1) not in (chr(10),chr(13)) then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                           ind := ind+1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                        else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                           tmptxt := tmptxt||substr(sqlline,1,ind);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                           sqlt.line:=(tmptxt);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                           PIPE ROW(sqlt);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                           sqlline:=substr(sqlline,1,ind+1);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                           tmptxt:='';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                           ln := length(sqlline);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                           ind := 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                        end if;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                end loop;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;               tmptxt:=tmptxt||sqlline;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;               if length(tmptxt) &gt; 100 then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                     sqlt.line:=(substr(tmptxt,1,100));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                  PIPE ROW(sqlt);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                  tmptxt:=substr(tmptxt,101,length(tmptxt)+1);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;               end if;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                 fetch cor_sql into sqlline;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;           end loop;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  close cor_sql;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  sqlt.line:=tmptxt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  PIPE ROW(sqlt);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  RETURN;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; set linesize 2000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 0, 0);"&gt; select * from table(user.hashsql(&amp;amp;hash_value))&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-6084592035892813237?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/6084592035892813237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=6084592035892813237' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6084592035892813237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6084592035892813237'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/04/getting-sql-text-from-hash-value.html' title='Getting sql text from hash value'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-4484682549347893363</id><published>2008-04-16T04:01:00.000-07:00</published><updated>2008-04-16T04:14:27.077-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dataguard'/><title type='text'>PL/SQL script to generate rcp and rename datafile commands for physical standby</title><content type='html'>&lt;span style="font-size:85%;"&gt;This is a PL/SQL script used to generate rcp and rename datafile commands in order to create standby database. If&lt;br /&gt;* there are more then 1k datafiles&lt;br /&gt;* source and  destination paths are different&lt;br /&gt;* &lt;/span&gt;&lt;span style="font-size:85%;"&gt;source and  destination disk sizes are different&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;(as in my case) it might be useful.  However you should modify code to make it suitable for your case:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;create table user.cmds (RCP varchar2(1000), MV &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;varchar2(1000));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;&lt;br /&gt;declare&lt;br /&gt;    cursor c_sql is&lt;br /&gt;    select name, bytes/(1024*1024) bsize from v$datafile order by name;&lt;br /&gt;    sqlline c_sql%ROWTYPE;&lt;br /&gt;    tsize number;&lt;br /&gt;    cnt int;&lt;br /&gt;begin&lt;br /&gt;    open c_sql;&lt;br /&gt;    fetch  c_sql into sqlline;&lt;br /&gt;    tsize:=0;&lt;br /&gt;    cnt:=1;&lt;br /&gt;    execute immediate 'truncate table &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;user.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;cmds';&lt;br /&gt;     while c_sql%FOUND loop&lt;br /&gt;        tsize:=tsize+sqlline.bsize;&lt;br /&gt;        if cnt &lt; 10 then&lt;br /&gt;          insert into &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;user.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;cmds values('rcp '||sqlline.name||' userp@server:/userdata0'||cnt||'/userp/','alter database rename file '''||sqlline.name||''' to ''/userdata0'||cnt||'/userp/'||substr(sqlline.name,19,255)||''';');&lt;br /&gt;          --dbms_output.put_line('alter database rename file '''||sqlline.name||''' to ''/userdata0'||cnt||'/userp/'||substr(sqlline.name,19,255)||''';');&lt;br /&gt;        else&lt;br /&gt;          insert into &lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;user.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;cmds values('rcp '||sqlline.name||' userp@server:/userdata'||cnt||'/userp/','alter database rename file '''||sqlline.name||''' to ''/userdata'||cnt||'/userp/'||substr(sqlline.name,19,255)||''';');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        end if;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        if tsize &gt; 95000 then &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;          tsize:=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;          cnt:=cnt+1;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        end if;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        fetch  c_sql into sqlline;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     end loop;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     commit;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     close c_sql;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-4484682549347893363?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/4484682549347893363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=4484682549347893363' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4484682549347893363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4484682549347893363'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/04/plsql-script-to-generate-rcp-and-rename.html' title='PL/SQL script to generate rcp and rename datafile commands for physical standby'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-4864963692795683244</id><published>2008-04-15T04:12:00.000-07:00</published><updated>2008-04-15T05:21:08.747-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dataguard'/><title type='text'>Windows (VBS) and UNIX (Shell) scripts to delete applied archive logs</title><content type='html'>&lt;span style="font-size:85%;"&gt;In a dataguard configuration, archive logs should stay on production archive log directory until they are copied and applied to the standby database. Then they should be backed up and removed in order to prevent archive log directories from getting full.  Following scripts are written by me to automate this procedure:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; color: rgb(153, 0, 0);"&gt;Unix:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;There should be a file "&lt;/span&gt;&lt;span style="font-size:85%;"&gt;$HOME/stby/archive_last_deleted " which is used to keep sequence number of the last deleted archive log file. At first you can create it with vi and write 1 in it.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Following scheduled script "$HOME/stby/archclean.sh" runs on standby site to delete applied archived logs:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#/bin/ksh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;if  [ "$hosttype" ==  "SunOS" ]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; userid=`/usr/xpg4/bin/id -u -n`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; userid=`/usr/bin/id  -u -n`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;fi&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;. ~$userid/.profile&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;sqlplus '/ AS SYSDBA' &gt; $HOME/stby/out/archclean.out1 &lt;&lt;eof&gt;&lt;/eof&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;set lines 2000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;select 'MAKEGREP' GREP,count(1) from V\$MANAGED_STANDBY where PROCESS='MRP0' and SEQUENCE# &lt;&gt; 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;exit;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;EOF&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;IS_APPLY_RUNNING=`cat $HOME/stby/out/archclean.out1|grep MAKEGREP|awk '{print $2}'`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;date &gt;&gt; $HOME/stby/out/archclean.log&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;if [[ $IS_APPLY_RUNNING -eq 1 ]];then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  echo "Apply process (MRP0) is running..." &gt;&gt; $HOME/stby/out/archclean.log&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  sqlplus '/ AS SYSDBA' &gt; $HOME/stby/out/archclean.out1 &lt;&lt;eof&gt;&lt;/eof&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;set lines 2000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;SELECT 'MAKEGREP' GREP,SEQUENCE#-1 FROM V\$MANAGED_STANDBY where PROCESS in ('MRP0') and SEQUENCE# &lt;&gt; 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;EOF&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  MAX_SEC_TO_DELETE=`cat $HOME/stby/out/archclean.out1|grep MAKEGREP|awk '{print $2}'`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  LAST_DELETED=`cat $HOME/stby/archive_last_deleted`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  NEXTTODELETE=$((LAST_DELETED+1))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  echo "Archive Sequence Range to Clean: $NEXTTODELETE - $MAX_SEC_TO_DELETE" &gt;&gt; $HOME/stby/out/archclean.log&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  ARCHIVE_FORMAT=`cat  $HOME/mntdir/config/dba.ini|grep  -v "##"|grep  ARCHIVE_FORMAT|cut -d= -f2`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  ARCHIVE_DIR=`cat  $HOME/mntdir/config/dba.ini|grep  -v "##"|grep  ARCHIVE_DIR|cut -d= -f2`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  while [[ $MAX_SEC_TO_DELETE -gt $NEXTTODELETE ]];do&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    NEXTARCHIVE=`awk 'BEGIN {str="'$ARCHIVE_FORMAT'" ; sub("SEQUENCE","'$NEXTTODELETE'",str) ; print str}'`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    FILECOUNT=`ls -l $ARCHIVE_DIR|grep $NEXTARCHIVE|grep ".arc"|wc -l 2&gt;/dev/null`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    if [[ $FILECOUNT -eq 1 ]];then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;      echo "removing $ARCHIVE_DIR/$NEXTARCHIVE" &gt;&gt; $HOME/stby/out/archclean.log&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;      /usr/bin/rm -f $ARCHIVE_DIR/$NEXTARCHIVE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    fi&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    echo $NEXTTODELETE&gt;$HOME/stby/archive_last_deleted&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    NEXTTODELETE=$(($NEXTTODELETE+1))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  done&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  echo "Apply process (MRP0) is not running..." &gt;&gt; $HOME/stby/out/archclean.log&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;fi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;At production site my backup procedure updates "$HOME/stby/backupseq" with the last backed up archive sequence number. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;There should be a file "&lt;/span&gt;&lt;span style="font-size:85%;"&gt;$HOME/stby/archive_last_deleted " which is used to keep sequence number of the last deleted archive log file. At first you can create it with vi and write 1 in it.&lt;/span&gt; &lt;span style="font-size:85%;"&gt;My following scheduled script "$HOME/stby/archcleanprod.sh"  deletes all archived which are backed up and applied to standby database:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;#/bin/ksh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;if  [ "$hosttype" ==  "SunOS" ]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; userid=`/usr/xpg4/bin/id -u -n`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; userid=`/usr/bin/id  -u -n`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;fi&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;. ~$userid/.profile&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;sqlplus / &gt; $HOME/stby/out/archcleanprod.out1 &lt;&lt;eof&gt;&lt;/eof&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;set lines 2000&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;select 'MAKEGREP' GREP,APPLIED_SEQ#-10 from V\$ARCHIVE_DEST_STATUS where DEST_ID=2;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;exit;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;EOF&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;MAX_SEC_APPLIED=`cat $HOME/stby/out/archcleanprod.out1|grep MAKEGREP|awk '{print $2}'`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;MAX_SEQ_NMBCOPY_2=`cat $HOME/&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;stby&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;/backupseq`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;if [[ $MAX_SEQ_NMBCOPY_2 -gt $MAX_SEC_APPLIED ]];then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  MAX_SEC_TO_DELETE=$MAX_SEC_APPLIED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  MAX_SEC_TO_DELETE=$MAX_SEQ_NMBCOPY_2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;fi&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;LAST_DELETED=`cat $HOME/stby/archive_last_deleted`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;NEXTTODELETE=$((LAST_DELETED+1))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;date &gt;&gt; $HOME/stby/archcleanprod.log&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;echo "Archive Sequence Range to Clean: $NEXTTODELETE - $MAX_SEC_TO_DELETE" &gt;&gt; $HOME/stby/archcleanprod.log&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;ARCHIVE_FORMAT=`cat  $HOME/mntdir/config/dba.ini|grep  -v "##"|grep  ARCHIVE_FORMAT|cut -d= -f2`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;ARCHIVE_DIR=`cat  $HOME/mntdir/config/dba.ini|grep  -v "##"|grep  ARCHIVE_DIR|cut -d= -f2`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;while [[ $MAX_SEC_TO_DELETE -gt $NEXTTODELETE ]];do&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  NEXTARCHIVE=`awk 'BEGIN {str="'$ARCHIVE_FORMAT'" ; sub("SEQUENCE","'$NEXTTODELETE'",str) ; print str}'`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  FILECOUNT=`ls -l $ARCHIVE_DIR|grep $NEXTARCHIVE|grep ".arc"|wc -l 2&gt;/dev/null`&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  if [[ $FILECOUNT -eq 1 ]];then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    echo "removing $ARCHIVE_DIR/$NEXTARCHIVE" &gt;&gt; $HOME/stby/archcleanprod.log&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    /usr/bin/rm -f $ARCHIVE_DIR/$NEXTARCHIVE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  fi&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  echo $NEXTTODELETE&gt;$HOME/stby/archive_last_deleted&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  NEXTTODELETE=$(($NEXTTODELETE+1))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;done&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(153, 0, 0);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;windows:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;There is a configuration file "E:\dba\orahome\mntdir\config\dba.xml" (you should replace { and } with the ones used in standard xml. I can not use them in this post, corrupts page)&lt;br /&gt;&lt;br /&gt;{?xml version="1.0" encoding="utf-8" ?}&lt;br /&gt;{config}&lt;br /&gt;    {general}&lt;br /&gt;          {archive_format}ARC_0628272535_001_SEQUENCE.ARC{/archive_format}&lt;br /&gt;        {archive_dir}E:\oracle\oradata\archive{/archive_dir}&lt;br /&gt;      {/general}&lt;br /&gt;    {stby}&lt;br /&gt;        {prodUser}dbuser{/prodUser}&lt;br /&gt;        {prodPass}password{/prodPass}&lt;br /&gt;        {prodTNS}PROD{/prodTNS}&lt;br /&gt;    {/stby}&lt;br /&gt;{/config}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;There is a file "&lt;/span&gt;&lt;span style="font-size:85%;"&gt;E:\dba\orahome\stby\&lt;/span&gt;&lt;span style="font-size:85%;"&gt;archive_last_deleted.txt" in which last deleted archived log's sequence number is kept. At first it can be set as 1.&lt;br /&gt;My scheduled v&lt;/span&gt;&lt;span style="font-size:85%;"&gt;bs script  &lt;/span&gt;&lt;span style="font-size:85%;"&gt;"E:\dba\orahome\stby\stby_archclean.vbs"&lt;/span&gt;&lt;span style="font-size:85%;"&gt; uses configuration file to connect primary site, query dataguard status and delete applied archived logs at standby server&lt;/span&gt;&lt;span style="font-size:85%;"&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'********************* CODE TO PARSE DBA.XML FILE ****************************&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set oXMLDoc = CreateObject("MSXML2.DOMDocument.3.0")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;oXMLDoc.async = False&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;If Not oXMLDoc.load("mntdir\config\dba.xml") Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set oErr = oXMLDoc.parseError&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;sErrMsg = "XML Parsing Error. File: " &amp;amp; oErr.url &amp;amp; " Reason : " &amp;amp; oErr.reason &amp;amp; " Line: " &amp;amp; oErr.line &amp;amp; ", Character: " &amp;amp; oErr.linepos &amp;amp; ",Text: " &amp;amp; oErr.srcText&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Err.Raise 999, , sErrMsg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'******************************************************************************&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set WshShell = CreateObject("WScript.Shell")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;pUSER = oXMLDoc.selectSingleNode("/config/stby/&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;prodUser&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;").text&lt;br /&gt;pPASS = oXMLDoc.selectSingleNode("/config/stby/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:85%;" &gt;prodPass&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;").text&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;ARCHIVE_FORMAT = oXMLDoc.selectSingleNode("/config/general/archive_format").text&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;ARCHIVE_DIR = oXMLDoc.selectSingleNode("/config/general/archive_dir").text&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;pTNS = oXMLDoc.selectSingleNode("/config/stby/prodTNS").text&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set objFSO = CreateObject("Scripting.FileSystemObject")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;set archive_last_deleted = objFSO.OpenTextFile("stby\archive_last_deleted.txt", 1) 'for reading&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;DIM LAST_DELETED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;if not archive_last_deleted.AtEndOfStream then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    LAST_DELETED = cInt(archive_last_deleted.ReadLine)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    WScript.Echo  "Error on stby\archive_last_deleted file"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    WScript.exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;end if&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;archive_last_deleted.close&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;NEXTTODELETE=LAST_DELETED+1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'ADO Connection object&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set con = CreateObject("ADODB.Connection")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;con.CursorLocation = 3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;If con.State = 1 Then con.close&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;con.Open "PROVIDER=MSDAORA;DATA SOURCE="&amp;amp;pTNS&amp;amp;";USER ID="&amp;amp;pUSER&amp;amp;";PASSWORD="&amp;amp;pPASS&amp;amp;";"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'ADO Command object&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set cmd = CreateObject("ADODB.Command")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;cmd.CommandText="select APPLIED_SEQ#-3 from v$ARCHIVE_DEST_STATUS where DEST_ID=2 "&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;cmd.CommandType=1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;cmd.ActiveConnection=con&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'ADO Recordset object&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;set rs=CreateObject("ADODB.Recordset")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Set rs=cmd.Execute    &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;if rs.EOF then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    WScript.Echo  "Error: No APPLIED_SEQ# record for DEST_ID 2"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    rs.Close&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    con.Close&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    WScript.exit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;else&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    DIM MAX_SEC_APPLIED&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    rs.MoveFirst&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    MAX_SEC_APPLIED = cInt(rs.Fields(0))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    rs.Close&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    con.Close&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;end if&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;WScript.Echo  "Archive Sequence Range to Clean:" &amp;amp; cStr(NEXTTODELETE) &amp;amp; " - " &amp;amp; cStr(MAX_SEC_APPLIED)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;do while MAX_SEC_APPLIED &gt; NEXTTODELETE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    WScript.Echo  "removing... " &amp;amp; ARCHIVE_DIR &amp;amp; "\" &amp;amp; Replace(ARCHIVE_FORMAT,"SEQUENCE",cStr(NEXTTODELETE))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    'WshShell.run("del /Q " &amp;amp; ARCHIVE_DIR &amp;amp; "\" &amp;amp; Replace(ARCHIVE_FORMAT,"SEQUENCE",cStr(NEXTTODELETE)))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    objFSO.DeleteFile ARCHIVE_DIR &amp;amp; "\" &amp;amp; Replace(ARCHIVE_FORMAT,"SEQUENCE",cStr(NEXTTODELETE))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    set archive_last_deleted = objFSO.OpenTextFile("stby\archive_last_deleted.txt", 2) 'for writing&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    archive_last_deleted.Write cStr(NEXTTODELETE)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    archive_last_deleted.close&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    NEXTTODELETE = NEXTTODELETE+1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;loop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I ran exactly the same script at prod side, however i added my backup procedure just before the delete.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-4864963692795683244?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/4864963692795683244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=4864963692795683244' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4864963692795683244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4864963692795683244'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/04/windows-vbs-and-unix-shell-scripts-to.html' title='Windows (VBS) and UNIX (Shell) scripts to delete applied archive logs'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-2972771446331805839</id><published>2008-04-09T06:41:00.000-07:00</published><updated>2009-10-12T23:12:26.001-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><title type='text'>How to find active sqls</title><content type='html'>&lt;span style="font-size: 85%;"&gt;Following script can be used to determine long running active sqls with elapsed time and wait event:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;set lines 233&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;select /*+ ordered */ to_char(s.sid,'99999'),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;substr(username,1,8),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;substr(t.sql_text,1,60),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;nvl(last_call_et,0) TIME_sec,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;t.hash_value,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;substr(w.event,1,30) WAIT_EV,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;substr(machine,1,10) MACHINE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;from v$session s,v$sqltext t,v$session_wait w&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;where s.sql_address=t.address&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;and s.sql_HASH_VALUE=t.HASH_VALUE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;and w.sid=s.sid&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;and username between 'AAAAAAAAA' and 'ZZZZZZZZZ'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;and s.status='ACTIVE'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;and t.piece=0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;--and upper(sql_text) not like 'BEGIN%'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;order by TIME_SEC&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In order to find sqls with high executions and little elapsed times&lt;br /&gt;&lt;br /&gt;1-) Take a snap of v$sqlarea:&lt;br /&gt;&lt;span style="color: #000099;"&gt;&lt;br /&gt;create table tmp as select sql_id, sql_text, executions, ELAPSED_TIME, CPU_TIME, DISK_READS, DIRECT_WRITES, BUFFER_GETS from v$sqlarea;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2-) Track sqls depending on executions:&lt;br /&gt;&lt;span style="color: #000099;"&gt;&lt;br /&gt;select a.sql_id,substr(b.sql_text,1,50),&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000099;"&gt;b.executions-a.executions,&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000099;"&gt;b.ELAPSED_TIME - a.ELAPSED_TIME,&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000099;"&gt;b.CPU_TIME - a.CPU_TIME,&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000099;"&gt;b.DISK_READS - a.DISK_READS,&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000099;"&gt;b.DIRECT_WRITES - a.DIRECT_WRITES,&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000099;"&gt;b.BUFFER_GETS - a.BUFFER_GETS&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000099;"&gt;from tmp a, v$sqlarea b&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000099;"&gt;where a.sql_id=b.sql_id and b.executions-a.executions &amp;gt; 100 order by b.executions-a.executions&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;/&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;strong&gt;&lt;span style="color: #ff6600;"&gt;CREATING A JOB FOR ACTIVE SQL EXECUTIONS HISTORY&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;One day i need to monitor sql executions over time in order to determine batch-OLTP transactions over time. You may wonder why i did not use AWR report, EM or something else.. because usually i spent much more time on those tools to find what i need.&lt;br /&gt;&lt;br /&gt;One important note, because my focus was sql execution counts, i put "a.sql_id=b.sql_id and b.executions-a.executions &amp;gt; 10000" condition in my sql withing procedure sp_sqlarea_snap_history in order to eliminate low execution sqls to be ignored. If your focus on something else (for example buffer gets or CPU) then i suggest change this condition which suits your case. Sometimes a sql executed a few times may consume much more resource then an other sql executes thousand times....&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;create table sqlarea_snap as select sysdate snap_time, sql_id, sql_text, executions, ELAPSED_TIME, CPU_TIME, DISK_READS, DIRECT_WRITES, BUFFER_GETS from v$sqlarea where 1=2;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;create table sqlarea_snap_history&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;(SNAP_BEGIN_TIME DATE,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;SNAP_END_TIME DATE,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;SQL_ID VARCHAR2(13),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;SQL_TEXT VARCHAR2(1000),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;EXECUTIONS_DELTA NUMBER,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;TPS NUMBER,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ELAPSED_TIME_DELTA NUMBER,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;CPU_TIME_DELTA NUMBER,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;DISK_READS_DELTA NUMBER,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;DIRECT_WRITES_DELTA NUMBER,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;BUFFER_GETS_DELTA NUMBER);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;create or replace procedure sp_sqlarea_snap_history&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;as&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;EXECUTE IMMEDIATE 'insert into sqlarea_snap_history select a.SNAP_TIME, sysdate, a.sql_id, b.sql_text, b.executions-a.executions, '&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;'trunc((b.executions-a.executions)/((sysdate-snap_time)*24*60*60)), b.ELAPSED_TIME - a.ELAPSED_TIME, b.CPU_TIME - a.CPU_TIME, '&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;'b.DISK_READS - a.DISK_READS, b.DIRECT_WRITES - a.DIRECT_WRITES, b.BUFFER_GETS - a.BUFFER_GETS from sqlarea_snap a, v$sqlarea b '&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;'where a.sql_id=b.sql_id and b.executions-a.executions &amp;gt; 10000 order by b.executions-a.executions';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;EXECUTE IMMEDIATE 'drop table sqlarea_snap';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;EXECUTE IMMEDIATE 'create table sqlarea_snap as select sysdate snap_time, sql_id, sql_text, executions, ELAPSED_TIME, CPU_TIME, '&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;'DISK_READS, DIRECT_WRITES, BUFFER_GETS from v$sqlarea ';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;exec dbms_job.isubmit(20,'sp_sqlarea_snap_history;',sysdate,'sysdate+1/144',false);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Finally, here is the query&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;select SNAP_BEGIN_TIME, EXECUTIONS_DELTA, TPS, SQL_TEXT from sqlarea_snap_history where SNAP_BEGIN_TIME &amp;gt; trunc(sysdate) order by SNAP_BEGIN_TIME desc, EXECUTIONS_DELTA desc;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-2972771446331805839?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/2972771446331805839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=2972771446331805839' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/2972771446331805839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/2972771446331805839'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/04/how-to-find-active-sqls.html' title='How to find active sqls'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-14456015830351227</id><published>2008-03-24T00:09:00.000-07:00</published><updated>2008-03-24T00:20:00.165-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><title type='text'>How to create a logon trigger for session tracing</title><content type='html'>&lt;span style="font-size:85%;"&gt;Here is a function setting session trace on:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;CREATE OR REPLACE &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;FUNCTION logon_actions&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  RETURN  boolean IS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; CURSOR user_prog IS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; SELECT machine,program,osuser,module,sid, serial# FROM v$session where audsid=sys_context('USERENV','SESSIONID');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; user_rec user_prog%ROWTYPE;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; fname utl_file.file_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; fnamedtl utl_file.file_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  OPEN user_prog;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  FETCH user_prog INTO user_rec;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  if upper(user_rec.machine) like '%anyhostname%'  then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;-- insert into sessiontrace values(user_rec.machine,user_rec.program,user_rec.osuser,user_rec.module,user_rec.sid,user_rec.serial#);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt; --commit;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       execute immediate 'alter session set sql_trace=true';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  end if;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  CLOSE user_prog;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  RETURN true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;EXCEPTION&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;   WHEN OTHERS THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       RETURN false;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;END;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And the trigger:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;CREATE OR REPLACE TRIGGER logon_actions_trg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; AFTER&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  LOGON&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; ON DATABASE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;declare&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;begin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     if ( not LOGON_ACTIONS ) then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        RAISE LOGIN_DENIED;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     end if;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-14456015830351227?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/14456015830351227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=14456015830351227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/14456015830351227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/14456015830351227'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/03/how-to-create-logon-trigger-for-session.html' title='How to create a logon trigger for session tracing'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-1057029675433452506</id><published>2008-03-14T04:59:00.000-07:00</published><updated>2008-03-14T05:00:35.644-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><title type='text'>An Example of Transportable Tablespaces</title><content type='html'>&lt;span style="font-size:85%;"&gt;(set oracle environment for source DB)&lt;br /&gt;At source DB:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;connect / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;create tablespace data4 datafile&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'/path1/data401.dbf' size 10m autoextend on next 10m,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'/path1/data402.dbf' size 10m autoextend on next 10m;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;create tablespace indx4 datafile&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;'/path1/indx401.dbf' size 10m autoextend on next 10m;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;create user tc identified by tc default tablespace data4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;temporary tablespace temp quota unlimited on data4 quota unlimited on indx4;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;grant create session, create table to tc;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;create table tc.testtab (nr number, txt varchar2(10)) tablespace data4;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;insert into tc.testtab values (1, 'line 1');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;commit;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;create index tc.i_testtab on tc.testtab(nr) tablespace indx4;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;select owner'.'segment_name "OWNER.SEGMENT_NAME", segment_type, tablespace_name from dba_segments where tablespace_name in ('DATA4','INDX4');&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;alter tablespace data4 read only;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;alter tablespace indx4 read only;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;execute dbms_tts.transport_set_check('data4,indx4', TRUE);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;select * from transport_set_violations;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;exit;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;At Shell:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;exp "'/ as sysdba'" file=exp_tts.dmp log=exp_tts.log transport_tablespace=y tablespaces=data4,indx4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;cp /path1/data401.dbf /path2/data401.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;cp /path1/data402.dbf /path2/data402.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;cp /path1/indx401.dbf /path2/indx401.dbf&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;cd /path2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;chmod g+w *&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(set oracle environment for destination DB)&lt;br /&gt;At destination DB:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;connect / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;create user tcnew identified by tcnew default tablespace tools temporary tablespace temp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;grant create session, create table, resource to tcnew;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;At Shell:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;imp "'/ as sysdba'" file=exp_tts.dmp log=imp_tts.log fromuser=tc touser=tcnew transport_tablespace=y datafiles=/path2/data401.dbf,/path2/data402.dbf,/path2/indx401.dbf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;At destination DB:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;connect / as sysdba&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;alter tablespace data4 read write;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;alter tablespace indx4 read write;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;alter user tcnew quota unlimited on data4;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;alter user tcnew quota unlimited on indx4;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;revoke resource from tcnew;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;select owner'.'segment_name "OWNER.SEGMENT_NAME", segment_type, tablespace_name from dba_segments where tablespace_name in ('DATA4','INDX4');&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-1057029675433452506?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/1057029675433452506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=1057029675433452506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1057029675433452506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1057029675433452506'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/03/example-of-transportable-tablespaces.html' title='An Example of Transportable Tablespaces'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-4887567585723863589</id><published>2008-03-14T02:26:00.000-07:00</published><updated>2008-03-14T04:46:43.803-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><title type='text'>How to determine full scan sqls?</title><content type='html'>&lt;span style="font-size:85%;"&gt;Here is a sql script to determine full scan sqls:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;SELECT          /*+ ordered  */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       DISTINCT s.hash_value, s.buffer_gets, s.disk_reads, s.executions,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                s.sql_text,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                   'SELECT  * FROM V$SQL_PLAN WHERE ADDRESS='''&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                || s.address&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                || ''' AND HASH_VALUE='&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                || s.hash_value&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;           FROM v$sql_plan p, v$sqlarea s&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;          WHERE p.options LIKE '%FULL%'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            AND s.address = p.address&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            AND s.hash_value = p.hash_value&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            AND object_name &lt;&gt; 'DUAL'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;--            AND EXECUTIONS &gt; 10&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       ORDER BY s.buffer_gets DESC&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-4887567585723863589?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/4887567585723863589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=4887567585723863589' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4887567585723863589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/4887567585723863589'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/03/how-to-determine-full-scan-sqls.html' title='How to determine full scan sqls?'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-3643306646778881756</id><published>2008-03-04T04:12:00.000-08:00</published><updated>2008-04-09T04:01:51.753-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><title type='text'>Sql Script to Generate AWR Report</title><content type='html'>&lt;span style="font-size:85%;"&gt;Here is a sql script to generate awr report using sqlplus:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;select DBID,INSTANCE_NUMBER,SNAP_ID,END_INTERVAL_TIME, BEGIN_INTERVAL_TIME from dba_hist_snapshot order by BEGIN_INTERVAL_TIME;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;undefine DBID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;undefine INSID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;undefine STARTSNAPID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;undefine ENDSNAPID&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;column report_name new_value report_name;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;select 'awr_'||(select NAME from v$database where DBID = &amp;amp;&amp;amp;DBID)||'_'||&amp;amp;&amp;amp;INSID||'_'||&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;(select to_char(END_INTERVAL_TIME,'yyyymmddhh24mi') from dba_hist_snapshot where SNAP_ID=&amp;amp;&amp;amp;STARTSNAPID)||'_'||&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;(select to_char(END_INTERVAL_TIME,'yyyymmddhh24mi') from dba_hist_snapshot where SNAP_ID=&amp;amp;&amp;amp;ENDSNAPID)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;||'.html' &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;report_name &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;from dual;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;set termout off&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;spool &amp;amp;&amp;amp;report_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;select output from table(sys.dbms_workload_repository.awr_report_html(&amp;amp;DBID,&amp;amp;INSID,&amp;amp;STARTSNAPID,&amp;amp;ENDSNAPID));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;spool off&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;set termout on&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-3643306646778881756?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/3643306646778881756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=3643306646778881756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/3643306646778881756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/3643306646778881756'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/03/sql-script-to-generate-awr-report.html' title='Sql Script to Generate AWR Report'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-1957743060966168371</id><published>2008-03-04T03:24:00.000-08:00</published><updated>2010-07-20T05:54:14.306-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dataguard'/><title type='text'>Setting up Dataguard Configuration for Oracle 10G</title><content type='html'>I assume that physical standby database is previously created, configured and up-to-date.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Prod configuration&lt;/span&gt;&lt;br /&gt;If you use spfile, set scope=both at the end of all alter commands. Other case, dont forget to alter parameters in init.ora file&lt;br /&gt;1-)Be sure logging is enabled at database level:ALTER DATABASE FORCE LOGGING;&lt;br /&gt;2-)Change db_unique_name parameter (in init.ora or spfile) if necessary. Default is ORACLE_SID. You may leave it as it is. Change requires restart to apply. &lt;br /&gt;* &lt;span style="color: blue;"&gt;alter system set STANDBY_FILE_MANAGEMENT=AUTO;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;* alter system set log_archive_dest_state_1=ENABLE;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;* alter system set log_archive_dest_state_2=DEFER;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;* alter system set log_archive_dest_1='LOCATION={archive_path_prod} MANDATORY REOPEN=60 VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME={db_unique_name_prod}';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;TNS_stby is the TNS name configured for standby database. I strongly suggest configuring a new TNS listener on a different port reserverd for dataguard configuration. We will set it later at standby database.&lt;/span&gt; &lt;br /&gt;&lt;span style="color: blue;"&gt;* alter system set log_archive_dest_2='SERVICE={TNS_stby} LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME={db_unique_name_stby}';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;* alter system set FAL_SERVER={TNS_stby};&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;* alter system set FAL_CLIENT={TNS_prod}; &lt;/span&gt;&lt;span style="color: #274e13;"&gt;-- TNS_prod: tns name for primary database.&lt;/span&gt; &lt;br /&gt;3-)Be sure that remote_login_passwordfile is set to EXCLUSIVE (show parameter remote_login_passwordfile)&lt;br /&gt;4-)On platforms other than Windows, create a password file, and set the password for the SYS user to the same password used by the SYS user on the primary database. The password for the SYS user on every database in a Data Guard configuration must be identical for redo transmission to succeed. See Oracle Database Administrator's Guide.&lt;br /&gt;6-)Add number of redologgroups+1 standby logfiles to the prod database. These redo logs wont be used unless a swithover is performed.&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE GROUP 20 ('{redo_path}/stbyredo01.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE GROUP 21 ('{redo_path}/stbyredo02.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE GROUP 22 ('{redo_path}/stbyredo03.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE GROUP 23 ('{redo_path}/stbyredo04.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE GROUP 24 ('{redo_path}/stbyredo05.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE GROUP 25 ('{redo_path}/stbyredo06.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;if there is RAC configuration then add logfiles for thread 2:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 26 ('{redo_path}/stbyredo07.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 27 ('{redo_path}/stbyredo08.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 28 ('{redo_path}/stbyredo09.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 29 ('{redo_path}/stbyredo10.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 30 ('{redo_path}/stbyredo11.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 31 ('{redo_path}/stbyredo12.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Standby configuration:&lt;/span&gt;&lt;br /&gt;If you use spfile, set scope=both at the end of all alter commands. Other case, dont forget to alter parameters in init.ora file&lt;br /&gt;1-) change db_unique_name parameter (in init.ora or spfile) if necessary. It can not be the same with production. I assume it is {db_unique_name_stby}&lt;br /&gt;&lt;span style="color: blue;"&gt;* alter system set STANDBY_FILE_MANAGEMENT=AUTO;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;* alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;* alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;* alter system set LOG_ARCHIVE_DEST_1='LOCATION={archive_path_stby} VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME={db_unique_name_stby}';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #274e13;"&gt;TNS_prod is the TNS name configured for prod database. I strongly suggest configuring a new TNS listener on a different port reserverd for dataguard configuration.&lt;/span&gt; &lt;br /&gt;* &lt;span style="color: blue;"&gt;alter system set LOG_ARCHIVE_DEST_2='SERVICE={TNS_prod} LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME={db_unique_name_prod}';&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;* alter system set FAL_SERVER={TNS_prod};&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;* alter system set FAL_CLIENT={TNS_stby};&lt;/span&gt;&lt;br /&gt;2-)Be sure that remote_login_passwordfile is set to EXCLUSIVE (show parameter remote_login_passwordfile)&lt;br /&gt;3-)Configure listener at prod site so be sure that "tnsping TNS_prod" is working. &lt;br /&gt;4-)Configure listener at standby site so be sure that "tnsping TNS_stby" is working. &lt;br /&gt;5-)On platforms other than Windows, create a password file, and set the password for the SYS user to the same password used by the SYS user on the primary database. The password for the SYS user on every database in a Data Guard configuration must be identical for redo transmission to succeed. See Oracle Database Administrator's Guide.&lt;br /&gt;6-)Add number of redologgroups+1 standby logfiles to the standby database.&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE GROUP 20 ('{redo_path}/stbyredo01.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE GROUP 21 ('{redo_path}/stbyredo02.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE GROUP 22 ('{redo_path}/stbyredo03.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE GROUP 23 ('{redo_path}/stbyredo04.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE GROUP 24 ('{redo_path}/stbyredo05.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE GROUP 25 ('{redo_path}/stbyredo06.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;if there is RAC configuration then add logfiles for thread 2:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 20 ('{redo_path}/stbyredo07.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 21 ('{redo_path}/stbyredo08.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 22 ('{redo_path}/stbyredo09.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 23 ('{redo_path}/stbyredo10.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 24 ('{redo_path}/stbyredo11.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 25 ('{redo_path}/stbyredo12.log') SIZE 52428800;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;Finally, activating dataguard configuration (prod):&lt;/span&gt;&lt;br /&gt;alter systen set log_archive_dest_state_2=ENABLE; -- If you use spfile, set scope=both, Other case, dont forget to update init.ora file&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Tuning Network Configuration:&lt;/span&gt;&lt;br /&gt;Network Tuning - Oracle Net Session Data Unit (SDU) Size&lt;br /&gt;Prod (tnsnames.ora):&lt;br /&gt;...&lt;br /&gt;( DESCRIPTION =&lt;br /&gt;(SDU=32767)&lt;br /&gt;( ADDRESS = (PROTOCOL = TCP) (Host = ...) (Port = ...) )&lt;br /&gt;( CONNECT_DATA = (SID = ...) )&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;Standby (listener.ora):&lt;br /&gt;SID_LIST_LISTENER_... =&lt;br /&gt;( SID_LIST=&lt;br /&gt;(SID_DESC =&lt;br /&gt;(SDU=32767)&lt;br /&gt;(ORACLE_HOME = ...)&lt;br /&gt;(SID_NAME =...)&lt;br /&gt;)&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Network Tuning: Setting TCP Socket Buffer Sizes:&lt;/span&gt;&lt;br /&gt;BDP= {available bandwidth}*{Network Round Trip Time-RTT}&lt;bandwith&gt;&lt;network&gt;&lt;br /&gt;Socket Buffer Size = 3*BDP&lt;br /&gt;&lt;br /&gt;Example for 34Mbit bandwith with 2ms RTT:&lt;br /&gt;= 3* ((34000000*0.02)/8)&lt;br /&gt;=255000&lt;br /&gt;&lt;br /&gt;Prod(tnsnames.ora):&lt;br /&gt;... =&lt;br /&gt;( DESCRIPTION =&lt;br /&gt;(SDU=32767)&lt;br /&gt;(SEND_BUF_SIZE=255000)&lt;br /&gt;(RECV_BUF_SIZE=255000)&lt;br /&gt;( ADDRESS = (PROTOCOL = TCP) (Host = ...) (Port = ...) )&lt;br /&gt;( CONNECT_DATA = (SID = ...) )&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;standby(listener.ora):&lt;br /&gt;LISTENER_...=&lt;br /&gt;(DESCRIPTION_LIST =&lt;br /&gt;(DESCRIPTION =&lt;br /&gt;(ADDRESS_LIST =&lt;br /&gt;(ADDRESS= (PROTOCOL= IPC)(KEY= ...))&lt;br /&gt;)&lt;br /&gt;(ADDRESS_LIST =&lt;br /&gt;(ADDRESS = (PROTOCOL = TCP)(HOST =...)(PORT = 1521) (SEND_BUF_SIZE=255000) (RECV_BUF_SIZE=255000))&lt;br /&gt;)&lt;br /&gt;)&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Starting and stopping Managed Recovery (Standby):&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;start&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;STARTUP MOUNT;&lt;br /&gt;&lt;span style="color: blue;"&gt;alter database recover managed standby database using current logfile disconnect from session;&lt;/span&gt; -- &lt;span style="color: #274e13;"&gt;Applies not only completed redo logs, but also redo log currently being copied&lt;/span&gt;&lt;br /&gt;or &lt;br /&gt;&lt;span style="color: blue;"&gt;alter database recover managed standby database disconnect from session;&lt;/span&gt; &lt;span style="color: #274e13;"&gt;-- Applies completed redo logs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;strong&gt;stop&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;SHUTDOWN IMMEDIATE;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;Monitoring:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;SELECT PROCESS, STATUS, THREAD#, SEQUENCE#, BLOCK#, BLOCKS FROM V$MANAGED_STANDBY;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-1957743060966168371?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/1957743060966168371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=1957743060966168371' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1957743060966168371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1957743060966168371'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/03/setting-up-dataguard-configuration-for.html' title='Setting up Dataguard Configuration for Oracle 10G'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-1896301097707876663</id><published>2008-03-04T01:29:00.000-08:00</published><updated>2008-03-14T04:51:47.924-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><title type='text'>A Script to Add Supplemental Logging at Table Level</title><content type='html'>Here is a script which may be used to generate script which enables supplemental logging at table level for all tables.&lt;br /&gt;&lt;br /&gt;declare&lt;br /&gt;out varchar2(2000);&lt;br /&gt;cflag number;&lt;br /&gt;begin&lt;br /&gt;-- You may change this line, i am choosing tables with only 50 to 250 MBs and owner OWNR&lt;br /&gt;for l in ( select segment_name from dba_segments where bytes/(1024*1024) between 50 and  250 and owner in ('OWNR') and SEGMENT_TYPE = 'TABLE' and segment_name not like 'BIN%' order by segment_name)&lt;br /&gt;loop&lt;br /&gt;cflag := 0;&lt;br /&gt;out :='alter table OWNR.'||l.segment_name||' ADD SUPPLEMENTAL LOG GROUP "'||substr(l.segment_name,1,25)||'_SLOG" (';&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- If there is a PK then add its columns&lt;br /&gt;for k in (select COLUMN_NAME from DBA_IND_COLUMNS where INDEX_NAME in (select index_name from dba_constraints where CONSTRAINT_TYPE = 'P' and table_name=l.segment_name) order by COLUMN_POSITION)&lt;br /&gt;&lt;br /&gt;loop&lt;br /&gt;  if (cflag = 0) then out:=out||k.column_name;&lt;br /&gt;  else out:=out||','||k.column_name;&lt;br /&gt;  end if;&lt;br /&gt;  cflag := 1;&lt;br /&gt;end loop;&lt;br /&gt;&lt;br /&gt;-- If there is no PK but there is a UI, then add its columns.&lt;br /&gt;-- Normally there should not be more then one UI on any table. If there is, then is a problem. You may check it with this sql:&lt;br /&gt;-- select TABLE_NAME,count(*) from dba_indexes where INDEX_TYPE='NORMAL' and UNIQUENESS='UNIQUE' and owner='OWNR' and&lt;br /&gt;-- TABLE_NAME not in (select TABLE_NAME from dba_constraints where CONSTRAINT_TYPE = 'P') group by TABLE_NAME having count(*) &gt; 1;&lt;br /&gt;&lt;br /&gt;if (cflag = 0) then&lt;br /&gt;       for m in (select COLUMN_NAME from DBA_IND_COLUMNS where INDEX_NAME in (select index_name from dba_indexes where INDEX_TYPE='NORMAL' and UNIQUENESS='UNIQUE' and owner='OWNR' and table_name=l.segment_name) order by COLUMN_POSITION)&lt;br /&gt;&lt;br /&gt;       loop&lt;br /&gt;               if (cflag = 0) then out:=out||m.column_name;&lt;br /&gt;               else out:=out||','||m.column_name;&lt;br /&gt;               end if;&lt;br /&gt;               cflag := 1;&lt;br /&gt;       end loop;&lt;br /&gt;end if;       &lt;br /&gt;-- If there is no PK and UI, then add all columns to supplemental logging&lt;br /&gt;if (cflag = 0) then&lt;br /&gt;       for n in (select COLUMN_NAME from dba_tab_columns where table_name=l.segment_name order by COLUMN_ID)&lt;br /&gt;       loop&lt;br /&gt;               if (cflag = 0) then out:=out||n.column_name;&lt;br /&gt;               else out:=out||','||n.column_name;&lt;br /&gt;               end if;&lt;br /&gt;               cflag := 1;&lt;br /&gt;       end loop;&lt;br /&gt;end if;&lt;br /&gt;              &lt;br /&gt;out := out||') ALWAYS;';&lt;br /&gt;dbms_output.put_line(out);&lt;br /&gt;end loop;&lt;br /&gt;END;&lt;br /&gt;/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-1896301097707876663?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/1896301097707876663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=1896301097707876663' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1896301097707876663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1896301097707876663'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/03/script-to-add-supplemental-logging-at.html' title='A Script to Add Supplemental Logging at Table Level'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-6509551115156013023</id><published>2008-01-08T01:26:00.000-08:00</published><updated>2008-03-18T00:57:49.154-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dataguard'/><title type='text'>STANDBY_FILE_MANAGEMENT MANUAL, ORA-01110</title><content type='html'>If STANDBY_FILE_MANAGEMENT system parameter is MANUAL and a datafile is added to primary database, the same datafile should be added manually to the standby database after ORA-01110 error. However, by setting STANDBY_FILE_MANAGEMENT=AUTO, you can allow standby database to create its own datafile automatically whenever a datafile is added to the primary.&lt;br /&gt;&lt;br /&gt;SQL&gt; alter system set STANDBY_FILE_MANAGEMENT=MANUAL;&lt;br /&gt;SQL&gt; alter database create datafile '...DBF' as '...DBF' size ...M;&lt;br /&gt;SQL&gt; alter system set STANDBY_FILE_MANAGEMENT=AUTO;&lt;br /&gt;&lt;br /&gt;SQL&gt; alter system set STANDBY_FILE_MANAGEMENT=AUTO scope=spfile; or change/add initora parameter.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-6509551115156013023?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/6509551115156013023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=6509551115156013023' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6509551115156013023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/6509551115156013023'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2008/01/standbyfilemanagement-manual-ora-01110.html' title='STANDBY_FILE_MANAGEMENT MANUAL, ORA-01110'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-255815884535741022</id><published>2007-09-07T05:56:00.000-07:00</published><updated>2008-03-14T04:51:25.814-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Administration'/><title type='text'>How to Resize Redo Logs</title><content type='html'>Here is a newly created database redo log information:&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from v$log;&lt;br /&gt;GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME&lt;br /&gt;---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------------&lt;br /&gt;1 1 17 52428800 1 NO INACTIVE 996238 06/09/2007 22:01:59&lt;br /&gt;2 1 18 52428800 1 NO INACTIVE 1006432 06/09/2007 22:13:32&lt;br /&gt;3 1 19 52428800 1 NO CURRENT 1036439 07/09/2007 09:56:44&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from v$logfile;&lt;br /&gt;GROUP# STATUS TYPE MEMBER&lt;br /&gt;---------- ------- ------- -------------------------------------------------&lt;br /&gt;3 ONLINE /database/data/redo03.log&lt;br /&gt;2 ONLINE /database/data/redo02.log&lt;br /&gt;1 ONLINE /database/data/redo01.log&lt;br /&gt;&lt;br /&gt;Here is how i changed this to five 200M redo logs:&lt;br /&gt;&lt;br /&gt;SQL&gt; alter database add logfile group 4 ('/database/data/redo04.log') size 200M;&lt;br /&gt;SQL&gt; alter database add logfile group 5 ('/database/data/redo05.log') size 200M;&lt;br /&gt;&lt;br /&gt;while running following sql commands, if you hit an error like this:&lt;br /&gt;&lt;br /&gt;ORA-01623: log 3 is current log for instance RPTDB (thread 1) - cannot drop&lt;br /&gt;ORA-00312: online log 3 thread 1: '/database/data/redo03.log'&lt;br /&gt;&lt;br /&gt;you should run " alter system switch logfile;" until current log is 4 or 5. Then execute "alter system checkpoint;"&lt;br /&gt;&lt;br /&gt;SQL&gt; alter database drop logfile group 1;&lt;br /&gt;SQL&gt; alter database drop logfile group 2;&lt;br /&gt;SQL&gt; alter database drop logfile group 3;&lt;br /&gt;&lt;br /&gt;then move (or maybe drop) old redo logs&lt;br /&gt;&lt;br /&gt;mv /database/data/redo01.log /database/data/redo01_old.log&lt;br /&gt;mv /database/data/redo02.log /database/data/redo02_old.log&lt;br /&gt;mv /database/data/redo03.log /database/data/redo03_old.log&lt;br /&gt;&lt;br /&gt;finally&lt;br /&gt;&lt;br /&gt;SQL&gt; alter database add logfile group 1 ('/database/data/redo01.log') size 200M;&lt;br /&gt;SQL&gt; alter database add logfile group 2 ('/database/data/redo02.log') size 200M;&lt;br /&gt;SQL&gt; alter database add logfile group 3 ('/database/data/redo03.log') size 200M;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-255815884535741022?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/255815884535741022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=255815884535741022' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/255815884535741022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/255815884535741022'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2007/09/how-to-resize-redo-logs.html' title='How to Resize Redo Logs'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-1281969871715248471</id><published>2007-09-06T04:05:00.000-07:00</published><updated>2008-03-14T04:47:49.661-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><title type='text'>How to determine tables with highest data change rate at Oracle 10G</title><content type='html'>DBA_HIST_SEG_STAT system view can be used to see physical read-write statistics on segments.  Statistics are taken by regular snaps. Following sql script returns tables with higher block change rate, bigger then 20000.&lt;br /&gt;&lt;br /&gt;select SNAP_ID,OWNER ,OBJECT_NAME, OBJECT_TYPE, DB_BLOCK_CHANGES_DELTA&lt;br /&gt;from dba_objects a,&lt;br /&gt;(select SNAP_ID,obj#,DB_BLOCK_CHANGES_DELTA from DBA_HIST_SEG_STAT where DB_BLOCK_CHANGES_DELTA &gt; 20000 order by snap_id desc, DB_BLOCK_CHANGES_DELTA desc) b&lt;br /&gt;where a.object_id=b.obj# and object_type='TABLE'&lt;br /&gt;order by snap_id desc, DB_BLOCK_CHANGES_DELTA desc&lt;br /&gt;&lt;br /&gt;select c.SNAP_ID,c.END_INTERVAL_TIME SNAP_TIME,a.OWNER ,a.OBJECT_NAME, a.OBJECT_TYPE, b.DB_BLOCK_CHANGES_DELTA&lt;br /&gt;from dba_objects a,&lt;br /&gt;(select SNAP_ID,obj#,DB_BLOCK_CHANGES_DELTA from DBA_HIST_SEG_STAT where DB_BLOCK_CHANGES_DELTA &gt; 20000 order by snap_id desc, DB_BLOCK_CHANGES_DELTA desc) b,&lt;br /&gt;DBA_HIST_SNAPSHOT c&lt;br /&gt;where a.object_id=b.obj# and object_type='TABLE' and b.SNAP_ID=c.SNAP_ID&lt;br /&gt;order by snap_id desc, DB_BLOCK_CHANGES_DELTA desc&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-1281969871715248471?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/1281969871715248471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=1281969871715248471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1281969871715248471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1281969871715248471'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2007/09/how-to-determine-tables-with-highest.html' title='How to determine tables with highest data change rate at Oracle 10G'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-1618550519621953569</id><published>2007-08-25T11:51:00.000-07:00</published><updated>2009-11-11T23:56:32.212-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tuning'/><title type='text'>ANALYZE &amp; DBMS_STATS</title><content type='html'>&lt;span style="color: #ff6600;"&gt;ANALYZE:&lt;/span&gt;&lt;br /&gt;analyze table &lt;span style="color: red;"&gt;owner.table_name&lt;/span&gt; compute statistics for table for all indexes for all indexed columns size 254;&lt;br /&gt;&lt;br /&gt;analyze table &lt;span style="color: red;"&gt;owner.table_name&lt;/span&gt; partition(&lt;span style="color: red;"&gt;partition_name&lt;/span&gt;) compute statistics for table for all LOCAL indexes for all indexed columns size 254;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #ff6600;"&gt;DBMS_STATS:&lt;/span&gt;&lt;br /&gt;exec DBMS_STATS.GATHER_TABLE_STATS(OWNNAME =&amp;gt; &lt;span style="color: red;"&gt;'owner'&lt;/span&gt;, TABNAME =&amp;gt; &lt;span style="color: red;"&gt;'table_name'&lt;/span&gt;, PARTNAME =&amp;gt; null, ESTIMATE_PERCENT =&amp;gt; 100, BLOCK_SAMPLE =&amp;gt; null, METHOD_OPT =&amp;gt; 'FOR ALL INDEXED COLUMNS size 254', DEGREE =&amp;gt; null, GRANULARITY =&amp;gt; 'ALL', CASCADE =&amp;gt; TRUE, STATTAB =&amp;gt; null, STATID =&amp;gt; null, STATOWN =&amp;gt; null);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;ownname&lt;/span&gt; Schema of table to analyze.&lt;br /&gt;&lt;span style="color: #000099;"&gt;tabname&lt;/span&gt; Name of table.&lt;br /&gt;&lt;span style="color: #000099;"&gt;partname&lt;/span&gt; Name of partition.&lt;br /&gt;&lt;span style="color: #000099;"&gt;estimate_percent&lt;/span&gt; Percentage of rows to estimate (NULL means compute) The valid range is [0.000001,100]. Use the constant DBMS_STATS.AUTO_SAMPLE_SIZE to have Oracle determine the best sample size for good statistics.&lt;br /&gt;&lt;span style="color: #000099;"&gt;block_sample&lt;/span&gt; Whether or not to use random block sampling instead ofrandom row sampling. Random block sampling is more efficient, but if the data is not randomly distributed on disk, then the sample values may be somewhat correlated. Only pertinent when doing an estimate statistics.&lt;br /&gt;&lt;span style="color: #000099;"&gt;method_opt&lt;/span&gt; Accepts:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;FOR ALL [INDEXED HIDDEN] COLUMNS [size_clause]&lt;/li&gt;&lt;li&gt;FOR COLUMNS [size clause] columnattribute[size_clause] [,columnattribute [size_clause]...], where size_clause is defined as: ize_clause := SIZE {integer REPEAT AUTO SKEWONLY}&lt;/li&gt;&lt;li&gt;integer—Number of histogram buckets. Must be in the range [1,254].&lt;/li&gt;&lt;li&gt;REPEAT—Collects histograms only on the columns that already have histograms.&lt;/li&gt;&lt;li&gt;AUTO—Oracle determines the columns to collect histograms based on data distribution and the workload of the columns.&lt;/li&gt;&lt;li&gt;SKEWONLY—Oracle determines the columns to collect histograms based on the data distribution of the columns.&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: #000099;"&gt;degree&lt;/span&gt; Degree of parallelism. NULL means use the table default value specified by the DEGREE clause in the CREATE TABLE or ALTER TABLE statement. Use the constant DBMS_STATS.DEFAULT_DEGREE to specify the default value based on the initialization parameters.&lt;br /&gt;&lt;span style="color: #000099;"&gt;granularity&lt;/span&gt; Granularity of statistics to collect (only pertinent if the table is partitioned).&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DEFAULT: Gather global- and partition-level statistics.&lt;/li&gt;&lt;li&gt;SUBPARTITION: Gather subpartition-level statistics.&lt;/li&gt;&lt;li&gt;PARTITION: Gather partition-level statistics.&lt;/li&gt;&lt;li&gt;GLOBAL: Gather global statistics.&lt;/li&gt;&lt;li&gt;ALL: Gather all (subpartition, partition, and global) statistics.&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: #000099;"&gt;cascade&lt;/span&gt; Gather statistics on the indexes for this table. Index statistics gathering is not parallelized. Using this option is equivalent to running the GATHER_INDEX_STATS procedure on each of the table’s indexes.&lt;br /&gt;&lt;span style="color: #000099;"&gt;stattab&lt;/span&gt; User stat table identifier describing where to save the current statistics.&lt;br /&gt;&lt;span style="color: #000099;"&gt;statid&lt;/span&gt; Identifier (optional) to associate with these statistics within stattab&lt;br /&gt;&lt;span style="color: #000099;"&gt;statown&lt;/span&gt; Schema containing stattab (if different than ownname).&lt;br /&gt;&lt;span style="color: #000099;"&gt;no_invalidate&lt;/span&gt; Dependent cursors are not invalidated if this parameter is set to TRUE. When the ’cascade’ argument is specified, this parameter is not relevant with certain types of indexes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: red;"&gt;PROCEDURE TO RECREATE PARTITIONED TABLE STATS&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;exec DBMS_SESSION.SET_NLS('NLS_SORT','BINARY');&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #38761d;"&gt;-- necessary for a AIX Bug&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;-- Backup statistics (my backup table is BAKIM.STATTAB)&lt;/span&gt;&lt;br /&gt;truncate table bakim.stattab;&lt;br /&gt;exec DBMS_STATS.EXPORT_TABLE_STATS(&lt;span style="color: orange;"&gt;{owner}&lt;/span&gt;,&lt;span style="color: orange;"&gt;{table_name}&lt;/span&gt;,null,'STATTAB','AAA',TRUE,'BAKIM');&lt;br /&gt;&lt;br /&gt;declare&lt;br /&gt;&lt;br /&gt;cursor cr_x is &lt;br /&gt;select TABLE_owner,table_name,partition_name from dba_tab_partitions where &lt;br /&gt;table_name in ('&lt;span style="color: orange;"&gt;{table_name}&lt;/span&gt;') &lt;span style="color: #38761d;"&gt;--and last_analyzed &amp;lt;&amp;gt;trunc(sysdate)&lt;/span&gt;&lt;br /&gt;;&lt;br /&gt;begin &lt;br /&gt;for l in cr_x loop&lt;br /&gt;DBMS_STATS.EXPORT_TABLE_STATS(l.TABLE_owner,l.table_name,l.partition_name,'STATTAB','AAA',TRUE,'BAKIM');&lt;br /&gt;&amp;nbsp;end loop;&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #38761d;"&gt;-- Delete general table statistics. We want partition statistics to be escalated to table statistics&lt;/span&gt;&lt;br /&gt;exec DBMS_STATS.DELETE_TABLE_STATS (&lt;span style="color: orange;"&gt;{owner}&lt;/span&gt;,&lt;span style="color: orange;"&gt;{table_name}&lt;/span&gt;,null,null,null,TRUE,TRUE,TRUE,null);&lt;br /&gt;&lt;br /&gt;-- Gather partition statitstics&lt;br /&gt;declare&lt;br /&gt;&lt;br /&gt;cursor cr_x is &lt;br /&gt;select TABLE_owner,table_name,partition_name from dba_tab_partitions where &lt;br /&gt;table_name in ('{table_name}') &lt;span style="color: #38761d;"&gt;--and last_analyzed &amp;lt;&amp;gt;trunc(sysdate)&lt;/span&gt;&lt;br /&gt;;&lt;br /&gt;Begin &lt;br /&gt;for l in cr_x loop&lt;br /&gt;DBMS_STATS.GATHER_TABLE_STATS ( l.TABLE_owner,l.table_name,l.partition_name,null,null,'FOR ALL INDEXED COLUMNS SIZE 254', NULL, 'PARTITION',TRUE, null, null, null);&lt;br /&gt;end loop;&lt;br /&gt;end;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-1618550519621953569?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/1618550519621953569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=1618550519621953569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1618550519621953569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/1618550519621953569'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2007/08/analyze-dbmsstats.html' title='ANALYZE &amp; DBMS_STATS'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-7566107954049763926</id><published>2007-08-25T10:56:00.000-07:00</published><updated>2008-03-14T04:50:14.926-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Tools'/><title type='text'>Oracle 10G enterprise manager (emca)</title><content type='html'>&lt;span style="color: rgb(255, 102, 0);"&gt;start stop:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;emctl start dbconsole&lt;/li&gt;&lt;li&gt;emctl stop dbconsole &lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;To creare repository if not installed yet:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;emca -config dbcontrol db -repos create -host &lt;span style="color: rgb(255, 0, 0);"&gt;{hostname}&lt;/span&gt; -SID &lt;span style="color: rgb(255, 0, 0);"&gt;{Oracle SID}&lt;/span&gt; -PORT &lt;span style="color: rgb(255, 0, 0);"&gt;1521&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;To uninstall previously created repository (metalink DocID: 278100.1 )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1- Logon SQLPLUS as user SYS or SYSTEM&lt;br /&gt;2- EXEC sysman.emd_maintenance.remove_em_dbms_jobs;&lt;br /&gt;3- EXEC sysman.setEMUserContext('',5);&lt;br /&gt;4- REVOKE dba FROM sysman;&lt;br /&gt;5-&lt;br /&gt;DECLARE&lt;br /&gt;CURSOR c1 IS&lt;br /&gt;SELECT owner, synonym_name name&lt;br /&gt;FROM dba_synonyms&lt;br /&gt;WHERE table_owner = 'SYSMAN';&lt;br /&gt;BEGIN&lt;br /&gt;FOR r1 IN c1 LOOP&lt;br /&gt;IF r1.owner = 'PUBLIC' THEN&lt;br /&gt;EXECUTE IMMEDIATE 'DROP PUBLIC SYNONYM 'r1.name;&lt;br /&gt;ELSE EXECUTE IMMEDIATE 'DROP SYNONYM 'r1.owner'.'r1.name;&lt;br /&gt;END IF;&lt;br /&gt;END LOOP;&lt;br /&gt;END;&lt;br /&gt;6- DROP USER mgmt_view CASCADE;&lt;br /&gt;7- DROP ROLE mgmt_user;&lt;br /&gt;8- DROP USER sysman CASCADE;&lt;br /&gt;9- Then login shell and execute following:&lt;br /&gt;emca -deconfig dbcontrol db -repos drop&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;Shell commands to create and drop em repository&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;$ORACLE_HOME/sysman/admin/emdrep/bin/RepManager -connect (DESCRIPTION= (ADDRESS_LIST= (ADDRESS= (PROTOCOL=TCP) (HOST=&lt;span style="color: rgb(255, 0, 0);"&gt;{hostname}&lt;/span&gt;) (PORT=&lt;span style="color: rgb(255, 0, 0);"&gt;1521&lt;/span&gt;))) (CONNECT_DATA=(SERVICE_NAME=&lt;span style="color: rgb(255, 0, 0);"&gt;{ORACLE SID}&lt;/span&gt;))) -repos_user SYSMAN -action drop -verbose -output_file $ORACLE_HOME/cfgtoollogs/emca/&lt;span style="color: rgb(255, 0, 0);"&gt;{ORACLE_SID}&lt;/span&gt;/emca_repos_drop_2006-01-18_03-02-57-PM.log&lt;br /&gt;$ORACLE_HOME/sysman/admin/emdrep/bin/RepManager -connect (DESCRIPTION= (ADDRESS_LIST= (ADDRESS= (PROTOCOL=TCP) (HOST=&lt;span style="color: rgb(255, 0, 0);"&gt;{hostname}&lt;/span&gt;) (PORT=&lt;span style="color: rgb(255, 0, 0);"&gt;1521&lt;/span&gt;))) (CONNECT_DATA=(SERVICE_NAME=&lt;span style="color: rgb(255, 0, 0);"&gt;{ORACLE SID}&lt;/span&gt;))) -repos_user SYSMAN -action create -verbose -output_file $ORACLE_HOME/cfgtoollogs/emca/&lt;span style="color: rgb(255, 0, 0);"&gt;{ORACLE_SID}&lt;/span&gt;/emca_repos_drop_2006-01-18_03-02-57-PM.log&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-7566107954049763926?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/7566107954049763926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=7566107954049763926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/7566107954049763926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/7566107954049763926'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2007/08/oracle-10g-enterprise-manager-emca.html' title='Oracle 10G enterprise manager (emca)'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7118467286958151494.post-2157148263876058443</id><published>2007-08-20T03:40:00.000-07:00</published><updated>2008-03-18T00:57:00.696-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dataguard'/><title type='text'>Batch scripts to set up asyncronous standby log shipping for oracle in windows</title><content type='html'>&lt;span style="font-family:times new roman;"&gt;This setup consists of setting up manual compressed log shipping for oracle using windows batch scripts&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(0, 0, 153);font-family:times new roman;" &gt;.&lt;br /&gt;&lt;br /&gt;Prod site:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;* Create following directories in log_archive_dest: OLD, TMP&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;* Guessing archives are created with ARC extension. Other case scripts should be modified&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;* Reserve a  domain user account  and  grant him access to both prod and standby servers. For easy, i granted him local administrator account in both servers but u may try to restrict access. If there is no domain available, then create local user account with the same user name &amp;amp; password on both prod and standby servers.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;* You should download gnu awk and arj32 utility from net and place then on somewhere at %PATH%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;* Share log_archive_dest folder of the standby and schedule script on prod with the user account you reserved&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;* You should modify {...} parameters for your environment&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;font-family:times new roman;" &gt;logmove.bat&lt;/span&gt; &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;set ORACLE_SID=&lt;span style="color: rgb(255, 0, 0);"&gt;{ORACLE_SID}&lt;/span&gt;&lt;br /&gt;set LOG_DEST=&lt;span style="color: rgb(255, 0, 0);"&gt;{log_archive_dest}&lt;/span&gt;&lt;br /&gt;set SCRIPT_DEST=&lt;span style="color: rgb(255, 0, 0);"&gt;{where to place this script}&lt;/span&gt;&lt;br /&gt;set LOGFILE=%SCRIPT_DEST%\logmove.log&lt;br /&gt;set TEMP_FILE=%SCRIPT_DEST%\logmove.tmp&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;dir /OD %LOG_DEST%\*.ARC|findstr .ARC|awk "{print $4}"&gt;%TEMP_FILE%&lt;br /&gt;for /F "eol=; tokens=1" %%i in (%TEMP_FILE%) do @arj32 a -e %LOG_DEST%\TMP\%%i.ARJ %LOG_DEST%\%%i &gt;&gt; %LOGFILE%&lt;br /&gt;for /F "eol=; tokens=1" %%i in (%TEMP_FILE%) do @move /Y %LOG_DEST%\%%i %LOG_DEST%\OLD\ &gt;&gt; %LOGFILE%&lt;br /&gt;dir /OD %LOG_DEST%\TMP\*.ARC.ARJ |findstr .ARC.ARJ |awk "{print $4}"&gt;%TEMP_FILE%&lt;br /&gt;for /F "eol=; tokens=1" %%i in (%TEMP_FILE%) do @move /Y %LOG_DEST%\TMP\%%i \\&lt;span style="color: rgb(255, 0, 0);font-family:times new roman;" &gt;{standby server}&lt;/span&gt;\archive &gt;&gt; %LOGFILE%&lt;br /&gt;rem del /Q %TEMP_FILE% &gt;&gt; %LOGFILE%&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:times new roman;font-size:100%;"  &gt;&lt;span style="font-style: italic; color: rgb(51, 51, 255);"&gt;Standby Site:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:times new roman;"&gt;* Guessing archives are created with ARC extension. Other case scripts should be modified&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;* U should download gnu awk and arj32 utility from net and place then on somewhere at %PATH%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;* You should modify {...} parameters for your environment&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;* Schedule script with the user account you reserved&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;span style="font-weight: bold;"&gt;logapply.bat&lt;/span&gt;&lt;br /&gt;set ORACLE_SID=&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{ORACLE_SID}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;set LAGTIME=0.0417&lt;br /&gt;rem set LAGTIME=0&lt;br /&gt;set SCRPTLOC=&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{where to place this script}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;set LOG_DEST=&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{log_archive_dest}&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;set TEMP_FILE=%SCRPTLOC%\logapply.tmp&lt;br /&gt;set LOGFILE=%SCRPTLOC%\logapply.log&lt;br /&gt;dir /OD %LOG_DEST%\*.ARC.ARJ |find ".ARC.ARJ" |awk "{print $5}"&gt;%TEMP_FILE%&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{Drive of &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{log_archive_dest}&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;: for example C:, D: ...}&lt;br /&gt;&lt;/span&gt;cd %LOG_DEST%&lt;br /&gt;for /F "eol=; tokens=1" %%i in (%TEMP_FILE%) do @arj32 e -n %%i &gt;&gt; %LOGFILE%&lt;br /&gt;sqlplus /nolog @%SCRPTLOC%\standby_recover.sql %LAGTIME% 1 &gt;&gt; %LOGFILE%&lt;br /&gt;sqlplus /nolog  @&lt;span style="color: rgb(255, 102, 0);"&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;c:\temp\recover.sql&lt;/span&gt; &lt;/span&gt;&gt;&gt; %LOGFILE%&lt;br /&gt;if {%ERRORLEVEL%} == {0} (&lt;br /&gt;echo Database %ORACLE_SID% is available &gt;&gt; %SCRPTLOC%\sby.log&lt;br /&gt;) else (&lt;br /&gt;echo Database %ORACLE_SID% is NOT available &gt;&gt; %SCRPTLOC%\sby.log&lt;br /&gt;)&lt;br /&gt;del /Q c:\temp\recover.sql&lt;br /&gt;del /Q %TEMP_FILE%&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;span style="font-weight: bold;"&gt;standby_recover.sql&lt;/span&gt;&lt;br /&gt;connect sys/&lt;span style="color: rgb(255, 0, 0);"&gt;{sys password}&lt;/span&gt; as sysdba&lt;br /&gt;set trimspool on linesize 200 head off feedback off sqlprompt "--" verify off&lt;br /&gt;spool &lt;span style="color: rgb(0, 102, 0);"&gt;c:\temp\recover.sql&lt;/span&gt;&lt;br /&gt;select 'connect sys/&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{sys password}&lt;/span&gt; &lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt; as sysdba'||chr(10)||&lt;br /&gt;    'set autorecovery on'||chr(10)||&lt;br /&gt;    'recover standby database until time '''||&lt;br /&gt;to_char(sysdate - &amp;amp;1,'YYYY-MM-DD:HH24:MI:SS')||''';'||chr(10)||&lt;br /&gt;    'exit;' from dual;&lt;br /&gt;spool off&lt;br /&gt;exit&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote style="font-family: times new roman;"&gt;&lt;/blockquote&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;span style="font-weight: bold;"&gt;logremove.bat&lt;/span&gt;&lt;br /&gt;set ORACLE_SID=&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{ORACLE_SID}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;set SCRPTLOC=&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{where to place this script}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;set LOG_DEST=&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{log_archive_dest}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;set TEMP_FILE=%SCRPTLOC%\tmp.txt&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;set TEMP_FILE2=%SCRPTLOC%\tmp2.txt&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;set LOGFILE=%SCRPTLOC%\logremove.log&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;set LASTLOG=99999&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;echo.|time|date|find "current" &gt;&gt; %LOGFILE%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;echo.|sqlplus /nolog @%SCRPTLOC%\lastarchno.sql |find "MAKEGREP"|awk "{print $2}" &gt; %TEMP_FILE%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;echo Set and Check if last archive no is valid &gt;&gt; %LOGFILE%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;set LAST_ARCHNO=NONE&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;for /F "eol=; tokens=1" %%i in (%TEMP_FILE%) do @set LAST_ARCHNO=%%i&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;echo last archive is %LAST_ARCHNO% &gt;&gt; %LOGFILE%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;rem&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;rem Following checks if log is recycled to beginning, then exits script. This stuation should be handled manually&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;rem&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;for %%i in (%LOG_DEST%\*%LASTLOG%.ARC) do goto end&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;rem&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;rem Following checks if last archive log is valid&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;rem&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;for %%i in (%LOG_DEST%\*%LAST_ARCHNO%.ARC) do goto cont&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;echo Last archive is not valid &gt;&gt; %LOGFILE%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;goto end&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;:cont&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;echo %LAST_ARCHNO% &gt; %SCRPTLOC%\lastarchno.txt&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;echo deleting archives &gt;&gt; %LOGFILE%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;dir /O-N %LOG_DEST%\*.ARC |find ".ARC" |awk "{print $5}"&gt;%TEMP_FILE%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;:repeat&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;set CURRENT_FILE=NONE&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;for /F "eol=; tokens=1" %%i in (%TEMP_FILE%) do @set CURRENT_FILE=%%i&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;if "%CURRENT_FILE%" == "NONE" goto end&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;call set TMP_STR=%%CURRENT_FILE:%LAST_ARCHNO%=%%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;if NOT "%TMP_STR%" == "%CURRENT_FILE%" goto end&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;type %TEMP_FILE%|find /v "%CURRENT_FILE%" &gt; %TEMP_FILE2%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;type %TEMP_FILE2% &gt; %TEMP_FILE%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;set CURRENT_FILE=%LOG_DEST%\%CURRENT_FILE%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;echo deleting %CURRENT_FILE% and %CURRENT_FILE%.ARJ &gt;&gt; %LOGFILE%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;del /Q %CURRENT_FILE% &gt;&gt; %LOGFILE%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;del /Q %CURRENT_FILE%.ARJ &gt;&gt; %LOGFILE%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;goto repeat&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;:end&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;del /Q %TEMP_FILE% &gt;&gt; %LOGFILE%&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;del /Q %TEMP_FILE2% &gt;&gt; %LOGFILE%&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:times new roman;font-size:85%;"  &gt;lastarchno.sql&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;connect sys/&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{sys password}&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt; as sysdba&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;set trimspool on linesize 200 head off feedback off sqlprompt "--" verify off&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;select 'MAKEGREP' grep,max(sequence#) from v$log_history;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;exit&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(0, 0, 153);font-family:times new roman;" &gt;Prod site:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="font-weight: bold;"&gt;* &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;Share script folder of the standby where &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;lastarchno.txt is in&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt; and schedule script on prod with the user account you reserved&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;&lt;span style="font-weight: bold;"&gt;logremoveprod.bat&lt;/span&gt;&lt;br /&gt;set ORACLE_SID=&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{ORACLE_SID}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;set LOG_DEST=&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{log_archive_dest}&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;\OLD&lt;br /&gt;set SCRIPT_DEST=&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;{where to place this script}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;set LOGFILE=%SCRIPT_DEST%\logremoveprod.log&lt;br /&gt;set TEMP_FILE=%SCRIPT_DEST%\logremoveprod.tmp&lt;br /&gt;set TEMP_FILE2=%SCRIPT_DEST%\logremoveprod2.tmp&lt;br /&gt;set LASTLOG=199999&lt;br /&gt;echo.|time|date|find "current" &gt;&gt; %LOGFILE%&lt;br /&gt;set LAST_ARCHNO=NONE&lt;br /&gt;for /F "eol=; tokens=1" %%i in (\\&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);font-family:times new roman;" &gt;{standby server}&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:times new roman;"&gt;\scripts\lastarchno.txt) do @set LAST_ARCHNO=%%i&lt;br /&gt;echo last archive is %LAST_ARCHNO% &gt;&gt; %LOGFILE%&lt;br /&gt;rem&lt;br /&gt;rem Following checks if log is recycled to beginning, then exits script. This stuation should be handled manually&lt;br /&gt;rem&lt;br /&gt;for %%i in (%LOG_DEST%\*%LASTLOG%.ARC) do goto end&lt;br /&gt;rem&lt;br /&gt;rem Following checks if last archive log is valid&lt;br /&gt;rem&lt;br /&gt;for %%i in (%LOG_DEST%\*%LAST_ARCHNO%.ARC) do goto cont&lt;br /&gt;echo Last archive is not valid &gt;&gt; %LOGFILE%&lt;br /&gt;goto end&lt;br /&gt;:cont&lt;br /&gt;echo checking archive validity &gt;&gt; %LOGFILE%&lt;br /&gt;dir /O-N %LOG_DEST%\*.ARC |find ".ARC" |awk "{print $4}"&gt;%TEMP_FILE%&lt;br /&gt;:rpt&lt;br /&gt;set CURRENT_FILE=NONE&lt;br /&gt;for /F "eol=; tokens=1" %%i in (%TEMP_FILE%) do @set CURRENT_FILE=%%i&lt;br /&gt;if "%CURRENT_FILE%" == "NONE" goto hata&lt;br /&gt;call set TMP_STR=%%CURRENT_FILE:%LAST_ARCHNO%=%%&lt;br /&gt;if NOT "%TMP_STR%" == "%CURRENT_FILE%" goto cnt&lt;br /&gt;type %TEMP_FILE%|find /v "%CURRENT_FILE%" &gt; %TEMP_FILE2%&lt;br /&gt;type %TEMP_FILE2% &gt; %TEMP_FILE%&lt;br /&gt;goto rpt&lt;br /&gt;:hata&lt;br /&gt;echo Applied last archive does not exists in list &gt;&gt; %LOGFILE%&lt;br /&gt;goto end&lt;br /&gt;:cnt&lt;br /&gt;echo deleting archives &gt;&gt; %LOGFILE%&lt;br /&gt;dir /O-N %LOG_DEST%\*.ARC |find ".ARC" |awk "{print $4}"&gt;%TEMP_FILE%&lt;br /&gt;:repeat&lt;br /&gt;set CURRENT_FILE=NONE&lt;br /&gt;for /F "eol=; tokens=1" %%i in (%TEMP_FILE%) do @set CURRENT_FILE=%%i&lt;br /&gt;if "%CURRENT_FILE%" == "NONE" goto end&lt;br /&gt;call set TMP_STR=%%CURRENT_FILE:%LAST_ARCHNO%=%%&lt;br /&gt;if NOT "%TMP_STR%" == "%CURRENT_FILE%" goto end&lt;br /&gt;type %TEMP_FILE%|find /v "%CURRENT_FILE%" &gt; %TEMP_FILE2%&lt;br /&gt;type %TEMP_FILE2% &gt; %TEMP_FILE%&lt;br /&gt;set CURRENT_FILE=%LOG_DEST%\%CURRENT_FILE%&lt;br /&gt;echo deleting %CURRENT_FILE% &gt;&gt; %LOGFILE%&lt;br /&gt;del /Q %CURRENT_FILE% &gt;&gt; %LOGFILE%&lt;br /&gt;goto repeat&lt;br /&gt;:end&lt;br /&gt;del /Q %TEMP_FILE% &gt;&gt; %LOGFILE%&lt;br /&gt;del /Q %TEMP_FILE2% &gt;&gt; %LOGFILE%&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7118467286958151494-2157148263876058443?l=oracle.erkansaka.org' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle.erkansaka.org/feeds/2157148263876058443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7118467286958151494&amp;postID=2157148263876058443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/2157148263876058443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7118467286958151494/posts/default/2157148263876058443'/><link rel='alternate' type='text/html' href='http://oracle.erkansaka.org/2007/08/batch-scripts-to-set-up-asyncronous.html' title='Batch scripts to set up asyncronous standby log shipping for oracle in windows'/><author><name>Erkan SAKA</name><uri>https://profiles.google.com/110501507001755981851</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-aa0SQ1oi4HI/AAAAAAAAAAI/AAAAAAAAAoo/haeh8U3SwV4/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
