1. 利用DBMS_APPLICATION_INFO進行實時監控DECLARE lv_count_num PLS_INTEGER:=0; lv_start_time_num PLS_INTEGER;BEGIN
2.在數據庫表中記錄計時信息
3.減少PL/SQL程序的單元迭代和迭代時間
4.使用 ROWID進行迭代處理
5.將數據類型,IF語句的排列和PLS_INTEGER標準化--確保比較運算中的數據類型相同--根據條件出現的頻率來排序IF條件--使用PLS_INTEGER PL/SQL數據類型進行整數運算
6.減少對SYSDATE的調用
7.減少對MOD函數的調用
8.在共享池中預載對像
9.標識需要加載的PL/SQL對像
10.使用和修改DBMS_SHARED_POOL.SIZES
11. 從DBA_OBJECT_SIZE中獲取詳細的信息
12. 發現無效的對象col "Owner" format a12col "Object" format a20col "OType" format a12col "Change Date" format a20SELECT SUBSTR(owner,1,12) "Owner", SUBSTR(object_name,1,20) "Object" , object_type "OType", TO_CHAR(last_ddl_time,'DD-MON-YYYY HH24:MI:SS') "Change Date" FROM dba_objects WHERE status<>'VALID' ORDER BY 1,2
重新編譯所有的存儲過程,函數和程序包 begin dbms_utility.compile_schema('GW'); end;
13. 發現已禁用的觸發器
14. 將PL/SQL作為快速參考表查詢
15.查找和調整所使用對象的SQL
16.在處理DATE數據類型時使用時間信息
17.調整和測試PL/SQL
18.瞭解PL/SQL對像定位的含義
19.使用回滾段打開大型游標
20. 使用臨時表來提高性能
21.集成用戶跟蹤機制以定位執行位置
22.限制動態SQL的使用
23.簡單示例
查詢索引select table_name, index_name,column_name,column_positionfrom dba_ind_columnswhere table_name='XXX'and table_owner='XXX'order by index_name,column_position
在v$sqlarea中找出最占資源的查詢SELECT b.username username,a.disk_reads READS,a.executions EXEC, a.disk_reads/DECODE(a.executions,0,1,a.executions) rds_exec_ratio, a.sql_text statementFROM v$sqlarea a,dba_users bWHERE a.parsing_user_id=b.user_idAND a.disk_reads>100000ORDER BY a.disk_reads DESC
在v$sql中找出最占資源的查詢SELECT * FROM ( SELECT sql_text,rank() OVER(ORDER BY buffer_gets DESC) AS rank_bufgets, TO_CHAR(100*ratio_to_report(buffer_gets) OVER(), '999.99') pct_bufgets FROM v$sql) WHERE rank_bufgets<11
|
|