ナレッジベース

TNSNames.ora または LDAP.ora を使用するための Oracle 接続の設定


発行: 29 Nov 2016
最終修正日: 11 Aug 2021

ご質問

TNSNames.ora または LDAP.ora を使用するように Oracle 接続を設定する方法。


TNSNames.ora または LDAP.ora 接続を設定するメリット。

下記の一般的な Oracle エラーは、TNSNames.ora または LDAP.ora を使用するようにデータ接続を設定すると修正または回避できます。
  • ORA-12154: TNS: could not resolve the connect identifier specified (指定された接続識別子を解決できませんでした)

  • ORA-12514: TNS listener does not currently know of service requested in connect descriptor (TNS リスナーは接続記述子で要求されたサービスを現在認識していません)

  • ORA-12541: TNS: no listener (リスナーがありません)

  • ORA-12170: TNS:Connect timeout occurred (接続タイムアウトが発生しました)

  • ORA-12504: TNS listener was not given the SERVICE_NAME in CONNECT_DATA (TNS リスナーは CONNECT_DATA の SERVICE_NAME を取得できませんでした)

環境

  • Tableau Desktop
  • Tableau Server
  • Oracle

回答

クリックしてソリューションを展開する
Windows の Tableau Desktop/Server、OCI クライアント

ステップ 1: TNS_Admin 環境変数を設定する

  1. [スタート] > [コントロール パネル] > [システム] を選択します。 
  2. [システムの詳細設定] を選択します。
  3. [システムのプロパティ] ダイアログ ボックスの [詳細設定] タブで、[環境変数] を選択します。 
  4. [システム変数] で [新規] をクリックします。 
  5. [新しいシステム変数] ダイアログ ボックスに次のように入力して [OK] をクリックします。 
    • 変数名: TNS_ADMIN 
    • 変数値: TNSNames.ora ファイルが含まれるディレクトリ
  6. [環境変数] ダイアログ ボックスと [システムのプロパティ] ダイアログ ボックスにある [OK] をクリックします。 
  7. 新しい変数が確実に認識されるように、コンピューターを再起動します。 

ステップ 2: Tableau で Oracle ネット サービス名を使用して Oracle に接続する 

  1. Tableau ワークブックをすべて閉じ、Tableau の新しいインスタンスを開きます。
  2. Tableau Desktop で [データに接続] > [Oracle] を選択します。
    • Server で使用するために TNSNAmes.ora ファイルに記載されている Oracle 'net_service_name' を入力します。
    • ユーザー名とパスワードを適切に入力します。

これ以外の TNSNames.ora ファイルの詳細接続は TNS_ADMIN システム変数を介して行われます。情報が重複して接続を妨げる可能性があるため、オプションのサービス名とポート情報は空のままにしておいてください。

クリックしてソリューションを展開する
Tableau Desktop および Server 2020.2 以降、Windows、JDBC ドライバー
 
次のテキスト (例) を含む oracle.properties ファイルを作成します。

oracle.net.tns_admin=C:\\Oracle_Client\\network\\admin

必要に応じて、ホスト ファイル システム内の tnsnames.ora ファイルの場所を参照するようにパスを変更します。二重のバックスラッシュ \\ は意図的なものであり、必須ですが、\\ を使用したパスは、コピーして Windows のファイル エクスプローラーに直接貼り付けても機能しません。 このコンテキストでは、oracle.properties ファイルは、二重のバックスラッシュを使用した場合にのみ正しく機能します。

次の場所にファイルを配置します。
Desktop: Documents\My Tableau Repository\Datasources 
Server: C:\ProgramData\Tableau\Tableau Server\data\tabsvc\vizqlserver\Datasources (または、別の場所にインストールした場合はこれに相当するパス)。このフォルダーがまだ存在しない場合、必ず作成してください。

Server のみ: ファイルとフォルダーが作成されたら、ファイルに対する適切なパーミッションが実行ユーザーに付与されていることを確認して、Tableau Server を再起動します。

JDBC プロパティ ファイルの詳細については、こちらをご覧ください: https://kb.tableau.com/articles/howto/Customizing-JDBC-Connections?lang=ja-jp
 
クリックしてソリューションを展開する
Mac の場合

