[Seasar-user:18974] Re: S2JDBC で複数のデータソース

秋山 純子 [E-MAIL ADDRESS DELETED]
2009年 12月 7日 (月) 09:26:17 JST


秋山です。
説明不足で申し訳ありません。

> > その処理内容は
> > select for update nowait を発行し
> > delete、続いてinsert を発行するというものですが
> > ここで
> > 「ORA-02049: タイムアウト: 分散トランザクションがロックを待機しています。」
> > のエラーが発生します。
> 
> この部分をもっと詳細にお願いします.
> トランザクションを開始してからエラーが発生するまで,
> データソースごとにどのような操作を行ってますか?
> 例えば
> 
> トランザクション開始
> A select for update nowait
> B delete
> A insert (ORA-02049)
> 
> のように,対象のデータソースが分かるように
> お願いします.

このエラーが発生する操作時は、以下の様に
 トランザクション開始
 A select for update nowait
 A delete
 A insert (ORA-02049)
1つの接続先しか見ていません。

> > 確かに この処理を行う対象のテーブルは、
> > データベースリンクとシノニムを用いて間接的にアクセスしている状態です。
> 
> リンク先はもう一つのデータソースの接続先と
> 同じデータベースでしょうか?

いえ、接続先は
Oracle-X があり、そのリンク先として Oracle-Y がある状態で、
jdbc-a からは Oracle-X ポート1521
jdbc-b からは Oracle-X ポート1522
とポートを変えて接続する運用をしており
どちらも直接Oracle-Yには接続していません。


> それから,jdbc-(a|b).dicon に定義している
> XADataSource は Seasar2 の XADataSourceImpl
> でしょうか?
> それとも Oracle の XADataSource でしょうか?

すいません。勉強不足で、この質問の意味が分かりませんでした。
とりあえず、jdbc-(a|b).dicon のその部分の定義を以下に書かせて頂きます。
<component name="xaDataSource"
		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
		<property name="driverClassName">
			"oracle.jdbc.driver.OracleDriver"
		</property>
		<property name="URL">
			"jdbc:oracle:thin:@xxxxx:1521:xxxx"
		</property>
		<property name="user">"xxx"</property>
		<property name="password">"xxx"</property>
</component>


宜しくお願いいたします。


Seasar-user メーリングリストの案内