科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道关于JDBC客户端如何连接ORACLE数据库RAC的负载均衡

关于JDBC客户端如何连接ORACLE数据库RAC的负载均衡

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

这篇文章主要介绍如何使用jdbc配置连接数据库(oracle的RAC配置的数据库)达到负载均衡的情况.该例子是以2个NODE的情况说明,希望对大家有所帮助. 我的问题是我需要设置oracle9.2.x的thin客户端连接到oracle

作者:中国IT实验室 来源:中国IT实验室 2007年10月6日

关键字: JDBC 数据库 ORACLE

  • 评论
  • 分享微博
  • 分享邮件

    这篇文章主要介绍如何使用jdbc配置连接数据库(oracle的RAC配置的数据库)达到负载均衡的情况.该例子是以2个NODE的情况说明,希望对大家有所帮助.

    我的问题是我需要设置oracle9.2.x的thin客户端连接到oracle的RAC环境上.

    注:这样连接可以通过RAC自动平衡负载.

    --原文如下:

Hi Tom,

I couldn't find this information easily on the net.  So I'm submitting it here
and hope you make it available for anyone else looking for this information.

My problem was I needed to configure the Oracle 9.2.x thin driver (type IV) to
connect to an Oracle Real Application Cluster (RAC) environment.

For example, assuming you have a database called RAC_DB with two nodes - node1
and node2.

You would need to configure your tnsnames.ora with the following information in
the following way:

RAC_DB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = node1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = node2)(PORT = 1521))
      (LOAD_BALANCE = yes)
      (FAILOVER = on)
    )
    (CONNECT_DATA =
      (SERVICE_NAME = RAC_DB)
      (FAILOVER_MODE = (TYPE = SELECT)
                       (METHOD = BASIC)
                       (RETRIES = 20)
                       (DELAY = 10)
      )
    )
  )

Now if you start a SQL*PLUS session, then you should see a connection on the
node1 instance.  If you start another SQL*PLUS session, then Oracle should
connect you to the node2 instance (automatic load balancing).  It's actually
pretty cool to see the first time.

To pass this same information to the Oracle's JDBC thin driver, you essentially
concatenate a shorten version of the tnsnames information above and pass this to
the driver.

  String userid = "scott";
  String password = "tiger";

  String tnsnames_info =
    "(DESCRIPTION=(ADDRESS_LIST=" +
    "(ADDRESS=(PROTOCOL=TCP)(HOST=node1)(PORT=1521))" +
    "(ADDRESS=(PROTOCOL=TCP)(HOST=node2)(PORT=1521))" +
    "(LOAD_BALANCE=yes)(FAILOVER=on))" +
    "(CONNECT_DATA=(SERVICE_NAME=rac_db)))" ;

  String url = "jdbc:oracle:thin:@" + tnsnames_info;

  DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
  Connection dbConnection = DriverManager.getConnection(url, userid, password);

That's it.  If your application creates multiple connection to the database,
then you should see these connections load balance across the two instances.

One last note, Oracle only supports connection to a RAC configuration with the
9i drivers, so you should try to get the latest 9.2.0.4 Oracle JDBC thin driver.

HTH,
-Peter

--------------------------------------------------------------------------------
and we said...

you made it really hard.  you just needed the service!  the load balancing and
all could be/should be setup on the listener side!

you have one listener, both databases register with it as a service.


that would be another option.

   Reviews

--------------------------------------------------------------------------------
I think we tried that and it didn't work...  September 28, 2003
Reviewer:  Peter Tran  from Houston, TX USA

Hi Tom,

I'm pretty sure we tried that but it didn't work with the thin driver.  That
approach will work if you use the OCI driver, but not with the thin driver.

Please send me an example of what you mean or what files I should configure to
test it out.

I'm always opened to easier options.

Thanks,
-Peter

Followup:
you need to set up mts and a single listener, thats it.

