Oracle JVMRJBC
Version 23c

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 The source file states: "This package defines the API to java$jvm$rjbc and related routines."

Another source identifies it as: "JVM utility for working with LOBs (initdbj)."

Likely both are correct.
AUTHID DEFINER
Dependencies
BMS_CRYPTO DBMS_PIPE JVMRJBCINV
DBMS_LOB JAVA$JVM$RJBC  
Documented No
First Available Not Known
Security Model Owned by SYS with EXECUTE granted to PUBLIC
Source {ORACLE_HOME}/rdbms/admin/initdbj.sql
Subprograms
 
DONE
Closes a session identifier jvmrjbc.done(sessid IN VARCHAR2);
DECLARE
 inVal dbms_id :=
'ORA$PIPE$00BA74A4000171CBDF0007BA4C499FED03B1D4B239C9F61B9E92AA2F30692AD1B6AFE0FDC2FFF01945';
BEGIN
  jvmrjbc.done(inVal);
END;
/

PL/SQL procedure successfully completed.
 
GETLOB
Returns the BLOB loaded with PUTLOB jvmrjbc.getLOB(sessid IN VARCHAR2) RETURN BLOB;
DECLARE
 sid    dbms_id :=
'ORA$PIPE$00BA74A400012BD2510A70A92DFD2F8F623A60BFC19C1A83339E785F3386AE385F27D8F08D3FAAEB00';
 retVal BLOB;
BEGIN
  retVal := jvmrjbc.getLOB(sid);
  dbms_output.put_line(TO_CHAR(dbms_lob.getLength(retVal)));
END;
/
0

PL/SQL procedure successfully completed.
 
GETPATH
Returns the path loaded with PUTPATH jvmrjbc.getPath(sessid IN VARCHAR2) RETURN VARCHAR2;
DECLARE
 sid    dbms_id :=
'ORA$PIPE$00BA74A400012BD2510A70A92DFD2F8F623A60BFC19C1A83339E785F3386AE385F27D8F08D3FAAEB00';
 retVal dbms_id;
BEGIN
  retVal := jvmrjbc.getPath(sid);
  dbms_output.put_line(retVal);
END;
/

PL/SQL procedure successfully completed.
 
INIT
Initialize a session identifier jvmrjbc.init RETURN VARCHAR2;
DECLARE
 retVal dbms_id;
BEGIN
  retVal := jvmrjbc.init;
  dbms_output.put_line(retVal);
END;
/
ORA$PIPE$00969B680001572C887EF78338F52BD26CB7487364EEC85603859958A96BD913AB17695919E406D030

PL/SQL procedure successfully completed.
 
PUTLOB
Loads the BLOB returned by GETLOB jvmrjbc.putLOB(
sessid IN VARCHAR2,
l      IN BLOB);
See PUTPATH Demo Below
 
PUTPATH
Sets the path returned by GETPATH jvmrjbc.putPath(
sessid   IN VARCHAR2,
pathname IN VARCHAR2);
-- return a list of tables with BLOB columns
SELECT dtc.table_name, dtc.column_name
FROM dba_tab_cols dtc, dba_tables dt
WHERE dtc.owner = 'SYS'
AND dtc.owner = dt.owner
AND dtc.table_name = dt.table_name
AND dt.num_rows > 0
AND dtc.data_type = 'BLOB'
ORDER BY 1;

-- find one of the tables with a BLOB column that contains a BLOB for use below
SELECT dbms_lob.getLength(awlob)
FROM aw$awcreate
WHERE dbms_lob.getLength(awlob) > 0;

DECLARE
 sessid dbms_id;
 pname  dbms_id;
 iBlob  BLOB;
 oBlob  BLOB;
BEGIN
  sessid := jvmrjbc.init;
  dbms_output.put_line('Session ID: ' || sessid);
  jvmrjbc.putPath(sessid, 'c:\temp\');
  pname := jvmrjbc.getPath(sessid);
  dbms_output.put_line('PathName: ' || pname);

  SELECT awlob INTO iBlob
  FROM aw$awcreate
  WHERE dbms_lob.getLength(awlob) > 0
  AND rownum = 1;

  jvmrjbc.putLob(sessid, iBlob);
  oBlob := jvmrjbc.getLOB(sessid);
  dbms_output.put_line(dbms_lob.getLength(oBlob));

  jvmrjbc.done(sessid);
END;
/

Related Topics
Built-in Functions
Built-in Packages
Database Security
JVMFCB
JVMRJBCINV
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