為了能取得圓滿成功,我將涉及到一些預備步驟,它們將在查看發生了什麼時需要,這些步驟包括運 行plustrce SQL指令碼、建立一個“EXPLAIN_PLAN”表、授予角色、配置sql*plus環境查看執行計畫。所有 這些步驟都包括在“Oracle 9i R2資料庫效能調整指南和參考”中“在sql*plus中使用自動跟蹤”,對於 Oracle 10g,這些步驟包括在“sql*plus使用者指南和參考10.2版”中“調整sql*plus”。
預備步驟
如果角色PLUSTRACE不存在,用ORACLE_HOME\sqlplus\admin目錄下的PLUSTRCE SQL指令碼來建立它,這 個指令碼相當簡單:
drop role plustrace;
create role plustrace;
grant select on v_$sesstat to plustrace;
grant select on v_$statname to plustrace;
grant select on v_$mystat to plustrace;
grant plustrace to dba with admin option;
檢查角色使用方式:
SQL> select role from dba_roles where role = 'PLUSTRACE';
ROLE
---------- ------
PLUSTRACE
使用者必須有(或有許可權訪問)一個PLAN_TABLE(它可以被命名為其他名字,但是預設的名字非常好) ,這個表是用ORACLE_HOME\rdbms\admin目錄下的UTLXPLAN SQL指令碼建立的。
SQL> show user
USER is "SYSTEM"
SQL> @?\rdbms\admin\utlxplan
Table created.
SQL> create public synonym plan_table for system.plan_table;
Synonym created.
SQL> grant select, update, insert, delete on plan_table to <你的使用者名稱>;
Grant succeeded.
SQL> grant plustrace to <你的使用者名稱>;
Grant succeeded.
我們的例子中使用的使用者是HR(可以在Oracle提供的樣本方案中找到)。
SQL> conn hr/hr
Connected.
SQL> set autotrace on
SQL> select * from dual;
D
-
X