MINI MINI MANI MO

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

Rem
Rem $Header: rdbms/admin/catdpb.sql /main/94 2017/09/20 08:37:49 sdavidso Exp $
Rem
Rem catdpb.sql
Rem
Rem Copyright (c) 2004, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      catdpb.sql - Data Pump and Metadata API script for building
Rem                   miscellaneous components
Rem
Rem    DESCRIPTION
Rem      This script is invoked from catptabs.sql.  During upgrade, all
Rem      scripts invoked by catptabs.sql are run in parallel. catptab
Rem      also executes catnodpobs.sql.  Therefore, the two scripts must 
Rem      not have any ordering dependencies.  Note, operations may be moved 
Rem      to catbph.sql which is run by itself from catproc.sql before
Rem      catptabs.sql.
Rem
Rem    NOTES
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: rdbms/admin/catdpb.sql
Rem SQL_SHIPPED_FILE: rdbms/admin/catdpb.sql
Rem SQL_PHASE: CATDPB
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: NONE
Rem SQL_CALLING_FILE: rdbms/admin/catptabs.sql
Rem END SQL_FILE_METADATA
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    sdavidso    08/29/17 - datapummp - shard domain index name mapping
Rem    bwright     08/14/17 - Bug 26638628 Move as much from catdph to catdpb
Rem                           to maximize upgrade parallelism
Rem    bwright     08/14/17 - RTI 20496727: catdpb, catnodpobs run concurrently
Rem                           during upgrade, so cannot have any overlaps
Rem    pjulsaks    06/26/17 - Bug 25688154: Uppercase input to create_cdbview
Rem    bwright     09/21/16 - Bug 24704817: Cleanup output from running dpload
Rem    jstraub     04/06/16 - Exclude APEX schemas
Rem    sdball      03/22/16 - add profile gsm_prof
Rem    smavris     03/17/16 - Change ORDSYS import callout from ORDSYS to SYS
Rem    dgagne      12/10/15 - grant analyze any to exp_full_database
Rem    msakayed    05/08/15 - Bug #20823349: access driver feature tracking
Rem    msakayed    04/22/15 - remove DATAPUMP_DIR_OBJS
Rem    bnnguyen    04/11/15 - bug 20860190: Rename 'EXADIRECT' to 'DBSFWUSER'
Rem    jorgrive    03/25/15 - add GGSYS to ku_noexp_ab 
Rem    dgagne      03/15/15 - add alter any tablepace to import_full_database
Rem    msakayed    03/06/15 - Lrg #15305720: fix DATAPUMP_DIR_OBJS
Rem    msakayed    02/19/15 - Bug #20354576: use ORA_CHECK_SYS_PRIVILEGE
Rem    bnnguyen    01/27/15 - bug 19697038: exclude schema EXADIRECT 
Rem    skayoor     11/30/14 - Proj 58196: Change Select priv to Read Priv
Rem    jlingow     09/18/14 - excluding remote_scheduler_agent schema from dp
Rem                           tests
Rem    thbaby      08/27/14 - Proj 47234: avoid export of db link to CDB$ROOT
Rem    spapadom    08/25/14 - Project 47321: Added SYS$UMF.
Rem    gclaborn    07/16/14 - lrg12632056: grant FLASHBACK ANY TABLE to
Rem                           EXP_FULL_DATABASE, not SELECT_CATALOG_ROLE
Rem    dkoppar     07/03/14 - #18909599- add OPATCH_TEMP_DIR
Rem    gclaborn    07/02/14 - 18844843: grant flashback on SYS views
Rem    sanbhara    04/23/14 - Project 46816 - adding support for SYSRAC.
Rem    jkati       04/20/14 - lrg-11783472 : Grant select on radm_fptm$ to
Rem                           imp_full_database role since sql92_security is
Rem                           TRUE by default
Rem    surman      12/29/13 - 13922626: Update SQL metadata
Rem    gclaborn    10/14/13 - Bug#17543726 : Add new profile ORA_STIG_PROFILE
Rem    gclaborn    08/08/13 - 16304706/17070445: Remove explicit roles from
Rem                           ku_noexp_tab. They are now excluded via
Rem                           Oracle-supplied and common bits in user$
Rem    rpang       06/28/13 - Add XS_ACL to ku_noexp_view
Rem    talliu      06/28/13 - Add CDB view for DBA view
Rem    sdavidso    01/02/13 - XbranchMerge sdavidso_lrg-8658292 from
Rem                           st_rdbms_12.1.0.1
Rem    sdavidso    12/28/12 - lrg8658292: alter table may get ORA-00054:
Rem                           resource busy
Rem    minx        10/22/12 - Rename xs_nsattr_admin to xs_namespace_admin
Rem    krajaman    10/01/12 - Use X$DIR
Rem    jkaloger    09/20/12 - Feature tracking for Data Pump full transportable
Rem    yanchuan    09/12/12 - Bug 14456083: add dv_datapump_network_link to
Rem                           exclusion list
Rem    sdavidso    08/24/12 - bug 12977174 - allow option tags for
Rem                           include/exclude
Rem    sdball      08/16/12 - Add new GDS role to exclusion list
Rem    mjungerm    08/08/12 - add DBHADOOP to ku_noexp_tab - lrg 7165007
Rem    cchiappa    07/17/12 - Add OLAP rules/users to ku_noexp_tab
Rem    sanbhara    07/06/12 - Lrg 7102632 - adding DV roles to ku_noexp_tab.
Rem    verangan    06/04/12 - Exclucde Oracle_OCM objects
Rem    sdipirro    06/01/12 - Cleanup import noise with stuff that belongs in
Rem                           noexp table
Rem    gclaborn    04/05/12 - Add SYSAUX tablespace to the no export list
Rem    gclaborn    04/02/12 - Add explicit ON_USER_GRANT exclusions
Rem    surman      03/27/12 - 13615447: Add SQL patching tags
Rem    gclaborn    02/28/12 - Remove object type-specific rows from
Rem                           ku_noexp_tab - use existing SCHEMA rows
Rem    gclaborn    02/08/12 - Add no export rows for ON_USER_GRANTs
Rem    tbhukya     01/17/12 - Remove OPATCH_SCRIPT_DIR, OPATCH_LOG_DIR
Rem                           directory object from export
Rem    sdavidso    10/12/11 - remove XDB_REPOSITORY type export
Rem    nkgopal     08/21/11 - Bug 12794380: AUDITOR to AUDIT_VIEWER
Rem    dahlim      07/29/11 - lrg 5745794 grant privs on radm_fptm$ to impdp
Rem    sdavidso    06/30/11 - skip import of XDB types
Rem    dahlim      06/14/11 - 32006: RADM: EXEMPT REDACTION POLICY
Rem    smavris     03/30/11 - Register ORDIM for import callouts
Rem    traney      03/29/11 - 35209: long identifiers dictionary upgrade
Rem    jibyun      03/14/11 - Project 5687: Do not export SYSBACKUP, SYSDG, and
Rem                           SYSKM schemas
Rem    amunnoli    03/09/11 - Proj 26873:Add AUDSYS user,AUDIT_ADMIN,AUDITOR 
Rem                           roles to ku_noexp_tab
Rem    gclaborn    03/01/11 - Move user mapping view to catdpb.sql
Rem    smavris     02/22/11 - Remove ORDDATA from import/export
Rem    dgagne      02/22/11 - add grant on sys.impcalloutreg$
Rem    jkaloger    01/04/11 - PROJ:27450 - track comp/encr algorithms
Rem    mjungerm    11/19/10 - make OJVMSYS no export
Rem    sdipirro    04/20/10 - Fix datapump_jobs view queries to ignore dropped
Rem                           (but not purged) master tables
Rem    ebatbout    09/10/09 - bug 8523879: Add MGDSYS user to ku_noexp_tab
Rem    dvoss       03/19/09 - bug 8350972, logstdby_administrator, ku_noexp_tab
Rem    dgagne      02/02/09 - put ku_list_filter_temp back and create a version
Rem                           2 table
Rem    rlong       09/25/08 - 
Rem    dsemler     08/07/08 - 
Rem    dgagne      07/01/08 - add columns to ku$_list_filter_temp
Rem    dgagne      05/19/08 - add TSMSYS to the noexp table
Rem    pknaggs     05/12/08 - bug 6938028: Database Vault protected schema.
Rem    msakayed    04/17/08 - compression/encryption feature tracking for 11.2
Rem    dsemler     02/28/08 - Add APPQOSSYS user to noexp table
Rem    bmccarth    02/19/08 - add view for getting directory objects - legacy
Rem                           mode
Rem    sdipirro    04/18/07 - Support multiple queue tables
Rem    wfisher     05/18/07 - granting AUDIT ANY and CREATE PROFILE to
Rem                           IMP_FULL_DATABASE
Rem    htseng      05/03/07 - bug 5567364: DEFAULT profile
Rem    wfisher     02/02/07 - Adding ku$_list_filter_temp
Rem    dgagne      12/26/06 - add alter database to datapump_imp_full_database
Rem    dgagne      11/01/06 - add idr_dir to noexp
Rem    msakayed    10/09/06 - add sys.ku_utluse for feature tracking
Rem    mhho        09/08/06 - add XS$NULL to ku_noexp_tab
Rem    rburns      08/13/06 - add drop_queue
Rem    ataracha    07/13/06 - add user anonymous to ku_noexp_tab
Rem    dkapoor     06/19/06 - don't export ORACLE_OCM 
Rem    xbarr       06/06/06 - remove DMSYS entries  
Rem    dgagne      03/23/06 - add global temporary master tables
Rem    wfisher     09/01/05 - Lrg 1908671: Factoring for Standard Edition 
Rem    wfisher     08/18/05 - Adding new Data Pump roles 
Rem    lbarton     05/03/05 - Bug 4338735: don't export WMSYS 
Rem    emagrath    02/07/05 - Remove unused oper. from DATAPUMP_JOBS view 
Rem    lbarton     01/07/05 - Bug 4109444: exclude schemas 
Rem    dgagne      10/15/04 - dgagne_split_catdp
Rem    dgagne      10/04/04 - Created
Rem

