기술 자료

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


게시 날짜: 29 Nov 2016
마지막 수정 날짜: 15 Sep 2020

질문

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


TNSNames.ora 또는 LDAP.ora 연결 설정의 이점

다음과 같은 일반적인 Oracle 오류는 데이터 연결에서 TNSNames.ora 또는 LDAP.ora를 사용하도록 설정하여 해결하거나 방지할 수 있습니다.
  • ORA-12154: TNS: 지정한 연결 식별자를 확인할 수 없음

  • ORA-12514: TNS 수신기가 연결 설명자의 요청된 서비스를 현재 인식할 수 없음

  • ORA-12541: TNS: 수신기가 없음

  • ORA-12170: TNS: 연결 시간 초과됨

  • ORA-12504: TNS 수신기에 CONNECT_DATA의 SERVICE_NAME이 지정되지 않음

환경

  • Tableau Desktop
  • Tableau Server
  • Oracle

답변

 
클릭하여 해결 방법 확장

Windows의 Tableau Desktop

1단계: 컴퓨터에 TNSNames.ora 파일이 있는지 확인 

기본적으로 TNSNames.ora 파일은 {oracle 디렉터리}\network\admin에서 찾을 수 있습니다. 예: C:\Oracle_Client\network\admin
컴퓨터에 TNSNames.ora 파일이 없는 경우 텍스트 편집기를 사용하여 새로 만드십시오. 다음은 항목에 사용 가능한 템플릿입니다. 대괄호로 묶인 요소는 데이터베이스 관리자에게 요청하여 받은 값으로 바꿔야 합니다.

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


예를 들면 다음과 같습니다. 
 
Production =
(DESCRIPTION =
 (ADDRESS = (PROTOCOL = TCP)(HOST = prod.corp.com)(PORT = 1521)
  )
 (CONNECT_DATA =
  (SERVICE_NAME= orcl)
  )
 )

2단계: TNS_Admin 환경 변수를 설정

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

3단계: Tableau에서 Oracle net 서비스 이름 사용 

  1. 열려 있는 모든 Tableau 통합 문서를 닫은 다음 Tableau의 새 인스턴스를 엽니다.
  2. Tableau Desktop에서 데이터에 연결 > Oracle을 선택합니다.
    • TNSNAmes.ora 파일에 기록된 oracle 'net_service_name'을 서버에 입력합니다.
    • 사용자 이름 및 암호를 적절히 입력합니다.

TNSNames.ora 파일의 나머지 연결 세부 정보는 TNS_ADMIN 시스템 변수를 통해 전달됩니다. 선택 사항인 서비스 이름과 포트 정보는 비워 두어야 합니다. 그렇지 않으면 정보가 중복되어 연결이 간섭을 받을 수 있습니다.

클릭하여 해결 방법 확장
Tableau Server 2020.2 이상(Windows):


다음 텍스트를 포함하는 oracle.properties 파일을 만듭니다. 예:

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

필요한 경우 호스트 파일 시스템 내의 tnsnames.ora 파일 위치를 참조하도록 경로를 변경합니다. 이중 백슬래시(\\)는 의도적인 것이며 Windows 파일 탐색기에 직접 복사하여 붙여 넣을 때 \\ 경로가 작동하지 않더라도 이는 필수입니다. oracle.properties 파일은 이 컨텍스트에서 이중 백슬래시가 있는 경우에만 제대로 작동합니다.

파일을 다음 위치에 배치합니다. C:\ProgramData\Tableau\Tableau Server\data\tabsvc\vizqlserver\Datasources(또는 대체 설치 위치를 사용하는 경우 이와 동등한 경로). 아직 없는 경우 서버에서 폴더를 만들어야 합니다.

파일 및 폴더가 생성되면 '서비스 계정' 사용자에게 파일에 대한 적절한 권한이 제공되었는지 확인하고 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 이상:
Linux에 더 이상 tabsvc가 없기 때문에 위 단계를 더는 적용할 수 없습니다. 대신 tsnames.ora 파일을 Linux 컴퓨터의 /etc 디렉터리에 배치하십시오. 환경 변수가 필요하지 않습니다.

2020.2 이상:

아래 텍스트를 포함한 /var/opt/tableau/tableau_server/data/tabsvc/vizqlserver/Datasources/oracle.properties 파일을 만듭니다.

예: oracle.net.tns_admin=/etc

필요한 경우 파일 시스템 내의 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 버전과 일치하는 파일을 엽니다.
    • Tableau Server 10.5.x -- /etc/systemd/system/tabsvc_0.service
    • ​​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
  1. 파일 변경 내용을 저장합니다.

참고: 환경 경로에는 후행 슬래시가 없어야 합니다. 경로의 형식이 올바르지 않은 경우 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에서 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


이 문서에 대한 논의... 피드백 포럼
이 문서로 문제가 해결되었습니까?