Oracle KUPP$PROC
Version 21c

General Information
Library Note Morgan's Library Page Header
ACE Director Alum Daniel Morgan, founder of Morgan's Library, is scheduling complimentary technical Workshops on Database Security for the first 30 Oracle Database customers located anywhere in North America, EMEA, LATAM, or APAC that send an email to asra_us@oracle.com. Request a Workshop for your organization today.
Purpose DataPump Support Utilities
AUTHID CURRENT_USER
Dependencies
DBMS_ASSERT DBMS_STATS KUPF$FILE
DBMS_AW_EXP DBMS_TDE_TOOLKIT KUPM$MCP
DBMS_DATAPUMP DBMS_TRAN_LIB KUPP_PROC_LIB
DBMS_DATAPUMP_INT DBMS_TTS KUPU$UTILITIES
DBMS_DST KUPC$QUEUE KUPU$UTILITIES_INT
DBMS_METADATA KUPC$QUEUE_INT KUPUTIL
DBMS_METADATA_UTIL KUPC$QUE_INT KUPV$FT
DBMS_PLUGTS KUPCC KUPV$FT_INT
DBMS_PRIV_CAPTURE KUPD$DATA KUPW$WORKER
Documented No
First Available 10.1
Security Model Owned by SYS with execute granted to the EXECUTE_CATALOG_ROLE role.

Direct access to this package is prevented by means of an Accessible By clause.
Source {ORACLE_HOME}/rdbms/admin/prvthpp.plb
Subprograms
 
ANY_DEBUG_TRACE_INFO
Returns TRUE if any debug trace information has been generated kupp$proc.any_debug_trace_info RETURN BOOLEAN;
set serveroutput on

BEGIN
  IF kupp$proc.any_debug_trace_info THEN
    dbms_output.put_line('TRUE');
  ELSE
    dbms_output.put_line('FALSE');
  END IF;
END;
/
FALSE

PL/SQL procedure successfully completed.
 
APPLY_TRACE_DEBUG_RULES
Undocumented kupp$proc.apply_trace_debug_rules(debug_flags IN BINARY_INTEGER)
RETURN BINARY_INTEGER;
SELECT kupp$proc.apply_trace_debug_rules(-1)
FROM dual;

KUPP$PROC.APPLY_TRACE_DEBUG_RULES(-1)
-------------------------------------
                           -1.074E+09


SELECT kupp$proc.apply_trace_debug_rules(0)
FROM dual;

KUPP$PROC.APPLY_TRACE_DEBUG_RULES(0)
------------------------------------
                                   0


SELECT kupp$proc.apply_trace_debug_rules(1)
FROM dual;

KUPP$PROC.APPLY_TRACE_DEBUG_RULES(1)
------------------------------------
                                   1
 
CHANGE_USER
Undocumented but allow changing the user's identity. Requires the BECOME USER privilege kupp$proc.change_user(username IN VARCHAR2);
SELECT user FROM dual;

USER
------------------------------
SYS


SELECT sys_context('USERENV', 'CURRENT_SCHEMA') FROM dual;

SYS_CONTEXT('USERENV','CURRENT_SCHEMA')
----------------------------------------
SYS


exec sys.kupp$proc.change_user('UWCLASS');
*
ERROR at line 1:
ORA-31625: Schema UWCLASS is needed to import this object, but is unaccessible
ORA-06512: at "SYS.KUPP$PROC", line 45
ORA-06512: at "SYS.KUPP$PROC", line 930
ORA-06512: at line 1
 
CHECK_FOR_INTERRUPT
Undocumented kupp$proc.check_for_interrupt;
exec kupp$proc.check_for_interrupt;

PL/SQL procedure successfully completed.
 
CHECK_WORKER_STATUS
Undocumented and protected by an ACCESIBLE BY Clause kupp$proc.check_worker_status;
exec kupp$proc.check_worker_status;
     *
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00904: insufficient privilege to access object CHECK_WORKER_STATUS
 
CREATE_MASTER_PROCESS
Undocumented kupp$proc.create_master_process(
master_exec_spec IN VARCHAR2,
username         IN VARCHAR2,
job_name         IN VARCHAR2,
wait_init_done   IN BOOLEAN)
RETURN BINARY_INTEGER;
TBD
 