pmon on each of the rac instances will tell the listener about the load and away
it goes.  you might not see the round robin right off (both are "not yet
loaded") so it'll be an unbalanced load balance initially but as the system
ramps, it'll balance out.

--------------------------------------------------------------------------------
Unknown territory...  September 28, 2003
Reviewer:  Peter Tran  from Houston, TX USA

I'm sorry, but I really lost you with that last recommendation.  Rather than
frustrate you with my ignorance, can you recommend the Oracle documentation that
I should read to brush up on this information?

I'll read this first and come back with questions if I'm still lost.

For example, I don't understand why you want me to setup the database as MTS.
Why can't I use dedicated server mode?

Thanks for the quick response.

-Peter

Followup:
in order for a single listener to service many instances -- on different
machines -- the listener must be servicing shared server connections -- the
listener cannot "fork/exec" a dedicated server since the listener may well not
be running on the machine the instance is on.  it needs to know dispatcher
addresses to redirect the client request to.

http://download-west.oracle.com/docs/cd/B10501_01/network.920/a96580/architec.htm#1045787

it is just inherit in the architecture.

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    闂傚倸鍊搁崐鎼佸磹妞嬪孩顐介柨鐔哄Т閻骞栧ǎ顒€濡肩紒鎰殜閺岋繝宕堕埡浣锋睏闂佸搫顑呴柊锝夊蓟閺囷紕鐤€閻庯綆浜炴禒鐐節濞堝灝鐏犻柕鍫熸倐瀵寮撮敍鍕澑闁诲函缍嗘禍鏍磻閹捐鍐€妞ゆ挶鍔庣粙蹇涙⒑鐠恒劌娅愰柟鍑ゆ嫹

    婵犵數濮烽弫鍛婃叏閻戝鈧倹绂掔€n亞鍔﹀銈嗗坊閸嬫捇鏌涢悢閿嬪仴闁糕斁鍋撳銈嗗坊閸嬫挾绱撳鍜冭含妤犵偛鍟灒閻犲洩灏欑粣鐐烘⒑瑜版帒浜伴柛鎾寸洴閹儳煤椤忓應鎷洪梻鍌氱墛閸楁洟宕奸妷銉ф煣濠电姴锕ょ€氼參宕h箛鏃傜瘈濠电姴鍊绘晶娑㈡煕鐎c劌濡介柕鍥у瀵粙濡歌閳ь剚甯¢弻鐔兼寠婢跺﹥娈婚梺鍝勭灱閸犳牠骞冨⿰鍫濈厸闁稿本绋撹ぐ瀣煟鎼淬値娼愭繛鍙壝悾婵堢矙鐠恒劍娈鹃梺鍓插亝濞叉牠鎮″☉銏$厱閻忕偛澧介惌瀣箾閸喐鍊愭慨濠勭帛閹峰懐绮电€n亝鐣伴梻浣规偠閸斿宕¢崘鑼殾闁靛繈鍊曢崘鈧銈嗗姂閸庡崬鐨梻鍌欑劍鐎笛呯矙閹寸姭鍋撳鐓庡籍鐎规洑鍗冲畷鍗炍熼梹鎰泿闂備線娼ч悧鍡涘箠鎼淬垺鍙忔い鎺嗗亾闁宠鍨块崺銉╁幢濡炲墽鍑规繝鐢靛О閸ㄦ椽鏁嬮柧鑽ゅ仦娣囧﹪濡堕崨顔兼闂佺ǹ顑呴崐鍦崲濞戙垹骞㈡俊顖濐嚙绾板秹鏌f惔銏e妞わ妇鏁诲璇差吋閸偅顎囬梻浣告啞閹搁箖宕版惔顭戞晪闁挎繂顦介弫鍡椼€掑顒婂姛闁活厽顨嗙换娑㈠箻閺夋垹鍔伴梺绋款儐閹瑰洭寮婚敐鍛婵炲棙鍔曠壕鎶芥⒑閸濆嫭婀扮紒瀣灴閸╃偤骞嬮敃鈧婵囥亜閺囩偞鍣洪柍璇诧功缁辨捇宕掑▎鎴濆濡炪們鍔岄幊姗€骞嗗畝鍕<闁绘劙娼х粊锕傛煙閸忚偐鏆橀柛鏂跨焸閹偤宕归鐘辩盎闂佸湱鍎ら崹鐢割敂閳哄懏鍊垫慨姗嗗墻濡插綊鏌曢崶褍顏€殿喕绮欐俊姝岊槼闁革絻鍎崇槐鎾存媴缁涘娈┑鈽嗗亝缁诲牆顕f繝姘亜缁炬媽椴搁弲锝夋偡濠婂啰效闁诡喗锕㈤幊鐘活敆閸屾粣绱查梺鍝勵槸閻楀嫰宕濇惔锝囦笉闁绘劗鍎ら悡娑㈡倶閻愯泛袚闁哥姵锕㈤弻鈩冩媴閻熸澘顫掗悗瑙勬礈閸犳牠銆佸鈧幃鈺呮惞椤愩倝鎷婚梻鍌氬€峰ù鍥х暦閸偅鍙忛柟鎯板Г閳锋梻鈧箍鍎遍ˇ顖炲垂閸岀偞鐓㈡俊顖滃皑缁辨岸鏌ㄥ┑鍡╂Ц缂佲偓鐎n偁浜滈柡宥冨妿閳藉绻涢崼鐔虹煉婵﹨娅e☉鐢稿川椤斾勘鈧劕顪冮妶搴′簼婵炶尙鍠栧畷娲焵椤掍降浜滈柟鍝勬娴滈箖姊洪幐搴㈢┛濠碘€虫搐鍗遍柟鐗堟緲缁秹鏌涢锝囩畼妞ゆ挻妞藉铏圭磼濡搫顫岄悗娈垮櫘閸撴瑨鐏冮梺鍛婁緱閸犳岸宕㈤幖浣光拺闁告挻褰冩禍浠嬫煕鐎n亜顏柟顔斤耿閺佸啴宕掑☉姘箞闂佽鍑界紞鍡涘磻閸℃ɑ娅犳い鎺戝€荤壕濂告煕鐏炲墽鈽夌紒妞﹀洦鐓欓柣鐔告緲椤忣參鏌熼悡搴㈣础闁瑰弶鎸冲畷鐔兼濞戞瑦鐝¢梻鍌氬€搁崐椋庣矆娓氣偓楠炴牠顢曢妶鍌氫壕婵ê宕崢瀵糕偓瑙勬礀缂嶅﹪寮婚崱妤婂悑闁告侗鍨界槐閬嶆煟鎼达紕鐣柛搴ㄤ憾钘濆ù鍏兼綑绾捐法鈧箍鍎遍ˇ浼存偂閺囥垺鐓涢柛銉e劚婵$厧顭胯閸ㄤ即婀侀梺缁樓圭粔顕€顢旈崼鐔虹暢闂傚倷鐒︾€笛呮崲閸屾娑樜旈崨顓犲幒闂佸搫娲㈤崹娲偂閸愵亝鍠愭繝濠傜墕缁€鍫熸叏濡寧纭鹃柦鍐枛閺屾洘绻涜鐎氱兘宕戦妸鈺傗拺缂備焦锚婵洦銇勯弴銊ュ籍闁糕斂鍨藉鎾閳ユ枼鍋撻悽鍛婄叆婵犻潧妫楅埀顒傛嚀閳诲秹宕堕妸锝勭盎闂婎偄娲︾粙鎰板箟妤e啯鐓涢悘鐐靛亾缁€瀣偓瑙勬礋娴滃爼銆佸鈧幃銏$附婢跺澶�

    重磅专题
    往期文章
    最新文章