Getting Control of the Oracle Java Virtual Machine

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:

  • Java Components
  • Java Virtual Machine Parameters
  • Detecting Java Status
  • JVM Operational Test
  • Procedure for Cleaning Up JVM
  • Database JVM Upgrade Considerations
  • Java Backup
  • Conclusion

Java Components

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:

  • Aurora (Code name for initialised JavaVM)
  • The standard Java runtime
  • Bytecode verifier and optimiser
  • Java and SQLJ compilers
  • JDBC runtime
  • CORBA ORB and EJB runtime

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:

  • 3 functions
  • 4 indexes
  • 6438 java classes
  • 290 java data
  • 57 java resources
  • 6 packages
  • 1 sequence
  • 6443 synonyms
  • 8 tables
  • 2 triggers
  • 3 views
Marin Komadina
Marin Komadina
Marin was born June 27, 1968 in Zagreb, Croatia. He graduated in 1993 form The Faculty for Electrotechnology and Computer Sciences, University of Zagreb in Croatia. He started his professional career as a System specialist and DBA for the Croatian company Informatika System. His most important project was the development and implementation of the enterprise, distributed point of sales solution, based on the Oracle technology. In 1999, Marin became the company CTO, where he played an active role in company development and technical orientation. After Informatika System, Marin worked as an IT Manager Assistant for the Austrian international retail company "Segro," on location in Graz (Austria) and Zagreb (Croatia). He was responsible for the company's technical infrastructure and operational support. Segro used IBM technology, OS/400 operating system and DB2 database. In 1998, Marin joined the international telecommunication company VIPNet GSM that was a part of greater concern, Mobilkom Austria& Western Wireless Int. USA. After one year, Marin took over the IT System Manager position, where he managed many multi-platform, telecommunication projects and was leading the IT system department. In 2001, Marin started to work in Germany as a senior system architect. He is currently working for German banks on different banking projects.

Latest Articles