@@?/rdbms/admin/sqlsessstart.sql
--
----------------------------------------------------------------
-- Procedure to create object (default is role).  
-- Ignore "already exist" errors
----------------------------------------------------------------
--
CREATE OR REPLACE PROCEDURE catdpb_create(
  sts    OUT VARCHAR2,
  objnam IN VARCHAR2, 
  objtyp IN VARCHAR2 DEFAULT 'role') 
IS
  stmt                    VARCHAR2(4000);
  lc_objtyp               VARCHAR2(100) := LOWER(objtyp);
BEGIN
  stmt := 'CREATE ' || lc_objtyp || ' ' || objnam;
  EXECUTE IMMEDIATE stmt;
  sts := INITCAP(lc_objtyp) || ' created.';
EXCEPTION
  WHEN OTHERS THEN
    IF SQLCODE IN (-01921) THEN  -- Name conflicts
      sts := INITCAP(lc_objtyp) || ' already created.';
    ELSE
      RAISE;
    END IF;
END;
/

--
----------------------------------------------------------------
-- Procedure to drop object (default is table).  
-- Ignore "does not exist" errors
----------------------------------------------------------------
--
CREATE OR REPLACE PROCEDURE catdpb_drop(
  sts    OUT VARCHAR2,
  objnam IN VARCHAR2, 
  objtyp IN VARCHAR2 DEFAULT 'table') 
