안녕하세요.
궁금한 것이 많은 DB초보자 입니다.
지식이 부족하여 설명이 조금 이상할지라도
전문가분들께서 잘~ 알아들으시고 답변 해주리라 믿습니다.
제가 System계정에서 하나의 프로시져를 만들었습니다.
이 프로시져 안에는 통계정보를 수집하는 dbms_stats.gather_table_stats()실행문을 담고 있습니다.
대략 적자면 이런 식입니다.
create procedure 프로시져명
begin
dbms_stats.gather_table_stats( ownname => 'A', tabname => 'A_TBL',
end;
저 프로시져 안에서 A는 A라는 다른 계정을 의미하고 A_TBL은 A계정 안에 있는 테이블을 의미합니다.
프로시져를 돌리면 다음과 같은 에러가 발생합니다.
========================================
ORA-20000: Unable to analyze TABLE "A"."A_TBL", insufficient privileges or does not exist
ORA-06512: "SYS.DBMS_STATS", 줄 13427에서
ORA-06512: "SYS.DBMS_STATS", 줄 13457에서
ORA-06512: "SYSTEM.프로시져명", 줄 64에서
ORA-06512: 줄 1에서
========================================
아마도 system계정에서 A계정의 A_TBL에 직접 접근하지 못하나 봅니다..
그래서 프로시져를 다음과 같이 작성해 보았습니다.
create procedure 프로시져명
begin
dbms_stats.gather_table_stats( ownname => 'A', tabname => 'A.A_TBL',
end;
하지만 비슷한 에러문구가 발생합니다.
========================================
ORA-20001: A.A_TBL is an invalid identifier
ORA-06512: "SYS.DBMS_STATS", 줄 13437에서
ORA-06512: "SYS.DBMS_STATS", 줄 13457에서
ORA-06512: "SYSTEM.프로시져명", 줄 64에서
ORA-06512: 줄 1에서
========================================
현재 다른 방법이 없어서 A계정에서 프로시져를 만들어서 실행하는 방법으로 대신하려고 했는데
처리해야할 계정이 한두개가 아니고 각 계정마다 동일한 프로시져를 만든다는게 자원 낭비 같아서
이 방법만은 피하고 싶네요.
뭔가 해결 방안이 없을까요??
혹시 좋은 방법 아시는분 꼭꼭 답변 달아주십시요.
수고하시고
오늘도 즐거운 하루 되시길^^