Re: what is the data dictionary?

From: Tony van Lingen <tony_vanlingen_at_technologyonecorp.com>
Date: Thu, 24 Sep 2009 09:21:12 +1000
Message-ID: <4ABAAD68.3070803_at_technologyonecorp.com>



>
> In short if I were to generalize, I would say that if something
> is owned by SYS, then it is part of the data dictionary.

And that is also the reason why it is generally regarded as bad practice to create objects in the SYS schema: someone who comes after you may generalise and think a locally created object is part of the datadictionary and get into strife with developers who want to modify said object. Not to mention of course dropping/creating "new" objects that have the same name as data dictionary objects.

As far as I know, performance views and kernel objects exposed via the V$ and X$ views have nothing to do with the datadictionary. They contain neither metadata, nor data, but rather expose the volatile in-memory structures of the running Oracle instance. Some of the DBA_% views are built on these and hence also are not as such part of the datadictionary proper. But that''s just my understanding..

Hth,
Tony

Around 24/09/2009 6:36 AM, Jared Still said:
> The data dictionary is not metadata.
>
> Sure, it does contain metadata, but there is also data.
>
> DBA_EXTENTS for instance is data, not metadata.
>
> In short if I were to generalize, I would say that if something
> is owned by SYS, then it is part of the data dictionary.
>
> SYS is the only required user in the database.
>
> BTW, Ada says hi.
>
> She was playing poker with Grace at the moment and
> wasn't terribly lucid.
>
> Jared Still
> Certifiable Oracle DBA and Part Time Perl Evangelist
> Oracle Blog: http://jkstill.blogspot.com
> Home Page: http://jaredstill.com
>
>
>
> On Wed, Sep 23, 2009 at 12:09 PM, Martin Berger
> <martin.a.berger_at_gmail.com <mailto:martin.a.berger_at_gmail.com>> wrote:
>
> Hi Dick,
>
> thank you for this more useful answer.
> I checked also the other emails and will summarise them:
>
> Some others just call the Data Dictionary "metadata", but nothing
> more specific.
>
> I also get the info it's bad habit to put objects into sys schema.
>
> Your hint to sql.bsq is the most useable until now. As you call the
> objects created there "basic data dictionary" - is there an "extended
> data dictionary"?
>
> There are also some dinosaurs (most of them might have discussed
> methods with Ada Lovelace) chatting in this thread.
>
> Unfortunately, noone can tell me how to decide for sure if an object
> (let's say by object_id) is part of the data dictionary or not. (not
> to mention the data dictionary cache)
>
> Martin
>
>
> On Tue, Sep 22, 2009 at 14:24, Goulet, Richard
> <Richard.Goulet_at_parexel.com <mailto:Richard.Goulet_at_parexel.com>>
> wrote:
> > Martin,
> >
> > No creating an object as sys does not make it part of the data
> > dictionary and besides it is very bad practice to do so. Any
> object that is
> > owned by sys is not exported from the database by the exp
> utility thereby
> > making it non transportable. If your really interested in what
> makes up the
> > data dictionary look in sql.bsq as it has the basic data dictionary.
> > Warning: Venturing down into this layer is NOT for the faint of
> heart as
> > things get really cryptic fast. Even data within one of these
> tables is not
> > obvious as to it's meanings. Many of the dba_ views use
> decodes, bitand,
> > and other similar functions to turn them into meaningful data, not
> > information. Also be careful of stuff that you pick up on the
> internet.
> > Some people like to try and demonstrate a great understanding of
> what Oracle
> > is doing, sometimes to disastrous results. A certain person who
> owns a
> > consulting firm with his last name as part & parcel of the
> company name is
> > rather infamous for his erroneous publishing. Basically if it's not
> > published in the Oracle Reference manual by Oracle then your
> venturing into
> > their proprietary area and what happens is totally unknown.
> Many years back
> > the aforementioned person published a way to rename objects in
> the database
> > by twiddling with the x$ tables. More than one database was
> ruined beyond
> > help because of that. Many of us who have been around this
> product for many
> > a year (since 1985 for me) have come to the conclusion that
> piddling around
> > in that area is a case of no reward for much effort.
> >
> >
> > Dick Goulet
> > Senior Oracle DBA/NA Team Lead
> > PAREXEL International
> >
> >
> > ________________________________
> > From: Martin Berger [mailto:martin.a.berger_at_gmail.com
> <mailto:martin.a.berger_at_gmail.com>]
> > Sent: Tuesday, September 22, 2009 4:44 AM
> > To: Goulet, Richard
> > Cc: ORACLE-L
> > Subject: Re: what is the data dictionary?
> >
> > Dick,
> > thank you for the answer.
> > Until now I assume the Data Dictionary is a set of tables (e.g.
> obj$ tab$,
> > ...) and views representing them (DBA_OBJECTS, DBA_TABLES, ...).
> They all
> > belong to schema SYS (ok, some synonyms may belong to PUBLIC?)
> > But if I create a table sys.myobj$ in tablespace SYSTEM and a
> vie DBA_MYOBJ
> > on this table, does they belong to the data dictionary also?
> > Or is there any other quality how the Oracle kernel decides
> which objects to
> > treat as DATA DICTIONARY and which not?
> > I disagree a little about the v$ (or x$) views:
> > From my point of view, V$bh is (also) there to tell me WHAT is
> in the cache
> > (beside some other infos like the corresponding latches, buckets
> etc.)
> > There is a lot material available about buffer cache, but I
> didn't find
> > anything similar about row cache. Is this because it's not
> available or
> > noone is interrested in this data structure and its affects?
> > Martin
> >
> > Martin,
> >
> > First off the data dictionary is listed under those views
> that start
> > with DBA or USER. They point you at what your or others
> tables/objects are
> > and their properties. As far as any view that starts with V$
> those are
> > dynamic performance views of internal data structures. They are
> not there
> > to tell you what is in the caches, but how they are behaving.
> >
> >
> > Dick Goulet
> > Senior Oracle DBA/NA Team Lead
> > PAREXEL International
> >
> >
> > ________________________________
> > From: oracle-l-bounce_at_freelists.org
> <mailto:oracle-l-bounce_at_freelists.org>
> [mailto:oracle-l-bounce_at_freelists.org
> <mailto:oracle-l-bounce_at_freelists.org>]
> > On Behalf Of Martin Berger
> > Sent: Monday, September 21, 2009 4:16 PM
> > To: ORACLE-L
> > Subject: what is the data dictionary?
> >
> > Hi List,
> > once again I stumble about two realy dumb (and related) questions:
> > 1) what is the data dictionary (or how can I identify objects
> which belongs
> > to it)?
> > 2) is there any spyhole to view into the row cache (like v$bh
> for the buffer
> > cache)?
> > According to the documentation, the data dictionary
> >
> is http://download.oracle.com/docs/cd/E11882_01/server.112/e10713/glossary.htm#CNCPT2033
> > "A read-only collection of database tables and views containing
> reference
> > information about the database, its structures, and its users."
> > The row cache is defined
> >
> with http://download.oracle.com/docs/cd/E11882_01/server.112/e10713/glossary.htm#CNCPT44459
> > "A memory area in the shared pool that holds data dictionary
> information.
> > The data dictionary cache is also known as the row cache because
> it holds
> > data as rows instead of buffers, which hold entire data blocks."
> > Even v$rowcache seems not as featured as I'd like it to be.
> >
> > This question is not based on any need, just pure curiosity.
> >
> > thank you for any hint,
> > Martin
> >
> > --
> > http://www.freelists.org/webpage/oracle-l
> >
> >
>
>
>
> --
> Martin Berger martin.a.berger_at_gmail.com
> <mailto:martin.a.berger_at_gmail.com>
> Lederergasse 27/2/14 +43 660 660 83306
> 1080 Wien http://berx.at/
> --
> http://www.freelists.org/webpage/oracle-l
>
>
>

--
http://www.freelists.org/webpage/oracle-l
Received on Wed Sep 23 2009 - 18:21:12 CDT

Original text of this message