0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OAC:OACにRPDリポジトリを移行した後、OACで「接続」を作成し、コネクションプールを更新したがSQL実行でエラーが発生した場合の対処

0
Posted at

はじめに

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

ORA-942 table or view does not existエラー
g1.jpg

記事記載時のOAC ver:Sep 2025 Update

前提

・RPDリポジトリを利用している
・PCにAminToolをインストールしている

コネクションプールの設定による動き

DBに対してSQLを実行する際、物理層のスキーマ名を利用します。
下図ではSH1です。
g2.jpg

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

下図のような、スキーマ名が付いて、SQLが実行されます。
g4.jpg

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

下図のような、スキーマ名は付かず、SQLが実行されます。
g6.jpg

DBユーザーが異なる場合の対処例

移行前のデータソースで使っていたDBから、別のDBへ接続先が変わる場合、同じDBユーザー名の場合は、そのまま利用できます。異なるDBユーザー名の場合では、「完全修飾表名が必要」にチェックが入っていると、移行前の物理層でセットしていたスキーマ名が付くため、エラーとなります。

対処例としては「完全修飾表名が必要」のチェックを外し、RPDファイルをデプロイする方法が考えられます。その際、OACの「接続」でセットしたDBユーザーで、スキーマ名なしでSQLが実行されます

まとめ

コネクションプールで、「完全修飾名が必要」にチェックが入っている場合、DBに対して実行するSQLに、物理層でセットしているスキーマ名がつきます。
スキーマを1つだけ利用している場合で、SQLエラーが発生した場合、「完全修飾名が必要」のチェックを外す方法についてやってみました。

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?