Java multithreading support in Oracle JVM

Dear all,
I have some questions and observations regarding multithreading support in Oracle JVM. I have some java code that is stored in the database and is multithreaded (in separate threads I run a plsql procedure that does a lot of precessing). If I run the code with my standalone JVM it works like a charm, everything gets executed in separate threads. But if I store the code in the database and run it (with the custom JVM Oracle implemented for the server) it does not do any threading, all I have is a single thread that runs everything sequentially.
The logic is this: using JDBC I create a connection, get a parameter (number of threads) and then launch the threads (each thread creates its own connection and runs the plsql procedure). No resource is shared (I have no synchronized code, I do not yield).
My question is: does Oracle JVM supports multithreading or not? If yes, how to achieve it? Maybe there is something handled in JDBC? (although my code useses JDBC is not multithreaded) If this is not possible with java, do you now how to run something (oracle function, procedure) concurrently with PLSQL? (I tried with DBMS_JOBS but it does not work on all my databases and our DBAs discourage the use of them). Performing multithreading my launching different sqlPlus processes is not an option (as we have no security standard regarding the authentication -> connection is made by specifying in clear text the user and password).
I wanted to use java because is more simple, secure (the connection is already established as the classes are stored in the database) and easy to maintain (until now we use different scripts which run on Unix and Windows and this leads to double work).
The Oracle versions I use are 10g and 11g.
Thank you all very much for your time
Just the best,
Don

don wrote:
My question is: does Oracle JVM supports multithreading or not? If yes, how to achieve it? Maybe there is something handled in JDBC? (although my code useses JDBC is not multithreaded) If this is not possible with java, do you now how to run something (oracle function, procedure) concurrently with PLSQL? (I tried with DBMS_JOBS but it does not work on all my databases and our DBAs discourage the use of them). Performing multithreading my launching different sqlPlus processes is not an option (as we have no security standard regarding the authentication -> connection is made by specifying in clear text the user and password).
(Obviously the other post answers your question.)
If I am reading that correctly then you have a management issue - not a technological one.
You have a task to complete, presumably doing it efficiently is something that the company wants.
And you have two alternatives both of which the DBAs are not allowing you to use.
So at that point it is up to management to insist that the DBAs provide specific technological reasons (not hand waving) why those solutions are not suitable. And they should also be required to provide the outline of an alternative that is suitable.
Besides that you might consider why your solution cannot be implemented entirely in a single threaded PL/SQL routine. The fact that is harder is not a reason when the point of the excercise is to create something that is more efficient.

