oracle getsqltxt函数,Oracle 性能优化的基本方法概述(2)
where sid = &sid_in;
-- getsqltxt函數
create or replace
function GetSQLtxt (hashaddr_in in v$sqltext.hash_value%type,
addr_in in v$sqltext.address%type)
return varchar2
is
temp_sqltxt varchar2(32767);
cursor sqlpiece_cur
is
select piece,sql_text
from v$sqltext
where hash_value = hashaddr_in
and address = addr_in
order by piece;
begin
for sqlpiece_rec in sqlpiece_cur
loop
temp_sqltxt := temp_sqltxt || sqlpiece_rec.sql_text;
end loop;
return temp_sqltxt;
end GetSQLtxt;
-- 至此已經找到影響性能的對象和sql語句,可以有針對性地優化
4. 把等待事件記入跟蹤文件
重點:如果在跟蹤系統上的等待事件時,由于某種原因遇到了麻煩,則可以將這些等待事件記入一個跟蹤文件。
方法:
-- 對于當前會話:
alter session set timed_statistics=true;
alter session set max_dump_file_size=unlimited;
alter session set events '10046 trace name context forever, level 12';
-- 執行應用程序,然后在USER_DUMP_DEST指出的目錄中找到跟蹤文件。
-- 查看文件中以詞WAIT開始的所有行。
-- 對于其它的會話
-- 確定會話的進程ID(SPID)。下面的查詢識別出名稱以A開始的所有用戶的會話進程ID:
select S.Username, P.Spid from V$SESSION S, V$PROCESS P
where S.PADDR = P.ADDR and S.Username like 'A%';
-- 以 sysdba 進入sqlplus執行
alter session set timed_statistics=true;
alter session set max_dump_file_size=unlimited;
oradebug setospid
oradebug unlimit
oradebug event 10046 trace name context forever, level X /* Where X = (1,4,8,12) */
-- 跟蹤某個時間間隔得會話應用程序。
-- 在USER_DUMP_DEST 的值指出的目錄中利用SPID查看跟蹤文件
-- 查看文件中以詞WAIT開始的所有行。
5. 確定當前OS瓶頸
(1)Windows NT上的監控
使用控制面板-〉管理工具-〉性能即可
(2)UNIX上的監控
使用通用性的工具,包括sar、iostat、cpustat、mpstat、netstat、top、osview等。
1) CPU使用情況
sar -u 5 1000
%sys和%wio的數值應該小于百分之10到15
2) 設備使用情況
sar -d 5 1000
在%busy超過60%時,最佳設備利用率開始降低;在具有足夠磁盤高速緩存的系統上,認為avserv為100毫秒的值非常高。
3) 虛擬內存使用情況
vmstat -S 5 1000
執行隊列(r)應該明確的平均小于(2*CPU數目)
6.優化所需的成分(應用程序、數據庫、I/O、爭用、OS等)。
7.跟蹤并實施更改控制過程。
8.測量并記錄當前性能
9.重復步驟3到7,直到滿足優化目標
總結
以上是生活随笔為你收集整理的oracle getsqltxt函数,Oracle 性能优化的基本方法概述(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 类oracle数据库pss,Oracle
- 下一篇: oracle+nvlif函数,Oracl