質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

3回答

4806閲覧

ORACLE接続 VSの構成をReleaseにするとORA-12154が発生する

wg-system

総合スコア13

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

.NET Core

.NET Coreは、マネージソフトウェアフレームワークでオープンソースで実装されています。クロスプラットフォームを前提に考えられており、Windows/Mac/Linuxで動くアプリケーションを作成することが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2021/04/19 05:00

編集2021/04/19 05:22

前提・実現したいこと

Visual Studio 2019 Community
で社内システムを実装しております。

開発環境は
・WPF C# .Net Core 3.1
・Oracle 11g (11.2.0) 32bit
※Visual Studio プロジェクトのプロパティで対象プラットフォームはx86にしています。

発生している問題・エラーメッセージ

構成がdebugで開発しているときはOracleへの接続は問題なくできているのですが、
releaseで実行または生成されたEXEを起動するとOracle接続時に
「ORA-12154: TNS: サービス名を解決できませんでした。」が発生します。
オラクルへの接続は「Oracle.ManagedDataAccess.Core(ver3.2.1.1)」を使用しております。

ORA-12154: TNS: サービス名を解決できませんでした。

該当のソースコード

C#

1 try 2 { 3 using (OracleConnection con = new OracleConnection("接続文字列")) 4 { 5           // 構成をリリースにした場合のみここで発生 6 con.Open(); 7 } 8 }

試したこと

tnsnames.oraの設定内容をレジストリから取得 ⇒ デバッグもリリースも正しい情報を取得できていました。
対象プラットフォームをAny Cpu、x64に変更 ⇒ 結果は同じでした。
対象のフレームワークを.Net Framework 5.0にしてOracle.ManagedDataAccess.Coreも
Oracle.ManagedDataAccessに変更 ⇒ 結果は同じでした。

補足情報(FW/ツールのバージョンなど)

構成をReleaseに変更した場合にもOracle接続を可能にするにはどうすれば実現できますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

DataSourceに直接 tnsnames.ora のDESCRIPTIONを記述してみるとどうでしょう。
【.NET】Oracleクライアント不要なODP.NET Managed Driverの接続方法

投稿2021/04/19 09:19

編集2021/04/19 09:20
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wg-system

2021/04/19 23:35

ご回答ありがとうございます。 試してみましたが接続できませんでした。
wg-system

2021/04/20 01:03

DESCRIPTIONの接続文字列に誤りがあったようで、正しく設定したところうまく接続できました。 ありがとうございました。
guest

0

Oracle11.2.0 はどんなに大きなバグが見つかっても新たにパッチは作ってくれない古いバージョンですから、中古市場を漁っても動作保証されている環境を用意するもの難しいです。サポート契約が有効でしたら、ライセンスのバージョンアップは無償です。
Oracle Database, Oracle Client for Windows ソフトウェア要件

投稿2021/04/19 06:54

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wg-system

2021/04/19 23:35

情報のご提供ありがとうございます。
wg-system

2021/04/20 01:08

次期基幹システムのリプレース時にoracleも動作保証対象のバージョンを導入いたします。 ありがとうございました。
Orlofsky

2021/04/20 04:17 編集

あと10年くらい今の環境を使い続けて、取り返しつかないバグがみつかってもデータを修正する履歴データもない、ってところを何度か見ています。お試し環境でもないのに動作保証外を使い続けるリスクの大きさは理解できた方がいいです。中国、ロシアや北朝鮮のサイバー部隊の標的になって会社の口座が空っぽになっても自己責任かと。
guest

0

管理対象ドライバの場合、tnsnames.ora の場所は app.config で指定したり、TNS_ADMIN 環境変数で設定できたりします。

「Oracle Data Provider for .NET管理対象ドライバの構成」
https://docs.oracle.com/cd/E77579_01/win.121/e72575/InstallManagedConfig.htm

デバッグで動くというのは tnsnames.ora をデバッグのフォルダに入れたりしているんですかねぇ・・・
Debug フォルダと Release フォルダの構成を比較すると原因かわかるかもしれません。

投稿2021/04/19 05:35

編集2021/04/19 05:45
KOZ6.0

総合スコア2622

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wg-system

2021/04/19 05:47 編集

デバッグフォルダにはoraファイルは配置しておりません。 試したことに記載し忘れていたのですが、releaseで作成したEXEと同じフォルダにoraファイルを配置するとオラクル接続はうまくいきます。
KOZ6.0

2021/04/19 07:56

フォルダ構成に違いはありませんか? tnsnames.ora に依存しない EZCONNECT 形式(例:192.168.0.1:1512/ORCL) ではどうでしょう。
dodox86

2021/04/20 00:03

> releaseで作成したEXEと同じフォルダにoraファイルを配置するとオラクル接続はうまくいきます。 これは言い方を変えると、Releaseビルドで作った実行ファイルで動いている、と言うことですか? そうだとしたらやはりディレクトリとファイルの配置、設定の問題かと。(実行時のカレントディレクトリ下のtnsnames.oraを読んでいるような)
wg-system

2021/04/20 01:13

DebugとRelease両方で試したのですが、レジストリのora_homeから参照しているtnsnames.oraの設定文字列を取得すると同一のものを引っ張ってきているためoraファイルは正常に読めていると判断しておりました。原因は謎のままですが、一旦DataSourceに直接oraファイルの情報をセットする方法で実装いたします。ありがとうございました。
dodox86

2021/04/20 01:19

なるほど、不思議ですね。お使いの環境が「WPF C# .Net Core 3.1」とのことなので、Oracleのミドルウェアとの橋渡し部分のコンパイル結果がDebug/Releaseビルドで違うのかもしれませんね。(単なる推測です)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問