{"id":437,"date":"2014-06-01T14:56:23","date_gmt":"2014-06-01T06:56:23","guid":{"rendered":"http:\/\/www.royalwzy.com\/?p=437"},"modified":"2014-08-15T14:58:32","modified_gmt":"2014-08-15T06:58:32","slug":"%e6%80%a7%e8%83%bd%e8%b0%83%e4%bc%98%e5%b7%a5%e5%85%b702-sql-access-advisor%e5%b7%a5%e5%85%b7%e7%9a%84%e4%bd%bf%e7%94%a8","status":"publish","type":"post","link":"http:\/\/www.royalwzy.com\/?p=437","title":{"rendered":"\u6027\u80fd\u8c03\u4f18\u5de5\u517702&#8211;Sql Access Advisor\u5de5\u5177\u7684\u4f7f\u7528"},"content":{"rendered":"<p>SAA(Sql Access Advisor)\u5de5\u5177\u7684\u4f7f\u7528<\/p>\n<div>\n<ol>\n<li>SAA\u53ef\u4ee5\u505a\u4ec0\u4e48:\n<ol>\n<li>\u5728\u7ed9\u5b9a\u7684\u8d1f\u8f7d\u4e0a\u63a8\u8350\u4e00\u4e9b\u7269\u5316\u89c6\u56fe,\u7269\u5316\u89c6\u56fe\u65e5\u5fd7\u548c\u7d22\u5f15;<\/li>\n<li>\u63a8\u8350\u7684\u7d22\u5f15\u5305\u62ecBitmap\u7d22\u5f15,\u57fa\u4e8e\u51fd\u6570\u7684\u7d22\u5f15\u548cB-Tree\u7d22\u5f15;<\/li>\n<li>\u63a8\u8350\u5982\u4f55\u521b\u5efa\u7269\u5316\u89c6\u56fe,\u4ee5\u81f3\u4e8e\u53ef\u4ee5\u5b9e\u73b0\u5feb\u901f\u5237\u65b0\u548c\u67e5\u8be2\u91cd\u5199;<\/li>\n<\/ol>\n<\/li>\n<li>SAA\u7684\u4f7f\u7528\u6a21\u578b:\n<ol>\n<li>SQL\u7684\u6765\u6e90:\n<ol>\n<li>SQL Cache:\u5373\u5f53\u524dv$sql\u89c6\u56fe\u4e2d\u8bb0\u5f55\u7684sql\u8bed\u53e5;<\/li>\n<li>User-defined:\u81ea\u5b9a\u4e49\u4e00\u4e2a\u8868,\u8bb0\u5f55\u6267\u884c\u7684sql\u8bed\u53e5\u548c\u6267\u884csql\u8bed\u53e5\u7684\u7528\u6237,\u7136\u540e\u628a\u8fd9\u4e2a\u8868\u4f20\u7ed9SAA;<\/li>\n<li>STS:\u4f7f\u7528Sql Tuning Set,\u4e3b\u8981\u662f\u4ece\u8d1f\u8f7d\u4e2d\u83b7\u5f97;<\/li>\n<\/ol>\n<\/li>\n<li>\u7ed9\u51fa\u7684\u5efa\u8bae\uff1a\n<ol>\n<li>Simultaneously considers index solutions, materialized view solutions, or combinations of both;<\/li>\n<li>Considers storage for creation and maintenance costs;<\/li>\n<li>Does not generate drop recommendations for partial workloads;<\/li>\n<li>Optimizes materialized views for maximum query rewrite usage and fast refresh;<\/li>\n<li>Recommends materialized view logs for fast refresh;<\/li>\n<li>Combines similar indexes into a single index;<\/li>\n<li>Generates recommendations that support multiple workload queries;<\/li>\n<\/ol>\n<\/li>\n<li>\u67b6\u6784\u56fe; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<img decoding=\"async\" alt=\"\" src=\"file:\/\/\/C:\/Users\/ADMINI~1\/AppData\/Local\/Temp\/enhtmlclip\/Image(305).png\" \/><\/li>\n<li>\u63a8\u8350\u7684\u4e24\u79cd\u65b9\u5f0f:Comprehensive\u548cLimited;\n<ol>\n<li>Add new index on table or materialized view;<\/li>\n<li>Drop an unused index;<\/li>\n<li>Modify an existing index by changing the index type;<\/li>\n<li>Modify an existing index by adding columns at the end;<\/li>\n<li>Add a new materialized view;<\/li>\n<li>Drop an unused materialized view;<\/li>\n<li>Add a new materialized view log;<\/li>\n<li>Modify an existing materialized view log to add new columns or clauses;<\/li>\n<li>Comprehensive\u53ef\u4ee5\u5206\u67901-8\u6240\u6709\u7684\u63a8\u8350;<\/li>\n<li>Limited\u53ea\u80fd\u5206\u67901,4,5,7,8\u63a8\u8350;<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li>\u4f7f\u7528SAA\u9700\u8981\u7684\u6743\u9650:\n<ol>\n<li>ADVISOR\u7684\u7cfb\u7edf\u6743\u9650;<\/li>\n<li>\u76ee\u6807\u8868\u7684SELECT\u6743\u9650,\u800c\u4e14\u8fd9\u4e2a\u6743\u9650\u4e0d\u80fd\u4ece\u4e00\u4e2a\u89d2\u8272\u4e2d\u83b7\u5f97;<\/li>\n<\/ol>\n<\/li>\n<li>\u4f7f\u7528SAA\u5de5\u5177:\n<ol>\n<li>\u6267\u884c\u8d1f\u8f7d;<\/li>\n<li>\u4f7f\u7528EM\u4e2d\u56fe\u5f62\u5316\u754c\u9762;<\/li>\n<li>\u4f7f\u7528\u811a\u672c\u8c03\u7528DMBS_ADVISOR\u5305;<\/li>\n<\/ol>\n<\/li>\n<li>\u4f7f\u7528DMBS_ADVISOR\u5305:\n<ol>\n<li>\u6b65\u9aa4:\n<ol>\n<li>\u521b\u5efa\u4e00\u4e2a\u4efb\u52a1,\u5e76\u5b9a\u4e49\u53c2\u6570;<\/li>\n<li>\u5b9a\u4e49\u8d1f\u8f7d;<\/li>\n<li>\u751f\u6210\u4e00\u4e9b\u5efa\u8bae;<\/li>\n<li>\u67e5\u770b\u5e76\u5e94\u7528\u5efa\u8bae;<\/li>\n<\/ol>\n<\/li>\n<li>SAA\u7684\u5de5\u4f5c\u6d41;<img decoding=\"async\" alt=\"\" src=\"file:\/\/\/C:\/Users\/ADMINI~1\/AppData\/Local\/Temp\/enhtmlclip\/Image(306).png\" \/><\/li>\n<li>\u521b\u5efa\u4e00\u4e2a\u4efb\u52a1:DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, :task_id, :task_name);<\/li>\n<li>\u8bbe\u7f6eSAA\u7684\u53c2\u6570:\n<ol>\n<li>\u8bbe\u7f6e\u4efb\u52a1\u7684\u53c2\u6570:DBMS_ADVISOR.SET_TASK_PARAMETER(:task_name, parameter, value);<\/li>\n<li>\u8bbe\u7f6e\u8d1f\u8f7d\u7684\u53c2\u6570:DBMS_ADVISOR.SET_SQLWKLD_PARAMETER(:workload_name, parameter, value);<\/li>\n<\/ol>\n<\/li>\n<li>\u521b\u5efa\u6a21\u677f:DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, :task_id, :task_name, template=&gt;:template_name, is_template=&gt;&#8217;TRUE&#8217;);<\/li>\n<li>\u521b\u5efa\u4e00\u4e2a\u8d1f\u8f7d:DBMS_ADVISOR.CREATE_SQLWKLD(:workload_name);\n<ol>\n<li>SQL Tuning Sets:DBMS_ADVISOR.IMPORT_SQLWKLD_STS();<\/li>\n<li>\u7528\u6237\u81ea\u5b9a\u4e49\u8d1f\u8f7d:DBMS_ADVISOR.IMPORT_SQLWKLD_USER();<\/li>\n<li>SQL Cache:DBMS_ADVISOR.IMPORT_SQLWKLD_SQLCACHE();<\/li>\n<li>\u5355\u6761\u7684SQL\u8bed\u53e5:DBMS_ADVISOR.ADD_SQLWKLD_STATEMENT();<\/li>\n<li>\u67d0\u4e2a\u7528\u6237\u4e0b\u7684SQL\u8bed\u53e5:DBMS_ADVISOR.IMPORT_SQLWKLD_SCHEMA();<\/li>\n<\/ol>\n<\/li>\n<li>\u5220\u9664\u8d1f\u8f7d:DBMS_ADVISOR.DELETE_SQLWKLD(:workload_name);<\/li>\n<li>\u4efb\u52a1\u4e0e\u8d1f\u8f7d\u5173\u8054:DBMS_ADVISOR.ADD_SQLWKLD_REF(:task_name, :workload_name);<\/li>\n<li>\u751f\u6210\u5efa\u8bae\u5e76\u628a\u5efa\u8bae\u4fdd\u5b58\u5728SAA\u7684\u8d44\u6e90\u5e93:DBMS_ADVISOR.EXECUTE_TASK(:task_name);\n<ol>\n<li>\u76f8\u5e94\u7684\u89c6\u56fe\u4e3a:dba\/user_advisor_recommendations;<\/li>\n<li>\u6216\u8005\u4f7f\u7528dbms_advisor.get_task_script\u751f\u6210\u76f8\u5e94\u7684\u811a\u672c;<\/li>\n<\/ol>\n<\/li>\n<li>SAA\u7684\u4e3b\u8981\u5efa\u8bae\u6709:\n<ol>\n<li>\u521b\u5efa\/\u5220\u9664\u7269\u5316\u89c6\u56fe;<\/li>\n<li>\u521b\u5efa\/\u5220\u9664\u7269\u5316\u89c6\u56fe\u65e5\u5fd7;<\/li>\n<li>\u521b\u5efa\/\u5220\u9664\u7d22\u5f15;<\/li>\n<li>\u6536\u96c6\u7edf\u8ba1\u4fe1\u606f;<\/li>\n<\/ol>\n<\/li>\n<li>\u751f\u6210SQL\u811a\u672c:\n<ol>\n<li>\u521b\u5efaDIRECTORY;<\/li>\n<li>\u6388\u6743\u7ed9\u7528\u6237;<\/li>\n<li>\u751f\u6210\u811a\u672c;<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li>\u5982\u679c\u53ea\u662f\u60f3\u8c03\u4f18\u4e00\u6761SQL\u8bed\u53e5\u7684\u8bdd,\u53ef\u4ee5\u6267\u884c\u5feb\u901f\u8c03\u4f18,\u4f7f\u7528DBMS_ADVISOR.QUICK_TUNE()\u8fc7\u7a0b;<\/li>\n<li>\u5bf9\u4e8e\u7269\u5316\u89c6\u56fe\u7684\u4f18\u5316:\n<ol>\n<li>DBMS_MVIEW.EXPLAIN_MVIEW:\u67e5\u770b\u4f7f\u7528\/\u4e0d\u4f7f\u7528\u7269\u5316\u89c6\u56fe\u7684\u539f\u56e0;<\/li>\n<li>DBMS_MVIEW.EXPLAIN_REWRITE:\u4e3a\u6ca1\u6709\u4e48\u6709\u4f7f\u7528\u67e5\u8be2\u91cd\u5199,\u5982\u679c\u4f7f\u7528\u4e86,\u4f7f\u7528\u7684\u54ea\u4e2a\u7269\u5316\u89c6\u56fe;<\/li>\n<li>DBMS_ADVISOR.TUNE_MVIEW:\u751f\u6210\u5feb\u901f\u5237\u65b0\u7269\u5316\u89c6\u56fe\u548c\u751f\u6210\u67e5\u8be2\u91cd\u5199\u7684\u5efa\u8bae;<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/div>\n<div><\/div>\n<div>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; \u4f7f\u7528SAA\u5de5\u5177\u00a0&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/div>\n<div>&#8212; 1.\u6267\u884c\u8d1f\u8f7d;<\/div>\n<div>CONNECT \/ AS SYSDBA;<br \/>\nALTER USER sh IDENTIFIED BY oracle ACCOUNT UNLOCK;<br \/>\nGRANT DBA TO sh;<br \/>\nALTER SYSTEM FLUSH shared_pool;<br \/>\nALTER SYSTEM FLUSH buffer_cache;<br \/>\nCONNECT sh\/oracle;<br \/>\nSET autotrace traceonly stat;<\/p>\n<p>SELECT c.cust_last_name, SUM(s.amount_sold) AS dollars, SUM(s.quantity_sold) AS quantity<br \/>\nFROM sales s, customers c, products p<br \/>\nWHERE c.cust_id = s.cust_id AND<br \/>\ns.prod_id = p.prod_id AND<br \/>\nc.cust_state_province IN (&#8216;Dublin&#8217;, &#8216;Galway&#8217;)<br \/>\nGROUP BY c.cust_last_name;<\/p>\n<p>SELECT c.cust_id, SUM(amount_sold) AS dollar_sales<br \/>\nFROM sales s, customers c<br \/>\nWHERE s.cust_id = c.cust_id<br \/>\nGROUP BY c.cust_id;<\/p>\n<p>SELECT SUM(unit_cost) FROM costs GROUP BY prod_id;<br \/>\nSELECT * FROM customers WHERE cust_postal_code = &#8216;83786&#8217;;<\/p><\/div>\n<div><\/div>\n<div>&#8212; 2.\u4f7f\u7528EM\u4e2d\u7684SAA\u5de5\u5177;<\/div>\n<div>1.Databaes Instance-&gt;Advisor Central-&gt;SQL Access Advisor;<\/div>\n<div><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"file:\/\/\/C:\/Users\/ADMINI~1\/AppData\/Local\/Temp\/enhtmlclip\/Image(307).png\" width=\"1043\" height=\"306\" \/><\/div>\n<div>2.\u9009\u62e9SQL\u8bed\u53e5\u7684\u6765\u6e90:\u9009\u62e9\u4ece\u5185\u5b58\u4e2d\u7684SQL\u8bed\u53e5;<\/div>\n<div><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"file:\/\/\/C:\/Users\/ADMINI~1\/AppData\/Local\/Temp\/enhtmlclip\/Image(308).png\" width=\"1036\" height=\"510\" \/><\/div>\n<div>3.\u9009\u62e9\u63a8\u8350\u7684\u9009\u9879:\u751f\u6210\u7d22\u5f15\u548c\u7269\u5316\u89c6\u56fe,\u5e76\u4f7f\u7528\u7efc\u5408\u6a21\u5f0f;<\/div>\n<div><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"file:\/\/\/C:\/Users\/ADMINI~1\/AppData\/Local\/Temp\/enhtmlclip\/Image(309).png\" width=\"1023\" height=\"528\" \/><\/div>\n<div>4.\u7cfb\u7edf\u521b\u5efa\u4e86\u4e00\u4e2a\u4f5c\u4e1a,\u6307\u5b9a\u7acb\u5373\u6267\u884c;<\/div>\n<div><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"file:\/\/\/C:\/Users\/ADMINI~1\/AppData\/Local\/Temp\/enhtmlclip\/Image(310).png\" width=\"1029\" height=\"426\" \/><\/div>\n<div>5.\u67e5\u770b\u4f5c\u4e1a\u5df2\u5b8c\u6210;<\/div>\n<div><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"file:\/\/\/C:\/Users\/ADMINI~1\/AppData\/Local\/Temp\/enhtmlclip\/Image(311).png\" width=\"982\" height=\"123\" \/><\/div>\n<div>6.\u7136\u540e\u67e5\u770b\u548c\u91c7\u7528\u76f8\u5e94\u7684\u5efa\u8bae;<\/div>\n<div><\/div>\n<div>&#8212; 3.\u4f7f\u7528\u811a\u672c\u8c03\u7528DBMS_ADVISOR\u5305;<\/div>\n<div>1.\u5b9a\u4e49\u53d8\u91cf;<\/div>\n<div>VARIABLE v_task_id NUMBER;<br \/>\nVARIABLE v_task_name VARCHAR2(255);<br \/>\nVARIABLE v_wkld_name VARCHAR2(255);<\/div>\n<div><\/div>\n<div>2.\u6307\u5b9a\u4efb\u52a1\u7684\u540d\u79f0\u548c\u8d1f\u8f7d\u7684\u540d\u79f0;<br \/>\nEXECUTE :v_task_name := &#8216;my_task&#8217;;<br \/>\nEXECUTE :v_wkld_name := &#8216;my_sql_wkld&#8217;;<\/div>\n<div><\/div>\n<div>3.\u5220\u9664\u4e4b\u524d\u7684\u4efb\u52a1\u548c\u8d1f\u8f7d;<br \/>\nBEGIN<br \/>\ndbms_advisor.delete_sqlwkld_ref(:v_task_name, :v_wkld_name);<br \/>\ndbms_advisor.delete_sqlwkld(:v_wkld_name);<br \/>\ndbms_advisor.delete_task(:v_task_name);<br \/>\nEXCEPTION<br \/>\nWHEN OTHERS THEN<br \/>\nNULL;<br \/>\nEND;<br \/>\n\/<\/div>\n<div>\n4.\u521b\u5efa\u4e00\u4e2a\u4efb\u52a1;<br \/>\nEXECUTE DBMS_ADVISOR.CREATE_TASK(DBMS_ADVISOR.SQLACCESS_ADVISOR, :v_task_id, :v_task_name);<\/p>\n<p>5.\u67e5\u770b\u5f53\u5929\u524d\u7684\u4f18\u5316\u4efb\u52a1;<br \/>\nSELECT * FROM user_advisor_tasks;<\/p>\n<p>6.\u8bbe\u7f6e\u4efb\u52a1\u7684\u53c2\u6570,\u751f\u6210\u6240\u6709\u5efa\u8bae,\u5e76\u4f7f\u7528\u7efc\u5408\u6a21\u5f0f;<br \/>\nEXECUTE dbms_advisor.set_task_parameter(:v_task_name, &#8216;EXECUTION_TYPE&#8217;, &#8216;FULL&#8217;);<br \/>\nEXECUTE dbms_advisor.set_task_parameter(:v_task_name, &#8216;MODE&#8217;, &#8216;COMPREHENSIVE&#8217;);<\/p><\/div>\n<div><\/div>\n<div>7.\u521b\u5efa\u4e00\u4e2a\u8d1f\u8f7d;<\/div>\n<div>EXECUTE dbms_advisor.create_sqlwkld(:v_wkld_name);<\/div>\n<div><\/div>\n<div>8.\u628a\u4efb\u52a1\u4e0e\u8d1f\u8f7d\u5173\u8054;<br \/>\nEXECUTE dbms_advisor.add_sqlwkld_ref(:v_task_name, :v_wkld_name);<\/p>\n<\/div>\n<div>9.\u67e5\u770b\u4efb\u52a1\u4e0e\u8d1f\u8f7d\u7684\u6620\u5c04\u5173\u7cfb;<\/div>\n<div>SELECT * FROM user_advisor_sqla_wk_map;<\/p>\n<p>10.\u5bfc\u5165\u8d1f\u8f7d,\u4f7f\u7528SQL Cache\u7684\u6a21\u5f0f;<br \/>\nVARIABLE v_saved_stmts NUMBER;<br \/>\nVARIABLE v_failed_stmts NUMBER;<br \/>\nEXECUTE DBMS_ADVISOR.IMPORT_SQLWKLD_SQLCACHE(:v_wkld_name, &#8216;APPEND&#8217;, 2, :v_saved_stmts, :v_failed_stmts);<\/p><\/div>\n<div><\/div>\n<div>11.\u67e5\u770b\u8d1f\u8f7d\u4e2d\u7684SQL\u8bed\u53e5;<br \/>\nSELECT * FROM user_advisor_sqlw_stmts;<\/div>\n<div><\/div>\n<div>12.\u6267\u884c\u4efb\u52a1,\u751f\u6210\u4f18\u5316\u5efa\u8bae;<br \/>\nEXECUTE DBMS_ADVISOR.EXECUTE_TASK(:v_task_name);<\/div>\n<div><\/div>\n<div>13.\u67e5\u770b\u4f18\u5316\u5efa\u8bae;<br \/>\nSELECT * FROM user_advisor_recommendations;<\/div>\n<div><\/div>\n<div>14.\u751f\u6210\u4f18\u5316\u5efa\u8bae\u7684\u811a\u672c;<\/div>\n<div>\u76f4\u63a5\u67e5\u770b:SELECT\u00a0DBMS_ADVISOR.GET_TASK_SCRIPT(:v_task_name) FROM dual;<\/div>\n<div>\u6216\u8005\u521b\u5efa\u76ee\u5f55,\u751f\u6210\u5efa\u8bae\u7684\u811a\u672c;<\/div>\n<div>CONNECT \/ AS SYSDBA;<br \/>\nDROP DIRECTORY ADVISOR_RESULTS;<br \/>\nCREATE OR REPLACE DIRECTORY ADVISOR_RESULTS AS &#8216;\/home\/oracle&#8217;;<br \/>\nGRANT READ, WRITE ON DIRECTORY ADVISOR_RESULTS TO sh;<\/div>\n<div>\nCONNECT SH\/ORACLE<br \/>\nEXECUTE DBMS_ADVISOR.CREATE_FILE(DBMS_ADVISOR.GET_TASK_SCRIPT(:v_task_name), &#8216;ADVISOR_RESULTS&#8217;, &#8216;advscript.sql&#8217;);<\/div>\n<div>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; \u4f7f\u7528SAA\u5de5\u5177\u00a0&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/div>\n<div><\/div>\n<div>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; SAA\u7684\u5feb\u901f\u8c03\u4f18 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/div>\n<div>1.\u5b9a\u4e49\u53d8\u91cf;<\/div>\n<div>CONNECT sh\/oracle;<br \/>\nVARIABLE v_task_name VARCHAR2(30);<br \/>\nEXECUTE :v_task_name := &#8216;quick_task&#8217;;<\/div>\n<div>2.\u6267\u884c\u5feb\u901f\u8c03\u4f18,\u53ea\u80fd\u6267\u884c\u4e00\u6761SQL\u8bed\u53e5,\u9ed8\u8ba4\u662f\u5728\u5f53\u524d\u7528\u6237\u4e0b\u6267\u884c;<br \/>\nEXECUTE dbms_advisor.quick_tune(dbms_advisor.sqlaccess_advisor, :v_task_name, &#8216;SELECT AVG(amount_sold) FROM sh.sales WHERE promo_id=10&#8217;);<\/div>\n<div>3.\u67e5\u770b\u4f18\u5316\u5efa\u8bae\u7ed3\u679c;<\/div>\n<div>SELECT\u00a0DBMS_ADVISOR.GET_TASK_SCRIPT(:v_task_name) FROM dual;<\/div>\n<div>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; SAA\u7684\u5feb\u901f\u8c03\u4f18 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/div>\n","protected":false},"excerpt":{"rendered":"<p>SAA(Sql Access Advisor)\u5de5\u5177\u7684\u4f7f\u7528 SAA\u53ef\u4ee5\u505a\u4ec0\u4e48: \u5728\u7ed9\u5b9a\u7684\u8d1f\u8f7d\u4e0a\u63a8\u8350\u4e00\u4e9b\u7269\u5316\u89c6\u56fe, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[34,8],"class_list":["post-437","post","type-post","status-publish","format-standard","hentry","category-oracle","tag-oracle","tag-performance"],"_links":{"self":[{"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=\/wp\/v2\/posts\/437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=437"}],"version-history":[{"count":0,"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=\/wp\/v2\/posts\/437\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=437"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}