TECHNOLOGY

FAQ (よくある質問)

対象バージョン : SQL Anywhere (Adaptive Server Anywhere) version 9.0.2 ~ 11.0.1
対象OS : Windows, Linux

QUESTION ( SQ1007097 )

Oracleと接続しているMobile Link同期サーバへEBFを適用後、同期サーバの起動時に「ORA-00942: 表またはビューが存在しません。」というエラーが発生するようになりました。
このとき、エラーとなっていたのは、「GV$TRANSACTION」への参照です。

ANSWER

-原因-
以前に発生したMobile Linkのダウンロード時の問題により、以下の修正が行われました。

統合データベースが Oracle RAC で実行されていると、Mobile Link サーバは、タイムスタンプベースのダウンロードでリモート・データベースにローをダウンロードしないことがありました。 次の状況では、Oracle データベースで変更されたローがダウンロード・ストリームに含まれないことがありました。1) Mobile Link サーバが Oracle RAC 上の 1 つのノードに接続している。
2) 別のアプリケーション A が同じ Oracle RAC 上の別のノードに接続している。
3) アプリケーション A が、コミットせずに同期テーブルのローを変更した。
4) Mobile Link クライアント R1 がこのテーブルからの時間ベースのダウンロードを含む同期要求を発行した。
5) Mobile Link サーバは同期要求を正常に完了した。
6) アプリケーション A はトランザクションをコミットした。
上記の状況では、アプリケーション A によって変更されたローは、リモート R1 にダウンロードされません。

タイムスタンプベースのダウンロードについての詳細は以下をご参照下さい。
http://www.ianywhere.jp/tech/1034585.html

上記の問題を修正した結果、使用されるシステム・ビューが変更されたため、新たな問題(エラー ORA-00942)が発生するようになりました。

この問題は、次のバージョン以降のEBFを適用することにより発生致します。

Windows
9.0.2.3886
10.0.1.3931
11.0.1.2280

Linux
9.0.2.3900
10.0.1.3937
11.0.1.2279

-対応方法-
Mobile Link サーバで使用されるOracle アカウントは「V_$TRANSACTION」の代わりにOracle システム・ビュー「GV_$TRANSACTION」に対するSELECTパーミッションを所有している必要があります。

アクセス権を与えるために、以下のOracle構文を実行してください。(SYSユーザ のみがこのアクセス権を与えることができます)
grant select on SYS.GV_$TRANSACTION to <user-name>

尚、「GV$TRANSACTION」は「GV_$TRANSACTION」ビュー と同義語になります。
そして、この「GV$TRANSACTION」にはパーミッションを直接付与することはできません。