CREATE_WORKER_PROCESSES
Undocumented kupp$proc.create_worker_processes(
num_workers      IN BINARY_INTEGER,
worker_exec_spec IN VARCHAR2,
worker_seed      IN BINARY_INTEGER,
wait_init_done   IN BOOLEAN)
RETURN BINARY_INTEGER;
TBD
 
DEFAULT_DOP (new 21c)
Undocumented

Protected by an ACCESSIBLE BY clause
kupp$proc.default_dop RETURN BINARY_INTEGER;
SELECT kupp$proc.default_dop
FROM dual;
SELECT kupp$proc.default_dop
*
ERROR at line 1:
ORA-06553: PLS-904: insufficient privilege to access object DEFAULT_DOP
 
DELETE_WORKER_PROCESSES
Undocumented kupp$proc.delete_worker_processes;
exec kupp$proc.delete_worker_processes;
*
ERROR at line 1:
ORA-39110: error deleting worker processes
ORA-31610: cannot call this function from a non-master process
ORA-06512: at "SYS.KUPP$PROC", line 102
ORA-06512: at "SYS.KUPP$PROC", line 383
ORA-06512: at line 1
 
DISABLE_MULTIPROCESS
Undocumented kupp$proc.disable_multiprocess RETURN BINARY_INTEGER;
SELECT kupp$proc.disable_multiprocess
FROM dual;

DISABLE_MULTIPROCESS
--------------------
                   1
 
ENABLE_FLASHBACK_DMLS
Undocumented kupp$proc.enable_flashback_dmls;
exec kupp$proc.enable_flashback_dmls;

PL/SQL procedure successfully completed.
 
ENABLE_MULTIPROCESS
Undocumented kupp$proc.enable_multiprocess RETURN BINARY_INTEGER;
SELECT kupp$proc.enable_multiprocess
FROM dual;

ENABLE_MULTIPROCESS
-------------------
                  1
 
GET_CIT_FLAG (new 21c)
Undocumented kupp$proc.get_cit_flag RETURN BINARY_INTEGER;
SELECT kupp$proc.get_cit_flag
FROM dual;

GET_CIT_FLAG
------------
           0
 
GET_NLS_ALTER_SESSION
Undocumented kupp$proc.get_nls_alter_session RETURN VARCHAR2;
SELECT kupp$proc.get_nls_alter_session
FROM dual;

GET_NLS_ALTER_SESSION
-----------------------------------------------
 
 
GET_TRACE_DEBUG
Undocumented kupp$proc.get_trace_debug RETURN BINARY_INTEGER;
SELECT kupp$proc.get_trace_debug
FROM dual;

GET_TRACE_DEBUG
---------------
              0
 
GET_WORKER_EXCEPTION
Undocumented kupp$proc.get_worker_exception(
worker_id        OUT BINARY_INTEGER,
worker_name      OUT VARCHAR2,
worker_name_size IN  BINARY_INTEGER,
error_code       OUT BINARY_INTEGER,
error_stack      OUT VARCHAR2,
error_stack_size IN  BINARY_INTEGER);
TBD
 
INIT_DONE
Undocumented kupp$proc.init_done;
exec kupp$proc.init_done;

PL/SQL procedure successfully completed.
 
IS_MULTIPROCESS_ENABLED
Returns a 1 if multiprocess is enable, otherwise 0

See ENABLE_MULTIPROCESS and DISABLE_MULTIPROCESS on this page
kupp$proc.is_multiprocess_enabled RETURN BINARY_INTEGER;
SELECT kupp$proc.is_multiprocess_enabled
FROM dual;

IS_MULTIPROCESS_ENABLED
-----------------------
                      1
 
JOB_ALIVE
Undocumented kupp$proc.job_alive(jobser IN BINARY_INTEGER) RETURN BINARY_INTEGER;
TBD
 
KILL_WORKER
Deletes the identified worker process kupp$proc.kill_worker(worker_id IN BINARY_INTEGER);
exec kupp$proc.kill_worker(1);
BEGIN kupp$proc.kill_worker(1); END;

*
ERROR at line 1:
ORA-39110: error deleting worker processes
ORA-31610: cannot call this function from a non-master process
ORA-06512: at "SYS.KUPP$PROC", line 968
ORA-06512: at line 1
 
MAX_DOP (new 21c)
Undocumented

Protected by an ACCESSIBLE BY clause
kupp$proc.max_dop(curr_max IN BINARY_INTEGER) RETURN BINARY_INTEGER;
SELECT kupp$proc.max_dop(4)
FROM dual;
SELECT kupp$proc.max_dop(4)
*
ERROR at line 1:
ORA-06553: PLS-904: insufficient privilege to access object MAX_DOP
 
