這種問題要回答好要求知識(shí)比較全面。

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、張掖網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、購物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為張掖等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
1 從操作系統(tǒng)層次上看
看CPU 內(nèi)存 swqp(交換分區(qū))等使用率
2 從磁盤上看
主要看磁盤讀寫。可以用dd測磁盤讀寫的速度 也可以在業(yè)務(wù)高峰期檢測磁盤的速率。
3 從數(shù)據(jù)庫本身來看。
先要看數(shù)據(jù)庫各個(gè)參數(shù)的值 。 如sga的大小,process的大小,redo日志的個(gè)數(shù)與大小等這些關(guān)系到性能的參數(shù)是否設(shè)置合理。
長期觀察的方式就是看各個(gè)時(shí)期的AWR報(bào)告。里面有各種性能指標(biāo),以及按執(zhí)行時(shí)間或資源排列的sql ,以及各種等待時(shí)間的排名。從這里面可以掌握數(shù)據(jù)庫的長期的性能變化。
即時(shí)觀察的方式就是利用各種sql 查詢 數(shù)據(jù)庫在當(dāng)前時(shí)間的各個(gè)性能指標(biāo)(AWR報(bào)告里面的各種指標(biāo)也都是通過sql查詢出來的)
還有對(duì)數(shù)據(jù)庫整體的一個(gè)檢查:
如 表的大小,表是否需要分區(qū)而沒有分區(qū),索引是否創(chuàng)建,索引是否失效,開發(fā)人員寫的sql是否正確使用到了索引,頻繁使用的sql是否有綁定變量,有頻繁大批量增刪改的表是否存在高水位。。。
額 總之,這個(gè)話題涉及的知識(shí)非常多,盡可能多的學(xué)習(xí)一些東西,祝你好運(yùn)。
獲取Oracle的當(dāng)前負(fù)載情況:
查詢sql語句如下:
SELECT?*
FROM?(?SELECT?A.INSTANCE_NUMBER,
A.SNAP_ID,
B.BEGIN_INTERVAL_TIME +?0?BEGIN_TIME,
B.END_INTERVAL_TIME +?0?END_TIME,
ROUND(VALUE?-?LAG(?VALUE,?1?,?'0')
OVER(ORDER?BY?A.INSTANCE_NUMBER, A.SNAP_ID)) "DB TIME"
FROM?(SELECT?B.SNAP_ID,
INSTANCE_NUMBER,
SUM(VALUE?) /?1000000?/?60?VALUE
FROM?DBA_HIST_SYS_TIME_MODEL B
WHERE?B.DBID = (SELECT?DBID?FROM?V$DATABASE)
AND?UPPER?(B.STAT_NAME)?IN?UPPER(('DB TIME'?))
GROUP?BY?B.SNAP_ID, INSTANCE_NUMBER) A,
DBA_HIST_SNAPSHOT B
WHERE?A.SNAP_ID = B.SNAP_ID
AND?B.DBID = (SELECT?DBID?FROM?V$DATABASE)
AND?B.INSTANCE_NUMBER = A.INSTANCE_NUMBER)
WHERE?TO_CHAR(BEGIN_TIME,?'YYYY-MM-DD') = TO_CHAR(SYSDATE?,?'YYYY-MM-DD')
ORDER?BY?BEGIN_TIME;
SQL 結(jié)果:
oracle內(nèi)存使用情況主要分兩個(gè)方面,一個(gè)是PGA,一個(gè)是SGA
簡單查詢的話,通過SQL語句在PLSQL里面運(yùn)行一下就可以了
代碼如下:
select?'SGA'?as?name
,round(sum(value)?/?1024?/?1024,?2)?||?'M'?as?"SIZE(M)"
from???v$sga
union
select?'PGA'?as?name,?round(value?/?1024?/?1024,?2)?||?'M'?as?"SIZE(M)"
from???v$pgastat
where??name?=?'total?PGA?allocated'
復(fù)制粘貼后,進(jìn)入PLSQL,登陸之后,新建頁面運(yùn)行查看結(jié)果即可。
作為一個(gè)開發(fā)/測試人員,或多或少都得和數(shù)據(jù)庫打交道,而對(duì)數(shù)據(jù)庫的操作歸根到底都是SQL語句,所有操作到最后都是操作數(shù)據(jù),那么對(duì)sql性能的掌控又成了我們工作中一件非常重要的工作。下面簡單介紹下一些查看oracle性能的一些實(shí)用方法:
1、查詢每臺(tái)機(jī)器的連接數(shù)
select?t.MACHINE,count(*)?from?v$session?t?group?by?t.MACHINE
這里所說的每臺(tái)機(jī)器是指每個(gè)連接oracle數(shù)據(jù)庫的服務(wù)器,每個(gè)服務(wù)器都有配置連接數(shù)據(jù)庫的連接數(shù),以websphere為例,在數(shù)據(jù)源中,每個(gè)數(shù)據(jù)源都有配置其最大/最小連接數(shù)。
執(zhí)行SQL后,可以看到每個(gè)服務(wù)器連接oracle數(shù)據(jù)庫的連接數(shù),若某個(gè)服務(wù)器的連接數(shù)非常大,或者已經(jīng)達(dá)到其最大連接數(shù),那么這臺(tái)服務(wù)器上的應(yīng)用可能有問題導(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查詢出來的結(jié)果不能看到具體的SQL語句,需要看具體SQL語句的執(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ù)庫用戶名,一個(gè)sql_hash_value下的SQL_TEXT組合成一個(gè)完整的SQL語句。這樣就可以看到一個(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列來替換disk_reads列可以得到占用最多內(nèi)存的sql語句的相關(guān)信息。
V$SQL是內(nèi)存共享SQL區(qū)域中已經(jīng)解析的SQL語句。
該表在SQL性能查看操作中用的比較頻繁的一張表,關(guān)于這個(gè)表的詳細(xì)信息大家可以去?上學(xué)習(xí),介紹得比較詳細(xì)。我這里主要就將該表的常用幾個(gè)操作簡單介紹一下:
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語句。對(duì)于這種實(shí)用非常頻繁的SQL語句,我們需要對(duì)其進(jìn)行持續(xù)的優(yōu)化以達(dá)到最佳執(zhí)行性能。
2、找出需要大量緩沖讀取(邏輯讀)操作的查詢:
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;
這種需要大量緩沖讀取(邏輯讀)操作的SQL基本是大數(shù)據(jù)量且邏輯復(fù)雜的查詢中會(huì)遇到,對(duì)于這樣的大數(shù)據(jù)量查詢SQL語句更加需要持續(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è)語句在SQL性能查看中用的比較多,可以明顯的看出哪些SQL會(huì)影響到數(shù)據(jù)庫性能。
本文主要介紹了使用SQL查詢方式查看oracle數(shù)據(jù)庫SQL性能的部分常用方法。此外還有許多工具也能實(shí)現(xiàn)SQL性能監(jiān)控,大家可以在網(wǎng)上搜索相關(guān)知識(shí)進(jìn)行學(xué)習(xí)。
轉(zhuǎn)載僅供參考,版權(quán)屬于原作者
用to_char函數(shù)即可。
如emp表中數(shù)據(jù)如下:
要查詢hiredate的日期為1981年1月1日到1981年5月1日之間的數(shù)據(jù),可用如下語句:
1
select * from emp where to_char(hiredate,'yyyy-mm-dd') between '1981-01-01' and '1981-05-01';
查詢結(jié)果:
新聞名稱:如何查看oracle負(fù)荷,查看oracle性能
新聞來源:http://chinadenli.net/article14/hshjge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、移動(dòng)網(wǎng)站建設(shè)、虛擬主機(jī)、建站公司、Google、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)