SharedIT | 묻고 답하기(AMP)

오라클 DB 관련 여쭙습니다.

안녕하세요.

내부 시스템에서 DB서버로 접속이 안된다고해서 해당 계정 로그인 테스트하려고,

유닉스 DB서버에 telnet 접속해서 DB접속 계정 ID와 암호를 넣으니 아래와 같은 오류가 뜨네요.


아이디는 맞는 것 확인했구요.

암호가 잘못된건 아닌 것 같고, 어떤 옵션을 잘못줘서 로그인이 안되는걸까요?

해당 오류 검색해봐도 잘 모르겠더라구요.

도움 부탁드립니다.

감사합니다.

Tags : 태그가 없습니다.

11개의 답변이 있습니다.

deerokgo
  0 추천 | 4달 전

오라클 접속 패스워드에 '@' 등 특수문자가 포함되서 발생하는 현상입니다.

패스워드에 특수문자가 없을 경우에는 sqlplus <username>/<password>로 접속이 가능하고요.


패스워드에 특수문자가 포함될 경우에는 아래와 같은 방법으로 하셔도 됩니다.


sqlplus로 먼저 접속  사용자명 입력: <username>, 패스워드 입력: "<password>"와 같이 

문답 형식으로 username과 password를 입력해야 합니다. 


이때 패스워드는 ""로 감싸서 입력 하도록 합니다.

krlove0
  0 추천 | 4달 전

여러 정보들 감사합니다.

이렇게 또 하나하나 더 알아갈 수 있어서 좋아요...


PL/SQL에서 해당 DB 접속해서 아이디/암호 넣으니 정상 로그인 되네요.

암호에 @가 있어서 따옴표, 쌍따옴표 다 해봐도 안되더라구요 ㅜㅜ


아무튼 PL/SQL에서 열려서 잘 확인햇고, 여러 답변들로 공부 많이 했습니다.

감사합니다.

wansoo | 4달 전

암호 @ 앞에 Escape Character  \를 붙여서 \@와 같이 해 봐도 안되던가요..?

@는 ID와 호스트를 분리하는 특수 용도로 많이 사용되고 있죠.

wansoo | 4달 전

예를 들어....


SQL> conn user/"123@"

와 같이 접속이 될 경우라면


$ sqlplus user/\"123\@\"

와 같이 접속 시도 해 보세요.

Simon.Park
  0 추천 | 4달 전

다른 컴퓨터에서 접속을 한번 해 보세요....

가끔 PC의 키보드와의 입력 오류로 이상한 값이 들어가는 경우를 봐서요....

아니면 PC를 리부팅 후에.....

deerokgo
  0 추천 | 5달 전

tnsping 이라는 명령어가 있습니다.

보통 오라클 연결 테스트 할 때 사용하는 명령어 입니다.

어렵지 않으니 구글링 하셔서 해보세요

명동쓰레빠
  0 추천 | 5달 전

접속 포츠 문제는 아닌것 같네요, 웨에서 애기한대로 특수 문자 일수도 있으니 "" 묶어서 해보시길 바랍니다.


topkslee
  0 추천 | 5달 전

아... 그럼 패스워드를 동일하게 새로 변경해보시고 해보세요.

제가 알기로 오라클 이전 버전에 이런 경우가 있었던것 같은데요.

패스워드 처리가 약간 다르다고 봤던것 같습니다.


nies 유저의 패스워드 변경하실때 패스워드가 abc@123 이라면 "abc@123"으로 ""를 해서 변경하시고

다시 시도해보세요. 

앵그리파파
  0 추천 | 5달 전

오류 메시지 "SP2-0306: Invalid option" 은 일반적으로 SQLPlus가 명령줄 옵션을 인식하지 못할 때 발생하는 오류입니다.

  • 1.기본 연결 구문을 입력할 때, 


2. 사용자 이름, 비밀번호 또는 데이터베이스 이름에 특수문자가 포함된 경우


  • 비밀번호에 특수문자가 포함된 경우 따옴표를 사용하거나 해당 문자를 이스케이프 처리

  • 연결 문자열, 서비스 이름이나 SID가 올바른지 확인

  • 오라클 버전에 해당하는 SQL*Plus 버전을 사용하고 있는지 확인

*** 기본 연결 명령의 일반적인 예를 참고하세요.


앵그리파파 | 5달 전

혹시, 연결 문자열에 TNS 항목을 사용하는 경우, 'tnsnames.ora' 파일이 필요한 정보로 올바르게 구성되었는지도 확인해보세요. 오타가 있는지 확인하고 서비스 이름이나 SID가 정확한지 등

