解析Oracle 8i/9i的計劃穩定性(1)
由Oralce8.1開始,Oracle增加了一個新的特性就是Stored Outlines,或者稱為Plan Stability(計劃穩定性)。這個特性帶來三個好處。首先,你可以最佳化開銷很大的語句的處理。第二,如果有一些語句Oracle需要花費長時間來優 化(而不是執行),你可以節省時間並且減少最佳化階段的競爭。最後,它可以讓你選擇使用新的cursor_sharing引數而無需要擔心因此而不採用最佳化 的執行路徑。
要知道如何使用儲存概要才是最優的,我們首先執行一些極度沒有效率的SQL的儲存過程開始,要注意的是,我們不能修改原始碼(理論上)。
我們將看一下如何跟蹤SQL語句,並且檢視它當前在資料庫中的執行計劃,找出一些提示來改進SQL語句的效能,然後再重新執行該SQL語句時,讓Oracle使用我們的提示。
在這個示例中,我們將建立一個使用者,在該使用者的模式中建一個表格,並且建立一個儲存過程訪問該表格,我們將在這個儲存過程上使用wrap工具,這樣我們就不能透過反向方式得到原始碼。然後我們將透過該儲存過程來除錯SQL的執行。
例子中我們將假定儲存慨要已經在資料庫建立的時候被自動安裝。
準備工作
建立一個使用者,他的許可權有:create session, create table, create procedure, create any outline, and alter session。以該使用者連線並且執行以下的指令碼來建立一個表格:
create table so_demo ( n1 number, n2 number, v1 varchar2(10) ) ; insert into so_demo values (1,1,One); create index sd_i1 on so_demo(n1); create index sd_i2 on so_demo(n2); analyze table so_demo compute statistics; |
接著需要編碼來建立一個儲存過程訪問該表格。建立一個稱為c_proc.sql的指令碼,如下:
create or replace procedure get_value ( i_n1 in number, i_n2 in number, io_v1 out varchar2 ) as begin select v1 into io_v1 from so_demo where n1 = i_n1 and n2 = i_n2 ; end; / |
當然,也可以直接執行這個指令碼來建立該過程,不過,為了更有效果,轉到作業系統的命令列並且執行以下命令:
wrap iname=c_proc.sql
響應是:Processing c_proc.sql to c_proc.plb
這裡不是透過執行c_proc.sql指令碼來產生該過程,而是執行看不到原始碼的c_proc.plb指令碼,你將會發現在user_source的檢視中找不到我們的SQL語句。[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18921899/viewspace-1017126/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 解析Oracle 8i/9i的計劃穩定性(3)Oracle
- 解析Oracle 8i/9i的計劃穩定性(2)Oracle
- 解析Oracle 8i/9i的計劃穩定性(轉)Oracle
- ORALCE的執行計劃穩定性
- ORALCE的執行計劃穩定性(zt)
- oracle 9i 10G 11G 的RAC 穩定性比較Oracle
- Plan Stability in Oracle 8i/9iOracle
- 【穩定性】穩定性建設之依賴設計
- SAP QM 穩定性研究功能研習系列1 - 穩定性研究總流程
- 穩定性
- Kafka 的穩定性Kafka
- 資料庫遷移,spm baseline 保持執行計劃的穩定性資料庫
- 排序穩定性排序
- 如何保持Oracle資料庫SQL效能的穩定性Oracle資料庫SQL
- 怎樣保持Oracle資料庫SQL效能的穩定性Oracle資料庫SQL
- 解析Oracle執行計劃的結果Oracle
- 淺談系統的不確定性與穩定性
- 伺服器穩定性的測試方法,1分鐘搞定伺服器
- 【穩定性】從專案風險管理角度探討系統穩定性
- App穩定性測試APP
- Oracle 9i 開啟autotrace on 檢視執行計劃Oracle
- HP-UX Kernel Configuration for Oracle for 8i/9i (3)UXOracle
- HP-UX Kernel Configuration for Oracle for 8i/9i (2)UXOracle
- 微軟計劃本週將推送Win10 PC/Mobile累積性更新:提升穩定性微軟Win10
- 9i奇怪的AJ執行計劃
- oracle 9i 獲取sql執行計劃(書寫長的sql)OracleSQL
- kafka-穩定性-事務Kafka
- oracle 8i的restoreOracleREST
- 8i客戶端不能連線9i?客戶端
- Introduction to Tuning Oracle7 / Oracle8 / 8i / 9i (Doc ID 61998.1)Oracle
- 如何維持網站穩定性的方式?網站
- FastHook——遠超YAHFA的優異穩定性ASTHook
- 8i下sort*排序大小以及執行計劃的問題?排序
- Node.js 指南(ABI穩定性)Node.js
- app穩定性測試-iOS篇APPiOS
- 研發效能與穩定性保障
- 處理 Oracle7/8/8i/9i/10g/11g 中的 Oracle 塊損壞Oracle
- 從前端程式設計師的視角看小程式的穩定性保障前端程式設計師