다른 스키마에 기본키 넣는 방법이 있을까요? 0 2 493

by bxmst9 [Oracle 기초] [2020.05.14 14:58:04]


제가 현재 시스템권한/오브젝트권한에 대해서 쿼리를 짜보면서 공부하고 있는데요

 

현재 system 스키마로 CREATE USER a_user IDENTIFIED BY ~~~;  //  CREATE USER b_user IDENTIFIED BY ~~~; 

 

를 통해서 다른 스키마 2개를 만들었습니다.

 

a_user 스키마에 접속하여 AA 라는 테이블을 만들고 기본키 제약조건을 걸지 않았는데, b_user에서 a_user의 AA 테이블 A_NAME 컬럼에 기본키를 추가하고 싶습니다.

 

OCP를 준비하면서 "다른 스키마에 기본키를 추가하려면 시스템권한이 필요하다. 맞는 선지인가?" 라는 지문때문에 실습을 해보고 있는데

 

ALTER ANY TABLE 권한을 주어도 기본키가 추가되지 않습니다.

 

혹시 아예 불가능한걸까요? 가능하다면 어느 권한을 부여해야될지를 잘 모르겠습니다 ㅠㅠ

by pajama [2020.05.14 15:18:03]

ALTER TABLE 문장의 설명을 보니 다른 스키마에 primary key를 추가하려면 인덱스를 만드는 권한이 필요하다고 합니다.

Additional Prerequisites for Constraints and Triggers To enable a unique or primary key constraint, you must have the privileges necessary to create an index on the table. You need these privileges because Oracle Database creates an index on the columns of the unique or primary key in the schema containing the table.

https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_3001.htm#SQLRF01001

 

그래서 인덱스를 만들때 필요한 권한에 대해서 살펴보니, 다른 스키마에 대한 인덱스를 만드려면 CREATE ANY INDEX 권한이 필요하다는군요.

To create an index in another schema, you must have the CREATE ANY INDEX system privilege.

https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_5011.htm#SQLRF01209

 

ALTER (ANY TABLE)와 CREATE ANY INDEX 권한을 주시면 됩니다.


by bxmst9 [2020.05.14 15:21:30]

헉...

SYSTEM 계정으로 들어가서 GRANT CREATE ANY INDEX TO B_USER;

B_USER로 접속후

ALTER TABLE A_USER.AA

ADD CONSTRAINT A_PKEY PRIMARY KEY(A_NAME); 하니까 됐습니다!! 너무 감사드립니다!!! 

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