ステップ 1:

  1. Tableau Desktop が開いている場合は終了します。 
  2. Tableau の 「ドライバー」 ページから Mac 用の Oracle ドライバーをダウンロードし、インストール済みであることを確認します。
  3. 接続情報が含まれている既存の LDAP.ora ファイルまたは TNSNames.ora ファイルを /etc に次のようにコピーします。 
  • Finder で [移動] > [フォルダへ移動] を選択し、「/etc」と入力します。
  • .ora ファイルを /etc にコピーします。

ステップ 2: TNS_ADMIN 環境変数を構成する 

  1. ターミナルを開始し、次のコマンドを入力します。

    sudo nano /etc/launchd.conf

    注: Nano は Mac コンピューターで通常使用できるテキストベースのエディターです。

  2. プロンプトが表示されたらパスワードを入力します。

  3. 次のように入力します。

    launch setenv TNS_ADMIN /etc

  4. Ctrl キーと X を押し、次に Y を押してから、Enter キーで変更を保存し、nano を終了します。
  5. Mac を再起動します。

ステップ 3: TNS_ADMIN 変数が設定されていることを確認する 

  1. ターミナルを開始し、次のコマンドを入力します。

    export

  2. すべてのシステム変数が表示されます。次のように検索します。

    declare -x TNS_ADMIN="/etc"

  3. ターミナルまたは Network Utility でホスト名を ping することで、ホスト名を .ora ファイルのリストから DNS 解決していることを確認します。このとき、簡易サーバー名ではなく、servername.domain.com などの完全修飾ドメイン名を使用してください。 
これで、TNSNames.ora ファイルまたは LDAP.ora ファイルにあるサーバー名を指定するだけで、Mac で使用する Tableau Desktop を起動して Oracle データベースに接続できるようになりました。 
 
クリックしてソリューションを展開する
Linux の場合

ステップの要約:

  1. tnsnames.ora ファイルを Tableau ユーザーがアクセスできる場所にコピーします。
  2. ファイルにパーミッションを設定します。
  3. TNS_ADMIN 環境変数を更新します。必要な場合は、ステップ 1 のディレクトリを指すようにします。

ステップ 1: tnsnames.ora ファイルを特権のないユーザー (tableau) がアクセスできるディレクトリにコピーする

バージョン 2019.3.x 以上の場合:
tnsnames.ora ファイルを /etc ディレクトリにコピーします。
バージョン 2019.2.x 以前の場合:
デフォルトでは、特権のないユーザーには「tableau」という名前が付けられています。すべての Tableau Server プロセスはこのアカウントで実行され、使用する tnsnames.ora ファイルは検索できる場所にある必要があります。
Oracle コネクタを既にインストールしている場合は、ファイルをディレクトリ /opt/tableau/tableau_driver/oracle にコピーすることをお勧めします
ユーザーがディレクトリにアクセスできることを確認するには、「su」を使用してアカウントに変更し、その後ディレクトリに変更します。例は次のとおりです。
sudo su tableau
cd /opt/tableau/tableau_driver/oracle
これらのステップを実行した結果、「permission denied (パーミッションが拒否されました)」エラーが発生する場合、使用しているディレクトリのパーミッションを更新する必要があります。

ステップ 2: tnsnames.ora ファイルのパーミッションを設定する

2019.2.x 以前では、次の手順に従います:
  1. tnsnames.ora ファイルがあるファイル パスへ移動します。
  2. コマンド chmod 666 tnsnames.ora を実行して、ファイルにパーミッションを付与します。
  3. コマンド ls -l で、ファイルのパーミッションを確認します。
注: 環境パスの末尾には、スラッシュを含めないでください。パスの書式が正しくないと、ORA-12154 エラーが発生する場合があります。

2019.3 以降:
Linux マシンでは tsnames.ora ファイルを /etc ディレクトリに配置します。環境変数は必要ありません。

2020.2 以降:

次のテキストを含む /var/opt/tableau/tableau_server/data/tabsvc/vizqlserver/Datasources/oracle.properties ファイルを作成します。

例: oracle.net.tns_admin=/etc

必要に応じて、Server 上のファイル システム内の tnsnames.ora ファイルのパスを指すように /etc を変更します。