IS
  stmt                    VARCHAR2(4000);
  lc_objtyp               VARCHAR2(100) := LOWER(objtyp);
BEGIN
  stmt := 'DROP ' || lc_objtyp || ' ' || objnam;
  IF (lc_objtyp = 'type') THEN
    stmt := stmt || ' FORCE';
  END IF;
  EXECUTE IMMEDIATE stmt;
  sts := INITCAP(lc_objtyp) || ' dropped.';
EXCEPTION
  WHEN OTHERS THEN
    -- Object exists errors
    IF SQLCODE IN (-00942, -01418, -01432, -04043) THEN 
      sts := INITCAP(lc_objtyp) || ' already dropped.';
    ELSE
      RAISE;
    END IF;
END;
/

--
-- Minimize output.  Note SET HEADING OFF and SET AUTOPRINT ON is use to
-- output the result of the drop procedure calls where we pass back the
-- result of the drop operation in the bind variable.  Oracle doc describes
-- this: "To automatically display bind variables referenced in a successful 
-- PL/SQL block or used in an EXECUTE command, use the AUTOPRINT clause of 
-- the SET command".  We use this esoteric method as the procedure cannot
-- use DBMS_OUTPUT to output this information as the DBMS_OUTPUT package is
-- not already loaded/valid by time our scripts are run.
--
SET HEADING OFF
SET AUTOPRINT ON
VARIABLE sts VARCHAR2(520)

--
-------------------------------------------------------------------------
-- Create Data Pump application roles and grant privileges to them
-------------------------------------------------------------------------
-- 
-- Note: Create these roles within a PL/SQL procedure to ignore
-- errors if they already exist.  We don't want to drop these
-- roles first, before creating them, because dropping the role
-- would remove it from untold users and we have not way of
-- recreating that.
--
SET FEEDBACK 0
exec catdpb_create(:sts, 'datapump_exp_full_database');
exec catdpb_create(:sts, 'datapump_imp_full_database');
SET FEEDBACK 1 

GRANT create session,
      create table,                        /* Needed for fgac test in dpx3f2 */
      exp_full_database         
TO datapump_exp_full_database;

--
-- Grant of exp_full_database is needed to make loopback network jobs
-- work right Since the application role makes it disappear otherwise.
--
GRANT alter database,
      alter profile,
      alter resource cost,
      alter user,
      audit any,
      audit system,
      create profile,
      create session,
      delete any table,
      execute any operator,
      exp_full_database,                                 /* old exp/imp role */
      grant any object privilege,
      grant any privilege,
      grant any role,
      imp_full_database,                                 /* old exp/imp role */
      select any table          
TO datapump_imp_full_database;

GRANT export full database,
      import full database,
      datapump_exp_full_database,
      datapump_imp_full_database
TO dba;
--
-- Note: DataPump roles are not documented so grant them to old exp/imp roles
-- 
GRANT analyze any,
      create session,
      create table,                        /* Needed for fgac test in dpx3f2 */
      exempt redaction policy,                                       /* RADM */
      flashback any table       
TO exp_full_database;

GRANT alter database,
      alter profile,
      alter resource cost,
      alter tablespace,
      alter user,
      audit any,
      audit system,
      create profile,
      create session,
      delete any table,
      execute any operator,
      grant any object privilege,
      grant any privilege,
      grant any role,
      select any table
TO imp_full_database; 
--
-- 12c project 32006 RADM
--
GRANT delete, 
      insert,
      select                          /* see LRG11783472, re: SQL92_SECURITY */
ON sys.radm_fptm$     
TO imp_full_database;
--
-- For transportable import
--
GRANT delete,
      insert,
      select,
      update 
ON sys.expimp_tts_ct$ 
TO imp_full_database;

--
-------------------------------------------------------------------------
-- Public Dynamic and Global Dynamic performance views
-------------------------------------------------------------------------
--
-- Views
--
CREATE OR REPLACE VIEW sys.v_$datapump_job
  AS SELECT * FROM     sys.v$datapump_job;

CREATE OR REPLACE VIEW sys.v_$datapump_session
  AS SELECT * FROM     sys.v$datapump_session;

CREATE OR REPLACE VIEW sys.gv_$datapump_job
  AS SELECT * FROM     sys.gv$datapump_job;

CREATE OR REPLACE VIEW sys.gv_$datapump_session
  AS SELECT * FROM     sys.gv$datapump_session;
--
-- Synonyms
--
CREATE OR REPLACE PUBLIC SYNONYM
                       v$datapump_job FOR
                       sys.v_$datapump_job;

CREATE OR REPLACE PUBLIC SYNONYM
                       v$datapump_session FOR 
                       sys.v_$datapump_session;

CREATE OR REPLACE PUBLIC SYNONYM 
                       gv$datapump_job FOR 
                       sys.gv_$datapump_job;

CREATE OR REPLACE PUBLIC SYNONYM
                       gv$datapump_session FOR 
                       sys.gv_$datapump_session;
--
-- Grants
--
GRANT select ON        sys.v_$datapump_job      TO select_catalog_role;
GRANT select ON        sys.v_$datapump_session  TO select_catalog_role;
GRANT select ON        sys.gv_$datapump_job     TO select_catalog_role;
GRANT select ON        sys.gv_$datapump_session TO select_catalog_role;

