Oracle JVMRJBCINV
Version 21c

General Information
Library Note Morgan's Library Page Header
Which has the higher priority in your organization: Deploying a new database or securing the ones you already have? Looking for a website, and resources, dedicated solely to securing Oracle databases? Check out DBSecWorx.
Purpose Support for loadjava, calling runjava from ojvmjava
AUTHID CURRENT_USER
Dependencies
 DBMS_JAVA DBMS_JAVA_TEST DBMS_STANDARD
DBMS_JAVA_MISC DBMS_PIPE JVMRJBC
Documented No
First Available Not known
Security Model Owned by SYS with EXECUTE granted to PUBLIC
Source {ORACLE_HOME}/rdbms/admin/initdbj.sql
Subprograms
DROP_JAR RJBC_FLAGS RJBC_REQUEST
FINISH_LOADING_JAR RJBC_INIT RJBC_RESPOND
HANDLEMD5 RJBC_NORMALIZE RJBC_SESSID
JAR_STATUS RJBC_OUTPUT START_LOADING_JAR
RJBC_DONE    
 
DROP_JAR
Undocumented jvmrjbcinv.drop_jar(
name   IN  VARCHAR2,
schema IN  VARCHAR2,
msg    OUT VARCHAR2)
RETURN NUMBER AS language java name
'oracle.aurora.rdbms.DbmsJava.dropJar
(java.lang.String, java.lang.String, java.lang.String[])
RETURN INT';
TBD
 
FINISH_LOADING_JAR
Complete JAR loading jvmrjbcinv.finish_loading_jar(
flags IN  NUMBER,
msg   OUT VARCHAR2)
RETURN NUMBER
AS language java name
'oracle.aurora.rdbms.DbmsJava.finishLoadingJar
(int, java.lang.String[]) RETURN INT';
TBD
 
HANDLEMD5
Acesses information about schema objects that is required by loadjava

Overload 1
jvmrjbcinv.handleMD5(
s    IN VARCHAR2,
name IN VARCHAR2,
type IN NUMBER)
RETURN RAW
AS language java name 'oracle.aurora.server.tools.loadjava.HandleMd5.get
(java.lang.String,java.lang.String,int) RETURN oracle.sql.RAW';
TBD
Variant that looks in current schema

Overload 2
jvmrjbcinv.handleMD5(
name IN VARCHAR2,
type IN NUMBER)
RETURN RAW AS language java name
'oracle.aurora.server.tools.loadjava.HandleMd5.get
(java.lang.String,int) RETURN oracle.sql.RAW';
TBD
 
JAR_STATUS
Undocumented jvmrjbcinv.jar_status(
name   IN  VARCHAR2,
schema IN  VARCHAR2,
msg    OUT VARCHAR2)
RETURN NUMBER AS language java name
'oracle.aurora.rdbms.DbmsJava.jarStatus
(java.lang.String, java.lang.String, java.lang.String[]) RETURN INT';
TBD
 
RJBC_DONE
Call from the client to shutdown the back channel jvmrjbcinv.rjbc_done(id IN VARCHAR2 := NULL);
exec jvmrjbcinv.rjbc_done();

-- after 5 minutes it appears that this hangs
-- confirmed by an attempted shutdown immediate that also appeared to hang
-- finally resolved with a shutdown abort and a restart
 
RJBC_FLAGS
Undocumented jvmrjbcinv.rjbc_flags RETURN VARCHAR2;
See RJBC_INIT Demo Below
 
RJBC_INIT
Initiates a back channel, return id that identifies it. Called prior to runjava in the same session as runjava will run jvmrjbcinv.rjbc_init(flags IN NUMBER) RETURN VARCHAR2;
-- flags non zero means dont use back channel for file content

DECLARE
 retVal dbms_id;
BEGIN
  retVal := jvmrjbcinv.rjbc_init(1);
  dbms_output.put_line(retVal);
END;
/
ORA$PIPE$0018DD670001E6BDEC2BC0E6CEFA804F9430E98B34681573256D52239EB9B28CBAA2268A7E610100CD

PL/SQL procedure successfully completed.

SELECT jvmrjbcinv.rjbc_sessid
FROM dual;

RJBC_SESSID
--------------------------------------------------------------------------ORA$PIPE$0018DD670001E6BDEC2BC0E6CEFA804F9430E98B34681573256D52239EB9B28CBAA2268A7E610100CD

SELECT jvmrjbcinv.rjbc_flags
FROM dual;

SELECT jvmrjbcinv.rjbc_flags
FROM dual;

RJBC_FLAGS
-----------
1
 
RJBC_NORMALIZE
Called from runjava to ask for the normalized, absolute pathname on the client filesystem of the file identified by the input argument pathname. Puts pathname in the java$jvm$rjbc row then waits for a client response jvmrjbcinv.rjbc_normalize(
pathname            IN  VARCHAR2,
rtype               IN  NUMBER,
normalized_pathname OUT VARCHAR2)
RETURN NUMBER;
TBD
 
RJBC_OUTPUT
Sets_output_to_sql entrypoint used by runjava to pass output back to the client.
Puts text in the java$jvm$rjbc row then waits for a client response.
jvmrjbcinv.rjbc_output(
text IN VARCHAR2,
nl   IN NUMBER);
TBD
 
RJBC_REQUEST
Called from runjava to ask for contents or directoriness of file identified by pathname on the client filesystem. Puts pathname in the java$jvm$rjbc row then waits for a client response. jvmrjbcinv.rjbc_request(
pathname IN  VARCHAR2,
rtype    IN  NUMBER,
lob      OUT BLOB)
RETURN NUMBER;
TBD
 
RJBC_RESPOND
Called in loop by back channel client thread to respond to requests queued by rjbc_request, rjbc_normalize and rjbc_output jvmrjbcinv.rjbc_respond(
sid IN        VARCHAR2,
status IN     NUMBER,
p      IN OUT VARCHAR2,
l      IN     BLOB)
return NUMBER;
TBD
 
RJBC_SESSID
Undocumented jvmrjbcinv.rjbc_sessid RETURN VARCHAR2;
See RJBC_INIT Demo Above
 
START_LOADING_JAR
Begin JAR loading jvmrjbcinv.start_loading_jar(
name    IN  VARCHAR2,
schema  IN  VARCHAR2,
path    IN  VARCHAR2,
flags   IN  NUMBER,
content IN  BLOB,
msg     OUT VARCHAR2)
RETURN NUMBER AS language java name
'oracle.aurora.rdbms.DbmsJava.startLoadingJar
(java.lang.String, java.lang.String, java.lang.String, int, oracle.sql.BLOB, java.lang.String[])
RETURN INT';
TBD

Related Topics
Built-in Functions
Built-in Packages
Database Security
DBMS_JAVA
JVMFCB
JVMRJBC
What's New In 19c
What's New In 20c-21c

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-2019 Daniel A. Morgan All Rights Reserved
  DBSecWorx