如何创建无法访问控制台的EXPLAIN_PLAN表?是否可以选择在某个地方打勾?
答案 0 :(得分:0)
我相信你指的是“解释计划”命令中使用的 PLAN_TABLE 。在Oracle 11.2中,它已默认创建为SYS模式(PLAN_TABLE $)中的临时表,具有公共同义词和所有用户的权限。
所以“解释计划”应该开箱即用,然后你可以从表中读取结果:
explain plan for select * from dual;
select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------
Plan hash value: 272002086
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 2 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| DUAL | 1 | 2 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------
这是一个临时表,因此会话之间不会保存内容。如果您认为自己仍然需要计划表,我认为您可以使用此查询的结果创建一个与您帐户中的原始文件完全相同的内容:
select dbms_metadata.get_ddl('TABLE','PLAN_TABLE$', 'SYS') from dual;
您需要修改名称和所有者(删除“SYS。”和“$”),如果您需要,可以将其设为永久表。
希望这有帮助。