How JDBC thin driver protocol works ???

Hi,
I'm having some problems, I think, with an application that I developed using Java (j2se 1.4.0), the system performance is very good (1500 msec per query) unfortunelly my customer want's more than that.
So I've been working in some optimizations against the code that execute the query, after reading the JDBC Developers guide some modifications were made at the code, altering Statement to PreparedStatement, the time down to 1200 msec, yet too much.
Then I tried another aproach, I've put an Sniffer on the LAN and sniffed the packets that flow to the database from the applet when I executed one single PreparedStatement resulting this table:
--- Time: 2002-10-21 14:16:06
Src IP Dst IP sent recv
TCP 10.0.0.122 1895 10.0.0.119 1525 55 0
TCP 10.0.0.122 1895 10.0.0.119 1525 0 51
TCP 10.0.0.122 1895 10.0.0.119 1525 133 0
TCP 10.0.0.122 1895 10.0.0.119 1525 0 40
TCP 10.0.0.122 1895 10.0.0.119 1525 0 127
TCP 10.0.0.122 1895 10.0.0.119 1525 40 0
The query executed:
select trim(cidade) nome, trim(coduf) uf from cacidade where codcidade = :1
Where codcidade is the Primary Key.
I'm using defineColumnType in the PreparedStatement.
Anyone knows how can I reduce the number os packets that the thin driver put in the network ?
That packets sent and received depents in each other ?
How are implemented the TTC over Java sockets by Oracle?

Anyone knows how can I reduce the number os packets that the thin driver put in the network ?
That packets sent and received depents in each other ?
How are implemented the TTC over Java sockets by Oracle? You should post this question on the JDBC forum here on OTN. Someone there may have more insight into the internals of the jdbc drivers.
Hope this helps,
Rob