또, 하나는 연결 명령을 최대한 단순화 해보세요. 예를 들어 연결 문자열에 서비스 이름이나 SID를 직접 지정하지 않고 연결을 시도해 보세요. 이것이 작동하면 TNS 항목에 문제가 있을 수 있습니다.

topkslee
  0 추천 | 5달 전

뒤에 @<connect_identifier> 정보를 넣고 해보세요.

예를 들어

sqlplus userid/userpass@database

그리고 만약 userpass에 특수문자 있는 경우 "userpass"으로 입력하시구요

krlove0 | 5달 전

sqlplus 다른계정명/"해당암호"


요렇게 실행했을때는 SQL> 요렇게 잘 되는데요.


sqlplus nies/"해당암호" 요렇게 하니 본문과 동일한 오류가 뜹니ㅏ.

에이스퐝
  0 추천 | 5달 전

ID/PW 정확히 입력하라는 오류 메시지 입니다.

아래분 처럼 아이디나 비번중 특수문자가 있으면 "" 넣고 해보시기 바랍니다.

wansoo
  0 추천 | 5달 전

sqlplus id/password 

형식으로 접속하면됩니다.


옵션 없이 sqlplus 명령을 실행한 후에,

id와 암호를 각각 입력해도 되는데...

아마도 키보드 입력중 특수 문자나 잘못된 키를 누른게 아닌가 하는 느낌이 들고요.


sqlplus id/pass  

형식으로 shell에서 ID와 암호를 직접 지정해서 sqlplus 명령을 실행해 보세요.


wansoo | 5달 전

비밀 번호에 따옴표나 @ 등의 특수 목적으로 사용하는 문자가 포함되어 있기 때문에 비밀번호에 포함된 특수 문자를 해당 특수 문자로 받아 들이지 않고 다른 특수한 목적으로 처리하려고 시도하기 때문에 생기는 문제일 걸로 보여지네요.


특수한 목적으로 사용하는 문자를 특수한 목적이 아니라 원래 고유한 그 문자 그대로 받아들여서 처리하라고 지시하기 위해서 Escape 문자를 사용하게 되죠.

Escape 문자로 C 언어 계통에서는 역슬래쉬 \ 를 사용하고 있고요.

Unix, Linux도 C를 기반으로 한 운영체제 이기 때문에 이스케이프 문자로 역슬래쉬 ( \ )를 사용하면 될 것 같고요.

암호 사용된 특수문자 중에 @이 ' " \ 등의 특수한 용도로 사용되는 문자 앞에 \ 를 넣어서 사용해 보세요.

krlove0 | 5달 전

위에 답글 달았는데, 그 이후로 추가 확인된 부분이 아래와 같습니다.

sqlplus 다른계정/"해당암호" --> 요건 잘 된다고 했는데, 요건 특수문자가 없습니다.

그런데 안되는 계정은 암호를 "" 안에 넣어도 안되더라구요 ㅜㅜ

감사합니다.

wansoo | 5달 전

암호에 사용하고 있는 특수 문자가 어떤게 있나요?

아마도 암호에 사용하고 있는 특수 문자 중에 시스템에서 다른 용도로 사용하고 있는 특수 문자가 있는 것 같습니다.

@ / ' "  등등의 특수 문자 앞에 역슬래시 \를 적고 사용해 보세요.

만약 암호가 1@345 일경우라면 1\@345 와 같이 지정해 보세요.

sqlplus id/1\@345 와 같이...

암호 앞뒤에 " 가 있고 없고는 관계가 없는 것 같습니다.

sqlplus id/"1\@345" 와 같이 접속해도 될 것 같고, sqlplus id/1\@345 와 같이 해도 접속되겠고...

wansoo | 5달 전

쌍따옴표(") 와 싱글따옴표(')도 차이가 있기 때문에...

싱글 따옴표를 이용해서 접속 시도도 해 보세요.


sqlplus 'id'/'pass'  와 같이...도 한번 시도해 보세요.


빨간신발
  0 추천 | 5달 전

https://velog.io/@khyup0629/Oracle-%EC%9D%BC%EB%B0%98-user-sqlplus-%EC%A0%91%EC%86%8D-%EC%98%A4%EB%A5%98%ED%95%B4%EA%B2%B0%ED%8A%B9%EC%88%98%EB%AC%B8%EC%9E%90-%EC%9D%B4%EC%8A%88


비번에 특수문자가 있으면

""으로 묶어주라고 하네요