主頁(yè) > 知識(shí)庫(kù) > JDBC連接Oracle數(shù)據(jù)庫(kù)常見(jiàn)問(wèn)題及解決方法

JDBC連接Oracle數(shù)據(jù)庫(kù)常見(jiàn)問(wèn)題及解決方法

熱門(mén)標(biāo)簽:電話機(jī)器人的特色和創(chuàng)新 漯河辦理400電話 怎樣把地圖標(biāo)注出來(lái) 商丘百應(yīng)電話機(jī)器人有沒(méi)有效果 騰訊地圖標(biāo)注商戶改名注冊(cè)入駐 黃石智能營(yíng)銷(xiāo)電銷(xiāo)機(jī)器人效果 淮南騰訊地圖標(biāo)注 開(kāi)封便宜外呼系統(tǒng)報(bào)價(jià) 地圖標(biāo)注人員兼職

注:本文是斑竹從JDBC Transaction版摘錄廣大站友的提問(wèn)以及各種解答整理而來(lái),如果您認(rèn)為本文的內(nèi)容已觸犯了您的權(quán)益,請(qǐng)聯(lián)系管理員進(jìn)行修改。

  1. Jbuilder正確連接 oracle 9i需要注意的幾個(gè)問(wèn)題
    • oracle8以上的應(yīng)該都使用classes12.jar文件作為jdbc驅(qū)動(dòng);
    • 正確設(shè)置windows的classpath和jbuilder中的enterprise setup 、configure libraries,將casses12.jar路徑正確添加到上述需要設(shè)置的地方;
    • 進(jìn)入database pilot,在database pilot中,file---new 在driver列表中如果oracle的驅(qū)動(dòng)是紅色的,就說(shuō)明你的oralce在jb中加載失??;
    • 若③沒(méi)有錯(cuò),則新建一個(gè)url:jdbc:oracle:thin:@(yourhostname):1521:(your sid)
    • 連接數(shù)據(jù)庫(kù)的Username/password

    注:大部分站友的jbuilder連接oracle的問(wèn)題都是由于沒(méi)有正確配置classpath等引起的。

  2. 使用非XA方式連接ORACLE數(shù)據(jù)庫(kù)

    在windows下配置Oracle_XA時(shí)要注意兩點(diǎn):

    #ORACLE 10
    Oracle_XA;xaosw;%ORACLE_HOME% dbms oraxa10.lib%ORACLE_HOME%precompibmsvcorasql10.lib

    #oracle 9
    Oracle_XA;xaosw;%ORACLE_HOME% dbms oraxa9.lib%ORACLE_HOME%precompibmsvcorasql9.lib

    Unix下
    Oracle_XA:xaosw:....

    第一:在windows 下 ORACLE_XA 和xaosw后面的是分號(hào)";",不是冒號(hào)":"
    第二:上面的這些LIB寫(xiě)在一行上,中間用空格分開(kāi),如果沒(méi)有在系統(tǒng)的環(huán)境變量中設(shè)置ORACLE_HOME,就寫(xiě)絕對(duì)路徑。

  3. JDBC操作ORACLE數(shù)據(jù)庫(kù)時(shí)出現(xiàn)‘java.sql.SQLException:IO異常,不在流模式下'
    1. 用OracleStatment,,不要用java.sql.Statment
    2. 如果對(duì)已有連接進(jìn)行setAutoCommit失敗,則關(guān)閉該連接并重新建立一個(gè)連接
    3. 到ORACLE站點(diǎn)下載一個(gè)最新的JDBC Driver,如果操作LOB類(lèi)型,用ORACLE自帶的接口和類(lèi)
  4. weblogic連接oracle問(wèn)題:The Network Adapter could not establish the connection

    可能是服務(wù)器的監(jiān)聽(tīng)停掉了,是數(shù)據(jù)庫(kù)的問(wèn)題,與應(yīng)用無(wú)關(guān);應(yīng)該先檢查一下oracle是否正常,用sql*plus連接一下數(shù)據(jù)庫(kù),看能否正常連接;

  5. Weblogic中使用Oracle連接池及Oracle備份的注意事項(xiàng)

    使用HP-UNIX,Weblogic 8.1,Oracle 9.2.0.5
    配置了一個(gè)普通的連接池,驅(qū)動(dòng)程序采用oracle的Oracle's Driver(Thin) version 9.0.1, 9.2.0

    錯(cuò)誤情況:
    結(jié)果使用數(shù)據(jù)庫(kù)連接池時(shí)報(bào)錯(cuò),說(shuō)沒(méi)有連接池資源了。實(shí)際上數(shù)據(jù)庫(kù)的連接池完全空閑,并且測(cè)試也是對(duì)的,Oracle也是正??梢赃B接、使用的。

    問(wèn)題根源:
    通過(guò)層層排錯(cuò),發(fā)現(xiàn)原來(lái)后臺(tái)在使用Oracle的exp備份一個(gè)只有同義詞的用戶,導(dǎo)致exp進(jìn)程僵死。
    殺死exp、重啟Oracle等無(wú)法解決問(wèn)題,最終重啟UNIX,禁止備份只有同義詞的用戶,問(wèn)題解決。

    總結(jié):
    應(yīng)該是Oracle9的exp BUG導(dǎo)致連接池問(wèn)題,不要使用exp倒出同義詞

  6. 連接Oracle時(shí)拋出如下異常:java.sql.SQLException: Io exception:The Network Adapter could not establish connection一種產(chǎn)生原因

    Oracle Database Connection (from oracle.com)
    PROBLEM
    You are attempting to connect to an Oracle instance using JDBC and you are receiving the following error. 
       java.sql.SQLException: Io exception:
         The Network Adapter could not establish connection
       SQLException: SQLState (null) vendor code (17002)
    Any or all of the following conditions may also apply:
    1) You are able to establish a SQL*Plus connection from the same
       client to the same Oracle instance.
    2) You are able to establish a JDBC OCI connection, but not a Thin
       connection from the same client to the same Oracle instance.
    3) The same JDBC application is able to connect from a different
       client to the same Oracle instance.
    4) The same behavior applies whether the initial JDBC connection
       string specifies a hostname or an IP address.
    REDISCOVERY 
    To verify whether you are hitting this problem, verify whether the Oracle instance is configured for Multithreaded Server (MTS). If the Oracle instance is not configured for MTS, you are probably encountering a different problem. Otherwise, continue. Try forcing the JDBC connection to use a dedicated server instead of a shared server. This can be accomplished in several ways. For JDBC OCI or Thin, this can be done by reconfiguring the server for dedicated connections only. This approach, however, may not be feasible in many cases. In such cases, the following options apply: For JDBC OCI:  
    1) Add the (SERVER=DEDICATED) property to the TNS connect string
       stored in the tnsnames.ora file on the client.
    2) Set the user_dedicated_server=ON in sqlnet.ora on the client.
    For JDBC Thin:
    You must specify a full name-value pair connect string (the same as it might appear in the tnsnames.ora file) instead of the short JDBC Thin syntax. For example, instead of
    "jdbc:oracle:thin::port:sid"
    you would need to use a string of the form
    "jdbc:oracle:thin:@(DESCRIPTION="                    +
                           "(ADDRESS_LIST="              +
                               "(ADDRESS=(PROTOCOL=TCP)" +
                                        "(HOST=host)"    +                                      =
                                        "(PORT=port)"    +
                               ")"                       +
                           ")"                           +
                           "(CONNECT_DATA="              +
                               "(SERVICE_NAME=sid)"      +
                               "(SERVER=DEDICATED)"      +
                           ")"                           +
                         ")"
    If the connection works fine after having made these changes, it is very likely that this is the problem you are encountering. In this case, one last test will help to verify this fact.
    Log into the remote host on which the Oracle instance is running and execute the appropriate command to determine what the server 'thinks' its hostname is (i.e. the name that was configured when the server was installed and configured). For example, on a Unix host the 'hostname' command can be used for this purpose.
    Using the name displayed (e.g. by the hostname command), exactly as it appeared (i.e. if the output from the hostname command had the domain name included, then include it), return to the client which was unable to connect and try pinging the server.
    NOTE: It is critical that you attempt to ping the server using EXACTLY the same hostname you got from the server.
    If you are unable to ping the server via this hostname, then you almost certainly hitting this problem. If not, this may be a new issue, but at least you will have found a workaround (i.e. use a dedicated connection).
    EXPLANATION 
    To understand why this problem occurs, one must first understand the differences in how the listener handles connections to shared servers versus dedicated servers.
    When connecting to a dedicated server, the client connects to the listener (via hostname or IP address). The listener then spawns a dedicated server process and hands off the socket used to accept the client connection to that server. The client and server then start communicating via the endpoints established by the initial connection. NOTE: There is only one connection in this case. When connecting to a shared server, the initial client connection to the listener is the same. However, with MTS, there is no need to spawn a new server process; a pool of shared processes already exists. Also, clients do not communicate directly with the server processes in MTS; rather, they communicate with a dispatcher.
    For this reason, when setting up an MTS connection, the listener sends a redirect message back to the client asking the client to close the connection to the listener and connect to a dispatcher. The information in this message includes the hostname and a port number for the appropriate dispatcher. The redirect message will ALWAYS specify a hostname, even if the client initially provided an IP address.
    If, for any reason, the hostname provided to the listener (e.g. by the 'hostname' or another command) doesn't agree with the hostname by which the server is known on the client, the connection fails.
    On the other hand, if "(SERVER=DEDICATED)" already appears in the TNS connect string in tnsnames.ora or if "use_dedicated_server=ON" already appears in the sqlnet.ora file, you may find that SQL*Plus and/or JDBC OCI work fine, while JDBC Thin fails.
    SOLUTION 
    Obviously, one solution is to use dedicated servers. However, this may not always be feasible.
    The key is to make sure the hostname on both the client and server agree. This can be accomplished by reconfiguring either the client or the server, but there are things to be aware of in both cases.
    If the server is configured to return a different hostname, then it is possible that other clients which used to work will now fail.
    In some cases, it may not be feasible to reconfigure the client. For example, if the server version of the hostname does not include the domain, you would need to remove the domain portion of the hostname on the client; but, if the client needs to connect to more than one server with the same base name in different domains, this may not be possible, as the hostname may be ambiguous.
    REFERENCES 
    bug:1269734 java.sql.SQLException: Io exception: The Network Adapter could not be found.

  7. 連接ORACLE數(shù)據(jù)庫(kù)報(bào)錯(cuò):javax.naming.NameNotFoundException: Unable to resolve oracThin. Resolved: '' Unresolved:'oracThin' ; remaining name '' 

    問(wèn)題描述:配置完JDBC后,打開(kāi)頁(yè)面的時(shí)候,報(bào)出如下錯(cuò)誤信息:
    javax.naming.NameNotFoundException: Unable to resolve oracThin. Resolved: '' Unresolved:'oracThin' ; remaining name ''
    JDBC配置如下:
    Connection Pools(連接池)
    Name:OracThin
    URL:jdbc:oracle:thin.0.0.1:LYSIMIS
    Driver Classname:oracle.jdbc.driver.OracleDriver
    Properties:
    user=system
    password=manager
    dll=ocijdbc8
    protocol=thin
    數(shù)據(jù)源配置如下:
    Name:OracThin
    JNDI Name:OracThin
    Pool Name:OracThin
    當(dāng)程序執(zhí)行到這一步時(shí)出錯(cuò)。
    ctx = new InitialContext();
    ds = (javax.sql.DataSource)ctx.lookup ("OracThin"); 

    問(wèn)題解決后漢字是亂碼 

    錯(cuò)誤產(chǎn)生原因及解決辦法:

    • URL:jdbc:oracle:thin:.0.0.1:1521:LYSIMI,thin后面加:,127.0.0.1后面加端口號(hào)
    • 注意名字大小寫(xiě).
    • target 到server上
    • 再看看pool是否起來(lái)了,沒(méi)起來(lái)的話,重起weblogic
    • 亂碼問(wèn)題(Java是基于Unicode):
      • 在JSP 文件中加入%@ page contentType="text/html; charset=GBK" %>
      • 在weblogic.xml文件的jsp-descriptor>部分加入
        jsp-descriptor>
        jsp-param>
        param-name>compilerSupportsEncoding/param-name>
        param-value>true/param-value>
        /jsp-param>
        jsp-param>
        param-name>encoding/param-name>
        param-value>GBK/param-value>
        /jsp-param>
        /jsp-descriptor>
  8. oracle XA的疑惑

    問(wèn)題描述:Oracle_XA;xaosw;D:oracleora92 dbmsXAORAXA9.lib C:msvcoraSQL9.lib中
    xaosw是什么意思

    解答:可以參考ORACLE的XA部分的文檔。

    http://www-rohan.sdsu.edu/doc/oracle/server803/A54642_01/ch_xa.htm

  9. oracle與weblogic自動(dòng)啟動(dòng)與停止

    問(wèn)題描述:每次重新啟動(dòng)服務(wù)器時(shí)oracle數(shù)據(jù)庫(kù)若沒(méi)有關(guān)閉,則必須先關(guān)閉后在重新啟動(dòng)redhat advance server,oracle才能夠正常運(yùn)行

    原因及解決辦法參見(jiàn):

    http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=81threadID=8839messageID=43184#43184