--
-------------------------------------------------------------------------
-- The DATAPUMP_JOBS views (DBA_, USER_ and CDB_, no ALL_ variety).
-------------------------------------------------------------------------
--
-- =======================
-- DBA_DATAPUMP_JOBS view
-- =======================
--
CREATE OR REPLACE VIEW SYS.dba_datapump_jobs (
                owner_name, job_name, operation, job_mode, state, degree,
                attached_sessions, datapump_sessions) AS
        SELECT  j.owner_name, j.job_name, j.operation, j.job_mode, j.state,
                j.workers,
                NVL((SELECT    COUNT(*)
                     FROM      SYS.GV$DATAPUMP_SESSION s
                     WHERE     j.job_id = s.job_id AND
                               s.type = 'DBMS_DATAPUMP'
                     GROUP BY  s.job_id), 0),
                NVL((SELECT    COUNT(*)
                     FROM      SYS.GV$DATAPUMP_SESSION s
                     WHERE     j.job_id = s.job_id
                     GROUP BY  s.job_id), 0)
        FROM    SYS.GV$DATAPUMP_JOB j
        WHERE   j.msg_ctrl_queue IS NOT NULL
      UNION ALL                               /* Not Running - Master Tables */
        SELECT u.name, o.name,
               SUBSTR (c.comment$, 24, 30), SUBSTR (c.comment$, 55, 30),
               'NOT RUNNING', 0, 0, 0
        FROM sys.obj$ o, sys.user$ u, sys.com$ c
        WHERE SUBSTR (c.comment$, 1, 22) = 'Data Pump Master Table' AND
              RTRIM (SUBSTR (c.comment$, 24, 30)) IN
                ('EXPORT','ESTIMATE','IMPORT','SQL_FILE','NETWORK') AND
              RTRIM (SUBSTR (c.comment$, 55, 30)) IN
                ('FULL','SCHEMA','TABLE','TABLESPACE','TRANSPORTABLE') AND
              o.obj# = c.obj# AND
              o.type# = 2 AND
              BITAND(o.flags, 128) <> 128 AND
              u.user# = o.owner# AND
              NOT EXISTS (SELECT 1
                          FROM   SYS.GV$DATAPUMP_JOB
                          WHERE  owner_name = u.name AND
                                 job_name = o.name)
/
COMMENT ON TABLE SYS.dba_datapump_jobs IS
'Datapump jobs'
/
COMMENT ON COLUMN SYS.dba_datapump_jobs.owner_name IS
'User that initiated the job'
/
COMMENT ON COLUMN SYS.dba_datapump_jobs.job_name IS
'Job name'
/
COMMENT ON COLUMN SYS.dba_datapump_jobs.operation IS
'Type of operation being performed'
/
COMMENT ON COLUMN SYS.dba_datapump_jobs.job_mode IS
'Mode of operation being performed'
/
COMMENT ON COLUMN SYS.dba_datapump_jobs.state IS
'Current job state'
/
COMMENT ON COLUMN SYS.dba_datapump_jobs.degree IS
'Number of worker proceses performing the operation'
/
COMMENT ON COLUMN SYS.dba_datapump_jobs.attached_sessions IS
'Number of sessions attached to the job'
/
COMMENT ON COLUMN SYS.dba_datapump_jobs.datapump_sessions IS
'Number of Datapump sessions participating in the job'
/
CREATE OR REPLACE PUBLIC SYNONYM      dba_datapump_jobs FOR 
                                  sys.dba_datapump_jobs
/
GRANT select 
ON sys.dba_datapump_jobs 
TO select_catalog_role
/
--
-- =======================
-- USER_DATAPUMP_JOBS view
-- =======================
--
CREATE OR REPLACE VIEW SYS.user_datapump_jobs (
                job_name, operation, job_mode, state, degree,
                attached_sessions, datapump_sessions) AS
        SELECT  j.job_name, j.operation, j.job_mode, j.state, j.workers,
                NVL((SELECT    COUNT(*)
                     FROM      SYS.GV$DATAPUMP_SESSION s
                     WHERE     j.job_id = s.job_id AND
                               s.type = 'DBMS_DATAPUMP'
                     GROUP BY  s.job_id), 0),
                NVL((SELECT    COUNT(*)
                     FROM      SYS.GV$DATAPUMP_SESSION s
                     WHERE     j.job_id = s.job_id
                     GROUP BY  s.job_id), 0)
        FROM    SYS.GV$DATAPUMP_JOB j
        WHERE   j.msg_ctrl_queue IS NOT NULL AND 
                j.owner_name = SYS_CONTEXT('USERENV', 'CURRENT_USER')
      UNION ALL                               /* Not Running - Master Tables */
        SELECT o.name,
               SUBSTR (c.comment$, 24, 30), SUBSTR (c.comment$, 55, 30),
               'NOT RUNNING', 0, 0, 0
        FROM sys.obj$ o, sys.user$ u, sys.com$ c
        WHERE SUBSTR (c.comment$, 1, 22) = 'Data Pump Master Table' AND
              RTRIM (SUBSTR (c.comment$, 24, 30)) IN
                ('EXPORT','IMPORT','SQL_FILE') AND
              RTRIM (SUBSTR (c.comment$, 55, 30)) IN
                ('FULL','SCHEMA','TABLE','TABLESPACE','TRANSPORTABLE') AND
              o.obj# = c.obj# AND
              o.type# = 2 AND
              BITAND(o.flags, 128) <> 128 AND
              u.user# = o.owner# AND
              u.name = SYS_CONTEXT('USERENV', 'CURRENT_USER') AND
              NOT EXISTS (SELECT 1
                          FROM   SYS.GV$DATAPUMP_JOB
                          WHERE  owner_name = u.name AND
                                 job_name = o.name)
