<?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-6414914000800464666</id><updated>2012-02-16T12:53:59.040-08:00</updated><title type='text'>Oracle Effective Administration</title><subtitle type='html'>Blog reflects my views on the subject and may not reflect the views of Oracle.Blog is created to share my Oracle DBA experience to Others.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kadhiresan.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6414914000800464666/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kadhiresan.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kadhiresan Chettiar</name><uri>http://www.blogger.com/profile/13346557661993774222</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6414914000800464666.post-921575523501631974</id><published>2009-07-05T02:56:00.000-07:00</published><updated>2009-07-05T03:32:02.158-07:00</updated><title type='text'>Index Cost Calculation ,when blevel of Index is 1.</title><content type='html'>&lt;em&gt;&lt;em&gt;&lt;strong&gt;&lt;strong&gt;Last week ,i was working on performance issue of small table  whose index index blevel was 1. I found cost calculation differs ,just decided to formulate few scenairo of cost calculation.&lt;br /&gt;&lt;br /&gt;Table Stats:: Table: REMEDY_HIST_WITHOUT_HISTOGRAM  &lt;br /&gt;    ROWS: 2382  &lt;br /&gt;    BLOCKS:  13  &lt;br /&gt;    AVGROWLEN:  18.00&lt;br /&gt;&lt;br /&gt;INDEX STATS::  Index: INDX_REMEDY  Col#: 1&lt;br /&gt;    BLEVEL        : 1  &lt;br /&gt;    LEAF BLOCK    : 5  &lt;br /&gt;    DISTINCT KEYS : 98  &lt;br /&gt;    AVG NUM OF LEAF BLKS PER KEY : 1.00  &lt;br /&gt;    AVG NUM OF DATA BLKS PER KEY : 1.00  &lt;br /&gt;    CLUSTERING FACTOR            : 163.00&lt;br /&gt;***************************************&lt;br /&gt;&lt;br /&gt;COST CALCULATION :&lt;br /&gt;cost =&lt;br /&gt;       blevel +&lt;br /&gt;       ceiling(leaf_blocks * effective index selectivity) +&lt;br /&gt;       ceiling(clustering_factor * effective table selectivity)&lt;br /&gt;***************************************&lt;br /&gt;&lt;br /&gt;TEST1:&lt;br /&gt;Select * from test.REMEDY_HIST_WITHOUT_HISTOGRAM where seqno &gt; 75&lt;br /&gt;&lt;br /&gt;  Access Path: index (RangeScan)&lt;br /&gt;    Index: INDX_REMEDY&lt;br /&gt;    resc_io: 43.00  resc_cpu: 545662&lt;br /&gt;    ix_sel: 0.2449  ix_sel_with_filters: 0.2449&lt;br /&gt;    Cost: 43.05  Resp: 43.05  Degree: 1&lt;br /&gt;&lt;br /&gt;COST= 1 + ceil(5*0.2449) + ceil(163 * 0.2449)&lt;br /&gt;    = 1 +  2 +  40&lt;br /&gt;    = 43 &lt;br /&gt;Cost Calculation was perfect as per formula. Matches with the Cost Generated from 10053 trace.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TEST2:&lt;br /&gt;Select * from test.REMEDY_HIST_WITHOUT_HISTOGRAM where seqno in(98,99)&lt;br /&gt;&lt;br /&gt;  Access Path: index (RangeScan)&lt;br /&gt;    Index: INDX_REMEDY&lt;br /&gt;    resc_io: 6.00  resc_cpu: 77062&lt;br /&gt;    ix_sel: 0.020408  ix_sel_with_filters: 0.020408&lt;br /&gt;    Cost: 6.01  Resp: 6.01  Degree: 1&lt;br /&gt;&lt;br /&gt;COST = 1 + ceil( 5 * 0.020408) + ceil(163 * 0.020408) &lt;br /&gt;     = 1 + 1 + 4&lt;br /&gt;     = 6&lt;br /&gt;Cost Calculation was perfect as per formula.&lt;br /&gt;&lt;br /&gt;TEST3:&lt;br /&gt;Select * from REMEDY_HIST_WITHOUT_HISTOGRAM where seqno=10&lt;br /&gt;&lt;br /&gt;    Index: INDX_REMEDY&lt;br /&gt;    resc_io: 3.00  resc_cpu: 32464&lt;br /&gt;    ix_sel: 0.010204  ix_sel_with_filters: 0.010204&lt;br /&gt;    Cost: 3.00  Resp: 3.00  Degree: 1&lt;br /&gt;&lt;br /&gt;According to formula&lt;br /&gt;COST = 1 + ceil(5 * 0.010204) + ceil(163 * 0.010204)&lt;br /&gt;     = 1 + 1 + 2&lt;br /&gt;     = 4&lt;br /&gt;&lt;br /&gt;As we can see that according to formula Cost of Index scan is 4, where as 10053 and as well explain plan show Cost is 3. &lt;br /&gt;&lt;br /&gt;How did this differ ?&lt;br /&gt;Indexes where the blevel is set to 1 (so the index goes straight from the root block to the leaf blocks). The optimizer effectively ignores the blevel if every column in the index appears in an equality predicate.&lt;br /&gt;This is an interesting case, as a root block split (which could happen due to one row in the table has been updated) would then push the cost of the index up by two—which could change the access path. This is just one of&lt;br /&gt;many clues that small tables can be more important than large tables when you want to solve optimizer problems.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6414914000800464666-921575523501631974?l=kadhiresan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kadhiresan.blogspot.com/feeds/921575523501631974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kadhiresan.blogspot.com/2009/07/index-cost-calculation-when-blevel-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6414914000800464666/posts/default/921575523501631974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6414914000800464666/posts/default/921575523501631974'/><link rel='alternate' type='text/html' href='http://kadhiresan.blogspot.com/2009/07/index-cost-calculation-when-blevel-of.html' title='Index Cost Calculation ,when blevel of Index is 1.'/><author><name>Kadhiresan Chettiar</name><uri>http://www.blogger.com/profile/13346557661993774222</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6414914000800464666.post-8413423574166270056</id><published>2009-06-20T09:20:00.000-07:00</published><updated>2009-06-20T09:33:36.430-07:00</updated><title type='text'>Impact of Number of blocks on cost Calculation</title><content type='html'>I had recently come across,where in an end user found query was running slowly.&lt;br /&gt;The same query is run from multiple session on the server.&lt;br /&gt;select i.Symbol Symbol,&lt;br /&gt;TO_CHAR(i.StartTime,'YYYY-MM-DD,HH24:mi:ss') StartTime,&lt;br /&gt;AvgBidSize,&lt;br /&gt;AvgAskSize&lt;br /&gt;from SCALETW_DBO.RawBidAskSizes t, SCALETW_DBO.IntervalMapTable i&lt;br /&gt;where i.StartTime &gt; TO_DATE('2009-04-02','YYYY-MM-DD') and StartTime &lt; TO_DATE('2009-05-07', 'YYYY-MM-DD')&lt;br /&gt;and Interval = 300&lt;br /&gt;and t.IntervalMapTable_ID = i.IntervalMapTable_ID&lt;br /&gt;and Symbol = :b2 order by i.StartTime&lt;br /&gt; &lt;br /&gt;============&lt;br /&gt;Plan Table&lt;br /&gt;============&lt;br /&gt;----------------------------------------------------------------+-----------------------------------+&lt;br /&gt;| Id  | Operation                      | Name                   | Rows  | Bytes | Cost  | Time      |&lt;br /&gt;----------------------------------------------------------------+-----------------------------------+&lt;br /&gt;| 0   | SELECT STATEMENT               |                        |       |       |  3492 |           |&lt;br /&gt;| 1   |  SORT ORDER BY                 |                        |  2118 |   83K |  3492 |  00:00:49 |&lt;br /&gt;| 2   |   HASH JOIN                    |                        |  2118 |   83K |  3491 |  00:00:49 |&lt;br /&gt;| 3   |    TABLE ACCESS BY INDEX ROWID | INTERVALMAPTABLE       |  2118 |   54K |    55 |  00:00:01 |&lt;br /&gt;| 4   |     INDEX RANGE SCAN           | TC_INTERVALMAPTABLE2317|  2118 |       |    10 |  00:00:01 |&lt;br /&gt;&lt;strong&gt;| 5   |    TABLE ACCESS FULL           | RAWBIDASKSIZES         | 6787K |   93M |  3368 |  00:00:48 |&lt;/strong&gt;&lt;br /&gt;-----------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;*****************************&lt;br /&gt;SYSTEM STATISTICS INFORMATION&lt;br /&gt;*****************************&lt;br /&gt;  Using NOWORKLOAD Stats&lt;br /&gt;  CPUSPEED: 743 millions instruction/sec&lt;br /&gt;  IOTFRSPEED: 4096 bytes per millisecond (default is 4096)&lt;br /&gt;  IOSEEKTIM: 10 milliseconds (default is 10)&lt;br /&gt;***************************************&lt;br /&gt;Table Stats::&lt;br /&gt;  Table: INTERVALMAPTABLE  Alias:  I&lt;br /&gt;    #Rows: 10814605  #Blks:  23917  AvgRowLen:  26.00&lt;br /&gt;  Column (#3): INTERVALMAPTABLE_ID(NUMBER)&lt;br /&gt;    AvgLen: 7.00 NDV: 10814605 Nulls: 0 Density: 9.2468e-08 Min: 1031906069 Max: 1042684029&lt;br /&gt;Index Stats::&lt;br /&gt;  Index: PK_INTERVALMAPTABLE495  Col#: 3&lt;br /&gt;    LVLS: 2  #LB: 11598  #DK: 11041507  LB/K: 1.00  DB/K: 1.00  CLUF: 35222.00&lt;br /&gt;  Index: SMTEST  Col#: 1 4 2&lt;br /&gt;    LVLS: 2  #LB: 38782  #DK: 10733526  LB/K: 1.00  DB/K: 1.00  CLUF: 1496237.00&lt;br /&gt;  Index: TC_INTERVALMAPTABLE2311  Col#: 4&lt;br /&gt;    LVLS: 2  #LB: 23366  #DK: 4331  LB/K: 5.00  DB/K: 54.00  CLUF: 235943.00&lt;br /&gt;  Index: TC_INTERVALMAPTABLE2317  Col#: 4 1 2&lt;br /&gt;    LVLS: 2  #LB: 36842  #DK: 10695366  LB/K: 1.00  DB/K: 1.00  CLUF: 229583.00&lt;br /&gt;***********************&lt;br /&gt;Table Stats::&lt;br /&gt;  Table: RAWBIDASKSIZES  Alias:  T&lt;br /&gt;    #Rows: 6950280  #Blks:  8617  AvgRowLen:  14.00&lt;br /&gt;  Column (#3): INTERVALMAPTABLE_ID(NUMBER)&lt;br /&gt;    AvgLen: 7.00 NDV: 6950280 Nulls: 0 Density: 1.4388e-07 Min: 1032164991 Max: 1042953912&lt;br /&gt;Index Stats::&lt;br /&gt;  Index: PK_RAWBIDASKSIZES508  Col#: 3&lt;br /&gt;    LVLS: 2  #LB: 11276  #DK: 7348600  LB/K: 1.00  DB/K: 1.00  CLUF: 20482.00&lt;br /&gt;***************************************&lt;br /&gt;SINGLE TABLE ACCESS PATH&lt;br /&gt;  Table: RAWBIDASKSIZES  Alias: T     &lt;br /&gt;    Card: Original: 6950280  Rounded: 6950280  Computed: 6950280.00  Non Adjusted: 6950280.00&lt;br /&gt;  Access Path: TableScan&lt;br /&gt;    Cost:  3368.06  Resp: 3368.06  Degree: 0&lt;br /&gt;      Cost_io: 3233.00  Cost_cpu: 1404507597&lt;br /&gt;      Resp_io: 3233.00  Resp_cpu: 1404507597&lt;br /&gt;  Best:: AccessPath: TableScan&lt;br /&gt;         Cost: 3368.06  Degree: 1  Resp: 3368.06  Card: 6950280.00  Bytes: 0&lt;br /&gt;***************************************&lt;br /&gt;&lt;strong&gt;CPUSPEEDNW : 743&lt;br /&gt;IOSeektim : 10&lt;br /&gt;IOTrfSpeed : 4096&lt;br /&gt;DFMRC : 8&lt;br /&gt;SReadtim = IO Seektim + (db_block_size/IO Transfer Speed) = 10 + (16384/4096) = 14&lt;br /&gt;MReadtim = IO Seektim + dfmrc * (db_block_size/IO Transfer Speed) = 10 + 8 * 4 = 42&lt;br /&gt;#Mrds = 8617/8 -- this is default DFMRC = 1077.125&lt;br /&gt;IO Cost = 1077.125 * (42/14) = 1077.125 * 3 = 3232 + 1 = 3233&lt;br /&gt;CPU Cost = 1404507597/(743000*14) = 1404507597 / 10402000 = 135&lt;br /&gt;Total CPU Cost = 3233 + 135 = 3368&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;I just increased the tried to make FULL Table Scan costlier by increasing num_blocks,&lt;br /&gt;and let the optimizer use the index ,to check will that improve the performance.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;execute dbms_stats.set_table_stats(OWNNAME=&gt;'SCALETW_DBO',tabname=&gt;'RAWBIDASKSIZES',numblks=&gt;15000);&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------------+-----------------------------------+&lt;br /&gt;| Id  | Operation                      | Name                   | Rows  | Bytes | Cost  | Time      |&lt;br /&gt;----------------------------------------------------------------+-----------------------------------+&lt;br /&gt;| 0   | SELECT STATEMENT               |                        |       |       |  3492 |           |&lt;br /&gt;| 1   |  NESTED LOOPS                  |                        |  2118 |   83K |  3492 |  00:00:49 |&lt;br /&gt;| 2   |    TABLE ACCESS BY INDEX ROWID | INTERVALMAPTABLE       |  2118 |   54K |    55 |  00:00:01 |&lt;br /&gt;| 3   |     INDEX RANGE SCAN           | TC_INTERVALMAPTABLE2317|  2118 |       |    10 |  00:00:01 |&lt;br /&gt;| 4   |    TABLE ACCESS BY INDEX ROWID | RAWBIDASKSIZES         |     1 |    17 |     2 |  00:00:41 |&lt;br /&gt;&lt;strong&gt;| 5   |    INDEX UNIQUE SCAN           | PK_RAWBIDASKSIZES508   |     1 |       |     1 |  00:00:01 |&lt;/strong&gt;&lt;br /&gt;-----------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;I increased the num blocks of the table and we can see the query started using index. We found that query which was taking more than 1 hour, now completes in 2 minutes.I just locked the stats of the table for few weeks and then unlocked it and&lt;br /&gt;regenerated the stats. I found that as volume of the table increased,as a result num blocks also increased and query found using index.&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6414914000800464666-8413423574166270056?l=kadhiresan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kadhiresan.blogspot.com/feeds/8413423574166270056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kadhiresan.blogspot.com/2009/06/impact-of-number-of-blocks-on-cost.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6414914000800464666/posts/default/8413423574166270056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6414914000800464666/posts/default/8413423574166270056'/><link rel='alternate' type='text/html' href='http://kadhiresan.blogspot.com/2009/06/impact-of-number-of-blocks-on-cost.html' title='Impact of Number of blocks on cost Calculation'/><author><name>Kadhiresan Chettiar</name><uri>http://www.blogger.com/profile/13346557661993774222</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6414914000800464666.post-6245543421692382660</id><published>2009-05-21T14:10:00.001-07:00</published><updated>2009-05-25T01:45:29.748-07:00</updated><title type='text'>High Water mark on objects in  ASSM Tablespaces</title><content type='html'>This article discusses about High Water mark on objects in ASSM tablespace and the impact that it can have on database performance.&lt;br /&gt;&lt;br /&gt;In order to do a full tablescan ,oracle needs to read all the blocks below high water mark.&lt;br /&gt;&lt;br /&gt;In general, when a table or index segment is first created, space for that segment will be preallocated from a datafile but very little of the space will be formatted for use. As data arrives, blocks will be formatted a few at a time.&lt;br /&gt;&lt;br /&gt;In the simplest setup, Oracle would format “the next five” blocks from the preallocated space as the need arose, and the object’s high water mark (HWM) would be adjusted to show how many blocks had been formatted and were available for use.&lt;br /&gt;&lt;br /&gt;With the arrival of ASSM in 9i, Oracle formats groups of adjacent blocks (typically 16, it seems) at a time.The high water mark still identifies the highest formatted block in the segment, but ASSM randomizes the allocationslightly, so that unformatted holes (16 blocks, or multiples thereof) can appear in the middle of the object.ASSM also allocates one or two bitmap space management blocks per extent.&lt;br /&gt;&lt;br /&gt;Creating LMT with extent size uniform&lt;br /&gt;--------------------------------------------------------------&lt;br /&gt;create tablespace TBS_LMT_UNIFORM&lt;br /&gt;datafile '/sbclocal/app/oracle/admin/NADEEM1/data/TBS_LMT_UNIFORM_01.dbf' size 200M reuse&lt;br /&gt;extent management local uniform size 800K segment space management auto;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Create Table Kadhiresan_LMT_UNIFORM&lt;br /&gt;(Empno char(11),&lt;br /&gt;Empname char(20))&lt;br /&gt;tablespace TBS_LMT_UNIFORM;&lt;br /&gt;&lt;br /&gt;Creating LMT with Autoallocate&lt;br /&gt;--------------------------------------------------------------&lt;br /&gt;create tablespace TBS_LMT_SYSTEM&lt;br /&gt;datafile '/sbclocal/app/oracle/admin/NADEEM1/data/TBS_LMT_SYSTEM_01.dbf' size 200M reuse&lt;br /&gt;extent management local AUTOALLOCATEsegment space management auto;&lt;br /&gt;&lt;br /&gt;Create Table Kadhiresan1_LMT_SYSTEM&lt;br /&gt;(Empno char(11),&lt;br /&gt;Empname char(20))&lt;br /&gt;tablespace TBS_LMT_SYSTEM;&lt;br /&gt;&lt;br /&gt;SQL&gt; Analyze table KADHIRESAN_LMT_UNIFORM compute statistics;&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;SQL&gt; Analyze table KADHIRESAN1_LMT_SYSTEM compute statistics;&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;SQL&gt; select Table_name,blocks,empty_blocks from dba_tables where table_name in('KADHIRESAN_LMT_UNIFORM','KADHIRESAN1_LMT_SYSTEM');&lt;br /&gt;&lt;br /&gt;TABLE_NAME BLOCKS EMPTY_BLOCKS&lt;br /&gt;============================== ========== ============&lt;br /&gt;&lt;strong&gt;KADHIRESAN_LMT_UNIFORM 0 100&lt;br /&gt;KADHIRESAN1_LMT_SYSTEM 0 8 &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into KADHIRESAN_LMT_UNIFORM values('1','KADHIRESAN');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; insert into KADHIRESAN1_LMT_SYSTEM values('1','KADHIRESAN');&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;&lt;br /&gt;SQL&gt; Analyze table KADHIRESAN_LMT_UNIFORM compute statistics;&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;SQL&gt; Analyze table KADHIRESAN1_LMT_SYSTEM compute statistics;&lt;br /&gt;Table analyzed.&lt;br /&gt;&lt;br /&gt;SQL&gt; select Table_name,blocks,empty_blocks from dba_tables where table_name in('KADHIRESAN_LMT_UNIFORM','KADHIRESAN1_LMT_SYSTEM');&lt;br /&gt;&lt;br /&gt;TABLE_NAME BLOCKS EMPTY_BLOCKS&lt;br /&gt;============================== ========== ============&lt;br /&gt;&lt;strong&gt;KADHIRESAN_LMT_UNIFORM 23 77&lt;br /&gt;KADHIRESAN1_LMT_SYSTEM 5 3 &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; Select * from KADHIRESAN_LMT_UNIFORM;&lt;br /&gt;Statistics&lt;br /&gt;==========================================================&lt;br /&gt;1 recursive calls&lt;br /&gt;0 db block gets&lt;br /&gt;&lt;strong&gt;22 consistent gets &lt;/strong&gt;&lt;br /&gt;0 physical reads&lt;br /&gt;0 redo size&lt;br /&gt;607 bytes sent via SQL*Net to client&lt;br /&gt;492 bytes received via SQL*Net from client&lt;br /&gt;2 SQL*Net roundtrips to/from client&lt;br /&gt;0 sorts (memory)&lt;br /&gt;0 sorts (disk)&lt;br /&gt;&lt;br /&gt;1 rows processed&lt;br /&gt;&lt;br /&gt;SQL&gt; Select * from KADHIRESAN1_LMT_SYSTEM;&lt;br /&gt;Statistics&lt;br /&gt;==========================================================&lt;br /&gt;1 recursive calls&lt;br /&gt;0 db block gets&lt;br /&gt;&lt;strong&gt;7 consistent gets &lt;/strong&gt;&lt;br /&gt;0 physical reads&lt;br /&gt;0 redo size&lt;br /&gt;607 bytes sent via SQL*Net to client&lt;br /&gt;492 bytes received via SQL*Net from client&lt;br /&gt;2 SQL*Net roundtrips to/from client&lt;br /&gt;sorts (memory)&lt;br /&gt;0 sorts (disk)&lt;br /&gt;&lt;br /&gt;1 rows processed&lt;br /&gt;&lt;br /&gt;After Table has been Analyzed ,the "BLOCKS" field in USER_Tables will contain values.The value represents no of blocks held in the table -that is number of blocks from start of table and the high water mark.The field "Empyt_blocks" holds the number of blocks allocated to the table that are above the high water mark.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6414914000800464666-6245543421692382660?l=kadhiresan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kadhiresan.blogspot.com/feeds/6245543421692382660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kadhiresan.blogspot.com/2009/05/high-water-mark-on-objects-in-assm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6414914000800464666/posts/default/6245543421692382660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6414914000800464666/posts/default/6245543421692382660'/><link rel='alternate' type='text/html' href='http://kadhiresan.blogspot.com/2009/05/high-water-mark-on-objects-in-assm.html' title='High Water mark on objects in  ASSM Tablespaces'/><author><name>Kadhiresan Chettiar</name><uri>http://www.blogger.com/profile/13346557661993774222</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6414914000800464666.post-6342581248540031146</id><published>2009-05-08T22:29:00.000-07:00</published><updated>2009-05-21T14:47:42.551-07:00</updated><title type='text'>Difference Controlfile and Backup Controlfile</title><content type='html'>&lt;strong&gt;Operations during backup controlfile. &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;--------------------------------------------------------------------------------&lt;/strong&gt;&lt;br /&gt;1) Enqueue control file resource is held on controlfile so that no changes happen.&lt;br /&gt;2) Checkpoint and SCN is till the time of backup.&lt;br /&gt;3) Copy of Controlfile.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;There are mutilple ways to perform backup activity of controlfile. &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;1) Shutdown database and O/S Copy controlfile in different location.&lt;br /&gt;2) Alter database backup controlfile to trace -- Create a text file.&lt;br /&gt;3) Alter database backup controlfile to '######################';&lt;br /&gt;&lt;br /&gt;When Database is offline(normal/Immediate), controlfile backup will be consistent and stop scn will be checkpoint scn.&lt;br /&gt;When Database is offline(abort), controlfile backup will be consistent and stop scn will be set to infinity.&lt;br /&gt;When Database is online , if we take backup of controlfile , controlfile will be consistent till that point in time and stop scn will be infinity.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How does Oracle know, wheather controlfile was backup controlfile. &lt;/strong&gt;&lt;br /&gt;1) Checkpoint is older then checkpoint value on datafile, if controlfile backup was older than datafile backup.&lt;br /&gt;2) Filetype of backup controlfile is 4 , whereas filetype of controlfile is 1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dump of header of controlfiles. Online Controlfile&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;Compatibility Vsn = 169869312=0xa200000&lt;br /&gt;Db ID=1418608916=0x548e4114, Db Name='PRASAD1'&lt;br /&gt;Activation ID=0=0x0&lt;br /&gt;Control Seq=212=0xd4, File size=920=0x398&lt;br /&gt;File Number=0, Blksiz=16384, &lt;strong&gt;File Type=1 CONTROL&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Backup Controlfile&lt;br /&gt;-------------------------------------------------------------&lt;br /&gt;Compatibility Vsn = 169869312=0xa200000&lt;br /&gt;Db ID=1418608916=0x548e4114, Db Name='PRASAD1'&lt;br /&gt;Activation ID=0=0x0&lt;br /&gt;Control Seq=215=0xd7, File size=920=0x398&lt;br /&gt;File Number=0, Blksiz=16384, &lt;strong&gt;File Type=4 BACKUP CONTROL&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Just for Info:&lt;br /&gt;---------------------------------------------&lt;br /&gt;FileType=1 === &gt; CONTROLFILE&lt;br /&gt;FileType=2 === &gt; LOGFILE&lt;br /&gt;FileType=3 === &gt; DATAFILE&lt;br /&gt;FileType=4 === &gt; BACKUP CONTROLFILE&lt;br /&gt;FileType=4 === &gt; Futuristic use&lt;br /&gt;FileType=6 === &gt; TEMPFILE&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6414914000800464666-6342581248540031146?l=kadhiresan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kadhiresan.blogspot.com/feeds/6342581248540031146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kadhiresan.blogspot.com/2009/05/difference-controlfile-and-backup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6414914000800464666/posts/default/6342581248540031146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6414914000800464666/posts/default/6342581248540031146'/><link rel='alternate' type='text/html' href='http://kadhiresan.blogspot.com/2009/05/difference-controlfile-and-backup.html' title='Difference Controlfile and Backup Controlfile'/><author><name>Kadhiresan Chettiar</name><uri>http://www.blogger.com/profile/13346557661993774222</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6414914000800464666.post-6754035812102079464</id><published>2009-04-26T02:23:00.000-07:00</published><updated>2009-04-26T02:46:03.982-07:00</updated><title type='text'>Introduction</title><content type='html'>&lt;p&gt;Hi ,&lt;/p&gt;&lt;p&gt;My name is Kadhiresan Chettiar and I've been working with Oracle databases for about 6 years. I am going to share all the information I learned about the Oracle databases and database administration here. I think, the more we share the more we learn new things about the Information Technology. So lets share our knowledge with the blogging community.&lt;/p&gt;&lt;p&gt;Regards &lt;/p&gt;&lt;p&gt;Kadhiresan Chettiar&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6414914000800464666-6754035812102079464?l=kadhiresan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kadhiresan.blogspot.com/feeds/6754035812102079464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kadhiresan.blogspot.com/2009/04/introduction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6414914000800464666/posts/default/6754035812102079464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6414914000800464666/posts/default/6754035812102079464'/><link rel='alternate' type='text/html' href='http://kadhiresan.blogspot.com/2009/04/introduction.html' title='Introduction'/><author><name>Kadhiresan Chettiar</name><uri>http://www.blogger.com/profile/13346557661993774222</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6414914000800464666.post-396137788454936511</id><published>2009-04-24T06:21:00.001-07:00</published><updated>2009-05-08T22:25:34.305-07:00</updated><title type='text'>Role of High_value and Low_value column of dba_tab_columns while generating execution plan.</title><content type='html'>Our support team called us, the Oracle DBA team, for a problem. The problem was a program, was running OK before but it runs very slowly now, but they said that nothing has changed about the program.Previously query used to take 2 millisec and now taking one hour to execute.&lt;br /&gt;Basic questions araised. what caused performace of query to degrade.&lt;br /&gt;I gathered query plan which was executing at that moment.&lt;br /&gt;&lt;br /&gt;Current SQL statement :&lt;br /&gt;-------------------------------------------&lt;br /&gt;&lt;span style="font-size:85%;"&gt;SELECT m.corr_acc_no, m.sub_acc_no "Accoun t No.", m.short_code "Short Code", m.stmt_date "STmt. Date", m.status "Status", trunc(m.sys_entry_date) "Load Date", count(*) "Entries"&lt;br /&gt;FROM SCRTLMAPP.message_header m&lt;br /&gt;WHERE m.sys_entry_date &gt;= trunc(sysdate)-4 AND m.status &gt;= 100&lt;br /&gt;GROUP BY m.corr_acc_no, m.sub_acc_no, m.short_code, m.stmt_date, m.status, trunc(m.sys_entry_date)&lt;br /&gt;ORDER BY 1,2,3,5&lt;/span&gt;&lt;br /&gt;--------------------------------------------+------------------------------------------+&lt;br /&gt;: Id : Operation : Name : Rows: Bytes : Cost : Time :&lt;br /&gt;--------------------------------------------+-----------------------------------------+&lt;br /&gt;: 0 : SELECT STATEMENT : : : : 164K : :&lt;br /&gt;: 1 : SORT GROUP BY : : 2 : 92 : 164K : 00:34:34:&lt;br /&gt;: 2 : TABLE ACCESS FULL : MESSAGE_HEADER: 2 : 92 : 164K : 00:34:34:&lt;br /&gt;--------------------------------------------+------------------------------------------+ &lt;span style="font-size:0;"&gt;&lt;br /&gt;&lt;/span&gt;Predicate Information:&lt;br /&gt;----------------------&lt;br /&gt;2 - filter(("M"."STATUS"&gt;=100 AND "M"."SYS_ENTRY_DATE"&gt;=TRUNC(&lt;a href="mailto:SYSDATE@!)-4"&gt;SYSDATE@!)-4&lt;/a&gt;))&lt;br /&gt;--&lt;br /&gt;&lt;strong&gt;With Sql_id we found previous query plan. &lt;/strong&gt;&lt;br /&gt;----------------------------------------------------------------------------------------------&lt;br /&gt;Id :Operation : Name :Rows :Bytes :Cost :Time&lt;br /&gt;--------------------------------------------------------------------------------------------+&lt;br /&gt;0 :SELECT STATEMENT : : : : 7 : :&lt;br /&gt;1 :SORT GROUP BY : : 1 : 46 : 7 : 00:00:01 :&lt;br /&gt;2 :TABLE ACCESS BY INDEX ROWID :MESSAGE_HEADER :1: 46: 6: 00:00:01&lt;br /&gt;3 :INDEX SKIP SCAN :MESSAGE_HEADERIXB :1 : : 5 :00:00:01&lt;br /&gt;---------------------------------------------------------+-----------------------------------+&lt;br /&gt;Predicate Information:&lt;br /&gt;---------------------&lt;br /&gt;-2 - filter("M"."SYS_ENTRY_DATE"&gt;=TRUNC(&lt;a href="mailto:SYSDATE@!)-4"&gt;SYSDATE@!)-4&lt;/a&gt;)&lt;br /&gt;-3 - access("M"."STATUS"&gt;=100)3 - filter("M"."STATUS"&gt;=100)&lt;br /&gt;&lt;br /&gt;Query was previously using Index Skip scan and Currently it was using Full table Scan.&lt;br /&gt;Question arises what caused Change?&lt;br /&gt;We found that Tables stats was gather pervious day.So I have revert back the stats. I found Query started using indexes. So i generated 10053 trace of the query with different stats that generated different Plans.&lt;br /&gt;&lt;br /&gt;So i generated 10053 trace of the query with different stats that generated different Plans.&lt;br /&gt;Query using Index (Part of Trace File)&lt;br /&gt;------------------------------------------------------------------&lt;br /&gt;*****************************SYSTEM STATISTICS INFORMATION&lt;br /&gt;***************************** Using NOWORKLOAD Stats&lt;br /&gt;CPUSPEED: 1043 millions instruction/sec&lt;br /&gt;IOTFRSPEED: 4096 bytes per millisecond (default is 4096)&lt;br /&gt;IOSEEKTIM: 10 milliseconds (default is 10)&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt;Table Stats::&lt;br /&gt;Table: MESSAGE_HEADER Alias: M&lt;br /&gt;#Rows: 9538250 #Blks: 762025 AvgRowLen: 162.00&lt;br /&gt;Index Stats::&lt;br /&gt;Index: MESSAGE_HEADERIXA Col#: 4&lt;br /&gt;LVLS: 2 #LB: 50790 #DK: 9099770 LB/K: 1.00 DB/K: 1.00 CLUF: 351680.00&lt;br /&gt;Index: MESSAGE_HEADERIXB Col#: 14 26 4&lt;br /&gt;LVLS: 2 #LB: 41930 #DK: 9494790 LB/K: 1.00 DB/K: 1.00 CLUF: 371550.00&lt;br /&gt;Index: MESSAGE_HEADERIXC Col#: 14 16 9&lt;br /&gt;LVLS: 2 #LB: 26160 #DK: 4865 LB/K: 5.00 DB/K: 632.00 CLUF: 3078500.00&lt;br /&gt;Index: MESSAGE_HEADERIXD Col#: 3 4&lt;br /&gt;LVLS: 2 #LB: 41540 #DK: 9966350 LB/K: 1.00 DB/K: 1.00 CLUF: 344500.00&lt;br /&gt;Index: MESSAGE_HEADERIXZ Col#: 4 1 26 14 16&lt;br /&gt;LVLS: 3 #LB: 144050 #DK: 9477320 LB/K: 1.00 DB/K: 1.00 CLUF: 457530.00&lt;br /&gt;Index: MESSAGE_HEADER_IND_KEY Col#: 1 2 3 4&lt;br /&gt;LVLS: 3 #LB: 75470 #DK: 9490520 LB/K: 1.00 DB/K: 1.00 CLUF: 3446280.00&lt;br /&gt;Column (#9): CORR_ACC_NO(NUMBER)&lt;br /&gt;AvgLen: 7.00 NDV: 3853 Nulls: 0 Density: 8.2645e-04 Min: 0 Max: 100077909&lt;br /&gt;Histogram: HtBal #Bkts: 254 UncompBkts: 254 EndPtVals: 136&lt;br /&gt;Column (#1): SUB_ACC_NO(VARCHAR2)&lt;br /&gt;AvgLen: 16.00 NDV: 3441 Nulls: 0 Density: 0.0011136&lt;br /&gt;Histogram: HtBal #Bkts: 254 UncompBkts: 254 EndPtVals: 158&lt;br /&gt;Column (#24): SHORT_CODE(VARCHAR2)&lt;br /&gt;AvgLen: 4.00 NDV: 25 Nulls: 0 Density: 5.2504e-08&lt;br /&gt;Histogram: Freq #Bkts: 25 UncompBkts: 5359 EndPtVals: 25&lt;br /&gt;Column (#26): STATUS(NUMBER)&lt;br /&gt;AvgLen: 3.00 NDV: 14 Nulls: 0 &lt;strong&gt;Density: 0.071429 Min: -1 Max: 42 &lt;/strong&gt;&lt;br /&gt;Histogram: HtBal #Bkts: 10 UncompBkts: 10 EndPtVals: 3&lt;br /&gt;Column (#2): STMT_DATE(DATE)&lt;br /&gt;AvgLen: 8.00 NDV: 106 Nulls: 0 Density: 5.2504e-08 Min: 2453776 Max: 2454936&lt;br /&gt;Histogram: Freq #Bkts: 106 UncompBkts: 5359 EndPtVals: 106&lt;br /&gt;Column (#30): SYS_ENTRY_DATE(DATE)&lt;br /&gt;AvgLen: 8.00 NDV: 635828 Nulls: 0 Density: 3.1307e-06 Min: 2453305 Max: 2454933&lt;br /&gt;Histogram: HtBal #Bkts: 254 UncompBkts: 254 EndPtVals: 255&lt;br /&gt;Access Path: TableScan&lt;br /&gt;Cost: 167722.77 Resp: 167722.77 Degree: 0&lt;br /&gt;Cost_io: 166695.00 Cost_cpu: 12866550691&lt;br /&gt;Resp_io: 166695.00 Resp_cpu: 12866550691&lt;br /&gt;kkofmx: index filter:"M"."STATUS"&gt;=100&lt;br /&gt;kkofmx: index filter:"M"."STATUS"&gt;=100&lt;br /&gt;Using prorated density: 5.2421e-08 of col #26 as selectivity of out-of-range value pred&lt;br /&gt;&lt;strong&gt;Access Path: index (skip-scan)&lt;br /&gt;SS sel: 5.2421e-08 ANDV (#skips): 3&lt;br /&gt;SS io: 3.00 vs. table scan io: 166695.00&lt;br /&gt;Skip Scan chosen Access Path: index (SkipScan)&lt;br /&gt;Index: MESSAGE_HEADERIXB resc_io: 6.00 resc_cpu: 44032&lt;br /&gt;ix_sel: 5.2421e-08 ix_sel_with_filters: 5.2421e-08&lt;br /&gt;Cost: 6.00 Resp: 6.00 Degree: 1&lt;br /&gt;Using prorated density: 5.2421e-08 of col #26 as selectivity of out-of-range value pred&lt;br /&gt;&lt;/strong&gt;Access Path: index (skip-scan)&lt;br /&gt;SS sel: 5.2421e-08 ANDV (#skips): 9535627&lt;br /&gt;SS io: 9535627.00 vs. table scan io: 166695.00&lt;br /&gt;Skip Scan rejected&lt;br /&gt;Using prorated density: 5.2421e-08 of col #26 as selectivity of out-of-range value pred&lt;br /&gt;Access Path: index (FullScan)&lt;br /&gt;Index: MESSAGE_HEADERIXZ&lt;br /&gt;resc_io: 144054.00 resc_cpu: 2921337020&lt;br /&gt;ix_sel: 1 ix_sel_with_filters: 5.2421e-08 Cost: 144325.45&lt;br /&gt;Resp: 144325.45 Degree: 1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;We can see that Oracle using skip scan.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;It used because "M"."STATUS"&gt;=100 is out of range of Min=-1 and Max=42 value of Status columns. &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Query using Full table scan(Part of Trace File)&lt;br /&gt;------------------------------------------------------------------------------------------&lt;br /&gt;Column (#26): STATUS(NUMBER)&lt;br /&gt;AvgLen: 3.00 NDV: 18 Nulls: 0 &lt;strong&gt;Density: 0.071429 Min: -1 Max: 1103 &lt;/strong&gt;&lt;br /&gt;Histogram: HtBal #Bkts: 10 UncompBkts: 10 EndPtVals: 3&lt;br /&gt;Column (#30): SYS_ENTRY_DATE(DATE)&lt;br /&gt;AvgLen: 8.00 NDV: 635828 Nulls: 0 Density: 3.1307e-06 Min: 2453305 Max: 2454933&lt;br /&gt;Histogram: HtBal #Bkts: 254 UncompBkts: 254 EndPtVals: 255&lt;br /&gt;Access Path: TableScan&lt;br /&gt;Cost: 167800.75 Resp: 167800.75 Degree: 0&lt;br /&gt;Cost_io: 166695.00 Cost_cpu: 13842794223&lt;br /&gt;Resp_io: 166695.00 Resp_cpu: 13842794223&lt;br /&gt;kkofmx: index filter:"M"."STATUS"&gt;=100&lt;br /&gt;kkofmx: index filter:"M"."STATUS"&gt;=100&lt;br /&gt;Access Path: index (skip-scan)&lt;br /&gt;SS sel: 0.071429 ANDV (#skips): 723680&lt;br /&gt;SS io: 723680.00 vs. table scan io: 166695.00&lt;br /&gt;Skip Scan rejected&lt;br /&gt;Access Path: index (FullScan)&lt;br /&gt;Index: MESSAGE_HEADERIXB&lt;br /&gt;resc_io: 73258.00 resc_cpu: 3619052852&lt;br /&gt;ix_sel: 1 ix_sel_with_filters: 0.071429&lt;br /&gt;Cost: 73587.41 Resp: 73587.41 Degree: 1&lt;br /&gt;Access Path: index (skip-scan)&lt;br /&gt;SS sel: 0.071429 ANDV (#skips): 9535627&lt;br /&gt;SS io: 9535627.00 vs. table scan io: 166695.00&lt;br /&gt;Skip Scan rejected&lt;br /&gt;Access Path: index (FullScan)&lt;br /&gt;Index: MESSAGE_HEADERIXZ&lt;br /&gt;resc_io: 196172.00 resc_cpu: 4557617793&lt;br /&gt;ix_sel: 1 ix_sel_with_filters: 0.071429&lt;br /&gt;Cost: 196576.38 Resp: 196576.38 Degree: 1&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;We can see that Oracle rejected skip scan and selected full table scan.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;It used Full Table scan because "M"."STATUS"&gt;=100 is in range of Min=-1 and Max=1103 value of Status columns. &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We know why plan had changed.&lt;br /&gt;So i tried to query the status column to find max value of status .It turned out to be 42.&lt;br /&gt;Question araised how come max value 1103 was gathered during stats.End user purged data after gathering stats.&lt;br /&gt;&lt;br /&gt;Min and Max value in 10053 is nothing but high_value and low_value of dba_tab_columns/dba_tab_col_statistics.&lt;br /&gt;we can also find that density and cardinality is same in both the case.&lt;br /&gt;&lt;strong&gt;So I could conculde that Min and Max value play a important role in generaing a excution plan.&lt;br /&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6414914000800464666-396137788454936511?l=kadhiresan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kadhiresan.blogspot.com/feeds/396137788454936511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kadhiresan.blogspot.com/2009/04/role-of-highvalue-and-lowvalue-column.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6414914000800464666/posts/default/396137788454936511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6414914000800464666/posts/default/396137788454936511'/><link rel='alternate' type='text/html' href='http://kadhiresan.blogspot.com/2009/04/role-of-highvalue-and-lowvalue-column.html' title='Role of High_value and Low_value column of dba_tab_columns while generating execution plan.'/><author><name>Kadhiresan Chettiar</name><uri>http://www.blogger.com/profile/13346557661993774222</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
