Oracle性能優(yōu)化基本方法包括一下幾個(gè)步驟 包括
創(chuàng)新互聯(lián)公司專注于浦東企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城系統(tǒng)網(wǎng)站開(kāi)發(fā)。浦東網(wǎng)站建設(shè)公司,為浦東等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站開(kāi)發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
)設(shè)立合理的Oracle性能優(yōu)化目標(biāo)
)測(cè)量并記錄當(dāng)前的Oracle性能
)確定當(dāng)前Oracle性能瓶頸(Oracle等待什么 哪些SQL語(yǔ)句是該等待事件的成分)
)把等待事件記入跟蹤文件
)確定當(dāng)前的OS瓶頸
)優(yōu)化所需的成分(應(yīng)用程序 數(shù)據(jù)庫(kù) I/O 爭(zhēng)用 OS等)
)跟蹤并實(shí)施更改控制過(guò)程
)測(cè)量并記錄當(dāng)前性能
)重復(fù)步驟 到 直到滿足優(yōu)化目標(biāo)
下面來(lái)一一詳述
設(shè)立合理的Oracle性能優(yōu)化目標(biāo)
重點(diǎn) 關(guān)于設(shè)立目標(biāo)的最重要的一點(diǎn)是它們必須是可量化和可達(dá)到的
方法 目標(biāo)必須是當(dāng)前性能和所需性能的的陳述形式的語(yǔ)句
測(cè)量并記錄當(dāng)前Oracle性能重點(diǎn)
)需要在峰值活動(dòng)時(shí)間獲得當(dāng)前系統(tǒng)性能快照
)關(guān)鍵是要在出現(xiàn)性能問(wèn)題的時(shí)間段內(nèi)采集信息
)必須在合理的時(shí)間段上采集 一般在峰值期間照幾個(gè)為期 分鐘的快照
確定當(dāng)前Oracle性能瓶頸重點(diǎn) 從Oracle 等待接口v$system_event v$session_event和v$session_wait中獲得等待事件 進(jìn)而找出影響性能的對(duì)象和sql語(yǔ)句 方法如下
)首先 利用v$system_event視圖執(zhí)行下面的查詢查看數(shù)據(jù)庫(kù)中某些常見(jiàn)的等待事件
select * from v$system_event
where event in ( buffer busy waits
db file sequential read
db file scattered read
enqueue
free buffer waits
latch free
log file parallel write
log file sync );
)接著 利用下面對(duì)v$session_event和v$session視圖進(jìn)行的查詢 研究具有對(duì)上面顯示的內(nèi)容有貢獻(xiàn)的等待事件的會(huì)話
select se sid s username se event se total_waits se time_waited se average_wait
from v$session s v$session_event se
where s sid = se sid
and se event not like SQL*Net%
and s status = ACTIVE
and s username is not null;
)使用下面查詢找到與所連接的會(huì)話有關(guān)的當(dāng)前等待事件 這些信息是動(dòng)態(tài)的 為了查看一個(gè)會(huì)話的等待最多的事件是什么 需要多次執(zhí)行此查詢
select sw sid s username sw event sw wait_time sw state sw seconds_in_wait SEC_IN_WAIT
from v$session s v$session_wait sw
where s sid = sw sid
and sw event not like SQL*Net%
and s username is not null
order by sw wait_time desc;
)查詢會(huì)話等待事件的詳細(xì)信息
select sid event p text p p text p p text p
from v$session_wait
where sid beeen and
and event not like %SQL%
and event not like %rdbms% ;
)利用P P 的信息 找出等待事件的相關(guān)的段
select owner segment_name segment_type tablespace_name
from dba_extents
where file_id = fileid_in
and blockid_in beeen block_id and block_id + blocks ;
)獲得操作該段的sql語(yǔ)句
select sid getsqltxt(sql_hash_value sql_address)
from v$session
where sid = sid_in;
)getsqltxt函數(shù)
)至此已經(jīng)找到影響性能的對(duì)象和sql語(yǔ)句 可以有針對(duì)性地優(yōu)化
把等待事件記入跟蹤文件
重點(diǎn) 如果在跟蹤系統(tǒng)上的等待事件時(shí) 由于某種原因遇到了麻煩 則可以將這些等待事件記入一個(gè)跟蹤文件 方法如下
)對(duì)于當(dāng)前會(huì)話
alter session set timed_statistics=true;
alter session set max_dump_file_size=unlimited;
alter session set events trace name context forever level ;
)執(zhí)行應(yīng)用程序 然后在USER_DUMP_DEST指出的目錄中找到跟蹤文件
)查看文件中以詞WAIT開(kāi)始的所有行
)對(duì)于其它的會(huì)話
)確定會(huì)話的進(jìn)程ID(SPID) 下面的查詢識(shí)別出名稱以A開(kāi)始的所有用戶的會(huì)話進(jìn)程ID
select S Username P Spid from V$SESSION S V$PROCESS P
where S PADDR = P ADDR and S Username like A% ;
)以sysdba進(jìn)入sqlplus執(zhí)行
alter session set timed_statistics=true;
alter session set max_dump_file_size=unlimited;
oradebug setospid
oradebug unlimit
oradebug event trace name context forever level X /* Where X = ( ) */
)跟蹤某個(gè)時(shí)間間隔得會(huì)話應(yīng)用程序
)在USER_DUMP_DEST 的值指出的目錄中利用SPID查看跟蹤文件
)查看文件中以詞WAIT開(kāi)始的所有行
確定當(dāng)前OS瓶頸 )Windows NT上的監(jiān)控
使用控制面板 〉管理工具 〉性能即可
)UNIX上的監(jiān)控
使用通用性的工具 包括sar iostat cpustat mpstat netstat top osview等
.Oracle性能優(yōu)化所需的成分(應(yīng)用程序 數(shù)據(jù)庫(kù) I/O 爭(zhēng)用 OS等)
.跟蹤并實(shí)施更改控制過(guò)程
.測(cè)量并記錄當(dāng)前Oracle性能
lishixinzhi/Article/program/Oracle/201311/18709
1、使用兩邊加‘%’號(hào)的查詢,Oracle是不通過(guò)索引的,所以查詢效率很低。
例如:select count(*) from lui_user_base t where t.user_name like '%cs%';
2、like '...%'和 like'%...'雖然走了索引,但是效率依然很低。
3、有人說(shuō)使用如下sql,他的效率提高了10倍,但是數(shù)據(jù)量小的時(shí)候
select count(*) from lui_user_base where rowid in (select rowid from lui_user_base t where t.user_name like '%cs%')
我拿100w跳數(shù)據(jù)做了測(cè)試,效果一般,依然很慢,原因:
select rowid from lui_user_base t where t.user_name like '%cs%' ? 這條sql執(zhí)行很快,那是相當(dāng)?shù)目欤欠诺絪elect count(*) from lui_user_base where rowid in()里后,效率就會(huì)變的很慢了。
4、select count(*) from lui_user_base t where instr(t.user_name,'cs') 0
這種查詢效果很好,速度很快,推薦使用這種。因?yàn)槲覍?duì)oracle內(nèi)部機(jī)制不是很懂,只是對(duì)結(jié)果做了一個(gè)說(shuō)明。
5、有人說(shuō)了用全文索引,我看了,步驟挺麻煩,但是是個(gè)不錯(cuò)的方法,留著備用:
對(duì)cmng_custominfo 表中的address字段做全文檢索:
1,在oracle9201中需要?jiǎng)?chuàng)建一個(gè)分詞的東西:
BEGIN
ctx_ddl.create_preference ('SMS_ADDRESS_LEXER', 'CHINESE_LEXER');
--ctx_ddl.create_preference ('my_lexer', 'chinese_vgram_lexer'); 不用
end;
2,創(chuàng)建全文檢索:
CREATE INDEX INX_CUSTOMINFO_ADDR_DOCS ON cmng_custominfo(address) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('LEXER SMS_ADDRESS_LEXER');
3,查詢時(shí)候,使用:
select * from cmng_custominfo where contains (address, '金色新城')1;
4,需要定期進(jìn)行同步和優(yōu)化:
同步:根據(jù)新增記錄的文本內(nèi)容更新全文搜索的索引。
begin
ctx_ddl.sync_index('INX_CUSTOMINFO_ADDR_DOCS');
end;
優(yōu)化:根據(jù)被刪除記錄清除全文搜索索引中的垃圾
begin
ctx_ddl.optimize_index('INX_CUSTOMINFO_ADDR_DOCS', 'FAST');
end;
5,采用job做步驟4中的工作:
1)該功能需要利用oracle的JOB功能來(lái)完成
因?yàn)閛racle9I默認(rèn)不啟用JOB功能,所以首先需要增加ORACLE數(shù)據(jù)庫(kù)實(shí)例的JOB配置參數(shù):
job_queue_processes=5
重新啟動(dòng)oracle數(shù)據(jù)庫(kù)服務(wù)和listener服務(wù)。
2)同步 和 優(yōu)化
--同步 sync:
variable jobno number;
BEGIN
DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.sync_index(''INX_CUSTOMINFO_ADDR_DOCS'');',
SYSDATE, 'SYSDATE + (1/24/4)');
commit;
END;
--優(yōu)化
variable jobno number;
begin
DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.optimize_index(''INX_CUSTOMINFO_ADDR_DOCS'',''FULL'');', SYSDATE, 'SYSDATE + 1');
commit;
END;
其中, 第一個(gè)job的SYSDATE + (1/24/4)是指每隔15分鐘同步一次,第二個(gè)job的SYSDATE + 1是每隔1天做一次全優(yōu)化。具體的時(shí)間間隔,可以根據(jù)應(yīng)用的需要而定。
6,索引重建
重建索引會(huì)刪除原來(lái)的索引,重新生成索引,需要較長(zhǎng)的時(shí)間。
重建索引語(yǔ)法如下:
ALTER INDEX INX_CUSTOMINFO_ADDR_DOCS REBUILD;
據(jù)網(wǎng)上一些用家的體會(huì),oracle重建索引的速度也是比較快的,有一用家這樣描述:
Oracle 的全文檢索建立和維護(hù)索引要比ms sql server都要快得多,筆者的65萬(wàn)記錄的一個(gè)表建立索引只需要20分鐘,同步一次只需要1分鐘。
因此,也可以考慮用job的辦法定期重建索引。
作為一個(gè)開(kāi)發(fā)/測(cè)試人員,或多或少都得和數(shù)據(jù)庫(kù)打交道,而對(duì)數(shù)據(jù)庫(kù)的操作歸根到底都是SQL語(yǔ)句,所有操作到最后都是操作數(shù)據(jù),那么對(duì)sql性能的掌控又成了我們工作中一件非常重要的工作。下面簡(jiǎn)單介紹下一些查看oracle性能的一些實(shí)用方法:
1、查詢每臺(tái)機(jī)器的連接數(shù)
select?t.MACHINE,count(*)?from?v$session?t?group?by?t.MACHINE
這里所說(shuō)的每臺(tái)機(jī)器是指每個(gè)連接oracle數(shù)據(jù)庫(kù)的服務(wù)器,每個(gè)服務(wù)器都有配置連接數(shù)據(jù)庫(kù)的連接數(shù),以websphere為例,在數(shù)據(jù)源中,每個(gè)數(shù)據(jù)源都有配置其最大/最小連接數(shù)。
執(zhí)行SQL后,可以看到每個(gè)服務(wù)器連接oracle數(shù)據(jù)庫(kù)的連接數(shù),若某個(gè)服務(wù)器的連接數(shù)非常大,或者已經(jīng)達(dá)到其最大連接數(shù),那么這臺(tái)服務(wù)器上的應(yīng)用可能有問(wèn)題導(dǎo)致其連接不能正常釋放。
2、查詢每個(gè)連接數(shù)的sql_text
v$session表里存在的連接不是一直都在執(zhí)行操作,如果sql_hash_value為空或者0,則該連接是空閑的,可以查詢哪些連接非空閑,?web3?是機(jī)器名,就是WebSphere?Application?Server?的主機(jī)名。
select?t.sql_hash_value,t.*??from?v$session?t?where?t.MACHINE='web3'?and?t.sql_hash_value!=0
這個(gè)SQL查詢出來(lái)的結(jié)果不能看到具體的SQL語(yǔ)句,需要看具體SQL語(yǔ)句的執(zhí)行下面的方法。
3、查詢每個(gè)活動(dòng)的連接執(zhí)行什么sql
select?sid,username,sql_hash_value,b.sql_text
from?v$session?a,v$sqltext?b
where?a.sql_hash_value?=?b.HASH_VALUE?and?a.MACHINE='web3'
order?by?sid,username,sql_hash_value,b.piece
order?by這句話的作用在于,sql_text每條記錄不是保存一個(gè)完整的sql,需要以sql_hash_value為關(guān)鍵id,以piece排序,如圖
Username是執(zhí)行SQL的數(shù)據(jù)庫(kù)用戶名,一個(gè)sql_hash_value下的SQL_TEXT組合成一個(gè)完整的SQL語(yǔ)句。這樣就可以看到一個(gè)連接執(zhí)行了哪些SQL。
4、.從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?Statement
from??v$sqlarea?a,dba_users?b
where?a.parsing_user_id=b.user_id
and?a.disk_reads??100000
order?by?a.disk_reads?desc;
用buffer_gets列來(lái)替換disk_reads列可以得到占用最多內(nèi)存的sql語(yǔ)句的相關(guān)信息。
V$SQL是內(nèi)存共享SQL區(qū)域中已經(jīng)解析的SQL語(yǔ)句。
該表在SQL性能查看操作中用的比較頻繁的一張表,關(guān)于這個(gè)表的詳細(xì)信息大家可以去?上學(xué)習(xí),介紹得比較詳細(xì)。我這里主要就將該表的常用幾個(gè)操作簡(jiǎn)單介紹一下:
1、列出使用頻率最高的5個(gè)查詢:
select?sql_text,executions
from?(select?sql_text,executions,
rank()?over
(order?by?executions?desc)?exec_rank
from?v$sql)
where?exec_rank?=5;
該查詢結(jié)果列出的是執(zhí)行最頻繁的5個(gè)SQL語(yǔ)句。對(duì)于這種實(shí)用非常頻繁的SQL語(yǔ)句,我們需要對(duì)其進(jìn)行持續(xù)的優(yōu)化以達(dá)到最佳執(zhí)行性能。
2、找出需要大量緩沖讀?。ㄟ壿嬜x)操作的查詢:
select?buffer_gets,sql_text
from?(select?sql_text,buffer_gets,
dense_rank()?over
(order?by?buffer_gets?desc)?buffer_gets_rank
from?v$sql)
where?buffer_gets_rank=5;
這種需要大量緩沖讀?。ㄟ壿嬜x)操作的SQL基本是大數(shù)據(jù)量且邏輯復(fù)雜的查詢中會(huì)遇到,對(duì)于這樣的大數(shù)據(jù)量查詢SQL語(yǔ)句更加需要持續(xù)的關(guān)注,并進(jìn)行優(yōu)化。
3、持續(xù)跟蹤有性能影響的SQL。
SELECT?*?FROM?(
SELECT?PARSING_USER_ID,EXECUTIONS,SORTS,
COMMAND_TYPE,DISK_READS,sql_text?FROM?v$sqlarea
ORDER?BY?disk_reads?DESC
)
WHERE?ROWNUM10
這個(gè)語(yǔ)句在SQL性能查看中用的比較多,可以明顯的看出哪些SQL會(huì)影響到數(shù)據(jù)庫(kù)性能。
本文主要介紹了使用SQL查詢方式查看oracle數(shù)據(jù)庫(kù)SQL性能的部分常用方法。此外還有許多工具也能實(shí)現(xiàn)SQL性能監(jiān)控,大家可以在網(wǎng)上搜索相關(guān)知識(shí)進(jìn)行學(xué)習(xí)。
轉(zhuǎn)載僅供參考,版權(quán)屬于原作者
1.查看臨時(shí)表空間使用情況
Select
f.tablespace_name
,sum(f.bytes_free + f.bytes_used)
/1024/1024/1024 "total GB"
,sum((f.bytes_free + f.bytes_used) - nvl(p.bytes_used, 0))
/1024/1024/1024 "Free GB"
,sum(nvl(p.bytes_used, 0))
/1024/1024/1024 "Used GB"
from sys.v_$temp_space_header f, dba_temp_files d, sys.v_$temp_extent_pool p
where f.tablespace_name(+) = d.tablespace_name
and f.file_id(+) = d.file_id
and p.file_id(+) = d.file_id
group by
f.tablespace_name
2.查看使用臨時(shí)表空間的SQL
Select se.username,
se.sid,
su.extents,
su.blocks * to_number(rtrim(p.value)) as Space,
tablespace,
segtype,
sql_text
from v$sort_usage su, v$parameter p, v$session se, v$sql s
where p.name = 'db_block_size'
and su.session_addr = se.saddr
and s.hash_value = su.sqlhash
and s.address = su.sqladdr
order by se.username, se.sid
3.收縮臨時(shí)表空間
alter tablespace temp shrink space;
alter tablespace temp shrink tempfile ''
4.重建索引
alter index PK_CROSSRELATION rebuild;
5.查看表空間使用情況
SELECT UPPER(F.TABLESPACE_NAME) "表空間名",
D.TOT_GROOTTE_MB "表空間大小(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空間(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
F.TOTAL_BYTES "空閑空間(M)",
F.MAX_BYTES "最大塊(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 1;
6.查詢表空間的總?cè)萘?/p>
select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_data_files
group by tablespace_name;
7. 查詢表空間使用率
select total.tablespace_name,
round(total.MB, 2) as Total_MB,考試大論壇
round(total.MB - free.MB, 2) as Used_MB,
round((1 - free.MB / total.MB) * 100, 2) || '%' as Used_Pct
from (select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_free_space
group by tablespace_name) free,
(select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_data_files
group by tablespace_name) total
where free.tablespace_name = total.tablespace_name;
8. 查找當(dāng)前表級(jí)鎖的SQL如下:
select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode
from v$locked_object lo,
dba_objects ao,
v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid;
殺掉鎖表進(jìn)程:
alter system kill session '436,35123';
9.監(jiān)控當(dāng)前數(shù)據(jù)庫(kù)誰(shuí)在運(yùn)行什么SQL語(yǔ)句
select osuser, username, sql_text
from v$session a, v$sqltext b
where a.sql_address =b.address order by address, piece;
10.找使用CPU多的用戶session
select a.sid,spid,status,substr(a.program,1,40) prog, a.terminal,osuser,value/60/100 value
from v$session a,v$process b,v$sesstat c
where c.statistic#=12 and
c.sid=a.sid and
a.paddr=b.addr
order by value desc;
11.查看死鎖信息
SELECT (SELECT username
FROM v$session
WHERE SID = a.SID) blocker, a.SID, 'is blocking',
(SELECT username
FROM v$session
WHERE SID = b.SID) blockee, b.SID
FROM v$lock a, v$lock b
WHERE a.BLOCK = 1 AND b.request 0 AND a.id1 = b.id1 AND a.id2 = b.id2;
12.具有最高等待的對(duì)象
SELECT o.OWNER,o.object_name, o.object_type, a.event,
SUM (a.wait_time + a.time_waited) total_wait_time
FROM v$active_session_history a, dba_objects o
WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
AND a.current_obj# = o.object_id
GROUP BY o.OWNER,o.object_name, o.object_type, a.event
ORDER BY total_wait_time DESC;
13.查看具有最高等待的對(duì)象
SELECT a.session_id, s.osuser, s.machine, s.program, o.owner, o.object_name,
o.object_type, a.event,
SUM (a.wait_time + a.time_waited) total_wait_time
FROM v$active_session_history a, dba_objects o, v$session s
WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
AND a.current_obj# = o.object_id
AND a.session_id = s.SID
GROUP BY o.owner,
o.object_name,
o.object_type,
a.event,
a.session_id,
s.program,
s.machine,
s.osuser
ORDER BY total_wait_time DESC;
14.查看等待最多的SQL
SELECT a.program, a.session_id, a.user_id, d.username, s.sql_text,
SUM (a.wait_time + a.time_waited) total_wait_time
FROM v$active_session_history a, v$sqlarea s, dba_users d
WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
AND a.sql_id = s.sql_id
AND a.user_id = d.user_id
GROUP BY a.program, a.session_id, a.user_id, s.sql_text, d.username;
15.顯示正在等待鎖的所有會(huì)話
SELECT * FROM DBA_WAITERS;
select rownum as rank, a.*
from (select PARSING_SCHEMA_NAME RUN_USER, --執(zhí)行用戶
SQL_FULLTEXT, --SQL文本,全,帶格式
sql_text, --SQL文本前面部分
elapsed_Time , --單位是微秒,語(yǔ)句執(zhí)行完的總時(shí)間,包括CPU時(shí)間和等待時(shí)間
cpu_time , --CPU時(shí)間,語(yǔ)句運(yùn)行的時(shí)間
elapsed_Time - cpu_time wait_time,
trunc((elapsed_Time - cpu_time)*100/elapsed_Time,2) "wait_time_per%",--等待時(shí)間所占百分比
executions, --執(zhí)行次數(shù)
elapsed_Time/(executions+1) Per_Time, --每次執(zhí)行平均時(shí)間,
buffer_gets, --
disk_reads, --磁盤讀
hash_value, --SQL的hash_value,以備獲取完整SQL
USER_IO_WAIT_TIME,
SORTS --排序次數(shù)
from v$sqlarea t
where elapsed_time 20000 and PARSING_SCHEMA_NAME'SYS'
order by elapsed_time desc) a
where rownum 21
order by elapsed_time desc
這種問(wèn)題要回答好要求知識(shí)比較全面。
1 從操作系統(tǒng)層次上看
看CPU 內(nèi)存 swqp(交換分區(qū))等使用率
2 從磁盤上看
主要看磁盤讀寫(xiě)??梢杂胐d測(cè)磁盤讀寫(xiě)的速度 也可以在業(yè)務(wù)高峰期檢測(cè)磁盤的速率。
3 從數(shù)據(jù)庫(kù)本身來(lái)看。
先要看數(shù)據(jù)庫(kù)各個(gè)參數(shù)的值 。 如sga的大小,process的大小,redo日志的個(gè)數(shù)與大小等這些關(guān)系到性能的參數(shù)是否設(shè)置合理。
長(zhǎng)期觀察的方式就是看各個(gè)時(shí)期的AWR報(bào)告。里面有各種性能指標(biāo),以及按執(zhí)行時(shí)間或資源排列的sql ,以及各種等待時(shí)間的排名。從這里面可以掌握數(shù)據(jù)庫(kù)的長(zhǎng)期的性能變化。
即時(shí)觀察的方式就是利用各種sql 查詢 數(shù)據(jù)庫(kù)在當(dāng)前時(shí)間的各個(gè)性能指標(biāo)(AWR報(bào)告里面的各種指標(biāo)也都是通過(guò)sql查詢出來(lái)的)
還有對(duì)數(shù)據(jù)庫(kù)整體的一個(gè)檢查:
如 表的大小,表是否需要分區(qū)而沒(méi)有分區(qū),索引是否創(chuàng)建,索引是否失效,開(kāi)發(fā)人員寫(xiě)的sql是否正確使用到了索引,頻繁使用的sql是否有綁定變量,有頻繁大批量增刪改的表是否存在高水位。。。
額 總之,這個(gè)話題涉及的知識(shí)非常多,盡可能多的學(xué)習(xí)一些東西,祝你好運(yùn)。