OPTION_ENABLED
Undocumented

The only value that returns TRUE in my tests is one (1)
kupp$proc.option_enabled(optval IN BINARY_INTEGER) RETURN BOOLEAN;
set serveroutput on

BEGIN
  IF kupp$proc.option_enabled(-1) THEN
    dbms_output.put_line('-1');
  END IF;
END;
/
*
ERROR at line 1:
ORA-01426: numeric overflow
ORA-06512: at "SYS.KUPP$PROC", line 944
ORA-06512: at "SYS.KUPP$PROC", line 959
ORA-06512: at line 2


BEGIN
  2    IF kupp$proc.option_enabled(0) THEN
  3       dbms_output.put_line('0');
  4    END IF;
END;
/

PL/SQL procedure successfully completed.

BEGIN
  2    IF kupp$proc.option_enabled(1) THEN
  3      dbms_output.put_line('1');
  4    END IF;
END;
/
1

PL/SQL procedure successfully completed.


BEGIN
  IF kupp$proc.option_enabled(999999999) THEN
    dbms_output.put_line('999999999');
  END IF;
END;
/

PL/SQL procedure successfully completed.

BEGIN
  IF kupp$proc.option_enabled(9999999999) THEN
    dbms_output.put_line('9999999999');
  END IF;
END;
/
*
ERROR at line 1:
ORA-01426: numeric overflow
ORA-06512: at line 2
 
SEC_TT_LOADED
Undocumented kupp$proc.sec_tt_loaded;
exec kupp$proc.sec_tt_loaded;
BEGIN kupp$proc.sec_tt_loaded; END;
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [600], [], [], [], [], [], [], [], [], [], [], []
ORA-31610: cannot call this function from a non-master process
ORA-06512: at "SYS.KUPP$PROC", line 977
ORA-06512: at line 1
 
SEC_TT_UNLOADED
Undocumented kupp$proc.sec_tt_unloaded;
exec kupp$proc.sec_tt_unloaded;
BEGIN kupp$proc.sec_tt_unloaded; END;
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [600], [], [], [], [], [], [], [], [], [], [], []
ORA-31610: cannot call this function from a non-master process
ORA-06512: at "SYS.KUPP$PROC", line 985
ORA-06512: at line 1
 
SET_CIT_FLAG (new 21c)
Undocumented

Protected by an ACCESSIBLE BY clause
kupp$proc.set_cit_flag(newval IN BINARY_INTEGER);
exec kupp$proc.set_cit_flag(1);
BEGIN kupp$proc.set_cit_flag(1); END;
*
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00904: insufficient privilege to access object SET_CIT_FLAG
 
SET_PROFILING
Undocumented kupp$proc.set_profiling(on_flag IN BOOLEAN);
exec kupp$proc.set_profiling(FALSE);

PL/SQL procedure successfully completed.
 
SET_REMOTE_WORKER
Undocumented kupp$proc.set_remote_worker(worker_id IN NUMBER);
exec kupp$proc.set_remote_worker(9);

PL/SQL procedure successfully completed.
 
SET_TRACE_DEBUG
Undocumented kupp$proc.set_trace_debug(
debug_flags IN BINARY_INTEGER,
caller_type IN BINARY_INTEGER,
remote_op   IN BOOLEAN);
TBD
 
SHUTDOWN_IN_PROGRESS
Returns TRUE if the container is in the process of shutting down kupp$proc.shutdown_in_progress RETURN BOOLEAN;
BEGIN
  IF kupp$proc.shutdown_in_progress THEN
    dbms_output.put_line('Shutdown In Progress');
  ELSE
    dbms_output.put_line('Shutdown Is Not In Progress');
  END IF;
END;
/
Shutdown Is Not In Progress

PL/SQL procedure successfully completed.
 
TOTAL_WORKERS_ALIVE
Undocumented kupp$proc.total_workers_alive(worker_exceptions_queued OUT BINARY_INTEGER)
RETURN BINARY_INTEGER;
DECLARE
 ret PLS_INTEGER;
 weq PLS_INTEGER;
BEGIN
  ret := kupp$proc.total_workers_alive(weq);
  dbms_output.put_line(ret);
  dbms_output.put_line(weq);
