본문 바로가기

IT/Database

[DB] sqlplus 에서 set autotrace on 에러가 발생하면

scott/tiger 에서 실행계획 및 filter/access 컬럼을 보기 위해서
set autotrace on 을 입력했을 때
다음과 같은 에러가 발생한다.

SQL> set autotrace on
SP2-0618: 세션 식별자를 찾을 수 없습니다. PLUSTRACE 롤이 사용으로 설정되었는지 점검하십시오
SP2-0611: STATISTICS 레포트를 사용 가능시 오류가 생겼습니다

위 에러가 발생한 것은
dba_roles 테이블에 트레이스 역할을 담당하는 PLUSTRACE 롤이 없기 때문이다.
오라클 10g 부터는 설치 시 기본적으로 sys.plan_table$ 테이블이 만든다. 또한 각 유저 계정에서 이 테이블을 사용할 수 있도록 public synonym을 기본적으로 생성해 두기 때문에 별도로 plan table을 만드는 sql 스크립트를 돌리지 않아도 된다.

그러므로 먼저 sqlplus 에서 sysdba 권한으로 plustrce.sql을 실행한다.

SQL>conn /as sysdba
연결되었습니다.

SQL> drop role plustrace;
drop role plustrace
          *
1행에 오류:
ORA-01919: 롤 'PLUSTRACE'(이)가 존재하지 않습니다


SQL> create role plustrace;

롤이 생성되었습니다.

SQL>
SQL> grant select on v_$sesstat to plustrace;

권한이 부여되었습니다.

SQL> grant select on v_$statname to plustrace;

권한이 부여되었습니다.

SQL> grant select on v_$mystat to plustrace;

권한이 부여되었습니다.

SQL> grant plustrace to dba with admin option;

권한이 부여되었습니다.

SQL> set echo off
그런 다음 다시 dba_roles 테이블에 PLUSTRACE 롤이 생성되었는지 확인한다.

유저 계정에 따라 PLUSTRACE 롤을 부여해야 하므로

SQL>grant plustrace to scott

권한이 부여되었습니다.

그리고 나서 scott 계정으로 연결한 다음 set autotrace on을 실행하면 된다