MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/rdbms/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/rdbms/admin/loc_to_common1.sql

Rem
Rem $Header: rdbms/admin/loc_to_common1.sql /main/15 2017/04/25 08:09:06 thbaby Exp $
Rem
Rem loc_to_common1.sql
Rem
Rem Copyright (c) 2014, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      loc_to_common1.sql - helper script for converting local to common
Rem
Rem    DESCRIPTION
Rem      Does the first set of operations needed to convert local to common.
Rem      Creates object-linked views.
Rem
Rem    NOTES
Rem      Called by noncdb_to_pdb.sql, apex_to_common.sql, pdb_to_apppdb.sql
Rem
Rem    BEGIN SQL_FILE_METADATA 
Rem    SQL_SOURCE_FILE: rdbms/admin/loc_to_common1.sql 
Rem    SQL_SHIPPED_FILE: rdbms/admin/loc_to_common1.sql
Rem    SQL_PHASE: LOC_TO_COMMON1
Rem    SQL_STARTUP_MODE: NORMAL 
Rem    SQL_IGNORABLE_ERRORS: NONE 
Rem    SQL_CALLING_FILE: rdbms/admin/noncdb_to_pdb.sql
Rem    END SQL_FILE_METADATA
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    thbaby      04/21/17 - Bug 25940936: set _enable_view_pdb
Rem    pyam        01/05/17 - set/clear scriptparam separately per container
Rem    pyam        09/08/16 - RTI 19633354: remove duplicate set &scriptparam
Rem    akruglik    01/25/16 - (22132084): handle Extended Data links
Rem    sankejai    01/22/16 - 16076261: session parameters scoped to container 
Rem    pyam        12/22/15 - 21927236: rename pdb_to_fedpdb to pdb_to_apppdb
Rem    akruglik    11/24/15 - (21193922) App Common users are marked with both
Rem                           common and App-common bits
Rem    thbaby      09/02/15 - Bug 21774247: handle COMMON_DATA
Rem    juilin      09/01/15 - 21458522: rename syscontext FEDERATION_NAME
Rem    pyam        04/30/15 - 20989123: fix fed flags for user$
Rem    pyam        04/19/15 - 20795461: change to _application_script for
Rem                           pdb_to_apppdb
Rem    syetchin    04/06/15 - Fix for diffs in lrgdbconc0e3ee and
Rem                           lrgdbconc0e4ee by mjungerm
Rem    surman      01/08/15 - 19475031: Update SQL metadata
Rem    pyam        09/16/14 - Helper script #1 for converting local objects to
Rem                           common in a CDB environment.
Rem    pyam        09/16/14 - Created
Rem

alter session set "_enable_view_pdb"=false;
exec dbms_pdb.noncdb_to_pdb(&&1);

COLUMN rootcon NEW_VALUE rootcon
select decode(&&1, 5, SYS_CONTEXT('USERENV', 'APPLICATION_NAME'), 'CDB$ROOT')
       rootcon from dual;

COLUMN scriptparam NEW_VALUE scriptparam
select decode(&&1, 5, '"_APPLICATION_SCRIPT"', '"_ORACLE_SCRIPT"') scriptparam
  from dual;

alter session set container=&rootcon;

alter session set &scriptparam=true;

-- CDB Common Users/Roles have 128 (Common) set in user$.spare1 while App 
-- Common Users/Roles have both 128 (Common) and 4096 (App Common) set.  
-- If we are looking for App Common Users/Roles, CDB Common users/Roles get 
-- skipped because we check whether user$.spare1 has both 128 and 4096 set, 
-- but if we are interested in CDB Common Users/Roles, we need to restrict 
-- ourselves to USER$ rows which have 128 but not 4096 set in spare1
COLUMN cmnusrflag NEW_VALUE cmnusrflag
select decode(&&1, 5, '4224', '128') cmnusrflag from dual;

-- if this is for federation conversion, only treat federation objects
-- as common
COLUMN fedobjflag NEW_VALUE fedobjflag
select decode(&&1, 5, '134217728', '0') fedobjflag from dual;

-- create temporary object-linked view to get list of objects marked as common
-- in CDB$ROOT
--
-- NOTE: SHARING bits in OBJ$.FLAGS are:
-- - 65536  = MDL (Metadata Link)
-- - 131072 = DL (Data Link, formerly OBL)
-- - 4294967296 = EDL (Extended Data Link)
define mdl=65536
define dl=131072
define edl=4294967296
define sharing_bits=(&mdl+&dl+&edl)

