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