视窗
loading...
您现在的位置:首页 > IT认证 > oracle认证 >

oracle的oci和thin区别


我是今天看到tomcat数据源的配置时,想起来这个问题,刚开始还不晓得thin是什么东西!

  database.url=jdbc:oracle:thin:angel/oracle@192.168.55.11:1530:monitordb

  经过上网查询,得到如下结果:

  jdbc:oracle连接的是oracle数据库

  thin是一种方法

  angel/oracle那个angel是用户名,oracle是密码

  192.168.55.11是你要连的电脑ip

  1530是oracle的连端口(1521貌似是默认端口)

  monitordb这是数据库的名字

  下面是我转载的文章,是关于tomcat数据源中oracle的oci和thin区别:

  前几天同事跑过来跟我说, 机房中的一台tomcat服务器跟oracle数据库机连接很慢,查看控制台中的hibernate日志, 基本上是一条sql出来要等个1-2秒再出第二条。但同样的程序在他自己机器上的tomcat运行,同样是连那台数据库机器,就快很多,不会出现前面的每执行1条sql就卡一次壳的情况。

  初步分析,我就想到可能是网络原因, 机房两台机器连接不畅通, 程序和机器差的原因基本可以排除, 机房的tomcat机比我们开发机要强多了, 而且程序在他的机器上运行又没有问题。于是我就劝他到机房去检查一下网络状态, 但他一时也无法进入,因为机房的管理人员不在。

  过了一会, 他告诉我问题解决了, 把数据库访问的url更换成了oci方式就好了, oci对我来说有些陌生, 我一直是用的thin,也没想过其他连接方式。对于oci我也只能想到oracle 的client中貌似是有oci什么的,当时有其他事情也没管了。

  今天有意了解一下区别,先看看thin和oci的url写法上的区别:jdbc:oracle:thin:@server ip: service jdbc:oracle:oci:@service看来oci的还更加简洁,ip可以省掉不写了。

  接下来再找找oci和thin的其他区别,发现有如下解释:引用

  Oracle provides four different types of JDBC drivers, for use in different deployment scenarios. The 10.1.0 drivers can access Oracle 8.1.7 and higher. While all Oracle JDBC drivers are similar, some features apply only to JDBC OCI drivers and some apply only to the JDBC Thin driver.

  JDBC OCI client-side driver: This is a JDBC Type 2 driver that uses Java native methods to call entrypoints in an underlying C library. That C library, called OCI (Oracle Call Interface), interacts with an Oracle database. The JDBC OCI driver requires an Oracle client installation of the same version as the driver.

  The use of native methods makes the JDBC OCI driver platform specific. Oracle supports Solaris, Windows, and many other platforms. This means that the Oracle JDBC OCI driver is not appropriate for Java applets, because it depends on a C library.

  Starting from 10.1.0, the JDBC OCI driver is available for install with the OCI Instant Client feature, which does not require a complete Oracle client-installation. Please refer to Oracle Call Interface for more information.

  JDBC Thin client-side driver: This is a JDBC Type 4 driver that uses Java to connect directly to Oracle. It implements Oracle's SQL*Net Net8 and TTC adapters using its own TCP/IP based Java socket implementation. The JDBC Thin driver does not require Oracle client software to be installed, but does require the server to be configured with a TCP/IP listener.

  Because it is written entirely in Java, this driver is platform-independent. The JDBC Thin driver can be downloaded into any browser as part of a Java application. (Note that if running in a client browser, that browser must allow the applet to open a Java socket connection back to the server.)

  JDBC Thin server-side driver: This is another JDBC Type 4 driver that uses Java to connect directly to Oracle. This driver is used internally within the Oracle database. This driver offers the same functionality as the client-side JDBC Thin driver (above), but runs inside an Oracle database and is used to access remote databases.

  Because it is written entirely in Java, this driver is platform-independent. There is no difference in your code between using the Thin driver from a client application or from inside a server.

  连接方式有以下几种:

  Oralce provides four types of JDBC driver.

  Thin Driver, a 100% Java driver for client-side use without an Oracle installation, particularly with applets. The Thin driver type is thin. To connect user scott with password tiger to a database with SID (system identifier) orcl through port 1521 of host myhost, using the Thin driver, you would write :Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@myhost:1521:orcl", "scott", "tiger");

  OCI Driver for client-side use with an Oracle client installation. The OCI driver type is oci. To connect user scott with password tiger to a database with SID (system identifier) orcl through port 1521 of host myhost, using the OCI driver, you would write :Connection conn = DriverManager.getConnection("jdbc:oracle:oci:@myhost:1521:orcl", "scott", "tiger");

  Note that you can also specify the database by a TNSNAMES entry. You can find the available TNSNAMES entries listed in the file tnsnames.ora on the client computer from which you are connecting. For example, if you want to connect to the database on host myhost as user scott with password tiger that has a TNSNAMES entry of MyHostString, enter:Connection conn = DriverManager.getConnection("jdbc:oracle:oci8:@MyHostString","scott","tiger");

  If your JDBC client and Oracle server are running on the same machine, the OCI driver can use IPC (InterProcess Communication) to connect to the database instead of a network connection. An IPC connection is much faster than a network connection. Connection conn = DriverManager.getConnection("jdbc:oracle:oci8:@","scott","tiger");

  Server-Side Thin Driver, which is functionally the same as the client-side Thin driver, but is for code that runs inside an Oracle server and needs to access a remote server, including middle-tier scenarios. The Server-Side Thin driver type is thin and there is no difference in your code between using the Thin driver from a client application or from inside a server. Server-Side Internal Driver for code that runs inside the target server, that is, inside the Oracle server that it must access. The Server-Side Internal driver type is kprb and it actually runs within a default session. You are already "connected". Therefore the connection should never be closed. To access the default connection, write:DriverManager.getConnection("jdbc:oracle:kprb:");or:DriverManager.getConnection("jdbc:default:connection:");

  You can also use the Oracle-specific defaultConnection() method of the OracleDriver class which is generally recommended:OracleDriver ora = new OracleDriver();Connection conn = ora.defaultConnection();

  Note: You are no longer required to register the OracleDriver class for connecting with the Server-Side Internal driver, although there is no harm in doing so. This is true whether you are using getConnection() or defaultConnection() to make the connection. Any user name or password you include in the URL string is ignored in connecting to the server default connection. The DriverManager.getConnection() method returns a new Java Connection object every time you call it. Note that although the method is not creating a new physical connection (only a single implicit connection is used), it is returning a new object. Again, when JDBC code is running inside the target server, the connection is an implicit data channel, not an explicit connection instance as from a client. It should never be closed.

  这下基本明白了1)从使用上来说,oci必须在客户机上安装oracle客户端或才能连接,而thin就不需要,因此从使用上来讲thin还是更加方便,这也是thin比较常见的原因。

  2)原理上来看,thin是纯java实现tcp/ip的c/s通讯;而oci方式,客户端通过native java method调用c library访问服务端,而这个c library就是oci(oracle called interface),因此这个oci总是需要随着oracle客户端安装(从oracle10.1.0开始,单独提供OCI Instant Client,不用再完整的安装client)

  3)它们分别是不同的驱动类别,oci是二类驱动, thin是四类驱动,但它们在功能上并无差异。

  4)虽然很多人说oci的速度快于thin,但找了半天没有找到相关的测试报告。

