본문 바로가기
SQL

[Oracle]SQLPlus에서 'set autotrace on' 설정 시 에러 조치

by Baley 2024. 6. 9.

오라클(Oracle) 21C버전에서 SQLPlus에서 'set autotrace on' 설정 시 에러 조치(맨 하단에 요약있음)

 

1. 에러 1: SP2-0618: 세션 식별자를 찾을 수 없습니다. PLUSTRACE 롤이 사용으로 설정되었는지 점검하십시오

SQL Plus 에서 set autotrace on을 입력하면 아래와 같은 에러 메세지가 나타났다.

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

구글 검색 결과 해당 에러에 대한 해결법이 버전별로 혼재되어 있어 21C버전에 맞게 조치방법을 정리하고자 한다.

 

2. 에러1의 원인

에러 메세지에서 파악할 수 있듯 PLUSTRACE 롤이 부재하기 때문에 발생한다. 10.2 버전 이후로 PLAN_TABLE을 따로 생성해 줄 필요가 없어진 것과 해당 에러가 같이 언급되어 있는 글이 많기에 PLAN_TABLE과 관련이 있다고 생각할 수 있으나 PLAN_TABLE과는 관계없는 별개의 권한 설정 문제이다.

 

3. 에러1 해결방법

PLUSTRACE란 롤이 없어서 발생하므로 PLUSTRACE 롤을 생성해 주면 된다.

PLUSTRACE 롤을 생성하는 SQL스크립트는 Oracle homepath에 이미 있어 이를 아래의 명령어로 실행한다.

@?/sqlplus/admin/plustrce

@? 는 ORACLE_HOME 환경변수인 Oracle 소프트웨어가 설치된 디렉토리를 나타낸다.

그러나 @?/sqlplus/admin/plustrce를 실행하면 'ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다.'라는 에러 메세지가 나타나고 PLUSTRACE 롤은 생성되지 않는다.

plustrce 실행 실패

 

4. 에러2: ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 

오라클 12C부터 멀티테넌트 아키텍처가 도입되면서 데이터베이스가 컨테이너 데이터베이스(CDB)와 플러그형 데이터베이스(PDB)로 나뉘게 된다. CDB라는 컨테이너 안에 탈부착 가능한 PDB가 들어가는 방식이다. CDB에 롤을 생성할 경우 CDB와 PDB에서 모두 이용가능하다.

 

5. 에러2의 원인

12C 이후 버전에서는 CDB에 공통 롤을 생성할 때는 롤의 이름 앞에 C##를 붙이지 않으면 부적합한 이름으로 간주된다. C##PLUSTRACE가 아니기 때문에 에러가 발생한 것이다.

 

6. 에러2 해결방법

C##을 붙여도 되지만 SESSION을 "_ORACLE_SCRIPT"=true;로 설정하면 C##를 붙이지 않고도 유저나 롤을 생성할 수 있다.

@?/sqlplus/admin/plustrce 스크립트를 수정 없이 실행하기 위해  아래의 명령어를 실행하여 설정을 변경한다.

ALTER SESSION SET "_ORACLE_SCRIPT"=true;

를 설정하고 다시 @?/sqlplus/admin/plustrce를 실행한다.

plustrce 정상 실행

스크립트가 정상 실행되는 것을 볼 수 있다.

 

7. PLUSTRACE 권한 부여

권한 생성까지 완료했다면

GRANT PLUSTRACE TO 유저명;

을 통해 유저에게 PLUSTRACE 권한을 부여한다.

 

8. set autotrace on 설정 재시도

권한의 부여한 유저로 SQLPlus에 접속하여 set autotrace on을 입력한다. 

set autotrace on 설정

 

autotrace가 작동하는 것을 볼 수 있다.

 

9. 조치방법 요약

21C 버전에서 'SP2-0618: 세션 식별자를 찾을 수 없습니다. PLUSTRACE 롤이 사용으로 설정되었는지 점검하십시오'가 발생할 경우 아래와 같이 조치할 수 있다.

1) SQLPlus에 sys as sysdba로 로그인

2) SQLPlus에서 아래 명령어 실행

ALTER SESSION SET "_ORACLE_SCRIPT"=true;

@?/sqlplus/admin/plustrce

GRANT PLUSTRACE TO [유저명];

3) 권한을 부여한 유저로 로그인

4) set autotrace on 입력

 


참고링크

https://asktom.oracle.com/ords/asktom.search?file=trace#presentation-downloads-reg

https://forums.oracle.com/ords/apexds/post/question-about-autotrace-sp2-0618-and-sp2-0611-3455

https://wwwnghks.tistory.com/138

https://yonghwankim-dev.tistory.com/322

'SQL' 카테고리의 다른 글

[SQL][#1][강의]기초 데이터 분석을 위한 핵심 SQL  (0) 2024.03.24

댓글