기술 정보
home
채널 소개
home

DBA 권한 계정으로 PSM 실행 시 타 유저 테이블이 조회되지 않는 현상

문서 유형
장애 해결
분야
관리/환경설정
키워드
DBA
조회
조회권한
적용 제품 버전
6FS01
오류코드
8033

현상

DBA 권한을 가진 유저로 다른 유저의 오브젝트를 조회하는 PROCEDURE 혹은 FUNCTION 생성 시 TBR-8033: Specified schema object was not found가 발생하는 현상입니다.
참고
일반적으로 DBA 권한을 가진 유저는 다른 유저의 오브젝트를 조회할 수 있으나, PROCEDURE나 FUNCTION 등의 수행 환경에서는 특정 권한 없이는 접근이 불가합니다.

현상 재현

프로시저 생성
vi proc.sql CREATE OR REPLACE PROCEDURE SELECT_PROC_01 IS CURSOR cSor IS SELECT a, b FROM TEST.tbl_01; AAA number ; BBB VARCHAR2(30); BEGIN OPEN cSor; LOOP FETCH cSor INTO AAA, BBB; EXIT WHEN cSor%NOTFOUND; DBMS_OUTPUT.PUT_LINE(AAA || chr(9) || BBB); END LOOP; CLOSE cSor; END ; /
SQL
복사
DBA 권한 부여
SQL> select * from user_role_privs; GRANTEE GRANTED_RO ADMIN_OPTION DEFAULT_ROLE ------- ---------- ------------ ------------ TIBERO DBA NO YES TIBERO CONNECT YES YES TIBERO RESOURCE YES YES
SQL
복사
프로시저 생성 시도 - 오류 발생
SQL> @proc Warning: PROCEDURE created with compilation errors. SQL> show errors; Errors for Procedure TIBERO.SELECT_PROC_01: ERROR DESCRIPTION ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ TBR-8033: Specified schema object was not found. at line 4, column 27 of null: SELECT a, b FROM TEST.tbl_01;
SQL
복사

원인

Tibero 5 SP1까지는 DBA Role만으로도 수행이 가능했으나, Tibero 6부터는 DBA Role만으로는 일부 작업이 제한됩니다.
이는 Role 기반 권한이 PSM(Procedural Stored Module) 컴파일 또는 실행 시점에는 적용되지 않기 때문입니다. DBA Role에 의해 부여된 SELECT ANY TABLE 같은 권한은 다이렉트 SQL 세션에서는 동작하지만, PSM 내에서는 Role 기반 권한이 아니라 direct privilege (예: GRANT SELECT ON USER_B.TABLE_X TO USER_A)가 필요합니다.

해결

해당 테이블에 대한 SELECT 권한을 부여하여 해결할 수 있습니다
CONN sys/tibero GRANT SELECT ON TEST.TBL_01 TO TIBERO; CONN tibero/tmax @proc Procedure 'SELECT_PROC_01' created.
SQL
복사