END;
/
*
ERROR at line 1:
ORA-39003: unable to get count of total workers alive
ORA-31610: cannot call this function from a non-master process
ORA-06512: at "SYS.KUPP$PROC", line 883
ORA-06512: at line 5
 
WHATS_MY_ID
Returns the current user's user_id from USER$ kupp$proc.whats_my_id RETURN BINARY_INTEGER;
sho user
USER is "SYS"

SELECT user_id
FROM dba_users
WHERE username = 'SYS';

   USER_ID
----------
         0


SELECT kupp$proc.whats_my_id
FROM dual;

WHATS_MY_ID
-----------
          0
 
WHATS_MY_NAME
Outputs the name of a Data Pump process based on process name size kupp$proc.whats_my_name(
process_name      OUT VARCHAR2,
process_name_size IN  BINARY_INTEGER);
DECLARE
 outVal VARCHAR2(30);
BEGIN
  kupp$proc.whats_my_name(outVal, 14);
  dbms_output.put_line(outVal);
END;
/
*
ERROR at line 1:
ORA-39160: error on whats my name call
ORA-39159: cannot call this function from a non-Data Pump process
ORA-06512: at "SYS.KUPP$PROC", line 228
ORA-06512: at "SYS.KUPP$PROC", line 1095
ORA-06512: at line 4
 
WHAT_AM_I
Undocumented but seems to always return zero (0) kupp$proc.what_am_id RETURN BINARY_INTEGER;
SELECT kupp$proc.what_am_i
FROM dual;

 WHAT_AM_I
----------
         0
 
WHAT_ORACLE_PRODUCT
Undocumented: Oracle Enterprise Edition version 11.2.0.3 and 12.1.0.2 both return 8 kupp$proc.what_oracle_product RETURN BINARY_INTEGER;
SELECT kupp$proc.what_oracle_product
FROM dual;

WHAT_ORACLE_PRODUCT
-------------------
                  8
 
WORKER_EXTTBL_ACTIVE
Undocumented kupp$proc.worker_exttbl_active;
exec kupp$proc.worker_exttbl_active;
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [600], [], [], [], [], [], [], [], [], [], [], []
ORA-39159: cannot call this function from a non-Data Pump process
ORA-06512: at "SYS.KUPP$PROC", line 1001
ORA-06512: at line 1
 
WORKER_EXTTBL_FULLNAME
Undocumented kupp$proc.worker_exttbl_fullName(
exttbl_schema IN VARCHAR2,
exttbl_name   IN VARCHAR2);
exec kupp$proc.worker_exttbl_fullName('C##SH', 'SALES');
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [600], [], [], [], [], [], [], [], [], [], [], []
ORA-39159: cannot call this function from a non-Data Pump process
ORA-06512: at "SYS.KUPP$PROC", line 990
ORA-06512: at line 1
 
WORKER_EXTTBL_INACTIVE
Undocumented kupp$proc.worker_exttbl_inactive(
exec kupp$proc.worker_exttbl_inactive;
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [600], [], [], [], [], [], [], [], [], [], [], []
ORA-39159: cannot call this function from a non-Data Pump process
ORA-06512: at "SYS.KUPP$PROC", line 1001
ORA-06512: at line 1
 
WORKER_PROCESS_INIT
Undocumented kupp$proc.worker_process_init(
max_workers IN BINARY_INTEGER,
use_cluster IN BINARY_INTEGER,
svcname     IN VARCHAR2);
TBD
 
WORKER_SERVICE_INIT
Undocumented kupp$proc.worker_service_init(svcnam IN VARCHAR2);
SELECT DISTINCT name
FROM v$active_services;

exec kupp$proc.worker_service_init('SYS$USERS');
BEGIN kupp$proc.worker_service_init('SYS$USERS'); END;
*
ERROR at line 1:
ORA-31686: error creating worker processes
ORA-39159: cannot call this function from a non-Data Pump process
ORA-06512: at "SYS.KUPP$PROC", line 209
ORA-06512: at "SYS.KUPP$PROC", line 356
ORA-06512: at line 1

Related Topics
Built-in Functions
Built-in Packages
Datapump Executable
DBMS_DATAPUMP
DBMS_DATAPUMP_UTL
What's New In 21c
What's New In 23c

Morgan's Library Page Footer
This site is maintained by Dan Morgan. Last Updated: This site is protected by copyright and trademark laws under U.S. and International law. © 1998-2023 Daniel A. Morgan All Rights Reserved
  DBSecWorx