/
COMMENT ON TABLE SYS.user_datapump_jobs IS
'Datapump jobs for current user'
/
COMMENT ON COLUMN SYS.user_datapump_jobs.job_name IS
'Job name'
/
COMMENT ON COLUMN SYS.user_datapump_jobs.operation IS
'Type of operation being performed'
/
COMMENT ON COLUMN SYS.user_datapump_jobs.job_mode IS
'Mode of operation being performed'
/
COMMENT ON COLUMN SYS.user_datapump_jobs.state IS
'Current job state'
/
COMMENT ON COLUMN SYS.user_datapump_jobs.degree IS
'Number of worker processes performing the operation'
/
COMMENT ON COLUMN SYS.user_datapump_jobs.attached_sessions IS
'Number of sessions attached to the job'
/
COMMENT ON COLUMN SYS.user_datapump_jobs.datapump_sessions IS
'Number of Datapump sessions participating in the job'
/
CREATE OR REPLACE PUBLIC SYNONYM     user_datapump_jobs FOR 
                                 sys.user_datapump_jobs
/
GRANT read
ON sys.user_datapump_jobs 
TO PUBLIC WITH GRANT OPTION
/
--
-- =======================
-- CDB_DATAPUMP_JOBS view
-- =======================
--
EXECUTE cdbview.create_cdbview(false,               -
                               'SYS',               -
                               'DBA_DATAPUMP_JOBS', -
                               'CDB_DATAPUMP_JOBS');
GRANT select 
ON sys.cdb_datapump_jobs 
TO select_catalog_role
/
CREATE OR REPLACE PUBLIC SYNONYM     cdb_datapump_jobs FOR
                                 sys.cdb_datapump_jobs
/

--
-------------------------------------------------------------------------
-- DATAPUMP_SESSIONS views (DBA_ and CDB_, no ALL_, no USER_ varieties)
-------------------------------------------------------------------------
--
-- ===========================
-- DBA_DATAPUMP_SESSIONS view
-- ===========================
--
CREATE OR REPLACE VIEW SYS.dba_datapump_sessions (
                owner_name, job_name, inst_id, saddr, session_type) AS
        SELECT  j.owner_name, j.job_name, s.inst_id, s.saddr, s.type
        FROM    SYS.GV$DATAPUMP_JOB j, SYS.GV$DATAPUMP_SESSION s
        WHERE   j.job_id = s.job_id
/
COMMENT ON TABLE SYS.dba_datapump_sessions IS
'Datapump sessions attached to a job'
/
COMMENT ON COLUMN SYS.dba_datapump_sessions.owner_name IS
'User that initiated the job'
/
COMMENT ON COLUMN SYS.dba_datapump_sessions.job_name IS
'Job name'
/
COMMENT ON COLUMN SYS.dba_datapump_sessions.inst_id IS
'Instance ID'
/
COMMENT ON COLUMN SYS.dba_datapump_sessions.saddr IS
'Address of session attached to job'
/
COMMENT ON COLUMN SYS.dba_datapump_sessions.session_type IS
'Datapump session type'
/
CREATE OR REPLACE PUBLIC SYNONYM     dba_datapump_sessions FOR
                                 SYS.dba_datapump_sessions
/
GRANT select 
ON SYS.dba_datapump_sessions 
TO select_catalog_role
/
--
-- ===========================
-- CDB_DATAPUMP_SESSIONS view
-- ===========================
--
EXECUTE CDBView.create_cdbview(false,                   -
                               'SYS',                   -
                               'DBA_DATAPUMP_SESSIONS', -
                               'CDB_DATAPUMP_SESSIONS');

GRANT select 
ON sys.cdb_datapump_sessions 
TO select_catalog_role
/
CREATE OR REPLACE PUBLIC SYNONYM     cdb_datapump_sessions FOR
                                 sys.cdb_datapump_sessions
/

--
-- ----------------------------------------------------------------------------
-- Table used for database utility feature tracking (SQL*Loader, impdp, expdp,
-- metadata API)
-- ----------------------------------------------------------------------------
--
-- ============================================
-- KU_UTLUSE table: Drop, Create, and Populate
-- ============================================
--
SET FEEDBACK 0
exec catdpb_drop(:sts, 'sys.ku_utluse');
SET FEEDBACK 1

CREATE TABLE sys.ku_utluse 
(
 UTLNAME     VARCHAR2(50),
 USECNT      NUMBER,
 ENCRYPTCNT  NUMBER,
 ENCRYPT128  NUMBER,
 ENCRYPT192  NUMBER,
 ENCRYPT256  NUMBER,
 ENCRYPTPWD  NUMBER,
 ENCRYPTDUAL NUMBER,
 ENCRYPTTRAN NUMBER,
 COMPRESSCNT NUMBER,
 COMPRESSBAS NUMBER,
 COMPRESSLOW NUMBER,
 COMPRESSMED NUMBER,
 COMPRESSHGH NUMBER,
 PARALLELCNT NUMBER,
 LAST_USED   TIMESTAMP,
 FULLTTSCNT  NUMBER
)
/

