查看oracle压力,一个很简单测试oracle压力方法
今天做了一個簡單的測試數據庫壓力,把東西分享了一下。
服務器情況:
操作系統版本:CentOS 5.6 -64
cpu:Intel(R) Xeon(R) CPU? X5660? @ 2.80GHz * 24
內存:Mem:????? 16425876
Swap:???? 32764556
數據庫版本:oracle10gR2
節點個數:2
測試方法如下:通過awr找出測試系統里面消耗比較多sql(可以是IO或者是執行時間)
使用python寫了如下腳本
#! /usr/bin/python
#coding=UTF-8
import cx_Oracle
import time
def hello():
'''''Hello cx_Oracle示例:
1)打印數據庫版本信息.
2)查詢表數據.'''
conn = cx_Oracle.connect("jscn/jscn@192.168.100.199:1521/jscn")
cur = conn.cursor()
try:
print "Oracle Version:%s" % conn.version
print "Table SUB_POLICY rows:"
interger = 1
while interger <= 30000000:
sql="select * from product PRODUCT_ID= '0lea940'"
sql1="select * from productcategory? where CATEGORY_ID='xhn6238'"
cur.execute(sql)
for row in cur:
print row
time.sleep(1)
cur.execute(sql1)
for row in cur:
print row
time.sleep(10)
interger = interger + 1
finally:
cur.close()
conn.close()
hello()
這里要首先安裝好python和cx_Oracle,關于如何安裝這兩個軟件,可以自己百度,過幾天我把我的安裝方法寫上去。
讓我么簡單看看這個python腳本,如果童鞋們要用這個腳本,只要修改連接串和sql部分就可以了,在這個腳本里面,首先執行"sql",然后休息1秒鐘,再執行"sql1"部分,再休息10,這個就是一個循環,一共循環30000000次。
友情提醒一下python對空格特別敏感,復制的時候要小心了。
如果只是簡單執行這一個腳本,那叫什么壓力測試呢,這個時候要請其他童鞋協助了,在dos下執行如下命令,win7下面最好使用管理員用戶執行。
--切換到腳本所在的目錄,執行以下命令
for /L %i in (1,1,50) do start "test %i" python test.py
這個腳本是把這個test.py執行開50個窗口執行。
如果想停止,可以執行以下命令
taskkill /im python.exe
現在讓我們來看一下數據庫的性能,
1、查看節點的連接數,到兩個節點上面分別查看數據庫的連接數
登錄到第一個節點,查看python連接數
SQL>? select count(*) from v$session where program='python.exe'? ;
COUNT(*)
----------
24
登錄到第二個節點,查看python連接數
SQL> select count(*) from v$session where program='python.exe'? ;
COUNT(*)
----------
26
查看總的連接數
SQL>? select count(*) from gv$session where program='python.exe'? ;
COUNT(*)
----------
50
2、查看每個用戶的pga分配大小
Select spid ,Value / 1024 / 1024 Mb
From V$session s, V$sesstat St, V$statname Sn, V$process p
Where St.Sid = s.Sid
And St.Statistic#= Sn.Statistic#
And Sn.Name Like 'session pga memory'
And p.Addr = s.Paddr and s.program='python.exe'
Order By Value Desc;
SPID?? ??????????????MB
------------ ----------
1936???????? 0.73026275
1906???????? 0.73026275
1955???????? 0.73026275
1940???????? 0.73026275
1953???????? 0.73026275
1946???????? 0.73026275
1934???????? 0.73026275
1942???????? 0.73026275
1972???????? 0.73026275
1959???????? 0.73026275
1900???????? 0.73026275
1961???????? 0.73026275
1970???????? 0.73026275
1968???????? 0.73026275
1957???????? 0.73026275
1902???????? 0.73026275
1904???????? 0.73026275
1919???????? 0.73026275
1938???????? 0.73026275
1923???????? 0.73026275
SPID???????????????? MB
------------ ----------
1921???????? 0.73026275
1925???????? 0.73026275
1917???????? 0.73026275
1910???????? 0.73026275
1908???????? 0.73026275
1927???????? 0.73026275
這里0.73026275*用戶數
3、查看數據庫服務器每個spid對應的內存使用情況(下面舉例說明)
[oracle@rac2 ~]$ top -p 1936,1906,1955,1940
top - 19:30:49 up 11 days,? 9:24,? 1 user,? load average: 0.08, 0.08, 0.03
Tasks:?? 4 total,?? 0 running,?? 4 sleeping,?? 0 stopped,?? 0 zombie
Cpu(s):? 0.3%us,? 0.1%sy,? 0.0%ni, 99.6%id,? 0.1%wa,? 0.0%hi,? 0.0%si,? 0.0%st
Mem:? 16425876k total,? 6192932k used, 10232944k free,?? 422484k buffers
Swap: 32764556k total,????? 344k used, 32764212k free,? 3581576k cached
PID USER????? PR? NI? VIRT? RES? SHR S %CPU %MEM??? TIME+? COMMAND
1936 oracle??? 15?? 0 1681m? 26m? 22m S? 0.0? 0.2?? 0:00.13 oracle
1906 oracle??? 15?? 0 1681m? 26m? 22m S? 0.0? 0.2?? 0:00.14 oracle
1955 oracle??? 15?? 0 1681m? 26m? 22m S? 0.0? 0.2?? 0:00.12 oracle
1940 oracle??? 15?? 0 1681m? 26m? 22m S? 0.0? 0.2?? 0:00.15 oracle
這里RES的值*個數
呵呵,結束了,簡單吧。
總結
以上是生活随笔為你收集整理的查看oracle压力,一个很简单测试oracle压力方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在oracle中如何复制用户的权限不够,
- 下一篇: oracle无法重建em,ORACLE