뷰에 대한 읽기 권한
| AutoTrace | SQLTrace | |
|---|---|---|
| 방법1. alter session 권한 | ||
| 방법2. dbms_xplan.display_cursor 이용 | ||
| 필요한 뷰권한 | [실행통계를 위해] | [실제 실행계획을 위해] |
| v_$sesstat | v_$session | |
| v_$statname | v_$sql | |
| v_$mystat | v_$sql_plan | |
| [캐싱된 커서의 RowSource별 수행통계] | ||
| v_$session | ||
| v_$sql | ||
| v_$sql_plan_statistics_all | ||
| 위 권한을 포함하는 롤 | select_catalog_role | |
| dba | ||
| plustrace |
-- 화면 CLEAR
cl scr
set linesize 600
set pagesize 200
set autotrace on
select * from M_ACC WHERE ACC_NO = 'ACC1';
ACC_NO ACC_NM
-------- -------
ACC1 1번계좌 0
Execution Plan
----------------------------------------------------------
Plan hash value: 2609082497
----------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 18 | 1 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| M_ACC | 1 | 18 | 1 (0)| 00:00:01 |
|* 2 | INDEX UNIQUE SCAN | PK_M_ACC | 1 | | 0 (0)| 00:00:01 |
----------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("ACC_NO"='ACC1')
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
2 consistent gets
0 physical reads
0 redo size
740 bytes sent via SQL*Net to client
403 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
원인) 현재 일반사용자에 plustrce권한이 없어서 발생함
해결법)
C:\\Users\\wonjin>sqlplus
SQL*Plus: Release 19.0.0.0.0 - Production on 화 4월 23 22:53:13 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
사용자명 입력:sys as sysdba
비밀번호 입력:1234
다음에 접속됨:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> set linesize 200
SQL> set pagesize 200
SQL> CL SCR
SQL> @?/sqlplus/admin/plustrce.sql -- 스크립트실행을 통해 plustrace롤을 생성한다.
1행에 오류:
ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. -- 멀티테넌트환경에서는 C##을 붙여야함
SQL> alter session set "_ORACLE_SCRIPT"=true; -- 해결책
SQL> @?/sqlplus/admin/plustrce.sql -- 다시 시도해보면 plustrace롤이 잘 생성된다.
SQL> grant plustrace to ora_sql_test; -- 일반사용자에게 롤 부여
| 옵션 | SQL 실행 | SQL실행 결과집합 출력 | SQL실행통계출력 | 예상실행계획출력 |
|---|---|---|---|---|
| set autotrace on | O | O | O | O |
| set autotrace on explain | O | O | X | O |
| set autotrace on statistics | O | O | O | X |
| set autotrace traceonly | O | X | O | O |
| set autotrace traceonly explain | X | X | X | O |
| set autotrace traceonly statistics | O | X | O | X |