INSERT INTO sys.ku_utluse VALUES
('Oracle Utility Datapump (Export)', 
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0)
/
INSERT INTO sys.ku_utluse VALUES
('Oracle Utility Datapump (Import)', 
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0)
/
INSERT INTO sys.ku_utluse VALUES
('Oracle Utility SQL Loader (Direct Path Load)',
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0)
/
INSERT INTO sys.ku_utluse VALUES
('Oracle Utility Metadata API',
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0)
/
INSERT INTO sys.ku_utluse VALUES
('Oracle Utility External Table (ORACLE_DATAPUMP)',
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0)
/
INSERT INTO sys.ku_utluse VALUES
('Oracle Utility External Table (ORACLE_LOADER)',
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0)
/
INSERT INTO sys.ku_utluse VALUES
('Oracle Utility External Table (ORACLE_BIGSQL)',
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, 0)
/
COMMIT;

--
-- ----------------------------------------------------------------------------
-- Filter List tables: Tables to contain filter list elements 
-- (e.g., TABLE list) on source database during a network job. 
-- ----------------------------------------------------------------------------
-- =============================
-- KU$_LIST_FILTER_TEMP_2 table
-- =============================
-- NOTE:  This is used for 11.2 and later, so if adding columns, add them to 
-- this table.
--
SET FEEDBACK 0
exec catdpb_drop(:sts, 'sys.ku$_list_filter_temp_2');
SET FEEDBACK 1

CREATE GLOBAL TEMPORARY TABLE sys.ku$_list_filter_temp_2
(
 process_order          NUMBER,
 duplicate              NUMBER,
 object_schema          VARCHAR2(128),
 object_name            VARCHAR2(500),
 base_process_order     NUMBER,
 parent_process_order   NUMBER
)
ON COMMIT PRESERVE ROWS
/

GRANT delete,
      insert,
      select 
ON sys.ku$_list_filter_temp_2 
TO PUBLIC
/
--
-- =============================
-- KU$_LIST_FILTER_TEMP table
-- =============================
-- NOTE: This is used for 11.1 only.  *** Do not modify ***
--
SET FEEDBACK 0
exec catdpb_drop(:sts, 'sys.ku$_list_filter_temp');
SET FEEDBACK 1

CREATE GLOBAL TEMPORARY TABLE sys.ku$_list_filter_temp
(
 process_order          NUMBER,
 duplicate              NUMBER,
 object_name            VARCHAR2(500),
 base_process_order     NUMBER,
 parent_process_order   NUMBER
)
ON COMMIT PRESERVE ROWS
/

GRANT delete,
      insert,
      select 
ON sys.ku$_list_filter_temp 
TO PUBLIC
/

--
-- ----------------------------------------------------------------------------
-- Common explain plan table used in Data Pump's data layer 
-- ----------------------------------------------------------------------------
--
SET FEEDBACK 0
exec catdpb_drop(:sts, 'sys.data_pump_xpl_table$');
SET FEEDBACK 1
CREATE GLOBAL TEMPORARY TABLE sys.data_pump_xpl_table$
(statement_id      varchar2(30),
 plan_id           number,
 timestamp         date,
 remarks           varchar2(4000),
 operation         varchar2(30),
 options           varchar2(255),
 object_node       varchar2(128),
 object_owner      varchar2(128),
 object_name       varchar2(128),
 object_alias      varchar2(261),
 object_instance   numeric,
 object_type       varchar2(30),
 optimizer         varchar2(255),
 search_columns    number,
 id                numeric,
 parent_id         numeric,
 depth             numeric,
 position          numeric,
 cost              numeric,
 cardinality       numeric,
 bytes             numeric,
 other_tag         varchar2(255),
 partition_start   varchar2(255),
 partition_stop    varchar2(255),
 partition_id      numeric,
 other             long,
 distribution      varchar2(30),
 cpu_cost          numeric,
 io_cost           numeric,
 temp_space        numeric,
 access_predicates varchar2(4000),
 filter_predicates varchar2(4000),
 projection        varchar2(4000),
 time              numeric,
 qblock_name       varchar2(128),
 other_xml         clob); 

GRANT delete, 
      insert, 
      select,
      update 
ON sys.data_pump_xpl_table$ 
TO PUBLIC
/

--
-- ----------------------------------------------------------------------------
-- Username-to-ID mapping objects.
-- ----------------------------------------------------------------------------
--
-- Drop them, if necessary.
--
SET FEEDBACK 0
exec catdpb_drop(:sts, 'ku$_user_mapping_view_tbl');
exec catdpb_drop(:sts, 'ku$_user_mapping_view', 'view');
SET FEEDBACK 1

