oracle

sqlplusで実行計画を確認する

CentOSにインストールしたOracle 11g XEでsqlplusでSQLの実行計画を確認する手順です。

サンプルスキーマの作成

サンプルスキーマのscottを作成します。
スクリプトの保管場所が変わったみたいです。

-bash-4.1$ sqlplus system @/u01/app/oracle/product/11.2.0/xe/rdbms/admin/utlsampl.sql
SQL*Plus: Release 11.2.0.2.0 Production on 土 11月 3 14:11:37 2012
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
パスワードを入力してください:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
に接続されました。
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Productionとの接続が切断されました。
-bash-4.1$ 

設定

DBA権限でplustrace.sqlで実行することでautotraceに必要なロールが作成されます。
実行計画と統計情報を確認するためのユーザに権限を付与します。

$ sudo su - oracle
-bash-4.1$ . /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
-bash-4.1$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.2.0 Production on 土 11月 3 00:00:47 2012
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
に接続されました。
SQL> @/u01/app/oracle/product/11.2.0/xe/sqlplus/admin/plustrce.sql
SQL>
SQL> drop role 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>
SQL> set echo off
SQL> connect system
パスワードを入力してください:
接続されました。
SQL> grant plustrace to scott;
権限付与が成功しました。
SQL> 

次に権限を付与したユーザで実行計画および統計情報を保管するためのテーブルを作成します。

SQL> connect scott/tiger
接続されました。
SQL> @/u01/app/oracle/product/11.2.0/xe/rdbms/admin/utlxplan.sql
表が作成されました。
SQL> 

実行計画と統計情報の確認

set autotrace onを実行して該当するSQLを実行するとSQLの結果と実行計画、統計情報が表示されます。

SQL> set autotrace on
SQL> r
1* select * from emp
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7369 SMITH CLERK 7902 80-12-17 800 20
7499 ALLEN SALESMAN 7698 81-02-20 1600 300 30
7521 WARD SALESMAN 7698 81-02-22 1250 500 30
7566 JONES MANAGER 7839 81-04-02 2975 20
7654 MARTIN SALESMAN 7698 81-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 81-05-01 2850 30
7782 CLARK MANAGER 7839 81-06-09 2450 10
7839 KING PRESIDENT 81-11-17 5000 10
7844 TURNER SALESMAN 7698 81-09-08 1500 0 30
7900 JAMES CLERK 7698 81-12-03 950 30
7902 FORD ANALYST 7566 81-12-03 3000 20
7934 MILLER CLERK 7782 82-01-23 1300 10
12行が選択されました。
実行計画
----------------------------------------------------------
Plan hash value: 3956160932
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 12 | 1044 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| EMP | 12 | 1044 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------
Note

タイトルとURLをコピーしました