Similar Messages

  • How does Oracle JDBC thin driver handle numbers via getString?

    Hi,
    I have a query regarding how numbers are handled by the oracle jdbc thin driver. The issue I am facing is with regards to the decimal separator (. is en_US and , in pt_BR)
    e.g. Consider the below code,
    Connection conn = DriverManager.getConnection(...);
    Statement stmt = conn.createStatement();
    ResultSet rset = stmt.executeQuery("select value from test_table1");
    while (rset.next())
    System.out.println (rset.getString(1));
    test_table1 has a single column of sql type 'number' with a single row having value "123.45"
    NLS_NUMERIC_CHARACTERS = ".,"
    Database version = 10.2.0.2.0
    There is a (generic) method to which a ResultSet is passed and it returns a dictionary of key value pairs. All column values from the ResultSet are retrieved using getString method of ResultSet.
    My question is whether the jdbc driver formats numbers (based on the locale) before returning it as a string as part of the getString method?
    e.g.
    java -Duser.language=pt -Duser.region=BR TestJDBC
    prints "123.45" and not "124,45"
    Is there a reason why getString always retrieves a number column value with '.' as the decimal separator?
    To help make things a bit more clear, all the column values retrieved are then converted into an XML (and hence the conversion to string)
    At present, the only way I see out of this is to handle numbers differently.
    i.e. something similar to,
    if (resultsetmetadata.getcolumntype .. = double OR float OR int OR long.. )
    NumberFormat.getInstance().format(rset.getDouble(1));
    Is there a better way to resolve this issue?
    Thanks,
    Binoy

    user565580,
    As has been already stated, Oracle does not have data-types INTEGER or SMALLINT, only NUMBER.
    So even though Oracle lets you write INTEGER, it really creates a NUMBER.
    (As Joe mentioned.)
    Other databases don't have a NUMBER data-type, they have INTEGER, SMALLINT, etc.
    Originally, Oracle database only had three data-types:
    CHAR
    DATE
    NUMBER
    If you're going to be working with Oracle database, then you need to adapt yourself to its limitations.
    So you'll probably need to define NUMBER data-types using scale and precision.
    (As Kuassi mentioned.)
    Good Luck,
    Avi.

  • Sql_trace does not work for Java app using Oracle JDBC thin driver

    Hi,
    I'm using Oracle 8.1.7. I enabled sql trace at instance level by setting sql_trace and timed_statistics to true in init.ora. I restarted the db instance. I wrote a stand-alone java application which used Oracle JDBC thin driver(classes12.zip) to make a connection to my db instance, do some select statements, and close the connection. There were no trace files generated in the folder specified by udump_dest variable. However, if I used sqlplus or dba studio, I saw trace files generated. Has anyone got Oracle sql trace work for JDBC calls from java apps.
    Thanks in advance!

    Hi,
    I'm using Oracle 8.1.7. I enabled sql trace at instance level by setting sql_trace and timed_statistics to true in init.ora. I restarted the db instance. I wrote a stand-alone java application which used Oracle JDBC thin driver(classes12.zip) to make a connection to my db instance, do some select statements, and close the connection. There were no trace files generated in the folder specified by udump_dest variable. However, if I used sqlplus or dba studio, I saw trace files generated. Has anyone got Oracle sql trace work for JDBC calls from java apps.
    Thanks in advance!

  • How can I see KSC5602 character set using JDBC thin driver

    After I change character set from USASCII7 to KO16KSC5601, I
    cannot see korean from the clients
    using JDBC thin driver.
    But, I can see korean clearly using sqlplus at serer, or
    application using SQLNet.
    I use Oracle Enterprise Server 8.0.4.1.0, jdbc thin driver
    8.0.4.0.6 on Windows 98. I read that all bugs realated
    to multibyte language are fixed in Oracle8. What can I do to
    solve this problem?
    PS.server: Oracle 8.0.4.1 on Digital Unix 4.0b, client: jdk1.1.8
    on Windows98. I used the command.
    null

    The easiest thing to do is download it as an archive with your applet.
    Otherwise, you have to have the files on every client machine.
    For netscape, put the classes111.jar in the java classes folder typically:
    c:\ProgramFiles\Netscape\Communicator\Program\java\classes.
    I'd expect that IE would be setup in a similar way.

  • JDBC Thin Driver Support for Data Encryption and Integrity

    Hello JDev Team,
    I am trying to implement JDBC Thin Driver Support for Data Encryption and Integrity.
    It works fine with java.sql.Connection and java.util.Properties like in the following code:
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    Properties props = new Properties();
    int level = AnoServices.REQUIRED;
    props.put("oracle.net.encryption_client", Service.getLevelString(level));
    props.put("oracle.net.encryption_types_client", "( RC4_40 )");
    props.put("oracle.net.crypto_checksum_client",Service.getLevelString(level));
    props.put("oracle.net.crypto_checksum_types_client", "( MD5 )");
    Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:main", props);
    etc...
    But I am developing an application with InfoSwing components and it has a different way to connect to Oracle database using oracle.dacf.dataset.connections.Connection, like this:
    sessionInfo1.setAppModuleInfo(new ModuleInfo("bc", "BcModule"));
    sessionInfo1.setConnectionInfo(new LocalConnection("JDBCThin"));
    sessionInfo1.publishSession();
    My question is:
    Is there any way to implement DataEncryption and Integrity into this type of connection?
    Thanks a lot in advance.
    Victor Bykov
    null

    Victor,
    No, you can't do this from DAC, but I've been discussing it with the developer, and we both think this capability would be useful to have, so I've logged it as an enhancement request.
    I do have a question for you. Once you've made the JDBC connection, do you need access to the Connection object afterwards? We're thinking of how the change could be implemented, and one way would be to allow you to pass in a Properties object when creating your own NamedConnection.
    Thanks
    Blaise

  • Problem using JDBC Thin driver with Oracle 8i Personal Edition

    Hi all, I have an issue I have been unable to figure out. In order to make my code as portable as possible I am using the JDBC thin driver to access my database. I have been able to connect to an instance of Oracle 8i on a Sun box by hardcoding the following string into getConnection() call:
    conn = DriverManager.getConnection("jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(COMMUNITY=tcp.world)(PROTOCOL=TCP)(Host=<myhostname>)(Port=1521))(ADDRESS=(COMMUNITY=tcp.w orld)(PROTOCOL=TCP)(Host = <myhostname>)(Port = 1526)))(CONNECT_DATA = (SID = <mysidname>)))", <myuser>, <mypassword>);
    My problem is that I cannot figure out what string to use to connect to my local instance of Oracle 8i Personal. I used the following string (the sid I got from the looking at the init.ora file):
    conn = DriverManager.getConnection("jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(COMMUNITY=tcp.world)(PROTOCOL=TCP)(Host=localhost)(Port=1521))(ADDRESS=(COMMUNITY=tcp.world)(PRO TOCOL=TCP)(Host = localhost)(Port = 1526)))(CONNECT_DATA = (SID = orcl)))", "scott", "tiger");
    That didn't work, so I took the only entry found in my tnsnames.ora file in as:
    conn = DriverManager.getConnection("jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)))(CONNECT_DATA = (SID = PLSExtProc)(PRESENTATION = RO)))", "scott", "tiger");
    I am not knowing what is wrong, but that didn't work neither. Any suggestions would be highly appreciated.
    Thanks....
    null

    try this:
    conn = DriverManager.getConnection("jdbc:oracle:thin:scott/tiger:@hostname:1521:sid");
    or use system/manager as username/passward
    null

  • Problems with jdbc thin driver (Euro Symbol)

    Hello,
    at the moment it is impossible for me to write or read euro characters to a database using a jdbc thin driver.
    I am using
    ojdbc14.jar (version 10.2.0.3.0) and orai18n.jar (also) together with JDK 1.4.2.
    Charset of the database is WE8MSWIN1252. It does not work on ORACLE 9.2.0.1, 9.2.0.6 and 10.2.0.2.0 (others I have not tried). But the problem seams to be in thin client.
    Inserting Eurosymbols using a PreparedStatement works quite well. Using a normal Statement does not work.
    Also the values getting from a ResultSet are incorrect.
    After several test I downloaded a patch 4659157 for ojdbc14.jar and 5470375 for orai18n.jar. After installing the patch the euro characters were returned, but:
    In several selects of numeric fields (not all, seams to be random) my resultset returned the Euro character instead of 0 and so on.
    Driver for 9.2 works quite well, but does not support 10g Release 2 (and contains also some funny bugs)
    Following solutions are not suitable for us:
    Changing the character set of the database (come on, this cannot be serious. I cannot change the character set of more than 100 databases)
    Using the newest driver (ORACLE 11). We are still using JAVA 1.4.2 and cannot migrate our application at the moment.
    Using an oci client. Not possible, no ORACLE client on clients...
    Has anyone an idea how to deal with this?
    Does anyone know when ORACLE is going to release a new jdbc driver for JAVA 1.4.2 (maybe 10.2.0.4.) ??
    Regards,
    Christian

    Just installed PATCH 4659157 and 5470375 from metalink. The Euro problem seams to be corrected.
    BUT:
    Another problem occurred. Sometimes numeric values are returned wrong (0 from a numeric field comes as euro, 1 comes as Á (2 and 3 too).
    This error seams to be random to me.
    Our application is selecting a rowid from a table and after that fills several textfields in a frame by selecting the content in a way like this:
    select [column1] from [table] where rowid=[rowid]
    select [column2] from [table] where rowid=[rowid]
    if I select the numeric column with select nr. 77 I get a wrong value. If I select it at nr. 10 I get the correct value.
    The selects are done by a normal Statement object creating a ResultSet. The Value from the ResultSet is fetched by getObject() method.
    I also tried to write a test program executing only the selects of the application, but it gives me correct results.
    Also when selecting all the fields in one select I get a correct result.
    Using a different charset than WE8MSWIN1252 seams to give correct results. Using the OCI driver returns correct results.
    Using ojdbc14.jar and orai18n.jar Release 10.2.0.3. unpatched produces the same error (and does not return Euro symbols)
    Using ojdbc14.jar and orai18n.jar Release 10.2.0.2. returns correct results (but wrong Euro)
    Has anyone had the same problem yet?
    Regards,
    Christian

  • SSL connection with JDBC thin driver

    I am attempting to connect to an instance of Oracle 10.2 using the JDBC thin driver with SSL. I want to use the encryption feature of SSL only, but I can not perform the getConnection on the DataSource without running into an exception. According the JDBC docs, the SSL encryption feature is new for the 10.2 release of the JDBC thin driver, but I have seen no working examples. See http://download.oracle.com/docs/cd/B19306_01/java.102/b14355/overvw.htm#CHDIHFBD
    I am using ojdbc14.jar on Java 5.0 using a standalone application, and it fails with an IOException (The network adapter could not establish the connection) (Error code 17002). I even enabled tracing using the ojdbc-g.jar to try to figure out what the REAL problem is, but it was not helpful at determining a root cause. I changed the driver type from "thin" to "oci" (and installed Oracle Instant client for my test machine) and the connection works just fine using the same tnsnames file, the same wallet, and the same cipher suite. From the Java perspective the only thing that changed was four characters -> "thin" became "oci". I am still using password based authentication as I understand that the authentication part of SSL is not supported in the thin driver on 10.2
    Can anyone verify that the SSL encryption works with JDBC thin as advertised? (not the Oracle Net encryption, but rather the one described in Chapter 11 of the JDBC Developer's Guide. See http://download.oracle.com/docs/cd/B19306_01/java.102/b14355/sslthin.htm#CHDFEICG
    I really would prefer to avoid using the OCI driver because of its dependencies on the native platform. Is there something special with how the users are created or how the JDBC API should be used? I am setting what I think to be appropriate parameters (oracle.net.wallet_location, oracle.net.cipher_suites) all to no avail. Does anyone have a working example they can provide?

    1) I would suggest posting this question over in the JDBC forum. The folks over there are far more likely to be able to help you.
    2) When you do post this question over there, I would strongly suggest posting some sample code/ configuration scripts so that folks can reproduce your problem on their local machines. That tends to make it far easier to debug the problem and/or to notice if you've missed a step.
    Justin

  • Oracle JDBC Thin-Driver: Connection still valid (db still open)?

    Hi,
    I've got a problem with my program. The app opens a connection to an Oracle Database usingt the Oracle JDBC Thin.Driver. Everything works just fine but I can't figure out a way how to find out wheter the connection is still valid, e.g. if the database is still open?
    connection.isClosed() return always false :(
    Any help is appreciated.
    Thanks,
    Spaulding

    Hi oracle_guru,
    unfortunately it's not that easy. :(
    You can't just check for
    if(conn == null)since the connection won't realize when the db shuts down.
    Therefore I created a connection-watcher-thread which uses a prepared statement to check every once in while if the connection is still valid.
    Nevertheless, thanks for you reply,
    Spaulding

  • Oracle 8 JDBC thin driver for tomcat

    Hi all,
    I have tomcat3.3 installed on HP UNIX with java version "HP-UX Java C.01.18.05"
    I need to connect to an oracle 8 database using a Oracle JDBC thin driver. Where can I obtain this driver? How to install and configure it for the tomcat application?
    Thanks for your help.
    Regards
    Shriram

    If you go to the link which the last person posted, http://technet.oracle.com/software/tech/java/sqlj_jdbc/content.html, there is no indication for HP-UX. The only OS it lists are NT and Solaris. Does anyone know if these versions will work on HP-UX?
    Please help.
    Thanks,
    Sam

  • Jdbc oracle jdbc-thin driver subname

    I am working on Windows 2000 environment, using oracle8i 8.1.7 JDBC-Thin driver for use with JDK 1.2.x. The oralce8i 8.1.7 database is on another linux box. I can access the linux box through its ip address, but not by its hostname since it's not accessiable by the dns server. In my code, in the JDBCUrl, I used ip address instead of the hostname, e.g. "jdbc:oracle:thin:@10.0.113.108:1521:ora1". But I got the error like: "java.sql.SQLException: Io exception: The Network Adapter could not establish the connection". If I add a entry in my working machine's hosts file to map the hostname, I can fix the problem. But I don't know if this is the solution, or there is other better solutions.
    Thanks
    null

    Using a hosts file entry is a common solution for problem where the dns lookup does not contain an entry for a RDBMS server platform.
    The real solution is to resolve this issue :
    "where the dns lookup does not contain an entry for a RDBMS server platform."

  • Oracle JDBC thin driver question

    Does anyone know if there is a JDBC thin driver available for Oracle that supports "HTTP tunneling" of the SQLNET wire protocol?
    Such a driver would package the SQL*NET data stream into HTTP or HTTPS packets and connects to a Servlet proxy on the Web host that unpacks the data and forwards the SQL*NET stream to the Oracle RDBMS and returns the response the same way.
    This would help me overcome some firewall issues I'm seeing since HTTP/HTTPS ports are usually opened through a firewall. I know Sybase has a JDBC dirver that does this for their TNS protocol and was hoping some company has developed this for Oracle.
    Thanks in advance...

    The easiest thing to do is download it as an archive with your applet.
    Otherwise, you have to have the files on every client machine.
    For netscape, put the classes111.jar in the java classes folder typically:
    c:\ProgramFiles\Netscape\Communicator\Program\java\classes.
    I'd expect that IE would be setup in a similar way.

  • JDBC Thin Driver 8.17 Release 2

    Is the Oracle Direct Driver (JDBC Thin Driver 8.17 Release 2) compatible with other oracle versions like 8.15 and 8.16? Is it backward compatible to older releases. I have tried it and it does work, but I want to make sure there are no known problems going backwards because we have several versions in our shop.
    Thanks
    Brian

    Rong Lu (guest) wrote:
    : I am using Oracle JDBC thin driver 8.0.5.0.0 to query Oracle
    : 8.0.5 via SQL net. The problem I met is every time I try to
    : retrieve data for varchar2 (over 2k), it get truncated and
    only
    : return the first 2k without throwing any warning or exception.
    : I tried getString(), getAsciiStream() and getBinaryStream(),
    and
    : the results are still the same. The SQL Net works fine, since
    it
    : successfully returns over 2k varchar2 type data when programing
    : with PERL.
    check the following oracle jdbc faq link :
    http://technet.oracle.com/tech/java/sqlj_jdbc/htdocs/jdbc_faq.htm
    #_36_
    null

  • Oracle JDBC Thin Driver and Firewall Problem

    Hi!
    We have Oracle 8.1.5 and Websphere App Server. There is a
    firewall between the two. A servlet creates a connection pool
    (not that of Wesphere's). The frontend is JSP/HTML (no applets).
    The servlet uses the Oracle JDBC Thin Driver for DB Connections.
    The problem is - Once the connection is freed, the connection
    pool is not being able to retrieve it and hence it created
    another one, thus reaching the max. # of connections and the
    system hangs. Restarting the DB service flushes the connection
    and the application starts running again...
    There was a similar problem discussed in this forums long ago. I
    have not yet tried mentioning the firwall port and IP in the
    connection string. But apart from that, is there any other
    setting I need to do (on firewall or for the connectionstring)
    to deal with this problem?
    Someone had suggested to punch a hole in the firewall for the DB
    port - but we can not really do that in the current scenario...
    I would appreciate if anyone could share their experience
    regarding how they resolved this issue.
    Thanks in advance,
    Vijaya.

    One more question -
    Can we use Oracle JDBC OCI driver? We do not have any appletes...
    Does it have firewall issues too? Is there any other driver that
    we can use?
    Thanks,
    Vijaya.

  • JDBC thin Driver 8.0.X Limit 2k for varchar2?

    I am using Oracle JDBC thin driver 8.0.5.0.0 to query Oracle
    8.0.5 via SQL net. The problem I met is every time I try to
    retrieve data for varchar2 (over 2k), it get truncated and only
    return the first 2k without throwing any warning or exception.
    I tried getString(), getAsciiStream() and getBinaryStream(), and
    the results are still the same. The SQL Net works fine, since it
    successfully returns over 2k varchar2 type data when programing
    with PERL.
    null

    Rong Lu (guest) wrote:
    : I am using Oracle JDBC thin driver 8.0.5.0.0 to query Oracle
    : 8.0.5 via SQL net. The problem I met is every time I try to
    : retrieve data for varchar2 (over 2k), it get truncated and
    only
    : return the first 2k without throwing any warning or exception.
    : I tried getString(), getAsciiStream() and getBinaryStream(),
    and
    : the results are still the same. The SQL Net works fine, since
    it
    : successfully returns over 2k varchar2 type data when programing
    : with PERL.
    check the following oracle jdbc faq link :
    http://technet.oracle.com/tech/java/sqlj_jdbc/htdocs/jdbc_faq.htm
    #_36_
    null

Maybe you are looking for

  • Rescheduling for the third party items

    Dear Experts, I have one issue. In the sales order there are TAN and TAS items. TAN items are delivered and done with PGI. For TAS items PO created and then MIRO also done. Now some new items are added in the sales order. Why is it that the system re

  • I can not copy and paste from My E-Bay adds. Please help

    I need to copy and paste add's from and to E-Bay. Firefox wont let me and says I need to go into profile directory. then user.js. ect ect. I can not figure out how to gt to Profile directory, much less user.js Please help me do this. Diana

  • How can you open an ipad mini if its says the password is wrong?

    how do u get in to reset the password on a new ipad mini?

  • Invoicing Party on Purchase Orders

    Hello, I am currently trying to figure out a way to add an Invoicing Party onto the SRM purchase orders so that when the invoice hits our ECC system it will go to a different vendor for payment.  We are currently running on SRM 7.0 and ECC 6.0.  I ha

  • Problem to create change pointer for custom message type - Idoc creation

    Hi, We want to create IDOC and send it out when the data of "planning calendar" changes. So we are trying to generate change pointers whenever entries in Table T439I (Planniing calendar) data change. We created a message type, activated change pointe