Amazon

2012年10月29日月曜日

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

0 件のコメント: