Re: How does Oracle know where to read from

  • From: amonte <ax.mount@xxxxxxxxx>
  • To: K Gopalakrishnan <kaygopal@xxxxxxxxx>
  • Date: Sat, 11 Apr 2009 00:03:08 +0200

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
> >
> >
> >
>

Other related posts: