일반 계정을 sysdba로 접속했을 때 계정이 소유하고 있는 테이블 조회시 스키마 없이는 안되는 이유 0 1 3,339

by 코코섬 [Oracle 기초] oracle sysdba [2022.04.08 17:01:09]


안녕하세요 sql 공부를 위해 계정을 생성을 하다가 이해 안되는 부분이 있어서 다른 분들께 조언을 구합니다. 상황은 다음과 같습니다.

1. HR계정의 Authentication mode를 SYSDBA로 설정하고 접속함(사진참고)

2. 위의 문제를 모른채로 HR계정의 소유인 DEPARTMENTS 테이블을 조회하려고 함

 SELECT * FROM DEPARTMENTS;

3." ORA-00942: 테이블 또는 뷰가 존자하지 않습니다." 메세지와 함께 안됨

4. 스키마를 앞에 붙여주면 조회가 됨

SELECT * FROM HR.DEPARTMENTS;

나중에 문제가 뭔가 하고 찾다가 인증모드가 SYSDBA여서 그랬던 것을 알고 SYSDBA -> DEFAULT로 하니 스키마 없이(2번처럼 입력) 원하는 결과값이 나왔습니다.

 

제가 이해한 것은 SYSDBA계정이 아닌 USER을 SYSDBA로 로그인해서 문제가 생겼다 정도입니다.

하지만 HR은 DEPARTMENTS 테이블 자체를 소유하고 있는데 왜 스키마를 붙여줘야 조회가 되었던 걸까요? 이 부분이 궁금합니다. 소유주가 hr이니까 상관없어야 하지 않나 싶은데 db입장에서는 다르가봅니다,,

인증모드에 따라 조회되는 조건이 달라지는 걸까요? 

by 코코섬 [2022.04.08 17:43:24]

이유를 찾았습니다.

아래의 링크에서 SYSDBA and SYSOPER System Privileges 항목을 따라갔더니 답을 찾게되었습니다. 혼자 묻고 답하고 해서 민망하네요 

https://docs.oracle.com/cd/E11882_01/server.112/e10897/users_secure.htm#ADMQS12004

When you connect with the SYSDBA or SYSOPER privilege, you connect with a default schema, not with the schema that is generally associated with your user name. For SYSDBA this schema is SYS; for SYSOPER the schema is PUBLIC.

(SYSDBA또는 권한으로 연결할 때 SYSOPER일반적으로 사용자 이름과 연결된 스키마가 아닌 기본 스키마로 연결합니다. SYSDBA이 스키마의 경우 SYS; SYSOPER스키마는 입니다 PUBLIC.)

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입