<?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-14426449</id><updated>2011-04-21T22:06:39.471+02:00</updated><title type='text'>Carl's Oracle</title><subtitle type='html'>Orca's  Thoughts about the Oracle Database</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://orcasoracle.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://orcasoracle.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Carl</name><uri>http://www.blogger.com/profile/06874492144390610793</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/img/35/6291/1024/Carl_r1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-14426449.post-113058361412313046</id><published>2005-10-29T12:56:00.000+02:00</published><updated>2005-10-29T13:01:33.930+02:00</updated><title type='text'>Leaving Blogger.com</title><content type='html'>Hi,&lt;br /&gt;I am very thankfull to have the oportunity to use this free blog;&lt;br /&gt;Now i move(d) to &lt;a href="http://orcasoracle.bloghi.com/"&gt;http://orcasoracle.bloghi.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The reason for is the much better RTF-mode Editor. I spent a lot of time to format my messages. I want spent more time to increase the quality of my postings ;-)&lt;br /&gt;&lt;br /&gt;Will delete the blog at December 15th&lt;br /&gt;&lt;br /&gt;With kind regards&lt;br /&gt;Carl&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14426449-113058361412313046?l=orcasoracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcasoracle.blogspot.com/feeds/113058361412313046/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14426449&amp;postID=113058361412313046' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/113058361412313046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/113058361412313046'/><link rel='alternate' type='text/html' href='http://orcasoracle.blogspot.com/2005/10/leaving-bloggercom.html' title='Leaving Blogger.com'/><author><name>Carl</name><uri>http://www.blogger.com/profile/06874492144390610793</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/img/35/6291/1024/Carl_r1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14426449.post-112983252962827085</id><published>2005-10-20T20:14:00.000+02:00</published><updated>2005-10-20T23:00:19.586+02:00</updated><title type='text'>A deeper look to constraints ...</title><content type='html'>Hi,&lt;br /&gt;did it not happen to you too? You work with something a long time and because it's complex you make some suppositions which bases on experiences. But one fine day you touch really ground.&lt;br /&gt;So today;-)&lt;br /&gt;&lt;br /&gt;I am a developer DBA (what's this? A DBA which is not on production site - but on the site where the software is developed to support/convince the developers and to do the database side stuff).&lt;br /&gt;&lt;p lang="en-GB"&gt;Even though the Software works with an object model we let the database be the master of data. We have an Activity table which holds the activities of a company. The activities are linked together in a Double Linked List (previous/next Activity) implemented with foreign key&lt;br /&gt;relationships.&lt;/p&gt;&lt;b&gt;I made following notice :&lt;/b&gt;&lt;br /&gt;&lt;p lang="en-GB"&gt;When I deleted all Activities of a company I got no&lt;br /&gt;FOREIGN KEY Violation?&lt;/p&gt;&lt;blockquote&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SQL&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;delete from activity where company_id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;='5F765BAACB194E56A43EBF35D5A6694A'; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;11&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;rows&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;deleted &lt;/span&gt; &lt;/span&gt;      &lt;/blockquote&gt;&lt;p lang="en-GB"&gt;&lt;b&gt;Let us look closer :&lt;/b&gt;&lt;/p&gt;When Oracle starts to delete one of these four activities a FOREING KEY is always violated.&lt;br /&gt;&lt;br /&gt;Activity (1)    Activity (2)  Activity (3)  Activity (4)&lt;br /&gt;      ID       &lt;-     PREV_ID       NEXT_ID  -&gt;   ID (NULL)&lt;br /&gt;NEXT_ID -&gt; ID &lt;- PREV_ID &lt;- PREV_ID NULL &lt;- PREV_ID NEXT_ID -&gt; ID NEXT_ID -&gt; NULL&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;REMARK from author : did not succeed inlcuding a HTML-Table - sorry :-(&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As following SQL shows:&lt;br /&gt;&lt;p&gt; &lt;/p&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SQL&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;delete from activity where company_id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;='5F765BAACB194E56A43EBF35D5A6694A' &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;and rownum &amp;lt; 3;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;delete&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;from activity where company_id ='5F765BAACB194E56A43EBF35D5A6694A'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;and rownum &amp;lt; 3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ORA-02292:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Integritäts-Constraint (CRE.ACTIVITY_NEXT_FK) verletzt -&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;untergeordneter Datensatz gefunden&lt;/span&gt;&lt;/span&gt; &lt;/blockquote&gt;&lt;br /&gt;&lt;p lang="en-GB"&gt;&lt;b&gt;I could not bring these experiences together :&lt;/b&gt;&lt;/p&gt; &lt;ol&gt;   &lt;li&gt;Delete of one linked Activity lead to &lt;span style="color: rgb(255, 102, 0);"&gt;FOREIGN KEY VIOLATION&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;Delete of the complete List -&amp;gt; &lt;span style="color: rgb(255, 102, 0);"&gt;NO FOREIGN KEY VIOLATION&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; Contacted Oracle support.  - 30 minutes later&lt;br /&gt;&lt;p lang="en-GB"&gt;the oracle support analyst gave me the hint from Oracle Concepts&lt;br /&gt;Guide:&lt;/p&gt; &lt;div style="text-align: center; color: rgb(255, 153, 0);"&gt;This case also shows that constraint checking is deferred until the&lt;br /&gt;complete execution of the statement. All rows are inserted first, then all rows are&lt;br /&gt;checked for constraint violations. You can also defer the checking of constraints until the&lt;br /&gt;end of the transaction.&lt;/div&gt; &lt;p style="margin-left: 1.25cm;" lang="en-GB"&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;&lt;span style="font-family:Franklin Gothic Medium;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;b&gt;Now I understood: &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;First Oracle deletes the complete rowset and then it checks the Referential integrity.&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt;   &lt;li&gt;This means even in a DML operation a Constraint can be violated and no error is raised at the end of DML when the constraint then is not violated any more.&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt;   &lt;li&gt;Deleting the complete linked List ends normally – All activities have been deleted so no one exists to point to a deleted one.&lt;/li&gt; &lt;/ul&gt; So I learned this today and I am happy to be able to learn again interesting aspects or oracle and come into the deep! On development side we only implement a FOREIGN KEY ON DELETTE CASCADE Relationship referencing the Company table.&lt;br /&gt;&lt;p lang="en-GB"&gt;Carl&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;You can test this – here the scripts and a &lt;/span&gt;&lt;b style="font-weight: bold;"&gt;data generator.&lt;/b&gt;&lt;br /&gt;&lt;p lang="en-GB"&gt;The Table DDL :&lt;br /&gt;&lt;/p&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="color: rgb(0, 153, 0);"&gt;-- Create table &lt;/span&gt;&lt;br /&gt;create table&lt;br /&gt;ACTIVITY&lt;br /&gt;(&lt;br /&gt;ID  RAW(16) not null,&lt;br /&gt;&lt;br /&gt;COMPANY_ID RAW(16) not null,&lt;br /&gt;NEXT_ID RAW(16),&lt;br /&gt;&lt;br /&gt;PREV_ID RAW(16)&lt;br /&gt;)&lt;br /&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;-- Create/Recreate primary, unique and foreign key constraints&lt;/span&gt;&lt;br /&gt;alter table ACTIVITY&lt;br /&gt;add constraint ACTIVITY_PK&lt;br /&gt;primary key (ID)&lt;br /&gt;;&lt;br /&gt;alter table ACTIVITY&lt;br /&gt;add constraint&lt;br /&gt;ACTIVITY_NEXT_FK foreign key (NEXT_ID)&lt;br /&gt;references ACTIVITY&lt;br /&gt;(ID);&lt;br /&gt;alter table ACTIVITY&lt;br /&gt;add constraint ACTIVITY_PREV_FK&lt;br /&gt;foreign key (PREV_ID)&lt;br /&gt;references ACTIVITY (ID);&lt;br /&gt;--&lt;br /&gt;Create/Recreate indexes&lt;br /&gt;create index ACTIVITY_NEXT_FK on ACTIVITY&lt;br /&gt;(NEXT_ID)&lt;br /&gt;;&lt;br /&gt;create index ACTIVITY_PREV_FK on ACTIVITY&lt;br /&gt;(PREV_ID)&lt;br /&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The generator Test-Script :&lt;br /&gt;DECLARE&lt;br /&gt;&lt;br /&gt;l_activity PLS_INTEGER :=0;&lt;br /&gt;l_Company_id&lt;br /&gt;RAW(16);&lt;br /&gt;l_prev_act_id RAW(16);&lt;br /&gt;l_Curr_act_id RAW(16);&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;FOR Company IN 1 .. 500&lt;br /&gt;LOOP&lt;br /&gt;&lt;br /&gt;l_Company_id := SYS_GUID();&lt;br /&gt;l_prev_act_id :=&lt;br /&gt;SYS_GUID();&lt;br /&gt;&lt;br /&gt;INSERT INTO&lt;br /&gt;Activity&lt;br /&gt;(Id,&lt;br /&gt;Company_Id,&lt;br /&gt;Next_Id,&lt;br /&gt;Prev_Id)&lt;br /&gt;VALUES&lt;br /&gt;(l_prev_act_id,&lt;br /&gt;l_Company_Id,&lt;br /&gt;NULL,&lt;br /&gt;NULL);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;FOR&lt;br /&gt;ii IN 1 .. 10 LOOP&lt;br /&gt;&lt;br /&gt;l_Curr_act_id := SYS_GUID();&lt;br /&gt;&lt;br /&gt;INSERT&lt;br /&gt;INTO&lt;br /&gt;Activity&lt;br /&gt;(Id,&lt;br /&gt;Company_Id,&lt;br /&gt;Next_Id,&lt;br /&gt;Prev_Id)&lt;br /&gt;VALUES&lt;br /&gt;(l_Curr_act_id,&lt;br /&gt;l_Company_Id,&lt;br /&gt;NULL,&lt;br /&gt;l_prev_act_id);&lt;br /&gt;&lt;br /&gt;UPDATE&lt;br /&gt;Activity Act&lt;br /&gt;SET Act.Next_Id = l_Curr_act_id&lt;br /&gt;WHERE Id =&lt;br /&gt;l_prev_act_id;&lt;br /&gt;&lt;br /&gt;l_prev_act_id := l_Curr_act_id;&lt;br /&gt;&lt;br /&gt;END&lt;br /&gt;LOOP;&lt;br /&gt;END LOOP;&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;/span&gt;&lt;p&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14426449-112983252962827085?l=orcasoracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcasoracle.blogspot.com/feeds/112983252962827085/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14426449&amp;postID=112983252962827085' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112983252962827085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112983252962827085'/><link rel='alternate' type='text/html' href='http://orcasoracle.blogspot.com/2005/10/deeper-look-to-constraints.html' title='A deeper look to constraints ...'/><author><name>Carl</name><uri>http://www.blogger.com/profile/06874492144390610793</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/img/35/6291/1024/Carl_r1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14426449.post-112715595644944777</id><published>2005-09-22T07:44:00.000+02:00</published><updated>2005-10-05T22:39:55.363+02:00</updated><title type='text'>Oracle 10G  : Pioneering innovations with Perfomancemonitoring</title><content type='html'>hi,&lt;br /&gt;I heard an amount about the new Features of the Oracle 10G server. A little bit set in my opinion is the Revolution of it's Meetering model in the performance.&lt;br /&gt;To Oracle 9 there were decisively two methods to get onto performance bottlenecks.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;statspack - &lt;span style="color: rgb(0, 153, 0);"&gt;goodies&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;- sampling of global database statistics&lt;br /&gt;- Top 5 Waitevents&lt;br /&gt;- Intance statistics&lt;br /&gt;- Top SQL's with buffer gets&lt;br /&gt;- Top SQL's with disk reads&lt;br /&gt;- Top SQL's with executions&lt;br /&gt;- Reporting Script&lt;br /&gt;- HTML-Reporing with &lt;a href="http://www.oraperf.com/"&gt;www.oraperf.com&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;ul&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;statspack - &lt;span style="color: rgb(255, 0, 0);"&gt;not so good&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;- missing connection of the waitevents to the executed SQL and to the session&lt;br /&gt;- agregated values mislead in interpretation of report (If for example 1000 users each is waiting 1 second on &lt;span style="color: rgb(255, 102, 0);"&gt;db file scattered read&lt;/span&gt; then this event woukd have 1000 seconds!)&lt;br /&gt;- hard to decide to an unkown System what a normal load is and waht not&lt;br /&gt;- No time lines  minimum interval 10 - 15 mins&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;    &lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;extended traceevent 10046 - &lt;span style="color: rgb(0, 153, 0);"&gt;goodies&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;- excellent wait time diagnostics on SQL/Session level&lt;br /&gt;- generate text report with tkprof&lt;br /&gt;- Easy to find the root cause of responsetime problem&lt;br /&gt;&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;extended traceevent 10046 - &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;not so good&lt;/span&gt;&lt;br /&gt;- could be get difficult to find the right session to monitor&lt;br /&gt;- not able to monitor reconnecting sessions&lt;br /&gt;- overhead&lt;br /&gt;- Sophisticated report tools are very expensive (&lt;a href="http://www.hotsos.com/"&gt;www.hotsos.com/&lt;/a&gt;)&lt;br /&gt;- focus on only one session - difficult to trace programs which allocate more then one datbase session.&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;both aproaches do not support time lines to monitor - all metering data is aggregated. So you see not the timing of the real peaks in statement execution or some waiting gaps due to for example slow logswitches.&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(255, 153, 0);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;Oracle 10G the new approach&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;It seems the fact that Oracle the gap between the global approach and&lt;br /&gt;the session-oriented approach is closed. The thousands of Html Pages of database control makes blind to see which really for the Future of the Oracle performance engineering innovative is. Here the a subset of the description of the new features (copied from metalink note &lt;span style="font-family:helvetica;"&gt;Note:276103.1)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:helvetica;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;New Time Model&lt;/span&gt;: In Oracle10g the database introduces a different way of store statistics and metrics regarding the time consumed by the different sessions connected. &lt;span style="font-weight: bold;"&gt;Without it, it would not be possible for the database to clearly identify the root cause of the problem in an acceptable timeframe. &lt;/span&gt; The following describes in detail the characteristics&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Active Session History (ASH)&lt;/span&gt;: One of the components of the AWR repository is the Active Session History (ASH) which collects every second samples of all the sessions that are in status "waiting" from v$sessions (inactive sessions are not captured).&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-family:helvetica;"&gt;&lt;br /&gt;&lt;/span&gt; This features allows to report a resource costing SQL query with it's waitevents (look at V$ACTIVE_SESSION_HISTORY) with it's time line and with it's effective execution plans. The data is kept in the Oracle repository (DBA_HIST-Views)&lt;br /&gt;&lt;br /&gt;- V$ACTIVE_SESSION_HISTORY&lt;span style="font-family:helvetica;"&gt;&lt;br /&gt;- &lt;/span&gt;DBA_HIST_ACTIVE_SESS_HISTORY&lt;br /&gt;&lt;br /&gt;All data is kept in tables and so easy to report. SQL's are identifed by a unique SQL_ID and completly stored (CLOB) in the repository - to aggregate - to format - to export.&lt;br /&gt;The new Database Control allows a graphical view on this data. And what looks so colorful and easy to maintain is the new oracle approach - it makes you even more independent from expensive perfomance tools providers!&lt;br /&gt;&lt;br /&gt;Good job Oracle - Please continue!&lt;br /&gt;&lt;br /&gt;Carl&lt;br /&gt;&lt;br /&gt;UPDATE : found a document which goes into deep of Oracle 10G new tuning model.&lt;br /&gt;&lt;a href="http://www.oracle.com/technology/products/manageability/database/pdf/twp03/TWP_manage_automatic_performance_diagnosis_10gr2.pdf"&gt;Automatic Performance Diagnosis with Oracle Database 10g Release 2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Carl&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14426449-112715595644944777?l=orcasoracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcasoracle.blogspot.com/feeds/112715595644944777/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14426449&amp;postID=112715595644944777' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112715595644944777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112715595644944777'/><link rel='alternate' type='text/html' href='http://orcasoracle.blogspot.com/2005/09/oracle-10g-pioneering-innovations-with.html' title='Oracle 10G  : Pioneering innovations with Perfomancemonitoring'/><author><name>Carl</name><uri>http://www.blogger.com/profile/06874492144390610793</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/img/35/6291/1024/Carl_r1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14426449.post-112437743554084703</id><published>2005-08-18T17:03:00.000+02:00</published><updated>2005-08-19T11:03:44.586+02:00</updated><title type='text'>ORA-20000: ORU-10028: line length overflow, limit of 255 chars per line</title><content type='html'>&lt;span style=";font-family:courier new;font-size:130%;"  &gt;&lt;span style="font-family:lucida grande;"&gt;&lt;/span&gt;&lt;/span&gt;Do you like the full featured supplied PL/SQL Package &lt;span style="color: rgb(0, 204, 204); font-weight: bold;"&gt;DBMS_OUTPUT&lt;/span&gt;? It seems to be the packgage which ranks in top position with it's limitations ;-)&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;limited maximal output buffer&lt;/li&gt;   &lt;li&gt;limited length of line (255) &lt;/li&gt;   &lt;li&gt;limited support of output of datatypes like CLOB, XML, ... &lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;Some points will be worked out with Oracle 10.2 - but why Oracle let it's users wait so long?&lt;br /&gt;At the current project i developed a source code generator generating a table api with special demand for an OR-Mapper. For some easy usage i printed the code templates to output, strored as CLOB.&lt;br /&gt;After 255 digits execeded i made this experience :&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;SET SERVEROUTPUT ON&lt;br /&gt;DECLARE&lt;br /&gt;l_str VARCHAR2(1024) := '01234567890123456789012345678901234567890123456789' ;&lt;br /&gt;l_xl_str VARCHAR2(1024);&lt;br /&gt;BEGIN&lt;br /&gt;l_xl_str := l_str || chr(10) || l_str || chr(10) || l_str || chr(10) || l_str || chr(10) || l_str || chr(10);&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;  dbms_output.put_line('LENGTH : ' || length(l_xl_str));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;  dbms_output.put_line(l_xl_str);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;l_xl_str := l_xl_str || chr(10) || l_str;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;  dbms_output.put_line('LENGTH : ' || length(l_xl_str));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;  dbms_output.put_line(l_xl_str); &lt;/span&gt;&lt;br /&gt;END;&lt;br /&gt;/&lt;/pre&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;SQL&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;LENGTH : 255&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;01234567890123456789012345678901234567890123456789&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;01234567890123456789012345678901234567890123456789&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;01234567890123456789012345678901234567890123456789&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;01234567890123456789012345678901234567890123456789&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;01234567890123456789012345678901234567890123456789&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;LENGTH : 306&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;DECLARE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  l_str VARCHAR2(1024) := '01234567890123456789012345678901234567890123456789' ;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  l_xl_str VARCHAR2(1024);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  l_xl_str := l_str || chr(10) || l_str || chr(10) || l_str || chr(10) || l_str || chr(10) || l_str || chr(10);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  dbms_output.put_line('LENGTH : ' || length(l_xl_str));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  dbms_output.put_line(l_xl_str);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  l_xl_str := l_xl_str || chr(10) || l_str;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  dbms_output.put_line('LENGTH : ' || length(l_xl_str));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  dbms_output.put_line(l_xl_str);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;END;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ORA-20000: ORU-10028: line length overflow, limit of 255 chars per line&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ORA-06512: at "SYS.DBMS_OUTPUT", line 35&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ORA-06512: at "SYS.DBMS_OUTPUT", line 133&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ORA-06512: at line 11&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/span&gt;Immediatly i searched for a workaround on the web - even on Tom Kytes AskTom site i did not found something which really helped. So i had to find my own workaround. The Procedure can print maximal 32K sized string due to the PL/SQL limitation. But it could be overloaded with CLOB datatype parameter and the use of &lt;span style="font-weight: bold; color: rgb(0, 204, 204);"&gt;DBMS_LOB&lt;/span&gt; package inside of the procedure.&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;DECLARE&lt;br /&gt;l_Str    VARCHAR2(1024) := '01234567890123456789012345678901234567890123456789';&lt;br /&gt;l_Xl_Str VARCHAR2(1024);&lt;br /&gt;&lt;br /&gt;PROCEDURE &lt;span style="color: rgb(0, 204, 204);"&gt;Put_Xl_Line&lt;/span&gt;(p_Str IN VARCHAR2) IS&lt;br /&gt; l_Length PLS_INTEGER := 0;&lt;br /&gt; l_Offset PLS_INTEGER := 0;&lt;br /&gt; l_Cr_Pos PLS_INTEGER := 0;&lt;br /&gt; l_Line   VARCHAR2(256);&lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt; l_Length := Length(p_Str);&lt;br /&gt; l_Offset := 1;&lt;br /&gt;&lt;br /&gt; WHILE l_Offset &amp;lt;= l_Length LOOP&lt;br /&gt;   l_Cr_Pos := Instr(Substr(p_Str, l_Offset, 255),  Chr(10));&lt;br /&gt;   -- if last line without CR &lt;br /&gt;   IF (l_Cr_Pos = 0) THEN&lt;br /&gt;     l_Cr_Pos := l_Length - l_Offset + 2;&lt;br /&gt;   END IF;&lt;br /&gt;   l_Line := Substr(p_Str,  l_Offset,  l_Cr_Pos - 1);&lt;br /&gt;   Dbms_Output.Put_Line(l_Line);&lt;br /&gt;   l_Offset := l_Offset + l_Cr_Pos;&lt;br /&gt; END LOOP;&lt;br /&gt;END &lt;span style="color: rgb(0, 204, 204);"&gt;Put_Xl_Line&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;BEGIN&lt;br /&gt; l_Xl_Str := l_Str || Chr(10) || l_Str || Chr(10) || l_Str || Chr(10) ||&lt;br /&gt;             l_Str || Chr(10) || l_Str;&lt;br /&gt; Dbms_Output.Put_Line('LENGTH : ' || Length(l_Xl_Str));&lt;br /&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;  Put_Xl_Line(l_Xl_Str);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; l_Xl_Str := l_Xl_Str || Chr(10) || l_Str;&lt;br /&gt; Dbms_Output.Put_Line('LENGTH : ' || Length(l_Xl_Str));&lt;br /&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;  Put_Xl_Line(l_Xl_Str);&lt;/span&gt;&lt;br /&gt;END;&lt;br /&gt;/ &lt;/pre&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(0, 153, 0);"&gt;SQL&gt;&lt;br /&gt;&lt;br /&gt;LENGTH : 254&lt;br /&gt;01234567890123456789012345678901234567890123456789&lt;br /&gt;01234567890123456789012345678901234567890123456789&lt;br /&gt;01234567890123456789012345678901234567890123456789&lt;br /&gt;01234567890123456789012345678901234567890123456789&lt;br /&gt;01234567890123456789012345678901234567890123456789&lt;br /&gt;LENGTH : 305&lt;br /&gt;01234567890123456789012345678901234567890123456789&lt;br /&gt;01234567890123456789012345678901234567890123456789&lt;br /&gt;01234567890123456789012345678901234567890123456789&lt;br /&gt;01234567890123456789012345678901234567890123456789&lt;br /&gt;01234567890123456789012345678901234567890123456789&lt;br /&gt;01234567890123456789012345678901234567890123456789&lt;br /&gt;&lt;br /&gt;PL/SQL procedure successfully completed&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;Wow it really worked!!&lt;br /&gt;Carl ;-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &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/14426449-112437743554084703?l=orcasoracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcasoracle.blogspot.com/feeds/112437743554084703/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14426449&amp;postID=112437743554084703' title='5 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112437743554084703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112437743554084703'/><link rel='alternate' type='text/html' href='http://orcasoracle.blogspot.com/2005/08/ora-20000-oru-10028-line-length.html' title='ORA-20000: ORU-10028: line length overflow, limit of 255 chars per line'/><author><name>Carl</name><uri>http://www.blogger.com/profile/06874492144390610793</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/img/35/6291/1024/Carl_r1.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14426449.post-112437249663875715</id><published>2005-08-18T15:35:00.000+02:00</published><updated>2005-08-18T15:51:54.670+02:00</updated><title type='text'>9207 Install does not patch PRO*Fortran nor PRO*Cobol</title><content type='html'>Oracle alterted Users which downloaded the PatchtSet 6 ( discussed that days before ;-))&lt;br/&gt;to download and apply the PatchSet again!&lt;br/&gt;The reason was that two components have not been updated with the PatchSet 6 when patching 9.2.0.7.0 on top of patch set 9.2.0.6:&lt;br/&gt;&lt;br/&gt;&lt;ul&gt;&lt;li&gt;Pro*COBOL 1.8.77.6.0&lt;/li&gt;&lt;br/&gt;&lt;li&gt;Pro*FORTRAN 1.8.77.6.0&lt;/li&gt;&lt;/ul&gt; &lt;br/&gt;Please search in metalink for further information&lt;br/&gt;&lt;br/&gt;Carl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14426449-112437249663875715?l=orcasoracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcasoracle.blogspot.com/feeds/112437249663875715/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14426449&amp;postID=112437249663875715' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112437249663875715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112437249663875715'/><link rel='alternate' type='text/html' href='http://orcasoracle.blogspot.com/2005/08/9207-install-does-not-patch-profortran.html' title='9207 Install does not patch PRO*Fortran nor PRO*Cobol'/><author><name>Carl</name><uri>http://www.blogger.com/profile/06874492144390610793</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/img/35/6291/1024/Carl_r1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14426449.post-112384100640418442</id><published>2005-08-12T11:57:00.000+02:00</published><updated>2005-08-12T12:09:19.276+02:00</updated><title type='text'>Oracle releases Oracle Database 10g Developer's Release 2</title><content type='html'>Hi,&lt;br /&gt;&lt;br /&gt;Oracle 10G R2 (10.2) was released for the Linux platform first. Now after a while Oracle released the second edition of it's 10G database as developer edition (some beta state)  server on the &lt;a href="http://www.oracle.com/technology/software/products/database/oracle10g/index.html"&gt;technet&lt;/a&gt; for the windows platform.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14214/chapter1.htm#sthref12"&gt;What's new in Oracle 10G R2&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Personally i like the feature to develop .NET Stored Procedures in the Windows Edition.&lt;br /&gt;&lt;br /&gt;Carl&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14426449-112384100640418442?l=orcasoracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcasoracle.blogspot.com/feeds/112384100640418442/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14426449&amp;postID=112384100640418442' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112384100640418442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112384100640418442'/><link rel='alternate' type='text/html' href='http://orcasoracle.blogspot.com/2005/08/oracle-releases-oracle-database-10g.html' title='Oracle releases Oracle Database 10g Developer&apos;s Release 2'/><author><name>Carl</name><uri>http://www.blogger.com/profile/06874492144390610793</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/img/35/6291/1024/Carl_r1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14426449.post-112323475523639984</id><published>2005-08-05T11:28:00.000+02:00</published><updated>2005-08-05T14:20:46.066+02:00</updated><title type='text'>Oracles Patchset 6 (9.2.0.7) for the 9.2 Database Server and some stats</title><content type='html'>Hello,&lt;br /&gt;As i heard about the availability of the Patchset 6 (9.2.0.7) of the Oracle 9.2 Database server i was very surprised. I thought Patchset 5 would be the last Patchset and ... that all errors are finally patched ;-).&lt;br /&gt;For Analysis i scanned the bugs HTML document, pasted and prepared the bugs info with an editor and transformed it with awk. Now it had the right format for excel and then what else did you expect - I stored all the data in an 9.2 database (Patchlevel 3 ;-));&lt;br /&gt;&lt;br /&gt;With the data in the database you could answer  a lot of questions. I reduced that to two questions.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How many errors have been patched with each Pachset&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;Which are the top 20 Components (of 139)  have the largest amount of errors&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 153, 0);font-size:130%;" &gt;The Total Number of fixed Bugs for the Oracle 9.2 Database Server&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;SQL&gt; SELECT COUNT(*) FROM Buglist;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;  COUNT(*)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;----------&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;     10256&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;SQL&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;10256&lt;/span&gt; Bugs have been fixed with 6 Patchses about 1706/PatchSet.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 153, 0);font-size:130%;" &gt;How many Bugs have been fixed with each Patchset?&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;i would expects that the number of bugs decreases with every new Patchset.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;SQL&gt; SELECT COUNT(*), bl.FixedInRelease FROM Buglist bl group by bl.FixedInRelease;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  COUNT(*) FIXEDINRELEASE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;---------- ----------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      1347 9.2.0.2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      1053 9.2.0.3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      1554 9.2.0.4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;" &gt;      2547 9.2.0.5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;" &gt;      2188 9.2.0.6&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      1567 9.2.0.7&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;6 rows selected&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SQL&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1204/1194/1600/BugsTotal_FixedInRelease.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/1204/1194/400/BugsTotal_FixedInRelease.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;The number of bugs was increasing and had its peak level at Patchset &lt;span style="color: rgb(51, 204, 255);"&gt;9.2.0.5&lt;/span&gt;/&lt;span style="color: rgb(51, 204, 255);"&gt;9.2.0.6&lt;/span&gt;. &lt;span style="font-weight: bold;"&gt;46%&lt;/span&gt; of Bugs wer fixed in &lt;span style="color: rgb(51, 204, 255);"&gt;9.2.0.5&lt;/span&gt;/&lt;span style="color: rgb(51, 204, 255);"&gt;9.2.0.6 &lt;/span&gt;Patchsets. An explanation could be, when a new version of Oracle is released a lot of companies do not switch to the new version very quickly. Some database releases are even not used at all. For example on the current customers site Oracle 10g will be allowed to be used at 10.2 but not at main release 10.1.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;Patchset 6 is the one with 3rd place ranking in number of bug fixes. This is really disappointing. I will compare the 9.2 stats with the 10.2 stats and we will see if oracle is producing more quality then in past.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 153, 0);font-size:130%;" &gt;Top 20 Oracle Server 9.2 Bug Components?&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;In which areas does 9.2 have highest concentration on fixed bugs? Oracle sepereates it's errors in Components. There are 139 Components listed.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1204/1194/1600/TopOracle92BugComponents.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/1204/1194/400/TopOracle92BugComponents.jpg" alt="" border="0" /&gt;&lt;/a&gt;From the top 20 is see following Components  with heavy load.&lt;br /&gt;&lt;br /&gt;&lt;table str="" style="border-collapse: collapse; width: 210pt;" border="0" cellpadding="0" cellspacing="0" width="280"&gt; &lt;col style="width: 210pt;" width="280"&gt;&lt;col&gt;   &lt;tbody&gt;&lt;tr&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;   &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:130%;"&gt;2.1.29&lt;/span&gt;&lt;span style="font-size:130%;"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;Error May Occur&lt;/span&gt;&lt;span style="font-size:130%;"&gt; (961)&lt;/span&gt;&lt;br /&gt;This sound a little bit strange. A Compenent which fixed bugs which were difficult to find because they &lt;span style="font-style: italic;"&gt;may&lt;/span&gt; occure.&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;font-size:85%;"  &gt;2.1.29 Error May Occur&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="color: rgb(204, 204, 204);"&gt;The following table lists the Error May Occur bugs addressed in this patch set:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;Fixed in Release    Bug Number    Description&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;9.2.0.7    2375764    Export fails with ORA-1455 if leaf_blocks or distinct_keys &gt;= 2^31&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;9.2.0.7    2380561    "DRG-10817" from CATSEARCH with stemmed stopwords&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;9.2.0.7    2391697    ORA-235 doing backup with RMAN in nocatalog mode&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;9.2.0.7    2412991    ORA-12533 while resolving (duplicate) net services from names server&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;9.2.0.7    2672986    SET CONSTRAINT DEFERRED sometimes errors out with ORA-1031&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;9.2.0.7    2857330    ORA-1008 from Binds in CURSOR subqueries using WITH&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;9.2.0.7    2858082    False ORA-1652 in alert log when there is free space in RAC environment&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;9.2.0.7    2902077    Adding TEMP files with no size specified gives an error with ODM&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;9.2.0.7    2966778    Intermittent ORA-904 errors during heavy load&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);"&gt;9.2.0.7    3026474    ORA-20000 from DBMS_STATS importing table stats with missing column&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;&lt;span style="font-size:130%;"&gt;2.1.30 &lt;span style="color: rgb(255, 0, 0);"&gt;Internal Error May Occur (ORA-600)&lt;/span&gt; (791)&lt;/span&gt;&lt;br /&gt;This is the most famous section with ORA-00600 Errors. An ORA-00600 is an error in the oracle serve code which was not catched by any exception handler.&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;span style="color: rgb(192, 192, 192);font-family:courier new;font-size:85%;"  &gt;2.1.30 Internal Error May Occur (ORA-600)&lt;br /&gt;&lt;br /&gt;The following table lists the Internal Error May Occur (ORA-600) bugs addressed in this patch set:&lt;br /&gt;Fixed in Release    Bug Number    Description&lt;br /&gt;9.2.0.7    2307997    OERI [kolaHashFind:hash table] from SELECT xmltypeview over a database link&lt;br /&gt;9.2.0.7    2489130    OERI:1112 can occur while dumping PROCESSSTATE informatio&lt;br /&gt;9.2.0.7    2707302    OERI[KSSRMP1] in PMON during shutdown&lt;br /&gt;9.2.0.7    2736591    OCI-21500 [KGHALO2] with large value_sz values for OCIDefineByPos&lt;br /&gt;9.2.0.7    2783333    OERI[voprsla1] can occur when running a query&lt;br /&gt;9.2.0.7    2818800    OERI[kjzcwaitX] may occur in RAC&lt;br /&gt;9.2.0.7    2847303    OERI:kkofkrMarkK with FIRST_ROWS_N from GROUP BY&lt;br /&gt;9.2.0.7    2881246    Incorrect OERI[kcblibr_1] / OERI[kxttdropobj-1] can occur&lt;br /&gt;9.2.0.7    2887209    UGA memory leak / OERI:729 with failed shared database link connection&lt;br /&gt;9.2.0.7    2924135    False OERI:6074 can occur&lt;br /&gt;9.2.0.7    2972961    OERI[ktcdso-1] during refresh on commit of materialized view&lt;br /&gt;9.2.0.7    3032886    OERI[kjatioc:!ver] possible in RAC&lt;br /&gt;9.2.0.7    3048658    OERI [ksires_1] [BADOPTIONS] in RAC&lt;br /&gt;9.2.0.7    3116865    Various dumps can occur using XML clonenode&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table str="" style="border-collapse: collapse; width: 210pt;" border="0" cellpadding="0" cellspacing="0" width="280"&gt; &lt;col style="width: 210pt;" width="280"&gt;&lt;col&gt;   &lt;tbody&gt;&lt;/tbody&gt;&lt;tbody&gt;&lt;tr style="height: 13.5pt;" height="18"&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;table str="" style="border-collapse: collapse; width: 210pt;" border="0" cellpadding="0" cellspacing="0" width="280"&gt; &lt;col style="width: 210pt;" width="280"&gt;&lt;col&gt;   &lt;tbody&gt;&lt;/tbody&gt;&lt;tbody&gt;&lt;tr style="height: 13.5pt;" height="18"&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;ul style="font-weight: bold;"&gt;   &lt;li&gt;&lt;span style=";font-family:courier new;font-size:130%;"  &gt;&lt;span style="font-weight: normal;font-family:trebuchet ms;" &gt;2.1.31&lt;/span&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: normal;font-size:130%;" &gt;Process May Dump (ORA-7445) / Abend / Abort&lt;/span&gt; (604)&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: normal;"&gt;An Abortion of a server process user process terminates the oracle session, an abortion of a backround process like DBWriter &lt;span style="font-style: italic;"&gt;terminates &lt;/span&gt;the complete &lt;span style="font-style: italic;"&gt;instance&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt; &lt;span style="color: rgb(204, 204, 204);font-family:courier new;font-size:85%;"  &gt;2.1.31 Process May Dump (ORA-7445) / Abend / Abort&lt;br /&gt;&lt;br /&gt;The following table lists the Process May Dump (ORA-7445) / Abend / Abort bugs addressed in this patch set:&lt;br /&gt;Fixed in Release    Bug Number    Description&lt;br /&gt;9.2.0.7 4059639 * ORA-7445 SKGXPDMPCTX Instance Crash with 9.2.0.5 or 9.2.0.6 Patchset . This bug is alerted in Note:297306.1&lt;br /&gt;9.2.0.7    2000938    A process may dump in kjrgpar in OPS/RAC if an ORA-4031 occurs&lt;br /&gt;9.2.0.7    2314193    Dump from SELECT with query rewrite which uses MVIEW with functional index&lt;br /&gt;9.2.0.7    2363758    Returning NULL from an EXTPROC callout may dump&lt;br /&gt;9.2.0.7    2484985    Dump from anti or semi joins involving collections&lt;br /&gt;9.2.0.7    2487943    Bulk insert in PLSQL may dump (kprcdt / memcpy)&lt;br /&gt;9.2.0.7    2630783    Dump occurs inserting a VARRAY with 65535 elements&lt;br /&gt;9.2.0.7    2718235    Dump (evacnt) when query uses WINDOW NOSORT over an aggregation&lt;br /&gt;9.2.0.7    2763625    Some function pointers are stored in the SGA&lt;br /&gt;9.2.0.7    2768251    Query against composite partitioned table fails with ORA-900 or dumps&lt;br /&gt;9.2.0.7    2892189    Dump updating columns in a nested table with a trigger on the table&lt;br /&gt;9.2.0.7    2953897    Dump (kkqucpon) can occur during semantic analysis&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table str="" style="border-collapse: collapse; width: 210pt;" border="0" cellpadding="0" cellspacing="0" width="280"&gt; &lt;col style="width: 210pt;" width="280"&gt;&lt;col&gt;   &lt;tbody&gt;&lt;/tbody&gt;&lt;tbody&gt;&lt;tr style="height: 13.5pt;" height="18"&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt; &lt;ul style="font-weight: bold;"&gt;   &lt;li&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: normal;"&gt;2.1.28&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: normal;font-size:130%;" &gt;Wrong Results&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-weight: normal;"&gt;(501)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;This error hurts a lot. Data could get wrong values due to wrong results of  a Query.&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt; &lt;span style="color: rgb(204, 204, 204);font-family:courier new;font-size:85%;"  &gt;2.1.28 Wrong Results&lt;/span&gt;&lt;span style="color: rgb(204, 204, 204);font-size:85%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;The following table lists the Wrong Results bugs addressed in this patch set:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;Fixed in Release    Bug Number    Description&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;9.2.0.7    4080972 +    Wrong results from RBO range predicate on concatenated index with NULLs&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;9.2.0.7    2055862    OracleCachedRowSet.getRow() returns wrong value after last()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;9.2.0.7    2339943    Query using OR between two subtypes returns a wrong number of rows&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;9.2.0.7    2562253    Wrong results due to lost join predicate with predicate move around&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;9.2.0.7    2628526    Wrong results from outer join to inline view in SELECT list&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;9.2.0.7    2859498    Incorrect sort order when ORDER BY DESC against a view with PQ&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;9.2.0.7    2925619    JDBC Thin always default timezone to +00:00&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;9.2.0.7    2960012    Incorrect (large) 'logons current' in GV$SYSSTAT in RAC&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;9.2.0.7    2974848    GetElementsByTagName in DBMS_XMLDOM returns nodes in wrong order&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;9.2.0.7    3017095    ALTER MVIEW COMPILE does not update LAST_DDL_TIME in DBA/ALL/USER_OBJECTS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 204, 204);font-family:courier new;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-weight: bold;"&gt;   &lt;li&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;&lt;/span&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt; &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style=";font-family:trebuchet ms;font-size:100%;"  &gt;&lt;span style="font-family:georgia;"&gt;From the point of technology the Oracle Database Server has a leading role. This leading role must be confirmed by higher quality of the Oracle code.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;The Code is written in C/C++ and thus a great challenge to create solid code with it - even with a excellent staff of programmers. Microsoft has moved it's programmig model from low level C++ and an very low level component model (COM/DCOM) to .NET. This assures better software with more solid features in future.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;The Code has grown a lot so in future we will have to fight even with more bugs and Patchsets - if nothing changes.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;This article is not to blame oracle but to improve its quality!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;I will publish an update when the first Patchset of the Oracle 10G R2 was released.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Carl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&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/14426449-112323475523639984?l=orcasoracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcasoracle.blogspot.com/feeds/112323475523639984/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14426449&amp;postID=112323475523639984' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112323475523639984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112323475523639984'/><link rel='alternate' type='text/html' href='http://orcasoracle.blogspot.com/2005/08/oracles-patchset-6-9207-for-92.html' title='Oracles Patchset 6 (9.2.0.7) for the 9.2 Database Server and some stats'/><author><name>Carl</name><uri>http://www.blogger.com/profile/06874492144390610793</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/img/35/6291/1024/Carl_r1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14426449.post-112274201288959926</id><published>2005-07-30T18:41:00.000+02:00</published><updated>2005-07-30T20:51:41.476+02:00</updated><title type='text'>Paging a Query Resultset</title><content type='html'>hi,&lt;br /&gt;&lt;br /&gt;in a &lt;a href="http://www.microsoft.com/net/default.mspx"&gt;.NET&lt;/a&gt; driven project we got the demand to sample some ideas for paging of resultsets. With a database driven Client fetching of a complete resultset could last a very long time. First all the rows have to be fetched accross the network to the client. Then the client has to store the complete resultset in memory and probably has to convert the 'raw' rows into another format of data for example objects.&lt;br /&gt;&lt;br /&gt;Resources are not unlimited - as we know ;-) - so we should find an approach of - i like to call it - an 'endless machine';&lt;br /&gt;&lt;br /&gt;With google and searching for 'range paging' i found an interesteting article how to  &lt;a href="http://www.oracle.com/technology/products/jdev/tips/muench/rangepaging/index.html"&gt;page resultsets in an very &lt;/a&gt;effektive way.  The core functionality is very simple:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="bodycopy"&gt;&lt;code&gt;  &lt;/code&gt;&lt;blockquote  style="font-family:trebuchet ms;"&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;SELECT * FROM (&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;  SELECT &lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;/*+ FIRST_ROWS */&lt;/span&gt; IQ.*, ROWNUM AS Z_R_N FROM (&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;SELECT EMPNO, ENAME, SAL FROM EMP ORDER BY SAL DESC&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;  ) IQ  WHERE ROWNUM &lt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;:P0&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;  WHERE Z_R_N &gt;= &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;:P1&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;The &lt;span style="color: rgb(51, 102, 255);"&gt;blue business query&lt;/span&gt; is ceated by the client and wrapped by &lt;span style="color: rgb(255, 102, 0);"&gt;two nested range queries&lt;/span&gt;. This construct is he way to do this with an Oracle database. Setting the positional parameters &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;:P0&lt;/span&gt;/&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;:P1&lt;/span&gt; declares the window in the result set. When &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;:P0&lt;/span&gt; is 40 and&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;span style="font-weight: bold;"&gt;:P1&lt;/span&gt;&lt;/span&gt; is 20 then all rows in the window from r0w 21 till row 40 are ready to be fetched (the resultset should be larger the 40 ;-)). The &lt;span style="color: rgb(51, 204, 0);"&gt;FIRST_ROWS&lt;/span&gt; hint is a tip for the Oracle optimizer to use the most effective path to retrieve the data thru the range query. The design of the query is from &lt;a href="http://tkyte.blogspot.com/"&gt;Tom Kyte.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But the core construct does not handle the logic around paging. There must be some control around the construct - this resulted in the&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt; utl_page&lt;/span&gt; PL/SQL package.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Package design is simple.&lt;br /&gt;&lt;br /&gt;A method &lt;/span&gt;&lt;span class="bodycopy"&gt;(&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Create_Area&lt;/span&gt;) &lt;/span&gt;&lt;span class="bodycopy"&gt;creates and tests the parameters for the query window&lt;br /&gt;&lt;/span&gt; &lt;ul&gt;   &lt;li&gt;&lt;span class="bodycopy"&gt;the business query like : SELECT * FROM MY_OBJECTS ORDER BY OBJECT_NAME&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;&lt;span class="bodycopy"&gt;the pages size for example 20&lt;br /&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt; A method (&lt;span style="color: rgb(51, 102, 255); font-weight: bold;"&gt;Get_Nextpage&lt;/span&gt;)&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;which returns a REF Cursor (this is a variable which contains all information about an opened resultset originated by a given query) - Or simple returns the next page of a result set.&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt; A method (&lt;span style="color: rgb(51, 102, 255); font-weight: bold;"&gt;Get_Prevpage&lt;/span&gt;)&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;which returns a REF Curser - The previous page of the resultset.&lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;Ok let's begin. I used the Visuals Studio .NET 2003 with the Oracle plugin &lt;a href="http://www.oracle.com/technology/tech/dotnet/tools/index.html"&gt;Oracle Developer Tools for Visual Studio .NET&lt;/a&gt;. First let us create the Paging Area :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1204/1194/1600/utl_page_01.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/1204/1194/400/utl_page_01.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1204/1194/1600/utl_page_02.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/1204/1194/400/utl_page_02.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now fetch the next page :&lt;br /&gt;The query is ordered by object_name which you can see. An additional Colum &lt;span style="color: rgb(51, 102, 255); font-weight: bold;"&gt;Z_R_N&lt;/span&gt; tells you the position of the row int the complete rowset. Position 1 to 20 is fetched.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1204/1194/1600/utl_page_03.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/1204/1194/400/utl_page_03.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1204/1194/1600/utl_page_04.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/1204/1194/400/utl_page_04.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fetch the next Page - row 21 to 40 :&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1204/1194/1600/utl_page_05.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/1204/1194/400/utl_page_05.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1204/1194/1600/utl_page_06.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/1204/1194/400/utl_page_06.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Last but not least fetch of the previus page  -  rows 1 to  20&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1204/1194/1600/utl_page_07.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/1204/1194/400/utl_page_07.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1204/1194/1600/utl_page_08.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/1204/1194/400/utl_page_08.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1204/1194/1600/utl_page_09.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/1204/1194/400/utl_page_09.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That's it. Sure - this is not the only one possible way to solve the demand. You could store the unique id's of a resultset in a temporary table to use this as baseline for paging. But if i can achieve it i do not write to the database for some paging.&lt;br /&gt;&lt;br /&gt;If you want to get the PL/SQL Source Code then write to my employee-email kreitsch@csc.com and i will send it to you.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1204/1194/1600/utl_page_10.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/1204/1194/400/utl_page_10.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Another step could be to impelement the logic with a &lt;a href="http://msdn.microsoft.com/vcsharp/"&gt;C#&lt;/a&gt; Class. I know that a lot of OO-oriented developers do not like to code with the PL/SQL :-(.&lt;br /&gt;In a future article i like to write about the future of .NET and Oracle - a great future!&lt;br /&gt;Bye&lt;br /&gt;Carl&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="bodycopy"&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/14426449-112274201288959926?l=orcasoracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcasoracle.blogspot.com/feeds/112274201288959926/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14426449&amp;postID=112274201288959926' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112274201288959926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112274201288959926'/><link rel='alternate' type='text/html' href='http://orcasoracle.blogspot.com/2005/07/paging-query-resultset.html' title='Paging a Query Resultset'/><author><name>Carl</name><uri>http://www.blogger.com/profile/06874492144390610793</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/img/35/6291/1024/Carl_r1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14426449.post-112128655256532941</id><published>2005-07-13T22:24:00.000+02:00</published><updated>2005-07-30T18:12:49.810+02:00</updated><title type='text'>Carl and Oracle</title><content type='html'>Look something strange with Oracle and Carl :&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;O R A C L E&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;O&lt;/span&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;R A C L&lt;/span&gt;  &lt;span style="color: rgb(204, 0, 0);"&gt;E&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;O&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;  &lt;/span&gt;&lt;span style="color: rgb(51, 102, 255); font-weight: bold;"&gt;C L R A&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt; E&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;O&lt;/span&gt;  &lt;span style="color: rgb(51, 102, 255);"&gt;C A R L&lt;/span&gt;  &lt;span style="color: rgb(204, 0, 0);"&gt;E&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;O R A C L E&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;span style="color: rgb(51, 102, 255); font-weight: bold;"&gt;&lt;br /&gt;Carl&lt;/span&gt; the &lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;O&lt;/span&gt;racle &lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;E&lt;/span&gt;xpert&lt;br /&gt;&lt;br /&gt;;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14426449-112128655256532941?l=orcasoracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcasoracle.blogspot.com/feeds/112128655256532941/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14426449&amp;postID=112128655256532941' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112128655256532941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112128655256532941'/><link rel='alternate' type='text/html' href='http://orcasoracle.blogspot.com/2005/07/carl-and-oracle.html' title='Carl and Oracle'/><author><name>Carl</name><uri>http://www.blogger.com/profile/06874492144390610793</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/img/35/6291/1024/Carl_r1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14426449.post-112119141457548851</id><published>2005-07-12T20:00:00.000+02:00</published><updated>2005-07-12T20:03:34.583+02:00</updated><title type='text'>First entry of Oracle related Blog</title><content type='html'>Hi,&lt;br /&gt;after a while i decided to move all Oracle stuff from &lt;a href="http://www.orcasthoughts.blogspot.com"&gt;my common Blog&lt;/a&gt; to this specific one.&lt;br /&gt;&lt;br /&gt;I think this is good&lt;br /&gt;&lt;br /&gt;regards&lt;br /&gt;Carl&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14426449-112119141457548851?l=orcasoracle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orcasoracle.blogspot.com/feeds/112119141457548851/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14426449&amp;postID=112119141457548851' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112119141457548851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14426449/posts/default/112119141457548851'/><link rel='alternate' type='text/html' href='http://orcasoracle.blogspot.com/2005/07/first-entry-of-oracle-related-blog.html' title='First entry of Oracle related Blog'/><author><name>Carl</name><uri>http://www.blogger.com/profile/06874492144390610793</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/img/35/6291/1024/Carl_r1.jpg'/></author><thr:total>0</thr:total></entry></feed>
