오라클 다른 계정 테이블 조회 - olakeul daleun gyejeong teibeul johoe

Grant, GRANT SELECT, Oracle, PRIVILEGES, table, User, 권한, 사용자, 테이블, 테이블 권한 주기

 문제

HR 계정으로 로그인해서 TEAM 계정의 테이블로 접속을 시도했다.

SELECT *
  FROM TEAM.MEMBERS;

ORA-00942: 테이블 또는 뷰가 존재하지 않습니다
00942. 00000 -  "table or view does not exist"
*Cause:    
*Action:
2행, 12열에서 오류 발생

 해결

TEAM 계정으로 접속 후에 MEMBERS 테이블의 권한을 HR에 주고싶을때 사용한다.

-- SELECT 권한 주기
GRANT SELECT ON MEMBERS TO HR;

-- 모든 테이블 권한 주기
GRANT ALL ON MEMBERS TO HR;

 출처

Oracle 공식 문서

SQL Language Reference

https://docs.oracle.com/en/database/oracle/oracle-database/18/sqlrf/GRANT.html#GUID-20B4E2C0-A7F8-4BC8-A5E8-BE61BDC41AC3

저작자표시

'Software > Oracle' 카테고리의 다른 글

[Oracle] 에러 ORA-12899: column 열에 대한 값이 너무 큼 - INSERT, ALTER 컬럼 수정  (0)2021.11.04
[Oracle] 테이블 컬럼(column) 코멘트(comment) 조회, 추가, 수정, 삭제 - USER_COL_COMMENTS  (0)2021.09.30
[Oracle] 오류 발생 - ORA-28001: the password has expired - 패스워드 갱신 필요  (0)2021.03.30
[Oracle] 오류 보고 - ORA-01922: CASCADE must be specified to drop 'TEST_USER' - 유저 삭제(DROP)  (0)2020.08.01
[Oracle] 활용하기: USER_SOURCE - 패키지, 프로시저, 함수, 트리거, 타입 내용 검색 - HR  (0)2020.07.24

NAME

PASSWORD

HOMEPAGE

SECRET

    오라클을 사용하다 보면 다른 유저의 테이블을 같이 써야하는 경우가 있습니다.

    일반적으로는 다른 유저의 테이블을 볼 수 없습니다.

    그래서 권한을 부여해야만 다른 유저의 테이블을 조회 할 수 있습니다.

    시스템 계정으로 접속 후 아래와 같은 형식으로 쿼리를 하면 테이블 조회 권한을 다른 유저에게 부여할 수 있습니다.

    1

    GRANT SELECT ON [테이블소유자].[테이블명] TO [다른소유자];

    권한을 부여 후 조회 테스트 쿼리를 실행합니다.

    1

    SELECT * FROM [테이블소유자].[테이블명];

    ◎ ORACLE 다른계정 권한주기

    ▼ 내용

    ONE 계정의 테이블을 TWO계정에 권한을 줄려면 ONE계정으로 접속을 해서 쿼리를 날려야한다.권한을 SELECT,UPDATE,DELETE,INSERT 각각 줄수 있다.

    GRANT INSERT ON [테이블이름] TO [계정이름]; GRANT DELETE ON [테이블이름] TO [계정이름]; GRANT UPDATE ON [테이블이름] TO [계정이름]; GRANT SELECT, INSERT, DELETE, UPDATE ON [테이블이름] TO [계정이름] ; GRANT SELECT USER TO TWO; GRANT INSERT USER TO TWO; GRANT DELETE USER TO TWO; GRANT UPDATE USER TO TWO; GRANT INSERT, DELETE, UPDATE,SELECT USER TO TWO; SELECT * FROM ONE.USER

    create user [계정이름] identified by [패스워드]; -- 계정생성 grant create session to [계정이름]; --세션 권한주기

    ◎ 오라클 패스워드 기간 확인 및 변경

    ▼ 내용

    오라클은 11g 로 넘어오면서 계정의 패스워드 기간을 기본값으로 180일로 지정되있다. 계정생성후 180일이 지나면 패스워드가 만료됫다고 뜹니다. 이걸 없애기 위해선 아래와같이 명령문을 날려야합니다.

    select * from dba_profiles where profile = 'DEFAULT'; alter profile default limit password_life_time unlimited;

    ◎ 오라클 Tablespace

    ▼ 내용

    계정을 만들떄 테이블스페이스를 지정하는 이유는 테이블들의 데이터는 파일에 쌓이는데 이파일의 이름을 tablespace로 지정하는 것이다. 그리고 그 데이터들의 보안,권한,용량 이런 처리를 위해서 별도로 테이블 스페이스로 나누는 것 이다. 아래는 다른 블로그에서 설명한 글입니다.

    테이블을 저장하는 공간이란 의미도 틀린것은 아니지만 정확한 의미는 아닙니다.

    오라클은 데이터베이스 관리 시스템이고 말 그대로 데이터들을 관리합니다. 즉 어딘가에 데이터들을 저장, 추출, 삭제, 변경하는 작업을 할 수 있는 것입니다. 그렇다면 데이터는 어디에 저장되는 것일까요? 물론 파일에 저장됩니다.

    오라클 데이터베이스는 데이터 파일들을 가지고 있으며, 이 파일들에 데이터가 저장됩니다. 그런데 파일은 데이터가 저장되는 물리적인 공간을 말하는 것입니다.

    오라클 내부에서는 데이터 블록(data block), 익스텐트(extent), 세그먼트(segment), 테이블스페이스(tablespace)라는 논리적인 개념으로 데이터 들을 관리합니다.

    오라클에서 데이터를 저장하는 가장 최소의 논리적인 단위가 데이터 블록이며, 데이터 블록이 모여서 익스텐트가 되고, 익스텐트가 모여서 세그먼트, 세그먼트가 모여서 테이블 스페이스가 됩니다. 실제로 물리적인 데이터 파일(확장자가 dbf 혹은 ora인 파일)은 테이블 스페이스와 대응됩니다.

    하나의 테이블 스페이스는 최소 1개의 데이터파일로 구성됩니다.

    테이블 이외에도 인덱스, 프로시저, 뷰 등 다른 여러 가지 오라클 객체들이 저장됩니다.