create or replace view sys.cdb$common_root_objects&pdbid sharing=object as
select u.name owner, o.name object_name, o.type# object_type, o.namespace nsp,
       o.subname object_subname, o.signature object_sig,
       decode(bitand(o.flags, &sharing_bits), 
              &edl+&mdl, 'EDL', &dl, 'DL', 'MDL') sharing
  from sys.obj$ o, sys.user$ u
 where o.owner#=u.user# and bitand(o.flags, &sharing_bits) <> 0
   and bitand(o.flags,&fedobjflag)=&fedobjflag;

-- Bug 21774247: Handle COMMON_DATA tables.
-- create temporary object-linked view to get list of tables marked as 
-- common_data in Root
create or replace view sys.cdb$cdata_root_tables&pdbid sharing=object as
select u.name owner, o.name object_name
  from sys.obj$ o, sys.user$ u, sys.tab$ t
 where o.owner#=u.user# and o.obj#=t.obj# 
   and bitand(t.property, power(2,52))=power(2,52);

-- Bug 21774247: Handle COMMON_DATA views.
-- create temporary object-linked view to get list of views marked as 
-- common_data in Root
create or replace view sys.cdb$cdata_root_views&pdbid sharing=object as
select u.name owner, o.name object_name
  from sys.obj$ o, sys.user$ u, sys.view$ v
 where o.owner#=u.user# and o.obj#=v.obj# 
   and bitand(v.property, power(2,52))=power(2,52);

create or replace view sys.cdb$cmn_root_types&pdbid sharing=object as
select u.name owner, o.name object_name, o.type# object_type, o.namespace nsp,
       o.subname object_subname, o.signature object_sig, t.hashcode hashcode,
       decode(bitand(o.flags, &sharing_bits), 
              &edl+&mdl, 'EDL', &dl, 'DL', 'MDL') sharing
  from sys.obj$ o, sys.user$ u, sys.type$ t where
  o.type#=13 and o.oid$=t.tvoid and o.owner#=u.user# and
  bitand(o.flags, &sharing_bits) <> 0 and 
  bitand(o.flags,&fedobjflag)=&fedobjflag;

-- object-linked view for list of common users
create or replace view sys.cdb$common_users&pdbid sharing=object as
select name, type# from sys.user$ 
where bitand(spare1,4224) = &cmnusrflag;

-- object-linked view for accessing dependency$
create or replace view sys.cdb$rootdeps&pdbid sharing=object as select du.name as owner, do.name as name, do.type# as d_type#, do.namespace as d_namespace,pu.name as referenced_owner, po.name as referenced_name, po.type# as p_type#, po.namespace as p_namespace,d.order#,d.property,d.d_attrs,d.d_reason from sys.obj$ do, sys.obj$ po, sys.user$ du, sys.user$ pu, sys.dependency$ d where du.user#=do.owner# and pu.user#=po.owner# and do.obj#=d_obj# and po.obj#=p_obj#;

-- TODO: update to include fed flags
-- object-linked view for accessing sysauth$: common system privileges
create or replace view sys.cdb$commonsysprivs&pdbid sharing=object as
select u.name, s.privilege# from sys.user$ u, sys.sysauth$ s
where s.grantee#=u.user# and bitand(s.option$,8)=8 and s.privilege#<0;

-- TODO: update to include fed flags
-- object-linked view for accessing sysauth$: common role grants
create or replace view sys.cdb$commonrolegrants&pdbid sharing=object as
select u.name, r.name rolename from sys.user$ u, sys.sysauth$ s, sys.user$ r
where s.grantee#=u.user# and bitand(s.option$,8)=8 and s.privilege#>0 and
s.privilege#=r.user#;

-- TODO: update to include fed flags
-- object-linked view for accessing objauth$
create or replace view sys.cdb$commonobjprivs&pdbid sharing=object as
select u.name, oa.privilege#, u2.name owner, o.name objname, oa.col#
from sys.user$ u, sys.objauth$ oa, sys.obj$ o, sys.user$ u2
where oa.grantee#=u.user# and bitand(oa.option$,8)=8
and oa.obj#=o.obj# and o.owner#=u2.user#;

-- do java long identifier translation in the root if need be
declare junk varchar2(100);
begin
junk := dbms_java_test.funcall('-lid_translate_all', ' ');
exception when others then null;
end;
/
alter session set &scriptparam=false;

-- switch into PDB
alter session set container="&pdbname";

alter session set "_enable_view_pdb"=false;
alter session set &scriptparam=true;
create or replace view sys.cdb$common_root_objects&pdbid sharing=object as
select u.name owner, o.name object_name, o.type# object_type, o.namespace nsp,
       o.subname object_subname, o.signature object_sig,
       decode(bitand(o.flags, &sharing_bits), 
              &edl+&mdl, 'EDL', &dl, 'DL', 'MDL') sharing
  from sys.obj$ o, sys.user$ u
 where o.owner#=u.user# and bitand(o.flags, &sharing_bits) <> 0
   and bitand(o.flags,&fedobjflag)=&fedobjflag;

