프로시저내 analyze 실행 0 4 2,271

by 농sql [Oracle 기초] 오라클 analyze [2019.05.22 14:31:44]


일반 쿼리로 ANALYZE 실행하면 정사적으로 처리되는데

프로시저 내부에서 실행하면 권한이 없다고 뜹니다!

EXECUTE권한을 줬는데 왜그런걸까요?

by 이준환 [2019.05.22 16:36:32]

 

 

통계정보작업을 직접 수행한 스키마(오라클계정)과

스토어드 프로시저의 소유자(오라클계정)가 다른 것으로 보여집니다.

해당 프로시저를 호출한 스키마에게는 그 프로시저를 실행(EXECUTE)할 권한이 필요하고, (이미 부여되었을 듯)

해당 프로시저의 소유자에 대해서는 통계정보수집과 관련된 권한의 부여가 되어야 할 상황 같습니다.

(아직 부여안된 듯)


by 농sql [2019.05.22 16:39:38]

직접 수행한 계정과 프로시저 있는 계정이 동일합니다.

왜 그런걸까요..?

모든 시스템 권한 주는 명령어가 있나요?


by 이준환 [2019.05.22 16:58:50]

 

 

물론 "GRANT ANALYZE ANY TO [스키마명];"으로 해당 권한을 줄 수는 있으나,

다소 넌센스한 상황으로 보여집니다.

동의어(SYNONYM) 존재 여부 또는 동의어 대상 객체의 차이도 영향이 있을 수 있으니,

프로시저 안의 EXECUTE IMMEDIATE 구문에서 대상 객체(테이블/인덱스)의 소유자를 직접 명시해 보시고

(TABLE_NAME → OWNER.TABLE_NAME)

프로시저 호출 시에도 소유자명을 명시해 보시길 바랍니다. (DBA_SYNONYMS도 확인)

또한

DBA_SYS_PRIVS

DBA_ROLE_PRIVS

DBA_TAB_PRIVS

에서 관련된 권한/롤 부여 현황도 확인해 보시길 바랍니다.

 


by 마농 [2019.05.22 16:53:29]

프로시져에서는 DML 만 가능합니다. DDL 안됨.

동적쿼리를 이용하면 가능할 수 있습니다.

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