闂傚倸鍊风欢姘缚瑜嶈灋鐎光偓閸曨偆锛涢梺璺ㄥ櫐閹凤拷

闂傚倸鍊风欢姘缚瑜嶈灋鐎光偓閸曨偆锛涢梺璺ㄥ櫐閹凤拷

闂傚倸鍊风欢姘缚瑜嶈灋婵炲棙鎸哥粈澶愭煛閸ャ儱鐏╅柛灞诲姂閺屾洟宕煎┑鍥ь槱闁诲孩鑹鹃…鐑藉蓟閵娿儮鏀介柛鈩兠悵鏃傜磽娴g懓鏁剧紓宥勭窔瀵鏁撻悩鑼槹濡炪倖鍔х€靛矂鍩€椤掍緡娈滈柡宀€鍠栭幗搴ㄥ磼濮橆剛銈梻浣筋嚃閸燁偊宕惰閸炲爼姊虹紒妯荤叆闁硅姤绮庣划鏃堫敆閸曨剛鍘介梺缁樏鍫曞箹閹扮増鐓熼幒鎶藉礉鐏炶棄绁梻浣侯攰閹活亞绮婚幋锝囩闂傚倷娴囧▔鏇㈠闯閿曞倸绠柨鐕傛嫹
闂傚倸鍊风粈渚€骞栭锔藉亱婵犲﹤鐗嗙粈鍫熺箾閹存瑥鐏柛瀣枑閵囧嫰寮介顫勃闂佺粯甯$粻鏍蓟閺囩喓绠鹃柛顭戝枛婵酣姊虹拠鍙夊攭妞ゆ泦鍡楃倒闂備焦鎮堕崕鑽ゅ緤閼恒儲娅犻柟缁樺础瑜版帗鍋傞幖娣灩濞堟鎮楀▓鍨灈闁绘牕鍚嬫穱濠囨倻閼恒儲娅嗛梺鍛婃寙閸愵亜甯楀┑鐘垫暩閸嬫盯鎮洪妸褍鍨濈€光偓閳ь剟鎳為柆宥嗗殐闁冲搫瀚皬濠电偛顕崢褔鎮洪妸鈺佸惞闁稿瞼鍋為悡娑㈡煕閹扳晛濡奸柍褜鍓濆畷鐢靛垝閺冨洢浜归柟鐑樻尵閸欏棗鈹戦悙鏉戠伇婵炲懏娲滈埀顒佺啲閹凤拷闂傚倷娴囬褍霉閻戣棄鏋侀柟闂撮檷閳ь兛鐒︾换婵嬪磻椤栨氨绉虹€规洖宕灒閻犲洤妯婂ḿ顖炴⒒娴i涓茬紒韫矙瀵敻顢楅崟顒€浠奸梺鍛婎殘閸婃垶鎯旈妸銉у€為梺鎸庣箓閹冲酣鍩涙径瀣閻庣數枪鐢爼鏌熼搹顐€块柣娑卞枤閳ь剨缍嗛崰鏍不閿濆棛绡€濠电姴鍊搁顐︽煙閺嬵偄濮傛慨濠冩そ瀹曘劍绻濋崘锝嗗缂傚倷绀侀鍡欐暜閿熺姴绠氶柛銉e妼椤曢亶鏌℃径瀣仴闁哥偑鍔戝娲箹閻愭彃濮岄梺鍛婃煥缁夊綊鏁愰悙鍝勫唨妞ゎ兙鍎遍柊锝呯暦閸洘鏅查柛娑卞幐閹枫倕鈹戦悙宸殶闁告鍥х疇婵せ鍋撴鐐叉瀹曟﹢顢欓懖鈺婃Ч婵$偑鍊栭崝鎴﹀垂濞差亝鍎婇柡鍐e亾缂佺粯绻堟慨鈧柨婵嗘閵嗘劙鏌f惔銏e闁硅姤绮屽嵄闁规壆澧楅弲鎼佹煥閻曞倹瀚�闂傚倸鍊烽懗鍫曞箠閹剧粯鍋ら柕濞炬櫅閸ㄥ倿鏌涢幇顓犮偞闁割偒浜弻鐔衡偓鐢登瑰皬闂佺粯甯掗敃銈夊煘閹达附鍋愰柛娆忣槹閹瑥鈹戦悙鍙夊櫡闁搞劌缍婂﹢渚€姊洪幐搴g畵婵☆偅鐩幆灞炬償閵婏妇鍘撻悷婊勭矒瀹曟粌鈻庨幘宕囩枃闂佸綊鍋婇崗姗€寮搁弮鍫熺厵閺夊牓绠栧顕€鏌涚€n亶鍎旈柡灞剧洴椤㈡洟濡堕崨顔锯偓鍓х磽閸屾氨袦闁稿鎹囧缁樻媴閻熸壆浜伴梺缁樺釜缁犳挻淇婇悽鍛婂€烽柣銏㈡暩椤︻垶姊洪崫鍕殭闁绘妫涢惀顏囶樄闁哄本鐩獮鍥敍濞戞哎鈧﹦绱撴担鎻掍壕闂佽法鍣﹂幏锟�闂傚倷娴囬褏鑺遍懖鈺佺筏濠电姵鐔紞鏍ь熆閼搁潧濮囬柛銊ュ€圭换婵囩節閸屾凹浼€濡炪倐鏅犻弨閬嶅Φ閸曨垰绠抽柟瀛樼箖濞堣尙绱撴担椋庤窗闁革綇绲介锝夊醇閺囩喎鈧兘鏌涢…鎴濅簼闁绘繍浜滈埞鎴︽倷閼碱剙顤€闂佹悶鍔屾晶搴e垝濮樿埖鐒肩€广儱鎳愰崝鎾⒑閸涘﹤澹冮柛娑卞灱濡差剚绻濋悽闈浶ユい锝勭矙閸┾偓妞ゆ巻鍋撻柛鐔锋健閸┾偓妞ゆ帒鍊归崵鈧梺鎸庢磸閸ㄦ椽骞忛崨鏉戠闁圭粯甯楅鍧楁⒒娴e懙褰掑嫉椤掑倹宕茬€广儱顦懜褰掓煙缂併垹鏋熼柣鎾寸懇閹鈽夊▎瀣窗婵犫拃灞藉缂佺粯绻堥崺鈧い鎺嶇劍婵挳鏌涢敂璇插箻闁硅櫕绻堝娲礈閼碱剙甯ラ梺绋款儏閹虫劗妲愰悙鍝勭劦妞ゆ帒瀚埛鎴︽煟閻旂ǹ顥嬮柟鐣屽█閺岋絽螖閸愩劋鎴烽梺鐟扮畭閸ㄥ綊锝炲┑瀣垫晞闁兼亽鍎虫禍娆撴⒒娴e憡鎯堟繛璇х畵閹矂顢欓悙顒€搴婇梺绯曞墲缁嬫帡鎮″▎鎰╀簻闁圭偓顨呴崯鐗堢閺夋埈娓婚柕鍫濇婢跺嫰鏌涢幘璺烘瀻闁伙絿鍏橀弫鎰板幢濞嗘垹妲囬梻浣告啞閸斿繘寮查埡浣勶綁顢涢悙绮规嫼闂佸ジ鈧稑宓嗛柛婵堝劋閹便劍绻濋崒銈囧悑闂佸搫鑻悧鎾荤嵁濮椻偓椤㈡瑩鎳栭埡濠傛倛闂傚倷鑳堕幊鎾绘偤閵娧冨灊鐎广儱娲ら崹婵嬫煥閺囩偛鈧綊鎮¢妷锔剧闁瑰鍊栭幋婵撹€块柣妤€鐗忕弧鈧梺閫炲苯澧存鐐茬Ч椤㈡瑩骞嗚鐟欙附绻濋悽闈涗粶婵☆偅顨呴湁濡炲娴烽悳缁樹繆閵堝懎鏆熺痪鎯с偢閺岋繝宕掑☉鍗炲妼闂佺ǹ楠哥换鎺楀焵椤掑喚娼愰柟鍝デ硅灋婵犻潧妫涢弳锔芥叏濡灝鐓愰柛瀣姉缁辨挻鎷呯拹顖滅窗閻熸粎澧楅崹鍨潖濞差亜绠伴幖绮光偓铏亞闂備胶鎳撻崵鏍箯閿燂拷闂傚倷娴囬褍霉閻戣棄鏋侀柟闂寸缁犵娀鏌熼幑鎰厫闁哄棙绮嶉妵鍕箛閸撲胶鏆犵紓浣插亾闁糕剝岣跨粻楣冩煙鐎甸晲绱虫い蹇撶墕閺嬩線鏌涢锝嗙闁稿﹦鏁搁惀顏堫敇閻愭潙顎涘┑鐐插悑閸旀瑩寮诲☉銏犖╅柨鏂垮⒔閻撲胶绱撴担绋库偓鍦暜閿熺姰鈧礁螖娴g懓顎撶紓浣割儏閺呮繈顢曢敂瑙f嫼闁荤喐鐟ョ€氼厾娆㈤懠顒傜<缂備焦锚閻忓鈧鍣崑濠囥€佸▎鎾村仼鐎光偓婵犲啰銈┑鐘愁問閸犳濡靛☉銏犵;闁瑰墽绮悡鍐喐濠婂牆绀堟繛鍡樻尭绾惧綊鏌涘┑鍕姢缂佲偓婵犲洦鍊甸柨婵嗛閺嬬喖鏌涙惔锛勑ч柡灞剧洴瀵挳濡搁妷銉х憿闁荤喐绮庢晶妤冩暜濡ゅ懏鍋傞柍褜鍓欓—鍐Χ閸℃鐟ㄩ梺鎸庢穿婵″洨鍒掗崼銉︽櫢闁跨噦鎷�闂傚倸鍊峰ù鍥ㄧ珶閸喆浠堢紒瀣儥濞兼牕鈹戦悩宕囶暡闁绘帡绠栭弻鐔虹磼閵忕姵鐏堝┑鈽嗗亝閿曘垽寮婚敐澶嬪亜缂佸顑欏Λ鍡欑磼缂併垹骞愰柛瀣崌濮婄粯鎷呴悷閭﹀殝缂備礁顑嗙敮鎺楁偩濠靛绠瑰ù锝呮憸閿涙盯姊洪崫鍕犻柛鏂块叄閵嗗懘鎮滈懞銉у弳闂佺粯娲栭崐鍦偓姘炬嫹:webmaster@jscj.com闂傚倸鍊风欢姘缚瑜嶈灋鐎光偓閸曨偆锛涢梺鐟板⒔缁垶鎮¢悢鎼炰簻妞ゆ劦鍋勯獮妯肩磼娴e搫鍘撮柡宀嬬秮閺佸倻鎹勯妸褏鍘梻浣芥〃缁€浣虹矓瑜版帒鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘4008816886

相关文章

无相关信息
更新时间2022-03-13 11:05:03【至顶部↑】
联系我们 | 邮件: webmaster@jscj.com | 客服热线电话:4008816886(QQ同号) |  濠电姷鏁搁崕鎴犵礊閳ь剚銇勯弴鍡楀閸欏繘鏌i幇顕呮毌闁稿鎹囬悰顕€宕归鍙ョ棯婵犵數濮崑鎾绘煕閵夋垵鑻▓顐㈩渻閵堝棙顥嗘い鏂匡功閹广垽鏁撻敓锟�

付款方式留言簿投诉中心网站纠错二维码手机版

客服电话: