Getting Control of the Oracle Java Virtual Machine
April 29, 2003
From time to time, DBAs have to take over "alien" databases. These databases are usually living parts from some failed project, a badly documented job from a previous DBA or in a worst case scenario, a database with very important data without any support. The situation gets worse when the database has the Java Option installed. In this article, I'll explain about the Oracle database Java Option and offer some practical tips regarding Java Virtual Machine (JVM).
This article covers:
The database Java Optionconsists ofaJava Virtual Machine (JVM) with a native compiler, a CORBA 2.0 ORB, an EJB server, an embedded server side JDBC driver, and a SQLJ translator.
The main Java module, JVM, is completely integrated with the SQL and PL/SQL database engines and 100% compliant with Sun's JVM specification. The JVM provides an enhanced support engine for Java programs and SQLJ written stored procedures, functions and triggers.
Because it runs under the database kernel, the JVM provides great stability for all running Java applications.
Java applications can be client or server side compiled. Client based code is Java code developed on the client, compiled, loaded and published in the database. Server based code is Java source loaded directly into the database and automatically compiled using SQLJ and the byte code compilers.
The Oracle database installation script, initjvm.sql, loads the initial set of necessary Java classes, initialises the Java and CORBA namespace supporting tables, publishes top-level entry points through call-specifications, modifies security settings for some loaded classes to run with definer's rights and installs new database start-up and shutdown triggers.
All Java classes are loaded in the SYS schema and all have public synonyms created for use by other database users.
Support Java classes for the following components will be loaded by the Java load procedure:
All class files are stored in the location: $ORACLE_HOME/javavm/admin/classes.bin and source code for these classes are located in the directory $ORACLE_HOME/javavm/lib.
For example on version 8.1.7 initjvm.sql creates the following objects: