Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: How does Oracle Server Process get data block Information
Good question.
Some of this is conjecture.
<conjecture>
When the database starts up it reads the control file and finds the file
that contains the system tablespace. In the header of the system tablespace
is probably enough information to find the starting points for one or more
data dictionary tables (probably whatever is the underlying structures for
dba_segments - remember the all_,dba_ and user_ tables are really views of
these tables with "funny" names). I imagine the underlying dba_segments
structure contains all the information about where all the data and index
information is. What file, what starting block, what ending block a
particular database ojbect occupies.
<end conjecture>
From there it is a "simple" matter of taking a query, parsing it out,
figuring out what index to use, using the index to get a row id and then
using the rowid to get the data. In Oracle 7 the rowid consists of 3 parts
the file number, the block number within a file and the row number within
the block. In Oracle 8 the same basic concept applies except the rowid is
larger and the first part is what file within a tablespace (so a realative
file number - this is how they got the database to hold so much more data),
what block within a file and what row within a block.
Jim
Jochen Joerg wrote in message <366811A5.B020A276_at_step.de>...
>hello,
>
>I have the following question:
>
>When the Oracle server wants to retrieve the data he first looks up in
>the DB-block buffer of the SGA if the corresponding database blocks are
>loaded.
>If not the Oracle Server Process has to load the corresponding database
>blocks in the DB block buffer.
>
>Here my question occurs:
>
>From where does the oracle server process get the information what
>databse blocks do contain the data which is requested for ?
>
>Where is the information stored about what datafiles contains which
>database blocks?
>I suppose that the information is stored in the data dictionary. But
>also for accessing the data dictionary the server has to get the
>information what database blocks to access and where these database
>blocks are located.
>
>Maybe somebody does know an answer. Thanks in advance.
>Jochen
>
>
>
Received on Sun Dec 06 1998 - 00:00:00 CST