Similar Messages

  • Is it possible to enable Java in oracle 10g express with the oracle jvm?

    I've oracle 10g express installed. I would like to create java stored procedures in a schema. But, how do I have the database java-enabled?

    It might be possible.
    Realize, however, that the Oracle JVM is a component of the Standard Edition One and higher - so to be able to use it you need to license Standard Edition One or higher.
    If you are going to violate the license anyway, why not stick with an Edition that contains the JVM.

  • JAVA_OBJECT support in Oracle 9i

    Hi,
    I'd like to find out if Oracle 9i supports java.sql.Types.JAVA_OBJECT as specified in JDBC 2.0. I'd like to store serializable Java objects directly in the database and let the JDBC driver handle the serialialization and deserialization. Is there a way that I can do this with Oracle 9i?
    Thanks.

    don wrote:
    My question is: does Oracle JVM supports multithreading or not? If yes, how to achieve it? Maybe there is something handled in JDBC? (although my code useses JDBC is not multithreaded) If this is not possible with java, do you now how to run something (oracle function, procedure) concurrently with PLSQL? (I tried with DBMS_JOBS but it does not work on all my databases and our DBAs discourage the use of them). Performing multithreading my launching different sqlPlus processes is not an option (as we have no security standard regarding the authentication -> connection is made by specifying in clear text the user and password).
    (Obviously the other post answers your question.)
    If I am reading that correctly then you have a management issue - not a technological one.
    You have a task to complete, presumably doing it efficiently is something that the company wants.
    And you have two alternatives both of which the DBAs are not allowing you to use.
    So at that point it is up to management to insist that the DBAs provide specific technological reasons (not hand waving) why those solutions are not suitable. And they should also be required to provide the outline of an alternative that is suitable.
    Besides that you might consider why your solution cannot be implemented entirely in a single threaded PL/SQL routine. The fact that is harder is not a reason when the point of the excercise is to create something that is more efficient.

  • How to invoke A CORBA-Java Client Application, from Oracle???

    Hi,
    I have a CORBA-Java Client Application, which takes the input parameters from a Oracle table and calls the CORBA Server, passes these parameters to the C++ Server Application and gets the results back thorugh CORBA.
    My problem is, this java application needs to be invoked, when ever there is a new record in the Oracle table.
    I am not sure if i can use Java Stored Procedures in Oracle in this case, because my app is in Sun JVM and i am using BEA WebLogic Enterprise 5.1 for the CORBA.
    Is there any other way by which i can invoke this app, when a new record is updated in the Oracle table?
    Currently, i have just put a TIMER in my java App, to check the oracle table in every few seconds, to see if there is a new reocrd. If it finds a new record it invokes the corresponding class(corba class), or else just keep sending a messsage that no new record is available.
    The problems i am facing in this method are as follows;
    1. Unnecessarily, the application has to keep on running if there is no request coming frequently.
    2. When there is a new record found, the Corba Class is called and the whole process (till it gets the result back from the server) takes about 20 - 30 secs. But within this period, if there is another record coming into Oracle table, my timer class doesnt invoke another corba class....(though i am using multithreading by using the RemidTask method in the timer.schedule.
    (timer.schedule(new RemindTask(),10,5*1000);)
    3. Also, if during the first call, there is some error, then the whole process exits, instead of another process running parallely (when a second new record is found).
    So how does this timer class act like a multithreading process?
    Well, i hope i am not confusing....Please let me know if anyone wants bit more elaboration on this.
    It would be really helpful if someone can suggest some answer to my problem.
    Thanks in advance.

    Thank you very much Keith.
    Though i am really getting a hope of solving this problem, from you answer, i am actually not 100% sure if i understood your reply properly.
    First of all, about
    1. "use the update stored procedure to place the updated record (or unique index) onto an Oracle Application Queue."
    -- Why do i need to put the record in the AQ. (Frankly speaking, at this moment i dont have much idea about AQ, probably i can learn more about it from oracle technet site? Or would u suggest anything else?)
    Then,
    2."Your app then waits on this queue and for each new message, consumes it, gets the data required from the AQ load (e.g the index and or record), and fires off the CORBA class"
    -- How does my application stay in the queue? and gets the data from the queue?
    Of course, as far as i understand, i am going through the same principle...keeping on running a timer class, which keeps on checking the table for a new record, and when it finds, it calls the CORBA class.
    Of course, i feel there should be a difference in running the timer continuosly and staying in queue. However i am totally unaware, how can i make my java app to wait in the queue and waits for a new record?
    Can you please elaborate your answer a bit more, because i dont know about the AQ, that you have mentioned.
    Thank you very much in advance for your time. But please know that it will be of great help to me and hence will be higly appreciated.
    Regards,
    Subhasree.

  • Increase Scope of Custom variables in Oracle JVM

    We on our project are facing the following problem, any suggestions to work around this would be appreciated :
    We our using Oracle 9i JVM for development
    Our Sample problem flow is as follows :
    A package PKG1 has three procedures PROC1/PROC2/PROC3
    A java class JC1 is invoked by a procedure PROC1 - JC1 is running under oracle JVM.
    JC1 does the task of mapping a custom user defined java object to an oracle collection and invokes a procedure PROC2 (we are using thin client connection object in JAVA by means of simple JDBC calls to connect to the database.) which takes the oracle collection as input parameter and does processing over it.
    A procedure PROC3 does the task of calling PROC1 and then tries to access global variables defined in the package set by PROC2 , which comes out as a failed operation throwing the error as:
         ORA-06531: Reference to uninitialized collection
    The reason for the above behavior is : In the parent oracle session invoked by PROC1 the class JC1 opens another child database session for PROC2 and thus values set in the child thread are not visible to the parent.
    Required support: Is there a means for setting up of some property in ORACLE or Java which can enforce the JAVA CLASS to use its parent / invoking oracle session or if there is any other approach to overcome the above situation.

    Anand,
    I believe the Java in the Oracle Database forum is more appropriate for your question.
    You said:
    The reason for the above behavior is the parent oracle session opens
    another child database session
    How do you do this? And why? And what evidence makes you certain that this is the problem?
    Good Luck,
    Avi.

  • JPDA/JDWP Support in Oracle 9iR2

    Hi Boys,
    I would Like to set up the oracle jvm to support jdwp for remotely debugging some store procedures.
    I have read the "java developer's guide" but i have not found the exat reference in otn were i can find how to set up correctly the server jvm to support jpda/jdwp
    Dose anyone known were i can find some documentations?
    Best Regards,
    Andrea

    Hi,
    Nothing special needs to be done on the DB side to enable
    JDWP, but the following permissions:
    DEBUG ANY PROCEDURE
    DEBUG CONNECT SESSION
    What you need is a tool (IDE) that supports debugging through the JDWP protocol
    JDeveloper 9.0.3 which is currently dowloadable from OTN as a preview
    (http://otn.oracle.com/products/jdev) supports JDWP debugging with Oracle
    9.2.
    Kuassi

  • ORACLE JVM settings

    Hi
    It's possible modify the ORACLE JVM .. like that :
    -Dvbroker.orb.enableBiDir=both'
    -Dvbroker.orb.debug=false'
    -Dvbroker.se.iiop_tp.scm.iiop_tp.listener.port=10000'
    -Dvbroker.agent.enableLocator=false'
    -Dvbroker.orb.dynamicLibs=com.inprise.vbroker.firewall.Init'
    -Dvbroker.orb.alwaysProxy=true'
    -Dvbroker.orb.gatekeeper.ior=http://10.129.2.79:14030/gatekeeper.ior'
    -Dvbroker.orb.exportFirewallPath=true'
    -Dvbroker.se.iiop_tp.scm.iiop_tp.manager.exportBiDir=true'
    -Dvbroker.se.iiop_tp.scm.iiop_tp.manager.importBiDir=true'
    thank you

    305046,
    1) enabling/disabling assertionsSince the database embedded JVM only supports java version 1.3, it does not support assertions.
    2) changing the bootclasspath to add AOP librariesI don't know how to change the "bootclasspath", but the DBMS_JAVA package may help. Have you tried looking through the Oracle documentation? In any case, I don't think you need to change the "bootclasspath" in order to use the AOP libraries, do you?
    Good Luck,
    Avi.

  • ColdFusion 9, 10 Java 7 Support ASAP!

    Oracle has released the final Java 6 Update 39 last week, marking the end of support for Java 6.  Adobe has stated multiple times that Java 7 would be supported before EOL, yet it has been a week and still no patches or update.  Does anyone have an ETA when Java 7 will be officially supported?
    References:
    Java version support     [http://forums.adobe.com/thread/975438 | http://forums.adobe.com/thread/975438]
    Java 7 support for ColdFusion    
    http://blogs.coldfusion.com/post.cfm/java-7-support-for-coldfusion
    What's the situation with #ColdFusion and Java 7, Java 6 updates, Windows 8, and OS X Mountain Lion?          [http://www.carehart.org/blog/client/index.cfm/2012/12/12/java_7_and_6_updates_and_Win8_and _MtnLion | http://www.carehart.org/blog/client/index.cfm/2012/12/12/java_7_and_6_updates_and_Win8_and _MtnLion]
    Upgrade Java for ColdFusion  http://helpx.adobe.com/coldfusion/kb/upgrading-java-coldfusion.html

    Has Adobe updated all current Java and ColdFusion KB articles yet, so I don't have to assume that when Java 7 Update 16 is released that we can apply it assuming we have the base Adobe patches that support Java ?.  I also have seen some confusing articles about JDK vs JRE, for example Ben Forta's blog post yesterday Upgrading ColdFusion To Java 7 at http://forta.com/blog/index.cfm/2013/3/3/Upgrading-ColdFusion-To-Java-7
    Ben, the Adobe website states JDK is required, not JRE "Download and install JDK 1.7." http://helpx.adobe.com/coldfusion/kb/coldfusion-10-update-8.html and "Note that ColdFusion requires the Java HotSpot Server virtual machine (jre/bin/server/jvm.dll), which is not available with the JRE download." http://helpx.adobe.com/coldfusion/kb/change-coldfusion-jvm.html
    PS +10 to Carl's question "Will CF9 or CF10 be supported on JDK 8? JDK 8 release expected September 2013?", I would like Adobe to state ColdFusion upgrade plans and timetables for new versions of Java.  Java 7 was released over 18 months ago and Java 6 received several end of life extension both without Adobe updating ColdFusion untl the last possible second!

  • How do I avoid re-entrant problems in Oracle JVM

    I have a Java program called LanguageFunctions. This Java program has several methods that translate the data within a String or CLOB. I want to use this Java program as a stored procedure, and specifically the methods as Oracle functions. I want this function to be accessed simultaneously without either re-entrant, lock or performance concerns. I want to be able to use the functions something like this:
    SELECT TO_CHINESE(VARCHARCOL1) FROM DUAL;
    SELECT TO_FINISH(CLOBCOL1) FROM DUAL;
    I am having trouble understanding the Java requirements for these methods. I am greatly concerned about multi-user usage and issues with re-entrant code. Does this have to be a static class? If not, how when and where does it get instantiated (I hope not for every invocation of the function)? How to I avoid having one user accidentally changing the data within the method when executed in parallel?
    BTW: I have successfully moved these into the Oracle JVM, and executed them as a single user. My main concern is the re-entrant code issues.
    Thanks

    Thanks for the reply, I meant no disrespect, I was just trying to be a little funny...
    I did read that any method that you want to use as an Oracle function must be static. So I understand that as a given. However, the class I am converting uses static Class variables. You can see this in the example as the textOut variable.
    When two users are accessing this function in parallel, I could see the following series of events ocurring, and it is my concern. There is only one textOut, and I believe it can be modifed by both functions simultanesouly with unexpected results. I'm assuming my for loop is set to x < 2.
    SessionA issues: SELECT TO_DANISH('HELLO') FROM DUAL;
       A --> textOut = ""
       A --> textOut = "HELLO"
       A --> textOut = "HELLOxy"
       A --> textOut = "HELLOxyxy"
    SessionB issues: SELECT TO_DANISH('GOODBYE') FROM DUAL;
       B --> textOut = ""
       A --> textOut = "xy"
       B --> textOut = "GOODBYE"
       A --> textOut = "GOODBYExy"
    Session A returns: "GOODBYExy"     (expected "HELLOxyxy")
       B --> textOut = "GOODBYExyxy"
       B --> textOut = "GOODBYExyxyxy"
    Session B returns: "GOODBYExyxyxy" (expected "GOODBYExyxy")I'm I correct in my assumption that this is an issue? If so, what type of programm architecture would be best to use to manage this? I've tried to provide a simple working example of the issue, but the program that I'm working on actually alters the contents of textOut (as a static Class variable) in 5 or 6 different methods, including one method using recursion. I know I may need to make changes to the program architecture to make it work properly in a multi-user environment as an Oracle function. I'm just a little confused on what the appropriate architecture is. Once again any help is appreciated!
    Joel

  • Details on TAF support in Oracle AS 10g

    Hi experts,
    I'm currently writing a Master's Thesis on High Availability of Applications based on Sun’s JEE platform.
    With Oracle being one of the big players in this market I'm going to investigate the features of the Oracle product stack and compare it with other solutions including opensource.
    At the moment I'm looking for details on TAF-support in Oracle AS 10g. Let’s assume one has installed the latest release of the Oracle 10g database in a RAC configuration on two or more physical nodes to store the applications data. Let’s further assume one has set up the latest release of the Oracle AS 10g on different hosts building an AS farm with clustered OC4J-instances. Now one would like to connect a JEE application running within these OC4J-instances to the RAC database.
    Therefore one can configure an OC4J datasource to use a service definition supporting network failover and transparent application failover (TAF) specified in the tnsnames.ora on the AS hosts or directly describe the service in the data-sources.xml. To my knowledge only datasources configured to use the OCI client can be used with TAF. Everything right so far?
    Now the interesting part. The best what TAF can do is automatically reconnect to the next known database node if it’s current node is not reachable or fails, and continue processing an open cursor for select so that the application can continue to use it’s current connection.
    If the application is running a database transaction it can only be rolled back and rerun after failover.
    In a good old plain Java application one had to implement the OracleOCIFailover interface and register a callback with the db connection in order to receive failover events. Therefore you need to process the query in a different thread.
    In a JEE server only the container should be responsible for creating threads, or? How does the Oracle AS support TAF? How can a user application get notice of a failover and react appropriately. Is the behaviour always the same no matter one decides to implement the data access via simple DAOs or entity beans (CMP/BMP)? I assume it is safe to use a connection pool and container will take care of the necessary cleanup jobs, right? Will the complete connection pool be reconstructed or only connections to the failed node?
    Does the application server internally use these OCI callbacks and wrap them up into special Exceptions? Is there anything an application programmer has to do in order to make his data access code ready for TAF, especially in case of failover while the db is processing transactional code?
    Any insights and/or code snippets would be greatly appreciated!
    Ah, one last question. From a HA perspective is it generally a bad idea to put application logic into the database (use CDM RuleFrame and so on) as there is no support in preserving package states or do you think this makes no difference as one has always to repeat everything since the last commit point no matter in which tier the code resides?
    During the next days I’m going to set up the above environment for testing. A 10.0.2.1 RAC on RHE4 is already up and running fine. AS 10.1.3.0.0 on RHE4 is following today or tomorrow.
    Many thanks for all answers!
    Regards,
    Eric

    Hi,
    well, I thought I could dig into the OC4J documentation before installing the server. After reading the OC4J Service Guide for 10.1.2 and 10.1.3 I'm a little bit confused.
    First I read the 10.1.2 Service Guide and almost everything seemed to be clear. I found a lot of answers to the questions above. I'd like to sum them up. Please correct me if I got something wrong!
    - TAF only works on top of OCI driver
    - TAF can be used with connection pooling
    - OC4J takes care of connection pool cleanup (OC4J and OCI Pool)
    These two pools are mentioned. It's not clear to me how they work together. Do one of you know some source where I can get more information about this?
    - after a failover all connections in the pool are checked by OC4J and only alive ones will survive
    - in case of a failover TAF issues an exception
    - the application has to catch this exception and acknowledge with a rollback, after that the transaction can be restarted (this seems to be the responsibility of the applications code, oc4j will not replay something automatically; If I got it right, CMP entity beans will be an exception to this rule - there OC4J will proceed transparently...)
    - the application can use OCI callbacks to customize the failover behavior (well I would like to see some source code example here, as I can't imagine how this could look like)
    After that I read the 10.1.3 service guide. The section about datasources in conjunction with HA is much shorter. Besides TAF new? mechanism is introduced, namely Fast Connection Failover (FCF). There is not much information about it but references to the JDBC Guide, because FCF is a feature of the implicit JDBC connection cache. Where cache seems to be just another word for pool.
    By the way, the example on p. 4-36 looks wrong at first glance. Enabling FCF and setting:
    <property name="fastConnectionFailoverEnabled" value="false"/> ???
    Seems to be a typo in the docu, or?
    I got the impression, that the text is written as if FCF being TAF's successor, without explicitly saying this. Is this right?
    So I proceeded reading the JDBC Developer Guide to lean more about FCF. Here is what I learned:
    - since 10g available
    - FCF is driver independend (you can also use the thin driver)
    - prerequisites are implicit connection cache (pool) enabled, ONS must be configured
    - in case of a failover the transcation will be rolled back automatically (not by the application); whereas using TAF you have to use a rollback to acknowledge the error
    - only one exception ORA-17008 to catch
    - application has to obtain a new connection from the cache (pool), where as using TAF the old connection object can be used, and resend the transaction (same as with TAF)
    So when to use what? The comparison on p. 27-8 was not very helpful to find an answer to this question.
    On p. 28-1 one can read that TAF does not work with the OCI Connection Pool. That's seems to be contradictory to the statement in Service Guide of 10.1.2 that OC4J takes care of both pools (OC4J and OCI). Or has something changed in 10.1.3 in that regard? May be this is because of the changes in Cache or Pool Management?
    What is the advantage of using TAF within OC4J in 10g, if there is any?
    What about select statements with FCF? You can only read about transactions. I'd assume the application would get the same exception executing a query (ORA-17008) as executing a transaction, right? So TAF should have the advantage of transparently proceeding selects after a failover. Am I right?
    I'd love to see more examples and comparisons of TAF and FCF.
    Regards,
    Eric

  • Issue with sending mail through java stored procedure in Oracle

    Hello
    I am using Oracle 9i DB. I created a java stored procedure to send mail using the code given below. The java class works fine standalone. When its run from Java, mail is sent as desired. But when the java stored procedure is called from pl/sql "Must issue a STARTTLS command first" error is thrown. Please let me know if am missing something. Tried the same code in 11.2.0.2 DB and got the same error
    Error:
    javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first. va6sm31201010igc.6
    Code for creating java stored procedure: (T1 is the table created for debugging)
    ==================================================
    create or replace and compile java source named "MailUtil1" AS
    import java.util.Enumeration;
    import java.util.Properties;
    import javax.mail.Message;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    public class MailUtil1 {
    public static void sendMailwithSTARTTLS(String host, //smtp.projectp.com
    String from, //sender mail id
    String fromPwd,//sender mail pwd
    String port,//587
    String to,//recepient email ids
    String cc,
    String subject,
    String messageBody) {
    try{
    Properties props = System.getProperties();
    props.put("mail.smtp.starttls.enable", "True"); // added this line
    props.put("mail.smtp.host", host);
    props.put("mail.smtp.user", from);
    props.put("mail.smtp.password", fromPwd);
    props.put("mail.smtp.port", port);
    props.put("mail.smtp.auth", "true");
    #sql { insert into t1 (c1) values ('1'||:host)};
    Session session = Session.getDefaultInstance(props, null);
    MimeMessage message = new MimeMessage(session);
    message.setFrom(new InternetAddress(from));
    #sql { insert into t1 (c1) values ('2')};
    InternetAddress[] toAddress = new InternetAddress[1];
    // To get the array of addresses
    for( int i=0; i < toAddress.length; i++ ) { // changed from a while loop
    toAddress[i] = new InternetAddress(to);
    //System.out.println(Message.RecipientType.TO);
    for( int i=0; i < toAddress.length; i++) { // changed from a while loop
    message.addRecipient(Message.RecipientType.TO, toAddress);
    if (cc!=null) {
    InternetAddress [] ccAddress = new InternetAddress[1];
    for(int j=0;j<ccAddress.length;j++){
    ccAddress[j] = new InternetAddress(cc);
    for (int j=0;j<ccAddress.length;j++){
    message.addRecipient(Message.RecipientType.CC, ccAddress[j]);
    message.setSubject(subject);
    message.setText(messageBody);
    message.saveChanges();
    #sql { insert into t1 (c1) values ('3')};
    Enumeration en = message.getAllHeaderLines();
    String token;
    while(en.hasMoreElements()){
    token ="E:"+en.nextElement().toString();
    #sql { insert into t1 (c1) values (:token)};
    token ="ConTyp:"+message.getContentType();
    #sql { insert into t1 (c1) values (:token)};
    token = "Encod:"+message.getEncoding();
    #sql { insert into t1 (c1) values (:token)};
    token = "Con:"+message.getContent();
    #sql { insert into t1 (c1) values (:token)};
    Transport transport = session.getTransport("smtp");
    #sql { insert into t1 (c1) values ('3.1')};
    transport.connect(host, from, fromPwd);
    #sql { insert into t1 (c1) values ('3.2')};
    transport.sendMessage(message, message.getAllRecipients());
    #sql { insert into t1 (c1) values ('3.3')};
    transport.close();
    #sql { insert into t1 (c1) values ('4')};
    catch(Exception e){
    e.printStackTrace();
    String ex= e.toString();
    try{
    #sql { insert into t1 (c1) values (:ex)};
    catch(Exception e1)
    Edited by: user12050615 on Jan 16, 2012 12:18 AM

    Hello,
    Thanks for the reply. Actually I have seen that post before creating this thread. I thought that I could make use of java mail to work around this problem. I created a java class that succesfully sends mail to SSL host. I tried to call this java class from pl-sql through java stored procedure. That did not work
    So, is this not supported in Oracle ? Please note that I have tested this in both 9i and 11g , in both the versions I got the error. You can refer to the code in the above post.
    Thanks
    Srikanth
    Edited by: user12050615 on Jan 16, 2012 12:17 AM

  • ORACLE JVM (8.1.5 - 9.0.1)를 수동으로 설치하기

    제품 : ORACLE SERVER
    작성날짜 : 2002-09-27
    Oracle JVM (8.1.5 - 9.0.1)를 수동으로 설치하기
    ==============================================
    Purpose
    v 8.1.5, 8.1.6, 8.1.7 and 9.0.1에서 Oracle JVM의 모든 구성 요소
    를 설치하기 위해 실행해야 하는 sql script들을 설명하고,
    JVM이 성공적으로 설치되었는지 test program으로 확인해 봅니다.
    주의 : 이 script들은 반드시
    SYS 또는 INTERNAL 로 실행되어야만 합니다.
    'initjvm.sql' script는 JVM을 설치하기위해 필요합니다.
    그리고 그 외에 추가되는 script들은 각각에 설명된 추가적인
    기능을위해 실행되어야 하는 script들입니다.
    ("--"표시로 주석 처리가 되어 있습니다.)
    설치에 앞서 점검해야 할 사항
    다음은 권장되는 사항입니다.
    SHARED_POOL_SIZE >= 65 MB
    JAVA_POOL_SIZE >= 50 MB
    SYSTEM tablespace내에 50 MB 이상의 free space
    250 MB 이상의 rollback segment space
    주의 : 위 사항이 만족되지 않거나 부족한 경우 다음 에러가 발생하거나
    script실행 도중 hang이 걸릴 수 있습니다.
    ORA-3113 : end-of-file on communication channel
    ORA-4030 : out of process memory when trying to allocate %s bytes
    ORA-4031 : unable to allocate bytes of shared memory
    Explanation
    Oracle JVM을 수동으로 설치하기
    JVM version 8.1.5를 위한 script
    initjvm.sql 만 실행해 주면 됩니다.
    -------- Script jvm_install_815.sql start ------------------
    -- Setup a database for running Java and the ORB
    spool initjvm.log
    start @$ORACLE_HOME/javavm/install/initjvm.sql
    spool off
    -------- Script jvm_install_815.sql end ------------------
    JVM version 8.1.6를 위한 script
    -------- Script jvm_install_816.sql start ------------------
    -- Setup a database for running Java and the ORB
    spool initjvm.log
    start @$ORACLE_HOME/javavm/install/initjvm.sql
    spool off
    -- Initializes Java library needed by PL/SQL
    spool initplsj.log
    start @$ORACLE_HOME/rdbms/admin/initplsj.sql
    spool off
    -- Load AQ/JMS jar files into the database
    spool initaqjms.log
    start @$ORACLE_HOME/rdbms/admin/initaqjms.sql
    spool off
    -- Load RepAPI server classes and publish 'repapi' obj
    spool initrepapi.log
    start @$ORACLE_HOME/rdbms/admin/initrepapi.sql
    spool off
    -------- Script jvm_install_816.sql end ------------------
    Scripts needed for JVM version 8.1.7
    8.1.7에는 새로운 Java API와 component들이 추가되어
    수행해야 하는 script들이 더 많습니다.
    -------- Script jvm_install_817.sql start ------------------
    -- Setup a database for running Java and the ORB
    spool jvminst.log
    start @$ORACLE_HOME/javavm/install/initjvm.sql
    spool off
    -- Loads xml components into the JServer
    spool initxml.log
    start @$ORACLE_HOME/oracore/admin/initxml.sql
    spool off
    -- loads the XMLSQL Utility (XSU) into the database
    spool catxsu.log
    start @$ORACLE_HOME/rdbms/admin/catxsu.sql
    spool off
    -- JIS (OSE) installation
    spool init_jis.log
    start @$ORACLE_HOME/javavm/install/init_jis.sql
    spool off
    -- Turn on JAccelerator (ncomp) for JIS
    spool jisja.log
    start @$ORACLE_HOME/javavm/install/jisja.sql
    spool off
    -- Adds the set of default end points to the server
    -- with hardcoded values for the admin service
    spool jisaephc.log
    start @$ORACLE_HOME/javavm/install/jisaephc.sql
    spool off
    -- Load PLSQL Gateway Servlet jar files into the database
    spool initplgs.log
    start @$ORACLE_HOME/rdbms/admin/initplgs.sql
    spool off
    -- Install Oracle JSP
    spool initjsp.log
    start @$ORACLE_HOME/jsp/install/initjsp.sql
    spool off
    -- Turn on JAccelerator for JSP libs
    spool jspja.log
    start @$ORACLE_HOME/jsp/install/jspja.sql
    spool off
    -- Initializes Java library needed by PL/SQL
    spool initplsj.log
    start @$ORACLE_HOME/rdbms/admin/initplsj.sql
    spool off
    -- Load AQ/JMS jar files into the database
    spool initjms.log
    start @$ORACLE_HOME/rdbms/admin/initjms.sql
    spool off
    -- Load RepAPI server classes and publish 'repapi' obj
    spool initrepapi.log
    start @$ORACLE_HOME/rdbms/admin/initrepapi.sql
    spool off
    -- loads sql, objects, extensibility and xml related java
    spool initsoxx.log
    start @$ORACLE_HOME/rdbms/admin/initsoxx.sql
    spool off
    -- Configure OSE defauls admin Web Service
    spool jisaep.log
    start @$ORACLE_HOME/javavm/install/jisaep admin 8080 9090
    spool off
    -------- Script jvm_install_817.sql end ------------------
    JVM version 9.0.1 을 설치하기 위한 script
    Using the database configuration assistant, follwoing scripts will be
    executed:
    -- Setup a database for running Java and the ORB
    SQL>@$ORACLE_HOME/javavm/install/initjvm.sql;
    -- INITialize (load) XML components in JServer
    SQL>@$ORACLE_HOME/xdk/admin/initxml.sql;
    -- Loads NCOMP'ed XML Parser
    SQL>@$ORACLE_HOME/xdk/admin/xmlja.sql;
    -- loads the XMLSQL Utility (XSU) into the database.
    SQL>@$ORACLE_HOME/rdbms/admin/catxsu.sql;
    -- install the Oracle Servlet Engine (OSE)
    SQL>@$ORACLE_HOME/javavm/install/init_jis.sql <$ORACLE_HOME>;
    -- Adds the set of default end points to the server
    -- with hardcoded values for the admin service
    SQL>@$ORACLE_HOME/javavm/install/jisaephc.sql <$ORACLE_HOME>;
    -- turn on J Accelerator
    SQL>@$ORACLE_HOME/javavm/install/jisja.sql <$ORACLE_HOME>;
    -- register EJB/Corba Dynamic Registration Endpoint
    SQL>@$ORACLE_HOME/javavm/install/jisdr.sql 2481 2482;
    -- init Java server pages @$ORACLE_HOME@$ORACLE_HOME@$ORACLE_HOME
    SQL>@$ORACLE_HOME/jsp/install/initjsp.sql;
    -- turn on J Accelerator for JSP libs
    SQL>@$ORACLE_HOME/jsp/install/jspja.sql;
    -- script used to load AQ/JMS jar files into the database
    SQL>@$ORACLE_HOME/rdbms/admin/initjms.sql;
    -- load RepAPI server classes and publish 'repapi' obj
    SQL>@$ORACLE_HOME/rdbms/admin/initrapi.sql;
    -- loads sql, objects, extensibility and xml related java
    SQL>@$ORACLE_HOME/rdbms/admin/initsoxx.sql;
    -- Loads appctxapi.jar for JavaVm enabled Database.Called by jcoreini.tsc
    SQL>@$ORACLE_HOME/rdbms/admin/initapcx.sql;
    -- script used to load CDC jar files into the database
    SQL>@$ORACLE_HOME/rdbms/admin/initcdc.sql;
    -- Loads the Java stored procedures as required by the
    -- Summary Advisor.
    SQL>@$ORACLE_HOME/rdbms/admin/initqsma.sql;
    --Initialize sqlj type feature in 9i db
    SQL>@$ORACLE_HOME/rdbms/admin/initsjty.sql;
    --load java componenets for AQ HTTP Propagation
    SQL>@$ORACLE_HOME/rdbms/admin/initaqhp.sql;
    Test program으로 JVM test해보기
    Java Stored Procedure 만들기
    다음과 같은 순서로 Java Stored Procedure를 만들어 봅니다.
    1. Java program을 만듭니다.
    2. program을 database로 loading합니다.
    3. Java program을 SQL (PL/SQL Wrapper)로 publish합니다.
    4. SQL 또는 PL/SQL에서 만든 Java program을 호출합니다.
    Step 1: Java program을 만듭니다.
    ======
    EchoInput.java
    public class EchoInput {
    public static void main (String[] args){
    for (int i=0; i<args.length;i++)
    System.out.println(args);}}
    Step 2: program을 database로 loading합니다.
    ======
    UNIX prompt상에서 다음을 실행합니다:
    % loadjava -u scott/tiger -v -r EchoInput.java
    또는 SQL*Plus에서는 다음과 같이 할 수도 있습니다:
    CREATE OR REPLACE JAVA SOURCE NAMED "EchoInput" AS
    public class EchoInput { public static void main (String[] args) {
    for (int i=0; i<args.length;i++) System.out.println(args[i]);}}
    Step 3: Java program을 SQL (PL/SQL Wrapper)로 publish합니다.
    ======
    SQL 또는 PL/SQL에서 만든 Java program을 호출하기 위해서는
    Java program을 SQL (PL/SQL Wrapper)로 publish해야 합니다.
    이과정을 PL/SQL Wrapper를 만든다고도 합니다.
    일단 published/wrapped가 되면 SQL 또는 PL/SQL을 통해 호출될 수
    있습니다.
    예제 :
    create or replace procedure echo_input (
    s1 varchar2, s2 varchar2, s3 varchar2)
    as language Java
    name 'EchoInput.main(java.lang.String[])';
    Step 4: SQL 또는 PL/SQL에서 만든 Java program을 호출합니다.
    ======
    call dbms_java.set_output(5000);
    call echo_input('It', 'works', 'now!');
    주의 : SQL*Plus에서 실행할 경우 먼저 'set serveroutput on'을
    해주시기 바랍니다.
    결과 화면
    SQL> set serveroutput on
    SQL> call dbms_java.set_output(5000);
    Call completed.
    SQL> call echo_input('It', 'works', 'now!');
    It
    works
    now!
    Call completed.
    SQL>
    Example
    Reference Documents

    제품 : ORACLE SERVER
    작성날짜 : 2002-09-27
    Oracle JVM (8.1.5 - 9.0.1)를 수동으로 설치하기
    ==============================================
    Purpose
    v 8.1.5, 8.1.6, 8.1.7 and 9.0.1에서 Oracle JVM의 모든 구성 요소
    를 설치하기 위해 실행해야 하는 sql script들을 설명하고,
    JVM이 성공적으로 설치되었는지 test program으로 확인해 봅니다.
    주의 : 이 script들은 반드시
    SYS 또는 INTERNAL 로 실행되어야만 합니다.
    'initjvm.sql' script는 JVM을 설치하기위해 필요합니다.
    그리고 그 외에 추가되는 script들은 각각에 설명된 추가적인
    기능을위해 실행되어야 하는 script들입니다.
    ("--"표시로 주석 처리가 되어 있습니다.)
    설치에 앞서 점검해야 할 사항
    다음은 권장되는 사항입니다.
    SHARED_POOL_SIZE >= 65 MB
    JAVA_POOL_SIZE >= 50 MB
    SYSTEM tablespace내에 50 MB 이상의 free space
    250 MB 이상의 rollback segment space
    주의 : 위 사항이 만족되지 않거나 부족한 경우 다음 에러가 발생하거나
    script실행 도중 hang이 걸릴 수 있습니다.
    ORA-3113 : end-of-file on communication channel
    ORA-4030 : out of process memory when trying to allocate %s bytes
    ORA-4031 : unable to allocate bytes of shared memory
    Explanation
    Oracle JVM을 수동으로 설치하기
    JVM version 8.1.5를 위한 script
    initjvm.sql 만 실행해 주면 됩니다.
    -------- Script jvm_install_815.sql start ------------------
    -- Setup a database for running Java and the ORB
    spool initjvm.log
    start @$ORACLE_HOME/javavm/install/initjvm.sql
    spool off
    -------- Script jvm_install_815.sql end ------------------
    JVM version 8.1.6를 위한 script
    -------- Script jvm_install_816.sql start ------------------
    -- Setup a database for running Java and the ORB
    spool initjvm.log
    start @$ORACLE_HOME/javavm/install/initjvm.sql
    spool off
    -- Initializes Java library needed by PL/SQL
    spool initplsj.log
    start @$ORACLE_HOME/rdbms/admin/initplsj.sql
    spool off
    -- Load AQ/JMS jar files into the database
    spool initaqjms.log
    start @$ORACLE_HOME/rdbms/admin/initaqjms.sql
    spool off
    -- Load RepAPI server classes and publish 'repapi' obj
    spool initrepapi.log
    start @$ORACLE_HOME/rdbms/admin/initrepapi.sql
    spool off
    -------- Script jvm_install_816.sql end ------------------
    Scripts needed for JVM version 8.1.7
    8.1.7에는 새로운 Java API와 component들이 추가되어
    수행해야 하는 script들이 더 많습니다.
    -------- Script jvm_install_817.sql start ------------------
    -- Setup a database for running Java and the ORB
    spool jvminst.log
    start @$ORACLE_HOME/javavm/install/initjvm.sql
    spool off
    -- Loads xml components into the JServer
    spool initxml.log
    start @$ORACLE_HOME/oracore/admin/initxml.sql
    spool off
    -- loads the XMLSQL Utility (XSU) into the database
    spool catxsu.log
    start @$ORACLE_HOME/rdbms/admin/catxsu.sql
    spool off
    -- JIS (OSE) installation
    spool init_jis.log
    start @$ORACLE_HOME/javavm/install/init_jis.sql
    spool off
    -- Turn on JAccelerator (ncomp) for JIS
    spool jisja.log
    start @$ORACLE_HOME/javavm/install/jisja.sql
    spool off
    -- Adds the set of default end points to the server
    -- with hardcoded values for the admin service
    spool jisaephc.log
    start @$ORACLE_HOME/javavm/install/jisaephc.sql
    spool off
    -- Load PLSQL Gateway Servlet jar files into the database
    spool initplgs.log
    start @$ORACLE_HOME/rdbms/admin/initplgs.sql
    spool off
    -- Install Oracle JSP
    spool initjsp.log
    start @$ORACLE_HOME/jsp/install/initjsp.sql
    spool off
    -- Turn on JAccelerator for JSP libs
    spool jspja.log
    start @$ORACLE_HOME/jsp/install/jspja.sql
    spool off
    -- Initializes Java library needed by PL/SQL
    spool initplsj.log
    start @$ORACLE_HOME/rdbms/admin/initplsj.sql
    spool off
    -- Load AQ/JMS jar files into the database
    spool initjms.log
    start @$ORACLE_HOME/rdbms/admin/initjms.sql
    spool off
    -- Load RepAPI server classes and publish 'repapi' obj
    spool initrepapi.log
    start @$ORACLE_HOME/rdbms/admin/initrepapi.sql
    spool off
    -- loads sql, objects, extensibility and xml related java
    spool initsoxx.log
    start @$ORACLE_HOME/rdbms/admin/initsoxx.sql
    spool off
    -- Configure OSE defauls admin Web Service
    spool jisaep.log
    start @$ORACLE_HOME/javavm/install/jisaep admin 8080 9090
    spool off
    -------- Script jvm_install_817.sql end ------------------
    JVM version 9.0.1 을 설치하기 위한 script
    Using the database configuration assistant, follwoing scripts will be
    executed:
    -- Setup a database for running Java and the ORB
    SQL>@$ORACLE_HOME/javavm/install/initjvm.sql;
    -- INITialize (load) XML components in JServer
    SQL>@$ORACLE_HOME/xdk/admin/initxml.sql;
    -- Loads NCOMP'ed XML Parser
    SQL>@$ORACLE_HOME/xdk/admin/xmlja.sql;
    -- loads the XMLSQL Utility (XSU) into the database.
    SQL>@$ORACLE_HOME/rdbms/admin/catxsu.sql;
    -- install the Oracle Servlet Engine (OSE)
    SQL>@$ORACLE_HOME/javavm/install/init_jis.sql <$ORACLE_HOME>;
    -- Adds the set of default end points to the server
    -- with hardcoded values for the admin service
    SQL>@$ORACLE_HOME/javavm/install/jisaephc.sql <$ORACLE_HOME>;
    -- turn on J Accelerator
    SQL>@$ORACLE_HOME/javavm/install/jisja.sql <$ORACLE_HOME>;
    -- register EJB/Corba Dynamic Registration Endpoint
    SQL>@$ORACLE_HOME/javavm/install/jisdr.sql 2481 2482;
    -- init Java server pages @$ORACLE_HOME@$ORACLE_HOME@$ORACLE_HOME
    SQL>@$ORACLE_HOME/jsp/install/initjsp.sql;
    -- turn on J Accelerator for JSP libs
    SQL>@$ORACLE_HOME/jsp/install/jspja.sql;
    -- script used to load AQ/JMS jar files into the database
    SQL>@$ORACLE_HOME/rdbms/admin/initjms.sql;
    -- load RepAPI server classes and publish 'repapi' obj
    SQL>@$ORACLE_HOME/rdbms/admin/initrapi.sql;
    -- loads sql, objects, extensibility and xml related java
    SQL>@$ORACLE_HOME/rdbms/admin/initsoxx.sql;
    -- Loads appctxapi.jar for JavaVm enabled Database.Called by jcoreini.tsc
    SQL>@$ORACLE_HOME/rdbms/admin/initapcx.sql;
    -- script used to load CDC jar files into the database
    SQL>@$ORACLE_HOME/rdbms/admin/initcdc.sql;
    -- Loads the Java stored procedures as required by the
    -- Summary Advisor.
    SQL>@$ORACLE_HOME/rdbms/admin/initqsma.sql;
    --Initialize sqlj type feature in 9i db
    SQL>@$ORACLE_HOME/rdbms/admin/initsjty.sql;
    --load java componenets for AQ HTTP Propagation
    SQL>@$ORACLE_HOME/rdbms/admin/initaqhp.sql;
    Test program으로 JVM test해보기
    Java Stored Procedure 만들기
    다음과 같은 순서로 Java Stored Procedure를 만들어 봅니다.
    1. Java program을 만듭니다.
    2. program을 database로 loading합니다.
    3. Java program을 SQL (PL/SQL Wrapper)로 publish합니다.
    4. SQL 또는 PL/SQL에서 만든 Java program을 호출합니다.
    Step 1: Java program을 만듭니다.
    ======
    EchoInput.java
    public class EchoInput {
    public static void main (String[] args){
    for (int i=0; i<args.length;i++)
    System.out.println(args);}}
    Step 2: program을 database로 loading합니다.
    ======
    UNIX prompt상에서 다음을 실행합니다:
    % loadjava -u scott/tiger -v -r EchoInput.java
    또는 SQL*Plus에서는 다음과 같이 할 수도 있습니다:
    CREATE OR REPLACE JAVA SOURCE NAMED "EchoInput" AS
    public class EchoInput { public static void main (String[] args) {
    for (int i=0; i<args.length;i++) System.out.println(args[i]);}}
    Step 3: Java program을 SQL (PL/SQL Wrapper)로 publish합니다.
    ======
    SQL 또는 PL/SQL에서 만든 Java program을 호출하기 위해서는
    Java program을 SQL (PL/SQL Wrapper)로 publish해야 합니다.
    이과정을 PL/SQL Wrapper를 만든다고도 합니다.
    일단 published/wrapped가 되면 SQL 또는 PL/SQL을 통해 호출될 수
    있습니다.
    예제 :
    create or replace procedure echo_input (
    s1 varchar2, s2 varchar2, s3 varchar2)
    as language Java
    name 'EchoInput.main(java.lang.String[])';
    Step 4: SQL 또는 PL/SQL에서 만든 Java program을 호출합니다.
    ======
    call dbms_java.set_output(5000);
    call echo_input('It', 'works', 'now!');
    주의 : SQL*Plus에서 실행할 경우 먼저 'set serveroutput on'을
    해주시기 바랍니다.
    결과 화면
    SQL> set serveroutput on
    SQL> call dbms_java.set_output(5000);
    Call completed.
    SQL> call echo_input('It', 'works', 'now!');
    It
    works
    now!
    Call completed.
    SQL>
    Example
    Reference Documents

  • Columns Display Support in Oracle 10g Express Edition..................

    I am working with the Oracle 10g Express Edition, and I Created a Table with 52 Fields and even successfully inserted data into the table via Java Program. But the problem is when I am displaying the table from the Oracle 10g Express Edition Interface, it is displaying only first 31 Fields and displaying "<div class="fielddata">First 31 columns displayed.</div>". What should i do if I want to display all the 52 columns. Awaiting for the Reply. Thank You..

    duplicate post
    Columns Display Support in Oracle 10g Express Edition..................

  • Does weblogic server 10.3.6 & 10.3.5 supported on oracle linux 5.8 ?

    I am trying to install weblogic server 10.3.6 on Oracle linux 5.8 (64-bit) platform. While creating domain , it does not take any input in password & conform password fields on "configure administrator username and password page". The field remains blank. I am stuck at this point and not able to create domain. The same issue is with weblogic 10.3.5 server. The java i used is jdk1.7 update 3 and jdk 1.6 update 27. In Both the cases i am not to create domain.
    Can anyone of you tell me if weblogic 10.3.6 is supported on Oracle linux 5.8 platform. If it is supported any idea how to resolve this issue?
    Thanks in advance,
    Padma

    Yes. Please refer
    System Requirements and Supported Platforms for Oracle WebLogic Server 10.3 ( xls)
    http://www.oracle.com/technetwork/middleware/ias/downloads/fusion-certification-100350.html

  • Advantages of using Oracle JVM over JPDA for Remote Debugging?

    What are the "additional features" that the documentation hints at when using the Oracle JVM for remote debugging vs. the JPDA protocoL? Can a member of the JDEV briefly address this? What exactly am I losing when using JPDA?

    I am not getting anywhere with 'NCOMPing' the stuff. Attempts to NCOMP keeps erroring out . The first of the errors is
    'Error while determining classes contained in jsch-1.29_minimalClassListAndTCD
    mper.java
    Exception oracle.aurora.sqljdecl.ParseException: Encountered "-" at line 14
    column 18.
    Was expecting one of:
    "extends" ...
    "implements" ...
    The following operations failed
    jsch-0.1.29_minimalClassListAndTCDumper.java: creation
    exiting : Failures occurred during processing
    Kuassi, I have looked at a few of your posts where you make mention of a file titled 'Settings_os.properties'. I see no such file in my Oracle installation. What am I missing here ?

Maybe you are looking for

  • Adobe Reader XI 'Save As' creating blank pdfs

    Hi All, I am using an application from which a report is generated as a PDF file using Component One - VSReport, VSPrinter and VSPDF. This report PDF is automatically created in a shared folder and it is displayed once it is created. I can do 'Save A

  • IPhone 6 Plus screen rotate glitch

    Has anyone noticed that the home screen doesn't rotate and the native mail app doesn't switch to 2 columns IF you have the phone set on the "zoomed" view vs. the standard view? Try it... set your iPhone 6 Plus to zoomed view (Settings > Display & Bri

  • Cropping to a Fixed Resolution

    Is it possible in Aperture to use the crop tool and have resulting images with the same resolution (resampling)? I ask because I often do slight crops to straighten or for composition and do not wish to send designers a mixed bag of sizes. If I could

  • FCE 2.0.3 vs OS 10.4.9

    Is anyone successfully using that edition of FCE with that edition of OSX? I'm trying but have gross problems. It may be a version problem. Or not.

  • I/O chaining.

    Hi, let me give u a general idea of what i want to do. I am trying to create chat application using sockets and seversocket. A main thread creates 2 threads.one thread creates pool of all the clients connecting to the server and second thread creates