SQLPLUS 오류:ORA-12504: TNS: 수신기에 CONNECT_DATA의 SERVICE_NAME이 지정되지 않았습니다.
Oracle에서 SQLPLUS를 다운로드했습니다.
http://www.oracle.com/technetwork/topics/winx64soft-089540.html
기본 Lite 및 SQL*Plus
그런 다음 SQL*Plus를 시작했습니다.
c:\Program Files\Oracle\instantclient_12_1>sqlplus /nolog
SQL*Plus: Release 12.1.0.2.0 Production on Wed Apr 15 15:25:36 2015
Copyright (c) 1982, 2014, Oracle. All rights reserved.
데이터베이스에 연결하려고 했습니다.
connect user\password@hostname
오류 메시지를 받았습니다.
ERROR:
ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA
제가 무엇을 빠뜨리고 있나요?
자쿠브가 제안한 쿼리를 실행해봤는데,
SQL> select sys_context('USERENV','SERVICE_NAME') from dual;
SYS_CONTEXT('USERENV','SERVICE_NAME')
--------------------------------------------------------------------------------
SYS$USERS
SQL> select sys_context('USERENV','SID') from dual;
SYS_CONTEXT('USERENV','SID')
--------------------------------------------------------------------------------
877
SQL>
서비스 이름이 없습니다.
SQL> connect username/password@hostname:port/SERVICENAME
편집
다른 컴퓨터에서 데이터베이스에 연결할 수 있는 경우 해당 컴퓨터에서 실행해 보십시오.
select sys_context('USERENV','SERVICE_NAME') from dual
그리고.
select sys_context('USERENV','SID') from dual
저는 똑같은 상황에서 똑같은 문제에 부딪혔습니다.tnsnames.ora 파일이 없고 명령줄에서 SQL*Plus with Easy Connection Identifier 형식을 사용하려고 했습니다.저는 이 문제를 다음과 같이 해결했습니다.
SQL*Plus® 사용자 가이드 및 참조는 다음과 같은 예를 제공합니다.
sqlplus hr@\"sales-server:1521/sales.us.acme.com \"
다음 두 가지 중요한 사항에 주의하십시오.
- 연결 식별자가 따옴표로 묶입니다.두 가지 옵션이 있습니다.
- SQL*Plus CONNECT 명령을 사용하여 따옴표로 묶은 문자열을 전달하면 됩니다.
- 명령줄에 연결 매개 변수를 지정하려면 따옴표 앞에 백슬래시를 실드로 추가해야 합니다.Bash에서 SQL*Plus에 견적을 전달하도록 지시합니다.
- 서비스 이름은 DBA가 구성한 FQDN 형식으로 지정해야 합니다.
기존 연결을 통해 서비스 이름을 검색할 수 있는 좋은 질문을 발견했습니다. 1, 2.이 쿼리를 사용해 보십시오.
SELECT value FROM V$SYSTEM_PARAMETER WHERE UPPER(name) = 'SERVICE_NAMES'
작은 관찰 사항입니다. 계속 conusr\pass를 언급하고 있는데, 이것은 오타입니다. 그렇죠?conusr/pass여야 하기 때문입니다.아니면 유닉스 기반 운영 체제에서는 다른가요?
또한, 만약 당신이 tns names를 사용한다면, 당신의 로그인 문자열은 당신이 이 주제를 시작했을 때와 다르게 보일 것입니다.
tnsnames.ora는 $ORACLE_HOME$\network\admin에 있어야 합니다.연결하려는 시스템의 Oracle 홈이므로 PC의 경우에도 마찬가지입니다.oracle_homes가 여러 개 있고 tnsnames.ora 하나만 사용하려는 경우 환경 변수 tns_admin을 설정할 수 있습니다(예: set TNS_ADM).IN=c:\oracle\tns) 및 해당 디렉토리에 tnsnames.ora를 배치합니다.
원래 로그온 방법(usr/pwd@10.15.240.13: 포트/서비스 이름)은 항상 작동해야 합니다.지금까지는 DBA가 제공할 수 있는 포트 번호를 제외한 모든 정보를 알고 있다고 생각합니다.그래도 이 방법이 작동하지 않으면 서버의 IP 주소를 클라이언트에서 사용할 수 없거나 방화벽 문제(특정 포트 차단)이거나 Oracle 또는 SQL*Plus와 직접 관련이 없는 문제입니다.
음! 잘 부탁드립니다, Remco.
하나의 서버에서만 이러한 이상한 동작을 경험했으며 기본 위치 네트워크/admin임에도 불구하고 env 변수 TNS_ADMIN을 입력했을 때 스크립트에서만 작동했습니다.
다음은 저에게 효과가 있었습니다.
/usr/lib/dll/21/client64/bin/impdp 사용자 이름/password@aws-rds-hostname: 1521/DATABASNAME DIRECTORY=DATA_PUMP_DIR dumpfile=dmp logfile=message.log full=y
언급URL : https://stackoverflow.com/questions/29659264/sqlplus-errorora-12504-tnslistener-was-not-given-the-service-name-in-connect
'programing' 카테고리의 다른 글
Oracle PL/SQL에서 호출 프로시저 또는 함수의 이름을 가져옵니다. (0) | 2023.07.01 |
---|---|
테이블의 행 크기 결정 (0) | 2023.07.01 |
스프링 부트:JPA/Hibernate 주석에서 DDD 엔티티를 깨끗하게 유지하는 방법은 무엇입니까? (0) | 2023.07.01 |
회전된 xtick 라벨과 해당 xtick 라벨 정렬 (0) | 2023.07.01 |
Oracle에서 Dapper QueryMultiple 사용 (0) | 2023.07.01 |