我在假脱机查询结果时遇到问题,它或多或少始终显示没有实际成本,将行显示为一个且没有任何成本或添加任何东西,而不显示实际查询的统计信息。
我正在使用此设置:
current_date=$(date +%Y-%m-%d)
sqlplus -S "Username/password@mydatabase.bag" <<EOF >/output/Testoutput_$current_date.log
set verify off;
set colsep ,
SET AUTOTRACE ON
set headsep off
set pagesize 0
set trimspool on
set termout off
col v_spool noprint new_value v_spool
select 'Spoolfile'||
to_char(sysdate,'yyyy_mm_dd_hh24_mi_ss')||'.csv' v_spool from dual;
set termout on
spool /folder/subfolder/&&v_spool
set lines 12345 pages 12345;
EXPLAIN PLAN SET statement_id = 'example_plan1' FOR
select * from dbms.database1_1 where numberline like '%4214%';
SET TIMING OFF
spool off
EXIT
EOF
我希望以某种方式将解释结果假脱机到文件中,我需要进行哪些修改才能实现此目的,或者有其他方法?
答案 0 :(得分:0)
如果您尝试在SQL * Plus中运行它:
EXPLAIN PLAN SET statement_id = 'example_plan1' FOR
select * from dbms.database1_1 where numberline like '%4214%';
您会注意到它只是输出:
Explained.
您实际上必须使用DBMS_XPLAN选择EXPLAIN PLAN的结果-它将获得输出并假脱机到您的文件。
-- generate the explain plan
EXPLAIN PLAN SET statement_id = 'example_plan1' FOR
select * from dbms.database1_1 where numberline like '%4214%';
-- actually display the results
select plan_table_output
from table(dbms_xplan.display('plan_table',null,'typical'));