MINI MINI MANI MO
Rem
Rem $Header: rdbms/admin/catpexev.sql /main/7 2015/02/16 13:55:52 jmuller Exp $
Rem
Rem catpexev.sql
Rem
Rem Copyright (c) 2007, 2015, Oracle and/or its affiliates.
Rem All rights reserved.
Rem
Rem NAME
Rem catpexev.sql - DBMS_PARALLEL_EXECUTE views
Rem
Rem DESCRIPTION
Rem Views dependent on dbms_(internal_)parallel_execute
Rem
Rem NOTES
Rem <other useful comments, qualifications, etc.>
Rem
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: rdbms/admin/catpexev.sql
Rem SQL_SHIPPED_FILE: rdbms/admin/catpexev.sql
Rem SQL_PHASE: CATPEXEV
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: NONE
Rem SQL_CALLING_FILE: rdbms/admin/catpdeps.sql
Rem END SQL_FILE_METADATA
Rem
Rem MODIFIED (MM/DD/YY)
Rem jmuller 12/11/14 - Fix bug 18376894 (sort of): fix typo
Rem skayoor 11/30/14 - Proj 58196: Change Select priv to Read Priv
Rem surman 12/29/13 - 13922626: Update SQL metadata
Rem talliu 06/28/13 - Add CDB view for DBA view
Rem jmuller 02/04/13 - Fix bug 14312271: add NO_CHUNKS
Rem surman 03/27/12 - 13615447: Add SQL patching tags
Rem achoi 11/13/07 - Created
Rem
@@?/rdbms/admin/sqlsessstart.sql
-- User views
create or replace view USER_PARALLEL_EXECUTE_TASKS
(TASK_NAME,
CHUNK_TYPE,
STATUS,
TABLE_OWNER,
TABLE_NAME,
NUMBER_COLUMN,
TASK_COMMENT,
JOB_PREFIX,
SQL_STMT,
LANGUAGE_FLAG,
EDITION,
APPLY_CROSSEDITION_TRIGGER,
FIRE_APPLY_TRIGGER,
PARALLEL_LEVEL,
JOB_CLASS)
as
select task_name,
decode( chunk_type, -1, 'UNDECLARED',
0, 'ROWID_RANGE',
1, 'NUMBER_RANGE'),
decode( dbms_parallel_execute_internal.task_status(task_owner#,
task_name),
1, 'CREATED',
2, 'CHUNKING',
3, 'CHUNKING_FAILED',
4, 'NO_CHUNKS',
5, 'CHUNKED',
6, 'PROCESSING',
7, 'FINISHED',
8, 'FINISHED_WITH_ERROR',
9, 'CRASHED' ),
TABLE_OWNER,
TABLE_NAME,
NUMBER_COLUMN,
CMT,
JOB_PREFIX,
SQL_STMT,
LANGUAGE_FLAG,
EDITION,
APPLY_CROSSEDITION_TRIGGER,
FIRE_APPLY_TRIGGER,
PARALLEL_LEVEL,
JOB_CLASS
from DBMS_PARALLEL_EXECUTE_TASK$
where task_owner# = userenv('SCHEMAID')
/
create or replace public synonym USER_PARALLEL_EXECUTE_TASKS
for USER_PARALLEL_EXECUTE_TASKS
/
grant read on USER_PARALLEL_EXECUTE_TASKS to PUBLIC with grant option
/
create or replace view USER_PARALLEL_EXECUTE_CHUNKS
(CHUNK_ID,
TASK_NAME,
STATUS,
START_ROWID,
END_ROWID,
START_ID,
END_ID,
JOB_NAME,
START_TS,
END_TS,
ERROR_CODE,
ERROR_MESSAGE)
as
select CHUNK_ID,
TASK_NAME,
decode( status, 0, 'UNASSIGNED',
1, 'ASSIGNED',
2, 'PROCESSED',
3, 'PROCESSED_WITH_ERROR' ),
START_ROWID,
END_ROWID,
START_ID,
END_ID,
JOB_NAME,
START_TS,
END_TS,
ERROR_CODE,
ERROR_MESSAGE
from DBMS_PARALLEL_EXECUTE_CHUNKS$ c
where task_owner# = userenv('SCHEMAID')
/
create or replace public synonym USER_PARALLEL_EXECUTE_CHUNKS
for USER_PARALLEL_EXECUTE_CHUNKS
/
grant read on USER_PARALLEL_EXECUTE_CHUNKS to PUBLIC with grant option
/
-- DBA Views
create or replace view DBA_PARALLEL_EXECUTE_TASKS
(TASK_OWNER,
TASK_NAME,
CHUNK_TYPE,
STATUS,
TABLE_OWNER,
TABLE_NAME,
NUMBER_COLUMN,
TASK_COMMENT,
JOB_PREFIX,
SQL_STMT,
LANGUAGE_FLAG,
EDITION,
APPLY_CROSSEDITION_TRIGGER,
FIRE_APPLY_TRIGGER,
PARALLEL_LEVEL,
JOB_CLASS)
as
select u.username,
t.task_name,
decode( t.chunk_type, -1, 'UNDECLARED',
0, 'ROWID_RANGE',
1, 'NUMBER_RANGE'),
decode( dbms_parallel_execute_internal.task_status(t.task_owner#,
t.task_name),
1, 'CREATED',
2, 'CHUNKING',
3, 'CHUNKING_FAILED',
4, 'NO_CHUNKS',
5, 'CHUNKED',
6, 'PROCESSING',
7, 'FINISHED',
8, 'FINISHED_WITH_ERROR',
9, 'CRASHED' ),
t.TABLE_OWNER,
t.TABLE_NAME,
t.NUMBER_COLUMN,
t.CMT,
t.JOB_PREFIX,
t.SQL_STMT,
t.LANGUAGE_FLAG,
t.EDITION,
t.APPLY_CROSSEDITION_TRIGGER,
t.FIRE_APPLY_TRIGGER,
t.PARALLEL_LEVEL,
t.JOB_CLASS
from DBMS_PARALLEL_EXECUTE_TASK$ t,
DBA_USERS u
where task_owner# = u.user_id
/
CREATE OR REPLACE PUBLIC SYNONYM DBA_PARALLEL_EXECUTE_TASKS
FOR DBA_PARALLEL_EXECUTE_TASKS
/
GRANT SELECT ON DBA_PARALLEL_EXECUTE_TASKS TO select_catalog_role
/
GRANT SELECT ON DBA_PARALLEL_EXECUTE_TASKS TO ADM_PARALLEL_EXECUTE_TASK
/
execute CDBView.create_cdbview(false,'SYS','DBA_PARALLEL_EXECUTE_TASKS','CDB_PARALLEL_EXECUTE_TASKS');
grant select on SYS.CDB_PARALLEL_EXECUTE_TASKS to select_catalog_role
/
grant select on SYS.CDB_PARALLEL_EXECUTE_TASKS to ADM_PARALLEL_EXECUTE_TASK
/
create or replace public synonym CDB_PARALLEL_EXECUTE_TASKS for SYS.CDB_PARALLEL_EXECUTE_TASKS
/
create or replace view DBA_PARALLEL_EXECUTE_CHUNKS
(CHUNK_ID,
TASK_OWNER,
TASK_NAME,
STATUS,
START_ROWID,
END_ROWID,
START_ID,
END_ID,
JOB_NAME,
START_TS,
END_TS,
ERROR_CODE,
ERROR_MESSAGE)
as
select c.CHUNK_ID,
u.username,
c.TASK_NAME,
decode( c.status, 0, 'UNASSIGNED',
1, 'ASSIGNED',
2, 'PROCESSED',
3, 'PROCESSED_WITH_ERROR' ),
c.START_ROWID,
c.END_ROWID,
c.START_ID,
c.END_ID,
c.JOB_NAME,
c.START_TS,
c.END_TS,
c.ERROR_CODE,
c.ERROR_MESSAGE
from DBMS_PARALLEL_EXECUTE_CHUNKS$ c,
DBA_USERS u
where task_owner# = u.user_id
/
create or replace public synonym DBA_PARALLEL_EXECUTE_CHUNKS
for DBA_PARALLEL_EXECUTE_CHUNKS
/
GRANT SELECT ON DBA_PARALLEL_EXECUTE_CHUNKS TO select_catalog_role
/
GRANT SELECT ON DBA_PARALLEL_EXECUTE_CHUNKS TO ADM_PARALLEL_EXECUTE_TASK
/
execute CDBView.create_cdbview(false,'SYS','DBA_PARALLEL_EXECUTE_CHUNKS','CDB_PARALLEL_EXECUTE_CHUNKS');
grant select on SYS.CDB_PARALLEL_EXECUTE_CHUNKS to select_catalog_role
/
grant select on SYS.CDB_PARALLEL_EXECUTE_CHUNKS to ADM_PARALLEL_EXECUTE_TASK
/
create or replace public synonym CDB_PARALLEL_EXECUTE_CHUNKS for SYS.CDB_PARALLEL_EXECUTE_CHUNKS
/
--
-- Utility View used by the package
-- User must be granted SELECT privil on this view before they can use
-- this package.
--
create or replace view DBMS_PARALLEL_EXECUTE_EXTENTS as
SELECT owner,
segment_name,
partition_name,
segment_type,
data_object_id,
relative_fno,
block_id,
blocks
from (select ds.owner,
ds.segment_name,
ds.partition_name,
ds.segment_type,
e.block# BLOCK_ID,
e.length BLOCKS,
e.file# RELATIVE_FNO,
ds.data_object_id
from sys.uet$ e,
(select u.name OWNER,
o.name SEGMENT_NAME,
o.subname PARTITION_NAME,
so.object_type SEGMENT_TYPE,
ts.ts# TABLESPACE_ID,
s.block# HEADER_BLOCK,
s.file# RELATIVE_FNO,
NVL(s.spare1,0) SEGMENT_FLAGS,
o.dataobj# DATA_OBJECT_ID
from sys.user$ u,
sys.obj$ o,
sys.ts$ ts,
sys.seg$ s,
sys.file$ f,
(select 'TABLE' OBJECT_TYPE,
2 OBJECT_TYPE_ID,
5 SEGMENT_TYPE_ID,
t.obj# OBJECT_ID,
t.file# HEADER_FILE,
t.block# HEADER_BLOCK,
t.ts# TS_NUMBER
from sys.tab$ t
where bitand(t.property, 1024) = 0
and bitand(t.property, 8192) != 8192
) so
where s.file# = so.header_file
and s.block# = so.header_block
and s.ts# = so.ts_number
and s.ts# = ts.ts#
and o.obj# = so.object_id
and o.owner# = u.user#
and s.type# = so.segment_type_id
and o.type# = so.object_type_id
and s.ts# = f.ts#
and s.file# = f.relfile#
UNION ALL
select /*+ USE_NL(U O SO) */
u.name OWNER,
o.name SEGMENT_NAME,
o.subname PARTITION_NAME,
so.object_type SEGMENT_TYPE,
ts.ts# TABLESPACE_ID,
s.block# HEADER_BLOCK,
s.file# RELATIVE_FNO,
NVL(s.spare1,0) SEGMENT_FLAGS,
o.dataobj# DATA_OBJECT_ID
from sys.user$ u,
sys.obj$ o,
sys.ts$ ts,
sys.seg$ s,
sys.file$ f,
(select /*+ INDEX(TP) */
'TABLE PARTITION' OBJECT_TYPE,
19 OBJECT_TYPE_ID,
5 SEGMENT_TYPE_ID,
tp.obj# OBJECT_ID,
tp.file# HEADER_FILE,
tp.block# HEADER_BLOCK,
tp.ts# TS_NUMBER
from sys.tabpart$ tp
) so
where s.file# = so.header_file
and s.block# = so.header_block
and s.ts# = so.ts_number
and s.ts# = ts.ts#
and o.obj# = so.object_id
and o.owner# = u.user#
and s.type# = so.segment_type_id
and o.type# = so.object_type_id
and s.ts# = f.ts#
and s.file# = f.relfile#
UNION ALL
select u.name OWNER,
o.name SEGMENT_NAME,
o.subname PARTITION_NAME,
so.object_type SEGMENT_TYPE,
ts.ts# TABLESPACE_ID,
s.block# HEADER_BLOCK,
s.file# RELATIVE_FNO,
NVL(s.spare1,0) SEGMENT_FLAGS,
o.dataobj# DATA_OBJECT_ID
from sys.user$ u,
sys.obj$ o,
sys.ts$ ts,
sys.seg$ s,
sys.file$ f,
(select /*+ INDEX(TSP) */
'TABLE SUBPARTITION' OBJECT_TYPE,
34 OBJECT_TYPE_ID,
5 SEGMENT_TYPE_ID,
tsp.obj# OBJECT_ID,
tsp.file# HEADER_FILE,
tsp.block# HEADER_BLOCK,
tsp.ts# TS_NUMBER
from sys.tabsubpart$ tsp
) so
where s.file# = so.header_file
and s.block# = so.header_block
and s.ts# = so.ts_number
and s.ts# = ts.ts#
and o.obj# = so.object_id
and o.owner# = u.user#
and s.type# = so.segment_type_id
and o.type# = so.object_type_id
and s.ts# = f.ts#
and s.file# = f.relfile#
) ds,
sys.file$ f
where e.segfile# = ds.relative_fno
and e.segblock# = ds.header_block
and e.ts# = ds.tablespace_id
and e.ts# = f.ts#
and e.file# = f.relfile#
and bitand(NVL(ds.segment_flags,0), 1) = 0
union all
select /*+ ordered use_nl(e) use_nl(f) */
ds.owner,
ds.segment_name,
ds.partition_name,
ds.segment_type,
e.ktfbuebno BLOCK_ID,
e.ktfbueblks BLOCKS,
e.ktfbuefno RELATIVE_FNO,
ds.data_object_id
from (select u.name OWNER,
o.name SEGMENT_NAME,
o.subname PARTITION_NAME,
so.object_type SEGMENT_TYPE,
ts.ts# TABLESPACE_ID,
s.block# HEADER_BLOCK,
s.file# RELATIVE_FNO,
NVL(s.spare1,0) SEGMENT_FLAGS,
o.dataobj# DATA_OBJECT_ID
from sys.user$ u,
sys.obj$ o,
sys.ts$ ts,
sys.seg$ s,
sys.file$ f,
(select 'TABLE' OBJECT_TYPE,
2 OBJECT_TYPE_ID,
5 SEGMENT_TYPE_ID,
t.obj# OBJECT_ID,
t.file# HEADER_FILE,
t.block# HEADER_BLOCK,
t.ts# TS_NUMBER
from sys.tab$ t
where bitand(t.property, 1024) = 0
and bitand(t.property, 8192) != 8192
) so
where s.file# = so.header_file
and s.block# = so.header_block
and s.ts# = so.ts_number
and s.ts# = ts.ts#
and o.obj# = so.object_id
and o.owner# = u.user#
and s.type# = so.segment_type_id
and o.type# = so.object_type_id
and s.ts# = f.ts#
and s.file# = f.relfile#
UNION ALL
select /*+ USE_NL(U O SO) */
u.name OWNER,
o.name SEGMENT_NAME,
o.subname PARTITION_NAME,
so.object_type SEGMENT_TYPE,
ts.ts# TABLESPACE_ID,
s.block# HEADER_BLOCK,
s.file# RELATIVE_FNO,
NVL(s.spare1,0) SEGMENT_FLAGS,
o.dataobj# DATA_OBJECT_ID
from sys.user$ u,
sys.obj$ o,
sys.ts$ ts,
sys.seg$ s,
sys.file$ f,
(select /*+ INDEX(TP) */
'TABLE PARTITION' OBJECT_TYPE,
19 OBJECT_TYPE_ID,
5 SEGMENT_TYPE_ID,
tp.obj# OBJECT_ID,
tp.file# HEADER_FILE,
tp.block# HEADER_BLOCK,
tp.ts# TS_NUMBER
from sys.tabpart$ tp
) so
where s.file# = so.header_file
and s.block# = so.header_block
and s.ts# = so.ts_number
and s.ts# = ts.ts#
and o.obj# = so.object_id
and o.owner# = u.user#
and s.type# = so.segment_type_id
and o.type# = so.object_type_id
and s.ts# = f.ts#
and s.file# = f.relfile#
UNION ALL
select u.name OWNER,
o.name SEGMENT_NAME,
o.subname PARTITION_NAME,
so.object_type SEGMENT_TYPE,
ts.ts# TABLESPACE_ID,
s.block# HEADER_BLOCK,
s.file# RELATIVE_FNO,
NVL(s.spare1,0) SEGMENT_FLAGS,
o.dataobj# DATA_OBJECT_ID
from sys.user$ u,
sys.obj$ o,
sys.ts$ ts,
sys.seg$ s,
sys.file$ f,
(select /*+ INDEX(TSP) */
'TABLE SUBPARTITION' OBJECT_TYPE,
34 OBJECT_TYPE_ID,
5 SEGMENT_TYPE_ID,
tsp.obj# OBJECT_ID,
tsp.file# HEADER_FILE,
tsp.block# HEADER_BLOCK,
tsp.ts# TS_NUMBER
from sys.tabsubpart$ tsp
) so
where s.file# = so.header_file
and s.block# = so.header_block
and s.ts# = so.ts_number
and s.ts# = ts.ts#
and o.obj# = so.object_id
and o.owner# = u.user#
and s.type# = so.segment_type_id
and o.type# = so.object_type_id
and s.ts# = f.ts#
and s.file# = f.relfile#
) ds,
sys.x$ktfbue e,
sys.file$ f
where e.ktfbuesegfno = ds.relative_fno
and e.ktfbuesegbno = ds.header_block
and e.ktfbuesegtsn = ds.tablespace_id
and e.ktfbuesegtsn = f.ts#
and e.ktfbuefno = f.relfile#
and bitand(NVL(ds.segment_flags, 0), 1) = 1
);
@?/rdbms/admin/sqlsessend.sql
OHA YOOOO