개발서버에서 테스트하느라 DBA계정으로 파티션 테이블을 생성했습니다. 당연히(!) DBA계정은 잘되지만
일반사용자가 이 테이블에 데이터를 삭제하거나 적재해야하는 업무라 업무전용 계정( ECOS_027)이 따로 부여되어있는 상황입니다.
사용자 계정으로 이 테이블을 조작하거나 삭제하는 것은 파티션을 명시하면 잘 되지만, 아래와 같이 truncate를 쓰려고하면,
ALTER TABLE BOKECOS.T_027P119 TRUNCATE PARTITION P20094;
ORA-01031: Insufficient privileges..
권한이 없다고 나옵니다.
특정 테이블에 대해서 truncate (ALTER TABLE)권한을 부여할 수 있는지 궁금합니다.
인터넷을 뒤져보면 create table이나 drop 권한을 주면 된다고 하는데 너무 포괄적이라 불가하고.
delete를 쓰려고하면 아무리 파티션으로 분할되었다 하지만 3억건을 지웠다 쓰기는 무리같네요.
선배님들의 고견 부탁드립니다.
참고로 테이블 생성 스크립트
CREATE TABLE BOKECOS.T_027P119_NTS
(
CYCLE VARCHAR2 (2) NOT NULL,
TIME VARCHAR2 (10) NOT NULL,
DATA_GUBUN VARCHAR2 (1) NOT NULL,
UPCHE VARCHAR2 (30) NOT NULL,
NUM_TYPE VARCHAR2 (5) NOT NULL,
DATA_VALUE NUMBER (18,2),
DATA_STATE VARCHAR2 (2),
DATA_STEP VARCHAR2 (5),
CREATE_TYPE VARCHAR2 (5),
Z_CREATE_DATE DATE DEFAULT SYSDATE,
Z_CREATE_USER_ID VARCHAR2 (15),
Z_UPDATE_DATE DATE,
Z_UPDATE_USER_ID VARCHAR2 (15)
)PARTITION BY RANGE(TIME)
(
PARTITION P20093 VALUES LESS THAN ('20094') TABLESPACE TSC0DT2,
PARTITION P20094 VALUES LESS THAN ('20101') TABLESPACE TSC0DT2,
PARTITION P20103 VALUES LESS THAN ('20104') TABLESPACE TSC0DT2,
PARTITION P20104 VALUES LESS THAN ('20111') TABLESPACE TSC0DT2,
PARTITION P20113 VALUES LESS THAN ('20114') TABLESPACE TSC0DT2,
PARTITION P20114 VALUES LESS THAN ('20121') TABLESPACE TSC0DT2,
PARTITION P20123 VALUES LESS THAN ('20124') TABLESPACE TSC0DT2,
PARTITION P20124 VALUES LESS THAN ('20131') TABLESPACE TSC0DT2,
PARTITION P20133 VALUES LESS THAN ('20134') TABLESPACE TSC0DT2,
PARTITION P20134 VALUES LESS THAN ('20141') TABLESPACE TSC0DT2,
PARTITION P20143 VALUES LESS THAN ('20144') TABLESPACE TSC0DT2,
PARTITION P20144 VALUES LESS THAN ('20151') TABLESPACE TSC0DT2,
PARTITION P20153 VALUES LESS THAN ('20154') TABLESPACE TSC0DT2,
PARTITION P20154 VALUES LESS THAN ('20161') TABLESPACE TSC0DT2,
PARTITION P20163 VALUES LESS THAN ('20164') TABLESPACE TSC0DT2,
PARTITION P20164 VALUES LESS THAN ('20171') TABLESPACE TSC0DT2,
PARTITION P20173 VALUES LESS THAN ('20174') TABLESPACE TSC0DT2,
PARTITION P20174 VALUES LESS THAN ('20181') TABLESPACE TSC0DT2,
PARTITION P20183 VALUES LESS THAN ('20184') TABLESPACE TSC0DT2,
PARTITION P20184 VALUES LESS THAN ('20191') TABLESPACE TSC0DT2,
PARTITION P20193 VALUES LESS THAN ('20194') TABLESPACE TSC0DT2,
PARTITION P20194 VALUES LESS THAN ('20201') TABLESPACE TSC0DT2
)
TABLESPACE TSC0DT2
NOLOGGING
;
/*파티션 인덱스 생성*/
CREATE INDEX T_027P119_PART_IDX ON T_027P119_NTS(TIME)
LOCAL (
PARTITION P20093,
PARTITION P20094,
PARTITION P20103,
PARTITION P20104,
PARTITION P20113,
PARTITION P20114,
PARTITION P20123,
PARTITION P20124,
PARTITION P20133,
PARTITION P20134,
PARTITION P20143,
PARTITION P20144,
PARTITION P20153,
PARTITION P20154,
PARTITION P20163,
PARTITION P20164,
PARTITION P20173,
PARTITION P20174,
PARTITION P20183,
PARTITION P20184,
PARTITION P20193,
PARTITION P20194
)TABLESPACE TSC0IX2 NOLOGGING NOCOMPRESS;
ALTER TABLE BOKECOS.T_027P119_NTS ADD CONSTRAINT T_027P119_NTS_PK PRIMARY KEY (CYCLE, TIME, DATA_GUBUN, UPCHE, NUM_TYPE)
USING INDEX TABLESPACE TSC0IX2 LOCAL NOLOGGING NOCOMPRESS;
/*권한부여*/
GRANT SELECT ON BOKECOS.T_027P119 TO ECOS_USER;
GRANT DELETE ON BOKECOS.T_027P119 TO ECOS_027;
GRANT INSERT ON BOKECOS.T_027P119 TO ECOS_027;
GRANT SELECT ON BOKECOS.T_027P119 TO ECOS_027;
GRANT UPDATE ON BOKECOS.T_027P119 TO ECOS_027; |