-- =============================
-- KU$_USER_MAPPING_VIEW view
-- =============================
--
CREATE OR REPLACE VIEW ku$_user_mapping_view (user#, name) AS
  SELECT user#, name
  FROM   sys.user$
  WHERE  type#=1
/

GRANT flashback,           /* Views in SYS require explicit flashback grants */
      select 
ON ku$_user_mapping_view 
TO select_catalog_role
/
--
-- ================================
-- KU$_USER_MAPPING_VIEW_TBL table
-- ================================
-- Now a table that has the same metadata as the view for views-as-tables
-- export. This table is never populated; export only needs its metadata.
--
CREATE TABLE ku$_user_mapping_view_tbl AS
  SELECT * FROM ku$_user_mapping_view WHERE 0=1
/
GRANT select 
ON ku$_user_mapping_view_tbl 
TO select_catalog_role
/

--
-- ----------------------------------------------------------------------------
-- Data Pump import callout registrations
-- ----------------------------------------------------------------------------
--
-- So the worker can look at impcalloutreg$ from an account that just has
-- IMPFULLDATABASE, grant select on sys.impcalloutreg$ to select_catalog_role.
-- IMPFULLDATABASE has been granted select_catalog_role.
--
GRANT select 
ON sys.impcalloutreg$ 
TO SELECT_CATALOG_ROLE;
--
-- Delete all Data Pump registrations first, then 
-- add a row to impcalloutreg$ to register the user mapping view.
--
--
DELETE FROM sys.impcalloutreg$ where tag='DATAPUMP'
/
INSERT INTO sys.impcalloutreg$ (package, schema, tag, class, level#, flags,
                                tgt_schema, tgt_object, tgt_type)
VALUES ('DBMS_DATAPUMP_UTL', 'SYS',  'DATAPUMP',3,1,2,
          'SYS','KU$_USER_MAPPING_VIEW',4)
/
--
-- Register a system callout that does various things when called post-import:
-- makes calls to transportable fixup routines for TSTZ and encrypted tables, 
-- and drops the user mapping tbl. It has a very high level# to ensure that 
-- it runs last so that the user mapping tbl is available as long as possible.
--
INSERT INTO sys.impcalloutreg$ (package, schema, tag, class, level#, flags,
                                tgt_schema, tgt_object, tgt_type)
  VALUES ('DBMS_DATAPUMP_UTL','SYS','DATAPUMP',1,999999999, 0, '', '', 0)
/
--
-- Delete all Oracle Multimedia registrations first, then add a row to
-- impcalloutreg$ to register the Oracle Multimedia ORDDCM_DOCS table.
--
DELETE FROM sys.impcalloutreg$ where tag='ORDIM'
/
INSERT INTO sys.impcalloutreg$ (package, schema, tag, class, level#, flags,
                                tgt_schema, tgt_object, tgt_type, cmnt)
  VALUES ('ORDIMDPCALLOUTS','SYS','ORDIM',3,1000,0,
          'ORDDATA','ORDDCM_DOCS',2,
          'Oracle Multimedia')
/
COMMIT;

--
-- ----------------------------------------------------------------------------
-- Tables to support EXCLUDE_NOEXP filter
-- ----------------------------------------------------------------------------
-- A table to hold objects that are not to be exported in a full export. This
-- and rows from sys.noexp$ form the complete exclusion set (which is built at
-- Data Pump run time into the global temporary table below). We have to leave
-- SYS.NOEXP$ as-is since external products use it. IMPORTANT: Some metadata 
-- API views do not use this table but instead have their own hard-coded list
-- of schemas to exclude.  When a new schema is added to the exclude list, they
-- must be updated in catmetviews.sql.  Also datapump/ddl/prvtmetd.sql may need
-- to be updated for similar reasons.
--
SET FEEDBACK 0
exec catdpb_drop(:sts, 'sys.ku_noexp_tab');
exec catdpb_drop(:sts, 'sys.ku$noexp_tab');
SET FEEDBACK 1
--
-- =============================
-- KU_NOEXP_TAB table
-- =============================
--
CREATE TABLE sys.ku_noexp_tab
(
 obj_type VARCHAR2(30),
 schema   VARCHAR2(128),
 name     VARCHAR2(128)
)
/
--
-- =============================
-- KU_NOEXP_VIEW view
-- =============================
-- Create a view that incorporates everything in the KU_NOEXP_TAB above and
-- the original catexp SYS.NOEXP$ table. This view is used to populate the
-- global temporary table defined below at runtime. The view *usually* isn't
-- used directly because the union below slows metadata extraction by 10%.
-- It will be used in network mode because the metadata API running on the
-- remote instance can't see our table.
--
CREATE OR REPLACE VIEW sys.ku_noexp_view (obj_type, schema, name) AS
        SELECT  decode(n.obj_type, 2, 'TABLE', 6, 'SEQUENCE', 110, 'XS_ACL',
                       'ERROR'),
                n.owner, n.name
        FROM    sys.noexp$ n
      UNION
        SELECT  k.obj_type, k.schema, k.name
        FROM    sys.ku_noexp_tab k
/

GRANT READ ON sys.ku_noexp_view TO PUBLIC
/
--
-- ====================================
-- KU$NOEXP_TAB global temporary table
-- ====================================
-- The global temp. table used for all local export operations. Each worker
-- doing metadata loads their own private copy which doesn't have to be
-- cleaned up at session end.  File prvtbpw.sql has a dependency on this.
--
CREATE GLOBAL TEMPORARY TABLE sys.ku$noexp_tab ON COMMIT PRESERVE ROWS
  AS SELECT * FROM sys.ku_noexp_view
/
GRANT select,
      insert
ON sys.ku$noexp_tab
TO PUBLIC
/
--
-- ====================================
-- Now populate KU_NOEXP_TAB table
-- ====================================
--
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('TABLESPACE', NULL, 'SYSTEM')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('TABLESPACE', NULL, 'SYSAUX')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('DB_LINK', 'PUBLIC', 'CDB$ROOT.REGRESS.RDBMS.DEV.US.ORACLE.COM')
/
--
-- NOTE: Many object types' exclusion filters use the following SCHEMA rows
--
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'SYS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'SYSBACKUP')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'SYSDG')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'SYSKM')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'SYSRAC')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'SYS$UMF')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'ORDSYS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'EXFSYS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'MDSYS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'CTXSYS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'ORDPLUGINS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'LBACSYS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'XDB')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'ANONYMOUS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'SI_INFORMTN_SCHEMA')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'DIP')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'DBSNMP')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'DVSYS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'DVF')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'WMSYS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'ORACLE_OCM')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
('SCHEMA', NULL, 'AUDSYS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'XS$NULL')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'TSMSYS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'APPQOSSYS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'MGDSYS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'OJVMSYS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'ORDDATA')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'GSMUSER')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'GSMCATUSER')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'GSMADMIN_INTERNAL')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'OLAPSYS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'REMOTE_SCHEDULER_AGENT')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'DBSFWUSER')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'GGSYS')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'APEX_050000')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'APEX_040200')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'APEX_040100')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'APEX_040000')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'APEX_030200')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'FLOWS_030100')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'FLOWS_030000')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'FLOWS_FILES')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'APEX_PUBLIC_USER')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'APEX_LISTENER')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SCHEMA', NULL, 'APEX_REST_PUBLIC_USER')
/
--
-- Roles: Note that most user and role exclusions are now accomplished
-- by the fact that their Oracle-supplied or Common-user bit is set 
-- (user$.spare1 0x100 and 0x80)
--
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('ROLE', NULL, '_NEXT_USER')
/
--
-- Object grants
--
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('OBJECT_GRANT', NULL, 'SYSTEM')
/
--
-- Role grants to Oracle-supplied users are excluded using the SCHEMA
-- entries above. Add ROLE_GRANT rows below only for grants to roles.
--
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('ROLE_GRANT', NULL, 'DATAPUMP_EXP_FULL_DATABASE')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('ROLE_GRANT', NULL, 'DATAPUMP_IMP_FULL_DATABASE')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('ROLE_GRANT', NULL, 'LOGSTDBY_ADMINISTRATOR')
/
--
-- System grants to Oracle-supplied users are excluded using the SCHEMA
-- entries above. Add SYSTEM_GRANT rows below only for grants to roles.
--
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SYSTEM_GRANT', NULL, 'AUDIT_ADMIN')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SYSTEM_GRANT', NULL, 'AUDIT_VIEWER')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SYSTEM_GRANT', NULL, 'CONNECT')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SYSTEM_GRANT', NULL, 'RESOURCE')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SYSTEM_GRANT', NULL, 'DBA')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SYSTEM_GRANT', NULL, '_NEXT_USER')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SYSTEM_GRANT', NULL, 'EXP_FULL_DATABASE')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SYSTEM_GRANT', NULL, 'IMP_FULL_DATABASE')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SYSTEM_GRANT', NULL, 'DATAPUMP_EXP_FULL_DATABASE')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SYSTEM_GRANT', NULL, 'DATAPUMP_IMP_FULL_DATABASE')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SYSTEM_GRANT', NULL, 'LOGSTDBY_ADMINISTRATOR')
/
--
-- Tables to exclude
--
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('TABLE', 'SYSTEM', 'SQLPLUS_PRODUCT_PROFILE')
/
--
-- Misc objects to exclude
--
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('ROLLBACK_SEGMENT', NULL, 'SYSTEM')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('DIRECTORY', NULL, 'IDR_DIR')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('DIRECTORY', NULL, 'OPATCH_LOG_DIR')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('DIRECTORY', NULL, 'OPATCH_SCRIPT_DIR')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('DIRECTORY', NULL, 'OPATCH_TEMP_DIR')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('DIRECTORY', NULL, 'ORACLE_OCM_CONFIG_DIR')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('DIRECTORY', NULL, 'ORACLE_OCM_CONFIG_DIR2')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('PROFILE', NULL, 'ORA_STIG_PROFILE')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('PROFILE', NULL, 'GSM_PROF')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SYNONYM', 'PUBLIC', 'PRODUCT_PROFILE')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SYNONYM', 'PUBLIC', 'PRODUCT_USER_PROFILE')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('SYNONYM', 'SYSTEM', 'PRODUCT_USER_PROFILE')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('VIEW', 'SYSTEM', 'PRODUCT_PRIVS')
/
--
-- There are a couple static (rather unintuitive) on_user_grants required to
-- make the new invoker's rights grant checking work. They are:
-- GRANT INHERIT PRIVILEGES ON USER PUBLIC  TO PUBLIC  and
-- GRANT INHERIT PRIVILEGES ON USER XS$NULL TO PUBLIC
-- Add exclusion rows for these special cases here. Note that the schema rows
-- above are used to exclude all on_user_grants where our internal schemas are
-- the grantee.
--
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('ON_USER_GRANT', NULL, 'PUBLIC')
/
INSERT INTO sys.ku_noexp_tab ( obj_type, schema, name ) VALUES
 ('ON_USER_GRANT', NULL, 'XS$NULL')
