Not really, I understand that part but to find something we need to know where to look for. Say we have segments emp and its primary key emp_pk in tablespace users and absolute file_id 5, we want to run this query select * from emp where empno = 1234 If this is the input, how does Oracle know this row is located in file_id 5? If recursive queries is used to find and compute the dba then an index unique scan will never be 1 consistent get (in the second execution) no? Thank you Alex 2009/4/10 K Gopalakrishnan <kaygopal@xxxxxxxxx> > Alex, Let me try to answer in simple way. > > When you run a query, data dictionary provides the file#,block# or > extent info for that table. Once you know the file#,blok# you can > compute the dba and search the buffer cache for that dba (yet another > simple hash function). If not found send an I/O request on that > file#,block#. > > Is this what you are looking for or something else/? > > > On Fri, Apr 10, 2009 at 3:51 PM, amonte <ax.mount@xxxxxxxxx> wrote: > > Hi all > > > > I have a probably very basic question but I cant think how Oracle does > it. > > > > When we query a table we know that data block address is hashed to > > read if buffer chain if reading from cache, otherwise look the rows in > > the data block address. > > > > My question is when we run a query how is the data block address > > obtained? From where? > > > > Alex > > -- > > //www.freelists.org/webpage/oracle-l > > > > > > >