[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 メーリングリストの案内