음.. A 라는 SID를 사용하고 있는데 B라는 SID를 추가 하였습니다.
이때.. A 라는 SID로 접속하던 계정으로 B라는 SID로 접속하면
ora-01017 오류가 뜨네요.. ^^
물론 A라는 SID로 접속하면 잘 됩니다.. ^^
왜그런 것일 까요...
참고로.. B라는 SID에 scott/tiger로 접속이 되는데....
리스너나 TNS 쪽 문제는 아닌 듯 보이는데...
제발.. 알려 주세요.. ^^
뭔가 잘못 알고 계신 것 같은데, ORACLE_SID는 환경변수로서, 가질 수 있는 값은 하나 뿐입니다. 예를 들어 UNIX환경에서 두개의 term을 띄워놓고 서로 다른 SID를 설정하는 것은 가능합니다만, 2개이상의 SID를 가지는 건 불가능합니다. (즉, SID를 추가할 수 없습니다)
아마 2개의 DB를 동일한 서버에 설치하신 것 같은데, 예를 하나 들어서 정리해보면,…
우선 환경이 아래와 같다고 가정해 보죠.
1. mydb, otherdb라는 DB_NAME을 갖는 2개의 DB가 있다.
(DB_NAME과 ORACLE_SID는 동일하다)
2. mydb에 접속할 수 있는 user는 myself, password는 myself 이다.
3. otherdb에 접속할 수 있는 user는 other, password는 other이다.
4. tnsnames.ora에는 위의 두 DB에 접속할 수 있도록 connection string이 설정되어 있는데, mydb는 mydbconn 이고, otherdb는 otherdbconn이다.
5. listener는 기동중이다.
6. 아래의 sqlplus는 DB서버에서 실행한 결과이다.
7. 두 개의 database (mydb, otherdb)의 instance는 기동중이다.
만약 현재의 ORACLE_SID가 mydb라면 아래와 같이 됩니다.
$ sqlplus myself/myself ( OK )
$ sqlplus myself/myself@mydbconn ( OK )
$ sqlplus other/other ( NG )
$ sqlplus other/other@otherdbconn ( OK )
만약 현재의 ORACLE_SID가 otherdb라면 아래와 같이 됩니다.
$ sqlplus myself/myself ( NG )
$ sqlplus other/other ( OK )
여기서 중요한 건, 위의 4가지 형태의 접속이 모두 가능하게 할 수 있는 방법은 없다는 사실입니다.
참고로 connection string을 붙어 있지 않은 접속방식은 listener의 기동 및 tnsnames.ora 파일의 수정을 필요로 하지 않습니다. 즉, 예를 들어 ORACLE_SID가 mydb이고, listener 가 기동중이 아니라면 접속할 수 있는 형태는 sqlplus myself/myself 뿐입니다.