本文整理的只是本版文章的一小部分,如果這里沒(méi)有解答您的問(wèn)題,請(qǐng)查閱本版的精華區(qū),也可以使用論壇的搜索功能。

整理日期2005.9.26

 作者簡(jiǎn)介
dev2dev ID: lhbing, dev2dev論壇版主,WebLoigc以及Java技術(shù)愛(ài)好者
您可能感興趣的文章:
  • Java如果通過(guò)jdbc操作連接oracle數(shù)據(jù)庫(kù)
  • Java使用Jdbc連接Oracle執(zhí)行簡(jiǎn)單查詢(xún)操作示例
  • 使用JDBC連接ORACLE的三種URL格式
  • jdbc連接oracle數(shù)據(jù)庫(kù)功能示例
  • Java開(kāi)發(fā)Oracle數(shù)據(jù)庫(kù)連接JDBC Thin Driver 的三種方法
  • java基于JDBC連接Oracle 11g Release2實(shí)例分析
  • 通過(guò)JDBC連接oracle數(shù)據(jù)庫(kù)的十大技巧
  • Oracle JDBC連接BUG解決方案

標(biāo)簽:岳陽(yáng) 鄭州 拉薩 亳州 大興安嶺 武威 紅河 馬鞍山

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《JDBC連接Oracle數(shù)據(jù)庫(kù)常見(jiàn)問(wèn)題及解決方法》,本文關(guān)鍵詞  JDBC,連接,Oracle,數(shù)據(jù)庫(kù),常見(jiàn)問(wèn)題,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《JDBC連接Oracle數(shù)據(jù)庫(kù)常見(jiàn)問(wèn)題及解決方法》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于JDBC連接Oracle數(shù)據(jù)庫(kù)常見(jiàn)問(wèn)題及解決方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章