기술 자료

TNSNames.ora 또는 LDAP.ora를 사용하도록 Oracle 연결 설정


게시 날짜: 29 Nov 2016
마지막 수정 날짜: 20 Jul 2023

질문

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-12154: TNS: 지정된 연결 식별자를 확인할 수 없음)

  • ORA-12514: TNS listener does not currently know of service requested in connect descriptor(ORA-12514: TNS 수신기가 연결 설명자의 요청된 서비스를 현재 인식할 수 없음)

  • ORA-12541: TNS: no listener(ORA-12541: TNS: 수신기가 없음)

  • ORA-12170: TNS:Connect timeout occurred(ORA-12170: TNS: 연결 시간 초과됨)

  • ORA-12504: TNS listener was not given the SERVICE_NAME in CONNECT_DATA(ORA-12504: TNS 수신기에 CONNECT_DATA의 SERVICE_NAME이 지정되지 않음)

환경

  • Tableau Desktop
  • Tableau Server
  • Oracle

답변

클릭하여 해결 방법 확장
Windows용 Tableau Desktop 및/또는 Server, OCI Client

1단계: TNS_Admin 환경 변수를 설정합니다.

  1. 시작 > 제어판 > 시스템을 선택합니다. 
  2. 고급 시스템 설정을 선택합니다.
  3. 시스템 속성 대화 상자의 고급 탭에서 환경 변수를 선택합니다. 
  4. 시스템 변수 아래에서 새로 만들기를 클릭합니다. 
  5. 새 시스템 변수 대화 상자에 다음을 입력한 후 확인을 클릭합니다. 
    • 변수 이름: TNS_ADMIN 
    • 변수 값: TNSNames.ora 파일이 들어 있는 디렉터리
  6. 환경 변수 대화 상자와 시스템 속성 대화 상자에서 확인을 클릭합니다. 
  7. 컴퓨터를 다시 시작하여 새 변수가 인식되도록 합니다. 

2단계: Oracle net 서비스 이름을 사용해 Tableau에서 Oracle에 연결합니다. 

  1. 열려 있는 모든 Tableau 통합 문서를 닫은 다음 Tableau의 새 인스턴스를 엽니다.
  2. Tableau Desktop에서 데이터에 연결 > Oracle을 선택합니다.
    • 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 파일은 백슬래시 두 개를 사용해야만 올바르게 작동합니다.

파일을 다음 위치에 저장하십시오.
데스크탑: Documents\My Tableau Repository\Datasources 
서버: C:\ProgramData\Tableau\Tableau Server\data\tabsvc\vizqlserver\Datasources(또는 다른 설치 위치를 사용하는 경우 동등한 경로) 폴더가 아직 없으면 만들어야 합니다.

Server에만 해당: 파일과 폴더가 생성된 후 서비스 계정 사용자에게 파일에 접근하고 Tableau Server를 다시 시작하는 데 필요한 권한이 부여되었는지 확인하십시오.

JDBC 속성 파일에 대한 자세한 내용은 다음 웹 페이지에서 확인할 수 있습니다. https://kb.tableau.com/articles/howto/Customizing-JDBC-Connections?lang=ko-kr
 
클릭하여 해결 방법 확장
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. 터미널이나 네트워크 유틸리티에서 호스트 이름을 ping하여 .ora 파일에 나열된 호스트 이름에 대해 DNS 확인이 작동하는지 확인합니다. 간단한 서버 이름 대신 정규화된 도메인 이름(예: servername.domain.com)을 사용하십시오. 
이제 Mac에서 Tableau Desktop을 시작할 수 있고 TNSNames.ora 또는 LDAP.ora 파일의 서버 이름만 제공하여 Oracle 데이터베이스에 연결할 수 있어야 합니다. 
 
클릭하여 해결 방법 확장
Linux의 경우

단계 요약:

  1. tableau 사용자가 액세스할 수 있는 위치에 tnsnames.ora 파일을 복사합니다.
  2. 파일에 대한 사용 권한을 설정합니다.
  3. 필요한 경우 (1) 단계의 디렉터리를 가리키도록 TNS_ADMIN 환경 변수를 업데이트합니다.

1단계: 권한 없는 사용자(tableau)가 액세스할 수 있는 디렉터리에 tnsnames.ora 파일을 복사합니다.

버전 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
이러한 단계에서 '사용 권한이 거부됨' 오류가 발생하는 경우 사용하려는 디렉터리의 사용 권한을 업데이트해야 합니다.

2단계: tnsnames.ora 파일에 대한 사용 권한 설정

2019.2.x 이하에서는 아래 단계를 수행합니다.
  1. tnsnames.ora 파일이 위치한 파일 경로로 이동합니다.
  2. chmod 666 tnsnames.ora 명령을 실행하여 파일에 사용 권한을 부여합니다.
  3. ls -l 명령으로 파일 사용 권한을 확인합니다.
참고: 환경 경로 끝에 후행 슬래시가 있어서는 안 됩니다. 경로의 형식이 올바르지 않은 경우 ORA-12154 오류가 발생할 수 있습니다.

2019.3 이상:
tsnames.ora 파일을 Linux 컴퓨터의 /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=ko-kr
 

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 파일 이름은 대소문자를 구분하며 모두 소문자여야 합니다. 

  • 파일에는 Tab 공백이 사용되지 않아야 합니다.

다음은 항목에 사용 가능한 템플릿입니다. 대괄호로 묶인 요소는 데이터베이스 관리자에게 요청하여 받은 값으로 바꿔야 합니다.
참고: 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

이 문서로 문제가 해결되었습니까?