-- Bug 21774247: Handle COMMON_DATA tables.
-- create temporary object-linked view to get list of tables marked as 
-- common_data in Root
create or replace view sys.cdb$cdata_root_tables&pdbid sharing=object as
select u.name owner, o.name object_name
  from sys.obj$ o, sys.user$ u, sys.tab$ t
 where o.owner#=u.user# and o.obj#=t.obj# 
   and bitand(t.property, power(2,52))=power(2,52);

-- Bug 21774247: Handle COMMON_DATA views.
-- create temporary object-linked view to get list of views marked as 
-- common_data in Root
create or replace view sys.cdb$cdata_root_views&pdbid sharing=object as
select u.name owner, o.name object_name
  from sys.obj$ o, sys.user$ u, sys.view$ v
 where o.owner#=u.user# and o.obj#=v.obj# 
   and bitand(v.property, power(2,52))=power(2,52);

create or replace view sys.cdb$cmn_root_types&pdbid sharing=object as
select u.name owner, o.name object_name, o.type# object_type, o.namespace nsp,
       o.subname object_subname, o.signature object_sig, t.hashcode hashcode,
       decode(bitand(o.flags, &sharing_bits), 
              &edl+&mdl, 'EDL', &dl, 'DL', 'MDL') sharing
  from sys.obj$ o, sys.user$ u, sys.type$ t where
  o.type#=13 and o.oid$=t.tvoid and o.owner#=u.user# and
  bitand(o.flags, &sharing_bits) <> 0 and 
  bitand(o.flags,&fedobjflag)=&fedobjflag;

-- object-linked view for list of common users
create or replace view sys.cdb$common_users&pdbid sharing=object as
select name, type# from sys.user$ 
where bitand(spare1,4224) = &cmnusrflag;

-- object-linked view for accessing dependency$
create or replace view sys.cdb$rootdeps&pdbid sharing=object as select du.name as owner, do.name as name, do.type# as d_type#, do.namespace as d_namespace,pu.name as referenced_owner, po.name as referenced_name, po.type# as p_type#, po.namespace as p_namespace,d.order#,d.property,d.d_attrs,d.d_reason from sys.obj$ do, sys.obj$ po, sys.user$ du, sys.user$ pu, sys.dependency$ d where du.user#=do.owner# and pu.user#=po.owner# and do.obj#=d_obj# and po.obj#=p_obj#;

-- TODO: update to include fed flags
-- object-linked view for accessing sysauth$: common system privileges
create or replace view sys.cdb$commonsysprivs&pdbid sharing=object as
select u.name, s.privilege# from sys.user$ u, sys.sysauth$ s
where s.grantee#=u.user# and bitand(s.option$,8)=8 and s.privilege#<0;

-- TODO: update to include fed flags
-- object-linked view for accessing sysauth$: common role grants
create or replace view sys.cdb$commonrolegrants&pdbid sharing=object as
select u.name, r.name rolename from sys.user$ u, sys.sysauth$ s, sys.user$ r
where s.grantee#=u.user# and bitand(s.option$,8)=8 and s.privilege#>0 and
s.privilege#=r.user#;

-- TODO: update to include fed flags
-- object-linked view for accessing objauth$
create or replace view sys.cdb$commonobjprivs&pdbid sharing=object as
select u.name, oa.privilege#, u2.name owner, o.name objname, oa.col#
from sys.user$ u, sys.objauth$ oa, sys.obj$ o, sys.user$ u2
where oa.grantee#=u.user# and bitand(oa.option$,8)=8
and oa.obj#=o.obj# and o.owner#=u2.user#;

create or replace view sys.cdb$objects&pdbid sharing=none as
select u.name owner, o.name object_name, o.signature object_sig,
       o.namespace nsp, o.subname object_subname, o.obj# object_id,
       o.type# object_type, o.flags flags
  from sys.obj$ o, sys.user$ u
  where o.owner#=u.user#;

create or replace view sys.cdb$types&pdbid sharing=none as
select u.name owner, o.name object_name, o.signature object_sig,
       o.namespace nsp, o.subname object_subname, o.obj# object_id,
       o.type# object_type, o.flags flags, t.hashcode hashcode
  from sys.obj$ o, sys.user$ u, sys.type$ t
  where o.owner#=u.user# and o.type#=13 and o.oid$=t.tvoid;


create or replace view sys.cdb$tables&pdbid sharing=none as
select * from sys.cdb$objects&pdbid where object_type=2;

alter session set &scriptparam=false;


OHA YOOOO