기술 정보
home
채널 소개
home

PSM 객체 생성 시 접근 권한이 있는 객체임에도 컴파일 시 TBR-8033 에러 발생

문서 유형
장애 해결
분야
App개발
키워드
Grant
PRIVILEGE
PSM
적용 제품 버전
6FS07
6FS07PS
7FS01
7FS02
7FS02PS
오류 코드
8033

현상

A 유저가 B 유저의 테이블 등에 대해 SELECT 또는 DML 권한을 부여받았음에도 불구하고, 해당 테이블을 참조하는 Function, Procedure, Package 등을 생성하거나 컴파일할 경우 TBR-8033: Specified schema object was not found. 에러가 발생하며 컴파일에 실패합니다.
SQL> CREATE USER USER1 identified by tibero; User 'USER1' created. SQL> CREATE USER USER2 identified by tibero; User 'USER2' created. SQL> grant connect,resource,dba to USER1; Granted. SQL> conn user1/tibero; Connected to Tibero. SQL> create table user2.dummy(a number); Table 'USER2.DUMMY' created. SQL> insert into user2.dummy values(1); 1 row inserted. SQL> commit; Commit completed. SQL> select * from user2.dummy; A ---------- 1 1 row selected. SQL> CREATE OR REPLACE FUNCTION GET_VAL RETURN INT IS ret_val number; BEGIN select a into ret_val from USER2.DUMMY; RETURN ret_val; END; / Warning: FUNCTION created with compilation errors. SQL> show err Errors for Function USER1.GET_VAL: ERROR DESCRIPTION --------------------------------------------------------- TBR-8033: Specified schema object was not found. at line 5, column 30 of null: select a into ret_val from USER2.DUMMY; SQL> exit
SQL
복사

원인

객체를 컴파일할 때는 롤을 통해 부여 받은 권한은 인식되지 않으며, 반드시 GRANT ... TO ... 형태로 직접 부여된 권한만이 유효한 권한으로 인정됩니다.
따라서 A 유저가 B 유저의 객체에 대해 GRANT ... TO ... 형태로 직접 권한 부여를 받지 않은 경우에 컴파일 시 TBR-8033 오류가 발생하게 됩니다.

해결

컴파일 대상 객체에 대해 직접 GRANT를 통해 권한을 부여해야 합니다.
SQL> CREATE OR REPLACE FUNCTION GET_VAL RETURN INT IS ret_val number; BEGIN select a into ret_val from USER2.DUMMY; RETURN ret_val; END; / Warning: FUNCTION created with compilation errors. SQL> show err Errors for Function USER1.GET_VAL: ERROR DESCRIPTION --------------------------------------------------------- TBR-8033: Specified schema object was not found. at line 5, column 30 of null: select a into ret_val from USER2.DUMMY; SQL> conn sys/tibero Connected to Tibero. SQL> grant select on USER2.DUMMY to user1; Granted. SQL> conn user1/tibero Connected to Tibero. SQL> CREATE OR REPLACE FUNCTION GET_VAL RETURN INT IS ret_val number; BEGIN select a into ret_val from USER2.DUMMY; RETURN ret_val; END; / Function 'GET_VAL' created.
SQL
복사