JDBC プロパティ ファイルの詳細については、こちらをご覧ください: https://kb.tableau.com/articles/howto/Customizing-JDBC-Connections?lang=ja-jp
 

ステップ 3: TNS_ADMIN 環境変数を設定して、ステップ 1 のディレクトリを指す

バージョン 2019.3.x 以上の場合: このステップをスキップできます。環境変数は必要ありません。
バージョン 2019.2.x 以前の場合:
  1. テキスト エディターで、お使いの Tableau Server のバージョンにマッチするファイルを開きます。
    • ​​Tabelau Server 2018.1.x - 2019.2 --  /var/opt/tableau/tableau_server/.local/share/systemd/user/tabsvc_0.service
  2. 次のラインを追加します。"/path/to/file-folder" は、ステップ 1 で tnsnames.ora をコピーしたディレクトリです。
    • Environment=TNS_ADMIN=/path/to/file-folder
  3. ファイルの変更を保存します。

注: 環境パスの末尾にはスラッシュを含めないでください。パスの書式が正しくないと、ORA-12154 エラーが発生する場合があります。

クリックしてソリューションを展開する
すべての環境

オプション ステップ

tnsnames.ora ファイルの確認

サーバーに Oracle クライアントがインストールされている場合、tnsnames.ora ファイルは $ORACLE_HOME/network/admin ディレクトリにあります。
次のコマンドを使用して、このファイルが存在していることを確認できます。

echo $ORACLE_HOME 
ファイル パスを表示します。

sudo find / -iname tnsnames.ora
 お使いのファイル システム内にあるすべての tnsnames.ora ファイルの位置をリスト表示します。

注: Tableau Server で tnsnames.ora を使用するには、Oracle クライアントがインストールされている必要はありません。このステップは既存のインストールでの作業をサポートするためのものです。

新しい tnsnames.ora ファイルを最初から作成する

このコンピューターに tnsnames.ora ファイルがなく、クライアント ワークステーションからコピーできるファイルもない場合、テキスト エディターを使用してファイルを作成できます。次の制限にご注意ください。

  • tnsnames.ora ファイル名は大文字と小文字が区別され、すべて小文字でなければなりません。 

  • ファイルでタブ区切りを使用することはできません。

エントリ用の可能性のあるテンプレートを次に示します。括弧内の要素はデータベース管理者から取得した値に置換する必要があります。
: Windows または Mac コンピューターでは、TNSNames.ora ファイルに ADDRESS_LIST エントリがなくてもかまいませんが、Linux コンピューターでは、tnsnames.ora ファイルにこの変数が必要です。
 

[net_service_name]=
(DESCRIPTION=
  (ADDRESS_LIST=
    (ADDRESS=[protocol_address_information])
   )
  (CONNECT_DATA= 
    (SERVICE_NAME=[service_name])
   )
 )

例: 

Production =
(DESCRIPTION =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = prod.corp.com)(PORT = 1521)
   )
  (CONNECT_DATA = 
    (SERVICE_NAME = orcl)
   )
 )

 

詳細情報

Oracle で SSL を構成している場合の追加の構成手順

Oracle の ORACLE_HOME および TNS_ADMIN の構成 (Oracle で SSL が構成されている場合)

sudo su -l tableau
      touch /var/opt/tableau/tableau_server/.config/systemd/tableau_server.conf.d/oracle.conf
      echo "ORACLE_HOME=/u01/app/oracle/product/12.1.0/client_1" | tee -a /var/opt/tableau/tableau_server/.config/systemd/tableau_server.conf.d/oracle.conf
      echo "TNS_ADMIN=/u01/app/oracle/product/12.1.0/client_1/network/admin" | tee -a /var/opt/tableau/tableau_server/.config/systemd/tableau_server.conf.d/oracle.conf 
      chmod 744 /var/opt/tableau/tableau_server/.config/systemd/tableau_server.conf.d/oracle.conf
exit

cd /opt/tableau/tableau_server/packages/scripts.near.xx.xxxx.xxxx/
            sudo ./stop-administrative-services
            sudo ./start-administrative-services
source /etc/profile.d/tableau_server.sh


この記事についてディスカッションする...フィードバック フォーラム
この記事で問題は解決しましたか?