The blog for Oracle Data Integrator ( ODI )

11g Oracle Data Integrator – Part 7/11g – SUNOPSIS MEMORY ENGINE

Hello everyone.

As this is a feature that comes from 10g but still present at 11g and pretty useful, we decide to discuss it as “11g part”. You will see that it’s really useful in several situations.

We all have seen the Sunopsis Memory Engine but have never used it or played with it. This post is all about it and using it smartly for various activities, without using target RDBMS for temporary activities.

If you are wondering what actually is Sunopsis Memory Engine , its nothing but the HyperSQL , which is an 100% java database. The Demo environment  runs on the HyperSQL.

[ Note : HyperSQL stores its data in memory ,so once the ODI is closed and restarted the data and the tables are flushed out ,so HyperSQL is great for storing or processing data for a particular session ]


You can find more about it here http://hsqldb.org/ and Documentation at this link – http://hsqldb.org/web/hsqlDocsFrame.html

we believe that Sunopsis Memory engine can be great for creating temporary table or storing data temporarily for ODI logic implementation.

Lets look at various implementation uses and method.

For ODI 10G ,  Technology  – Sunopsis Engine and Schema – SUNOPSIS_MEMORY_ENGINE

For ODI 11G , In-Memory Engine and Schema – SUNOPSIS_MEMORY_ENGINE

create table temp_table ( id INTEGER, name varchar(20))
insert into temp_table values ( 1 ,’abc’)
insert into temp_table values ( 2 ,’abcd’)
insert into temp_table values ( 3 ,’abcdef’)


Calling it in the Variable

Similar to any RDBMS you can call these tables into the Variable too , just select the SCHEMA as SUNOPSIS_MEMORY_ENGINE and write your query.

For example select id from temp_table.



Similar to Oracle , you can read it via Jython or Java and fetch the required information.

If you ever need to read the data from File via jython or Java and write into Sunopsis Memory. Here are the codes.


import java.sql as sql
import java.lang as lang
sourceConnection = odiRef.getJDBCConnection("SRC")
sqlstring = sourceConnection.createStatement()
while read_line:
     sqlstring.executeUpdate("INSERT INTO TABLE_NAME VALUES ('"+read_line+"')")



import java.io.*;
import java.sql.*;
sourceConnection = odiRef.getJDBCConnection("SRC") ;
sqlstring = sourceConnection.createStatement();
FileInputStream fstream = new FileInputStream("C:/table_name.txt");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;    
while ((strLine = br.readLine()) != null)   {
            sqlstring.executeUpdate ("INSERT INTO table_name values('"+strLine+"')") ;

Temporary Data storage.

Some time we would like to store the data into Temporary purpose for testing or debugging purpose.


We can also reverse engineer the table using the select reverse too.


If you want to play with via  external Sql editor ,you can access the jar file located at  <ODI_HOME>oraclediagentlib   hsqldb.jar  for ODI 11g image

Now you can use it as you wish!!!

Please, keep visintig us!

Leave a Reply

Required fields are marked *.