Programming/SQL

SQL developer에 사용자 계정 추가하기.+ 스키마 개념. 2021-08-26

최동훈1 2021. 8. 26. 16:33

 우선 내가 궁금했던 점은, 분명 오라클 서버에 난 "NEWLEC"이라는 계정을 처음 SQL Developer를 설치할때 사용자 계정으로 만들어서 MEMBER, NOTICE등의 테이블등을 만들었다. 그럼, 만약 내가만든 테이블들을 다른 사람과 공유해서 쓰고 싶다면, 어떻게 해야할까?
처음 내가 생각한 가설은, 같은 접속 서버 PDB계정에 새로운 사용자를 하나 만든뒤에, 기본저장공간과, 임시저장공간을 각각, NEWLEC이 쓰는 테이블 스페이스랑 똑같이 맞춰주면 되지 않을까..?? 였다.

SQL 쿼리가 아니라 에디터로 사용자계정을 만들수 있는 DBA기능으로 접속한다.
DBA 클릭후 SQL DEVELOPER의 왼쪽 하단에 나온  DBA 창에서 사용자에 오른쪽 마우스 클릭후 새로만들기 클릭.

아래에보이는 두 항목을, 내가 공유해서 쓰고자하는 "NEWLEC"계정의 테이블 스페이스랑 동일하게 설정한다면, 같은 공간을 쓰는 것이니, 안의 데이터들도 서로공유되지 않을까?? 였다.

 

사용자 이름을 choi라고 입력하고 적용함.

그런데 문제가 생겼다,,!! 사용자 이름을 choi 라고 저장하고, 시스템권한, 비밀번호 등을 정상적으로 다 입력했는데도, 새롭게 접속을 하려니 아이디,비밀번호가 맞지않다고 오류가 뜨는 것이다.

pdb1 서버의 사용자로 choi와 NEWLEC모두 존재하는 모습.

 

미치고 환장할 노릇이였다. 분명, 사용자 목록에는 choi 가 버젓이 존재하는데 왜 접속이 안되는 것일까??

 

바로 대소문자 구별 이다 !! choi 라는 사용자를 등록 했으므로, "choi" 라고 입력해야 한다.

대소문자를 구별하여 "choi"라고 쓴 모습.

이렇게 NEWLEC 사용자가 아닌 "choi" 사용자로 PDB1 서버에 접속하니 테이블이 텅 비어있었다. 즉, 저장공간이 아예 다른 것이다.

NEWLEC 사용자의 테이블 모습.

 

"choi" 사용자의 테이블이 텅 빈 모습.


즉 요약하자면, 
같은 PDB 서버에서 서로다른 사용자에 의해 생성된 테이블을 공유할수 있는 방법은 없다. 테이블은 사용자의 고유한 영역이다. 즉, NEWLEC이란 사용자가 쓰는 영역과 "choi"라는 사용자가 쓰는 영역은 다르다. 

 

. 오라클에서 스키마의 뜻은: 오라클에서 스키마는 사용자(USER)가 생성한 모든 오브젝트(테이블, 인덱스, 프로시저 등)를 의미합니다. 사용자와 스키마가 같다고 보는 사람도 있는데, 엄밀히 말해서 다르다고 봐야 되겠죠. 그래서 스키마에 각각의 사용자에게 선택적인 권한을 줍니다. 오라클에서 데이터베이스는 실제 물리적인 데이터베이스를 의미합니다.

출처: https://sidorl.tistory.com/10 [잇킹 시도르]

이렇다. 그냥 편하게 사용자를 스키마라고 생각하면 된다.
두가지 문제가 해결되었다.

1. NEWLEC이 쓰던 데이터를 공유하려면 어떻게 해야 할까? -> 불가하다.
->그래도 NEWLEC이라는 사용자가 가지고있는 테이블을 쓰고 싶다면 접속할떄, 같은 PDB 서버의 같은 계정 NEWLEC 계정(스키마)로 접속하면된다. 다른 계정으로 테이블스페이스를 같게 설정해도 공유가 안된다. 왜냐하면 사용자별로 테이블 스페이스를 사용하는 영역이 다르기 떄문이다. 
2.choi 라고 썼는데 접속이 안되는 이유.
-> 사용자 계정 이름은 대소문자를 구별한다. 그래서 소문자 choi는 위 사진에서 보듯이, choi 가 아닌 "choi"로 입력해야 정상적으로 접속이 된다.

공부시간 2시간.
순공시간 2시간.

오늘은 정말 개발자가 꼭 필요한 자질중 하나인, 인내심이랑 디버깅+구글링 능력을 배양하는 시간을 가졌다. 그래도 내가 궁금했던 부분을 끝까지 물고 늘어져서 해결하니 기분이 참 좋았다. SQL Developer 사용법에 대해서 더욱 친숙해진 느낌이다.

스키마, 사용자계정에 대한 참고할만한 블로그들.
오라클 아키텍처의 계정과 스키마 (tistory.com)
https://spidyweb.tistory.com/m/165