0

私は、Oracle データベース (11g Enterprise Edition) を含むすべてをラップトップ (Windows XP) で実行しているいくつかの JBoss アプリケーションに取り組んできました。すべてがラップトップで正常に動作します。

現在、新しい高速マシン (Windows 7 Professional を実行) をセットアップしており、非 XA JBoss アプリは正常に動作しますが、XA 接続を必要とするアプリは Oracle に接続できません。アプリを外部のOracleサーバーに向けることができて動作するため、新しいOracleインストールに問題があると確信していますが、ローカルのOracleデータベースに向けると接続に失敗します。

私は多くのグーグル検索を行ってきましたが、見つけることができる唯一の情報は、スクリプトを実行し$ORACLE_HOME/rdbms/admin/xaview.sqlてXAビューを作成する必要があり、ユーザーに次の権限を付与する必要があるということです:

GRANT SELECT ON sys.dba_pending_transactions TO <user>;
GRANT SELECT ON sys.pending_trans$ TO <user>;
GRANT SELECT ON sys.dba_2pc_pending TO <user>;
GRANT EXECUTE ON sys.dbms_xa TO <user>;

しかし、それをすべて行った後でも、アプリを接続できません。これは私が得ている例外です:

org.jboss.resource.JBossResourceException: 接続を作成できませんでした。- ネストされた throwable: (java.sql.SQLException: Io exception:
ネットワーク アダプタは接続を確立できませんでした)
org.jboss.resource.adapter.jdbc.xa.XAManagedConnectionFactory.createManagedConnection(XAMangedConnectionFactory.java:144) で
org.jboss.resource.connectionmanager.InternalManagedConnectionPool.createConnectionEventLisener(InternalManagedConnectionPool.java:577) で
org.jboss.resource.connectionmanager.InternalManagedConnectionPool.getConnection(InternalManagedConnectionPool.java:262) で
org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BasePool.getConnection(JBossManagedConnectionPool.java:500) で
org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection(BaseConnectionManager2.java:347) で
org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.java:330) で
org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:402) で
org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:849) で
org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:90) で
org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:46) で
org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84)

これは実際にはプログラミングの質問ではないことはわかっていますが、誰かがこれを以前に見たことがあることを願っていました。どんな助けでも大歓迎です。

4

2 に答える 2

1

LISTENER.ORA ファイルと TNSNAMES.ORA ファイルのホスト名とドメイン名の設定が一致していることを確認することで、この問題を解決できました。たとえば、一方が HOST = localhost で、もう一方が HOST = myhost.xyz.com の場合、XA では問題が発生しますが、通常の Java JDBC 接続では問題が発生しません。私の理論では、XA スタックの一部が TNSNAMES.ORA ファイルを読み取る OCI 接続を確立する必要がありましたが、リスナー構成との不一致のために接続できませんでした。通常の Java JDBC 接続は、独自の構成設定を使用してリスナーに直接接続するため、TNSNAMES.ORA ファイルを気にしません。

また、Enterprise Manager を機能させるために、いくつかのフォルダーの名前を xxx_localhost_yyy から xxx_myhost_yyy に変更する必要がありました。

TOAD を動作させるには、64 ビット クライアントでは動作しないため、32 ビット クライアントをインストールする必要があり、HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Oracle の下の Windows レジストリで ORACLE_HOME 変数を構成する必要がありました。どうやら Wow6432Node は、32 ビット アプリケーションのみが参照する値を定義するための Windows レジストリ内の特別な場所です。

何はともあれ無事に完走できて一安心です。

于 2012-05-14T15:14:26.333 に答える
0

さて、SQL クライアントを使用してこのデータベースに接続できますか?

于 2012-05-12T04:09:13.683 に答える