はじめに
OASからOACにRPDリポジトリを移行した後、OACで「接続」を作成し、コネクションプールを更新したがSQL実行でエラーが発生する場合についてみてみます。OACでは、接続対象のデータソースに対して「接続」機能を使います。このときデータベースへのSQLのリクエストは「接続」でセットしたDBユーザーで接続し、実行します。
接続対象のデータソースを移行前のOASでつかっていたOracleデータベースから、例えば、OCIのAutonomos DBに変えた場合で、かつDBユーザー名が異なる場合、SQL実行でエラーが発生することがあります。動きと対処方法をみていきます
ORA-942 table or view does not existエラー

記事記載時のOAC ver:Sep 2025 Update
前提
・RPDリポジトリを利用している
・PCにAminToolをインストールしている
コネクションプールの設定による動き
DBに対してSQLを実行する際、物理層のスキーマ名を利用します。
下図ではSH1です。

コネクションプールで、「完全修飾表名が必要」にチェックが入っている場合

コネクションプールで、「完全修飾表名が必要」にチェックが外れている場合

DBユーザーが異なる場合の対処例
移行前のデータソースで使っていたDBから、別のDBへ接続先が変わる場合、同じDBユーザー名の場合は、そのまま利用できます。異なるDBユーザー名の場合では、「完全修飾表名が必要」にチェックが入っていると、移行前の物理層でセットしていたスキーマ名が付くため、エラーとなります。
対処例としては「完全修飾表名が必要」のチェックを外し、RPDファイルをデプロイする方法が考えられます。その際、OACの「接続」でセットしたDBユーザーで、スキーマ名なしでSQLが実行されます
まとめ
コネクションプールで、「完全修飾名が必要」にチェックが入っている場合、DBに対して実行するSQLに、物理層でセットしているスキーマ名がつきます。
スキーマを1つだけ利用している場合で、SQLエラーが発生した場合、「完全修飾名が必要」のチェックを外す方法についてやってみました。
以上

