RE: what is obj$.type#=10?
- From: "Bobak, Mark" <Mark.Bobak@xxxxxxxxxxxxxxx>
- To: <oracle-l@xxxxxxxxxxxxx>
- Date: Wed, 23 Jun 2004 14:43:56 -0400
Because unused NON-EXISTANT objects are cleaned up by SMON every 12 =
hours.
-----Original Message-----
From: oracle-l-bounce@xxxxxxxxxxxxx
[mailto:oracle-l-bounce@xxxxxxxxxxxxx]On Behalf Of Jacques Kilchoer
Sent: Wednesday, June 23, 2004 2:40 PM
To: oracle-l@xxxxxxxxxxxxx
Subject: RE: what is obj$.type#=3D10?=20
-----Original Message-----
Jonathan Lewis
-- I agree. Specifically, you get lots of these when
-- you create a permanent object that depends on
-- public synonym. At some point, you may create
-- a local object that "conceals" the public synonym,
-- at which point the thing that depends on the synonym
-- has to become invalid and depend on the local object.
-- To allow this to happen, you NEED a 'non-existent'
-- object of the same name to exist, so that the permanent
-- object can depend on its non-existence, and notice when
-- it ceases to be non-existent.
Once again I learn something from the list. (I wrote a sample script =3D
below to show what Mr. Lewis is talking about.) I have a question =3D
though. In an Oracle 9.2 database, I create public synonym X for =3D
some_table. Then I drop public synonym X. No one has ever used public =
=3D
synonym X, there are no dependencies on it, so why does a row remain in =
=3D
SYS.OBJ$ for X with type# 10? That row will remain until I restart the =
=3D
database.
-- showing how an procedure depending on a public synonym will cause the
-- the creation of a "non-existent" object with the same name as the
-- public synonym, in the procedure's schema
SQL> select
2 b.name as owner, a.name as object_name, a.type#,
3 decode (a.type#, 2, 'TABLE', 5, 'SYNONYM', 7, 'PROCEDURE') as =3D
object_type
4 from
5 sys.obj$ a, sys.user$ b
6 where
7 a.name in ('COUNTRY', 'COUNTRY_PROC')
8 and a.owner# =3D3D b.user# ;
aucune ligne s=3DE9lectionn=3DE9e
SQL> create table beta.country
2 (country_code varchar2 (10), country_name varchar2 (40)) ;
Table cr=3DE9=3DE9e.
SQL> create public synonym country for beta.country ;
Synonyme cr=3DE9=3DE9.
SQL> grant select on beta.country to alpha ;
Autorisation de privil=3DE8ges (GRANT) accept=3DE9e.
SQL> create procedure alpha.country_proc
2 as
3 x country.country_code%type ;
4 begin
5 null ;
6 end ;
7 /
Proc=3DE9dure cr=3DE9=3DE9e.
SQL> select
2 b.name as owner, a.name as object_name, a.type#,
3 decode (a.type#, 2, 'TABLE', 5, 'SYNONYM', 7, 'PROCEDURE') as =3D
object_type
4 from
5 sys.obj$ a, sys.user$ b
6 where
7 a.name in ('COUNTRY', 'COUNTRY_PROC')
8 and a.owner# =3D3D b.user# ;
OWNER OBJECT_NAME TYPE# =
=3D
OBJECT_TY
------------------------------ ------------------------------ --------- =
=3D
---------
PUBLIC COUNTRY 5 =
=3D
SYNONYM
ALPHA COUNTRY 10
ALPHA COUNTRY_PROC 7 =
=3D
PROCEDURE
BETA COUNTRY 2 =
=3D
TABLE
SQL> create table alpha.country
2 (country_code varchar2 (15), country_name varchar2 (40)) ;
Table cr=3DE9=3DE9e.
SQL> select
2 b.name as owner, a.name as object_name, a.type#,
3 decode (a.type#, 2, 'TABLE', 5, 'SYNONYM', 7, 'PROCEDURE') as =3D
object_type
4 from
5 sys.obj$ a, sys.user$ b
6 where
7 a.name in ('COUNTRY', 'COUNTRY_PROC')
8 and a.owner# =3D3D b.user# ;
OWNER OBJECT_NAME TYPE# =
=3D
OBJECT_TY
------------------------------ ------------------------------ --------- =
=3D
---------
PUBLIC COUNTRY 5 =
=3D
SYNONYM
ALPHA COUNTRY 2 =
=3D
TABLE
ALPHA COUNTRY_PROC 7 =
=3D
PROCEDURE
BETA COUNTRY 2 =
=3D
TABLE
----------------------------------------------------------------
Please see the official ORACLE-L FAQ: http://www.orafaq.com
----------------------------------------------------------------
To unsubscribe send email to: oracle-l-request@xxxxxxxxxxxxx
put 'unsubscribe' in the subject line.
--
Archives are at http://www.freelists.org/archives/oracle-l/
FAQ is at http://www.freelists.org/help/fom-serve/cache/1.html
-----------------------------------------------------------------
----------------------------------------------------------------
Please see the official ORACLE-L FAQ: http://www.orafaq.com
----------------------------------------------------------------
To unsubscribe send email to: oracle-l-request@xxxxxxxxxxxxx
put 'unsubscribe' in the subject line.
--
Archives are at http://www.freelists.org/archives/oracle-l/
FAQ is at http://www.freelists.org/help/fom-serve/cache/1.html
-----------------------------------------------------------------
Other related posts: