- PR -

weblogic9.1からOracle8iにOCI接続する方法について

投稿者投稿内容
未記入
会議室デビュー日: 2006/06/14
投稿数: 9
投稿日時: 2006-06-26 11:07
weblogic9.1からOracle8iに接続しようとしているのですが、
以下のようなエラーが出て失敗します。

---------------------------------------------------------------------
メッセージ :
no ocijdbc10 in java.library.path
スタック トレース :
javax.servlet.ServletException: no ocijdbc10 in java.library.path
at org.apache.beehive.netui.pageflow.internal.DefaultExceptionsHandler.handleException(DefaultExceptionsHandler.java:169)
at org.apache.beehive.netui.pageflow.FlowController.handleException(FlowController.java:268)
at org.apache.beehive.netui.pageflow.FlowController.internalExecute(FlowController.java:450)
at org.apache.beehive.netui.pageflow.PageFlowController.internalExecute(PageFlowController.java:245)
at org.apache.beehive.netui.pageflow.FlowController.execute(FlowController.java:316)
at org.apache.beehive.netui.pageflow.internal.FlowControllerAction.execute(FlowControllerAction.java:48)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processActionPerform(PageFlowRequestProcessor.java:1948)
at com.bea.console.internal.ConsolePageFlowRequestProcessor.processActionPerform(ConsolePageFlowRequestProcessor.java:188)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.processInternal(PageFlowRequestProcessor.java:590)
at org.apache.beehive.netui.pageflow.PageFlowRequestProcessor.process(PageFlowRequestProcessor.java:840)
at org.apache.beehive.netui.pageflow.AutoRegisterActionServlet.process(AutoRegisterActionServlet.java:607)
at org.apache.beehive.netui.pageflow.PageFlowActionServlet.process(PageFlowActionServlet.java:135)
at com.bea.console.internal.ConsoleActionServlet.process(ConsoleActionServlet.java:241)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
at com.bea.console.internal.ConsoleActionServlet.doGet(ConsoleActionServlet.java:130)
at org.apache.beehive.netui.pageflow.PageFlowUtils.strutsLookup(PageFlowUtils.java:927)
at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.executeAction(ScopedContentCommonSupport.java:571)
at com.bea.portlet.adapter.scopedcontent.ScopedContentCommonSupport.processActionInternal(ScopedContentCommonSupport.java:122)
at com.bea.portlet.adapter.scopedcontent.PageFlowStubImpl.processAction(PageFlowStubImpl.java:98)
at com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedAction(NetuiContent.java:149)
at com.bea.netuix.servlets.controls.content.NetuiContent.raiseScopedAction(NetuiContent.java:108)
at com.bea.netuix.servlets.controls.content.NetuiContent.handlePostbackData(NetuiContent.java:223)
at com.bea.netuix.nf.ControlLifecycle$2.visit(ControlLifecycle.java:169)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:290)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursive(ControlTreeWalker.java:300)
at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:126)
at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:105)
at com.bea.netuix.nf.Lifecycle.runInbound(Lifecycle.java:173)
at com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:137)
at com.bea.netuix.servlets.manager.UIServlet.runLifecycle(UIServlet.java:327)
at com.bea.netuix.servlets.manager.UIServlet.doPost(UIServlet.java:190)
at com.bea.netuix.servlets.manager.UIServlet.service(UIServlet.java:144)
at com.bea.netuix.servlets.manager.SingleFileServlet.service(SingleFileServlet.java:206)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at weblogic.servlet.AsyncInitServlet.service(AsyncInitServlet.java:124)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:225)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:127)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:272)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3151)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:1973)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1880)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1310)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:179)
----------------------------------------------------------------------


ocijdbc10は、Oracle10gのdllのようですが、
8iに接続しようとしているので、不要だとおもっています。
どなたか情報お持ちでしたら教えてください。

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-06-26 15:46
ドライバクラスには何を指定しているでしょうか?
OCI で接続するのであれば必ず DLL が必要になりますよ。
未記入
会議室デビュー日: 2006/06/14
投稿数: 9
投稿日時: 2006-06-26 17:05
ドライバクラスには、oracle.jdbc.driver.OracleDriver
URLには、jdbc.oracle.oci8:@接続先DB


CLASSPATH=
 D:\oracle\ora81\jdbc\lib\classes12.zip;
 D:\bea\weblogic91\\server\lib\weblogic.jar;

としています。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-06-26 18:35
繰り返しになりますが、OCI で接続するのであれば DDL をパス(PATH環境変数)に通す必要があります。
#WebLogic に限ったことではありませんが

OCI で接続することが目的でなければ Thin ドライバや、BEA Type4 ドライバでの接続をお勧めします。今時 OCI にしたから特別パフォーマンスがあがるということもなさそうなので。(場合によりますが)
未記入
会議室デビュー日: 2006/06/14
投稿数: 9
投稿日時: 2006-06-27 10:26
インギさん お付き合いいただきありがとうございます。


#繰り返しになりますが、OCI で接続するのであれば DDL をパス(PATH環境変数)に通す#必要があります。
も正しく設定しているつもりです。
それでも、ocijdbc10が足りませんのエラーは出続けます。

なぜ、OCI接続したいかというと、Thinドライバでは接続の確認はできていましたが、
CallableStatementを利用している箇所で、次のようなExceptionが発生したからです。

Oracle's Driver
------------------------------------------------------------------------
java.sql.SQLException: 列の型が無効です。
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)
at oracle.jdbc.driver.OracleStatement.get_internal_type(OracleStatement.java:3198)
at oracle.jdbc.driver.OracleCallableStatement.registerOutParameterInternal(OracleCallableStatement.java:123)
at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:264)
at oracle.jdbc.driver.OracleCallableStatement.registerOutParameter(OracleCallableStatement.java:344)
at weblogic.jdbc.wrapper.CallableStatement_oracle_jdbc_driver_T4CCallableStatement.registerOutParameter(Unknown Source)
------------------------------------------------------------------------

BEA's Oracle Driver
------------------------------------------------------------------------
java.sql.SQLException: [BEA][Oracle JDBC Driver]このドライバは、指定された SQL 型をサポートしていません。
at weblogic.jdbc.base.BaseExceptions.createException(Unknown Source)
at weblogic.jdbc.base.BaseExceptions.getException(Unknown Source)
at weblogic.jdbc.base.BasePreparedStatement.validateSqlType(Unknown Source)
at weblogic.jdbc.base.BaseCallableStatement.registerOutParameter(Unknown Source)
at weblogic.jdbc.wrapper.CallableStatement_weblogic_jdbc_base_BaseCallableStatement.registerOutParameter(Unknown Source)
------------------------------------------------------------------------

元々WLS6.1のときは、weblogic.jdbc.oci.Driverを使っていたのですが、
WLS9.0で廃止されてしまい、現在は使えません。

ちなみにエラーで「型」とありますが、
out curtype
in VARCHAR
だけなので、困るような型もないようにおもうのですが。。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2006-06-27 11:30
引用:

#繰り返しになりますが、OCI で接続するのであれば DDL をパス(PATH環境変数)に通す#必要があります。
も正しく設定しているつもりです。
それでも、ocijdbc10が足りませんのエラーは出続けます。


エラーにあるように、java.library.pathシステムプロパティに設定されている必要が
あります。WLS9.1でどのように設定されるかわかりませんが、スタートアッププロシージャの
中身を確認してみてはどうでしょうか。

引用:

なぜ、OCI接続したいかというと、Thinドライバでは接続の確認はできていましたが、
CallableStatementを利用している箇所で、次のようなExceptionが発生したからです。
(略)
ちなみにエラーで「型」とありますが、
out curtype
in VARCHAR
だけなので、困るような型もないようにおもうのですが。。


これだけだと、registerOutputParameterにどのような型を指定しているのかわかり
ませんが、サポートされるデータ型はWLSのマニュアルに明示されていますので、
それ以外は使用できないでしょう。
未記入
会議室デビュー日: 2006/06/14
投稿数: 9
投稿日時: 2006-06-27 15:44
ukさん、返信有難うございます。

ところで、
>エラーにあるように、java.library.pathシステムプロパティに設定されている
>必要があります。WLS9.1でどのように設定されるかわかりませんが、スタート
>アッププロシージャの中身を確認してみてはどうでしょうか。
のスタートアッププロシージャとは何のことでしょうか?

また、
>これだけだと、registerOutputParameterにどのような型を指定しているの
>かわかりませんが、サポートされるデータ型はWLSのマニュアルに明示され
>ていますので、 それ以外は使用できないでしょう。
とのことですが、WLSのマニュアルのURLを教えていただけませんでしょうか?

あつかましいお願いで申し訳ありません。

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-06-27 16:39
>のスタートアッププロシージャとは何のことでしょうか?
起動スクリプト(デフォルトでは startWebLogic.cmd とか startManagedWeblogic.cmd とか)のことではないでしょうか。PATH 環境変数をちゃんと設定しましょう。

>とのことですが、WLSのマニュアルのURLを教えていただけませんでしょうか?
ドキュメントを検索してみてはいかがでしょう。
http://search.beasys.co.jp/cgi-bin/namazu.cgi?query=oracle+%83T%83%7C%81%5B%83g+%8C%5E&submit=Search%21&whence=0&max=10&result=normal&sort=score&idxname=e-docs%2Fwls%2Fdocs91

スキルアップ/キャリアアップ(JOB@IT)