/
COMMIT;
--
-- Globasl temporary table for shard domain index name mapping
--
-- NOTE:  This is used for 12.2 and later.
--
exec catdpb_drop(:sts, 'sys.ku$_shard_domidx_namemap');

CREATE GLOBAL TEMPORARY TABLE ku$_shard_domidx_namemap (
 owner       VARCHAR2(128) default null,   -- owner name (not remapped)
 source_name VARCHAR2(128) default null,   -- name on source shard
 target_name VARCHAR2(128) default null,   -- name on target shard
 type_name   VARCHAR2(128) default null,   -- type name
 part_name   VARCHAR2(128) default null    -- partition name
) 
ON COMMIT PRESERVE ROWS
/
-- since table content is only visible within a session, and we only rely
-- on the context within a sharding specific session, we can safely grant
-- read and insert to PUBLIC.
GRANT READ, INSERT ON sys.ku$_shard_domidx_namemap TO public
/

--
-- ----------------------------------------------------------------------------
-- Cleanup
-- ----------------------------------------------------------------------------
-- 
-- Reset output
--
SET HEADING ON
SET AUTOPRINT OFF
SET FEEDBACK 1

drop procedure catdpb_create;
drop procedure catdpb_drop;

--
-- ------------------
-- End of catdpb.sql
-- ------------------
--
@?/rdbms/admin/sqlsessend.sql

OHA YOOOO