ODBCを使用してOracleDBに接続すると、「[unixODBC] [ドライバマネージャ]データソース名が見つからず、デフォルトドライバが指定されていません」と表示されます。

ODBCを使用してOracleDBに接続すると、「[unixODBC] [ドライバマネージャ]データソース名が見つからず、デフォルトドライバが指定されていません」と表示されます。

Linuxでは、oracleデータベースへのodbc接続を確立しようとしています。 rootとしてログインすると動作します。私のルート設定ファイルは次のとおりです。

more ~/.profile
export ODBCINI=/etc/unixODBC/odbc.ini
export ODBCSYSINI=/etc/unixODBC

ところで、一般ユーザーとしてログインするとodbc接続になりません。次のエラーが発生します。

[RODBC] ERROR: state IM002, code 0, message [unixODBC][Driver Manager]Data source name not found, and no default driver specified

ここで何が問題なのかはわかりませんが、他のユーザーにルートプロファイルを提供すると、私の問題が解決する可能性があると思いました。他のすべてのユーザーにルートプロファイルを公開するにはどうすればよいですか?ここで何が起こっているのか知っていますか?

追加情報:

これは私のtnsnames.oraファイルです。

Data =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (LOAD_BALANCE = off)
      (FAILOVER = ON)
      (ADDRESS = (PROTOCOL = TCP)(HOST = server1.example.com )(PORT = 1521))
    )
    (CONNECT_DATA =
      (service_name = Data)
    )
  )

odbc.iniの内容は次のとおりです。

[Data]
Driver=Oracle
Description=Test
Trace=Yes
ServerName=//server1.example.com:1521/
Database=test

これはondbcinst.iniです。

[Oracle]
Description = Oracle ODBC Connection
Driver = /opt/oclient/instantclient_12_1/libsqora.so.12.1
Setup =
FileUsage =

答え1

まず、環境変数の問題であることを確認してください。

アプリケーションを呼び出す前に、この行を手動で実行してください。アプリケーションはコマンドラインから呼び出す必要があります。

export ODBCINI=/etc/unixODBC/odbc.ini
export ODBCSYSINI=/etc/unixODBC

機能している場合は、システム全体の/etc/profileファイルに次の行を追加できます。ユーザーを強制的にログアウトしてからやり直してください。

答え2

接続するデータベースがある場合は、次のことができます。

エクスポートTWO_TASK=db_SID

/etc/profile に入れると操作は完了です。

関連情報