我們一般修改到1000~1500,就好了,再大也沒(méi)有什么用處了。
成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括蘇家屯網(wǎng)站建設(shè)、蘇家屯網(wǎng)站制作、蘇家屯網(wǎng)頁(yè)制作以及蘇家屯網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,蘇家屯網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到蘇家屯省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
一般和你機(jī)器的內(nèi)存有關(guān):
給你copy一段:
ORACLE最大連接數(shù)問(wèn)題
(2010-09-08 20:27:17)
轉(zhuǎn)載▼
標(biāo)簽:
oracle優(yōu)化
it
分類: 多少會(huì)點(diǎn)
oracle 10g安裝在windows 2003 32位操作系統(tǒng),連接數(shù)到120個(gè)就不能連接,報(bào)ora12518
服務(wù)器IBM XSERVER,內(nèi)存:4G
oracle 數(shù)據(jù)庫(kù)配置的主要參數(shù)如下:
processes integer 800
sessions integer 885
pga_aggregate_target big integer 350M
sga_max_size big integer 1256M
sga_target big integer 1152M
shared_pool_size big integer 400M
large_pool_size big integer 16M
數(shù)據(jù)庫(kù)配置的連接數(shù)是800個(gè),但是現(xiàn)在當(dāng)oracle的連接數(shù)達(dá)到250個(gè)時(shí)候,其他的客戶端就無(wú)法再連接上oracle服務(wù)器了,報(bào)個(gè)錯(cuò):ORA-12518: TNS: 監(jiān)聽(tīng)程序無(wú)法分發(fā)客戶機(jī) ;
但是已經(jīng)連接上數(shù)據(jù)庫(kù)的應(yīng)用還可以正常應(yīng)用,就是其他沒(méi)連上的就再也連不上了,除非已有的連接有退出的,其他的才能再聯(lián)上,就是可連接的總數(shù)是250個(gè);
上網(wǎng)查:說(shuō)是在可以在listener.ora中加入一行: direct_handoff_ttc_listener name=off,但是依舊不成;
這期間我嘗試著把
pga_aggregate_target 改成200或者500等,結(jié)果是一樣的;
sga_target改成800m后,結(jié)果數(shù)據(jù)庫(kù)就起不來(lái)了,提示說(shuō)要不能小于1024m;
后來(lái)查到有可能是oracle 10g for win32的一個(gè)bug,上網(wǎng)下了補(bǔ)丁,打完補(bǔ)丁后的版本是:10.2.0.3);還懷疑是不是windows 2003的tcp連接數(shù)不夠,上網(wǎng)查說(shuō)好像是有這毛病,下了個(gè)2003的補(bǔ)丁,把tcp連接數(shù)擴(kuò)到了1000,結(jié)果能夠達(dá)到可以有350個(gè)并發(fā)連接,但是再多就又連不上了;
現(xiàn)在就是不太清楚究竟是什么參數(shù)配置的不合適,(不管是oracle10g的,還是windows 2003的),才會(huì)造成實(shí)際上沒(méi)有達(dá)到oracle設(shè)置的最大連接數(shù)時(shí)就不能連接了;
又后來(lái),懷疑是不是windows 2003(32位)的問(wèn)題,于是就裝了個(gè)64位的windows 2003,同樣版本的oracle 10g,裝好后就把連接數(shù)process參數(shù)配置成800,然后做連接測(cè)試,一直可以有800個(gè)session連接上來(lái),到現(xiàn)在為止,可以大致總結(jié)出癥結(jié)所在了,就是我裝的這個(gè)windows 2003 server(32位)的操作系統(tǒng),在安裝oracle 10g(10.2.0.1-10.2.0.3)時(shí)有問(wèn)題,連接數(shù)不能達(dá)到系統(tǒng)配置的那么大;可以采用64位的替代。但是我在想,究竟為什么windows 2003 server(32位)的操作系統(tǒng)+oracle 10g數(shù)據(jù)庫(kù)連接數(shù)會(huì)有限制,有沒(méi)有什么辦法,修改一下2003的配置或者oracle 10g的配置, 就可解決掉這個(gè)問(wèn)題,
解決方案:
一、修改oracle參數(shù)
1、原有參數(shù)
#pga_aggregate_target=67108864
#processes=500
#sessions=555
# pga_aggregate_target此參數(shù)是擴(kuò)大并發(fā)連接數(shù)占用內(nèi)存大小。
# 可調(diào)整此參數(shù),放大或縮小,同時(shí)影響并發(fā)數(shù)量。
# 公式: 約=可按照并發(fā)數(shù)量*4M
pga_aggregate_target=720M
# processes、sessions是擴(kuò)大并發(fā)連接數(shù),是同時(shí)使用。
# 公式: sessions = processes *1.1 +5
processes=600
sessions=665
2、在監(jiān)聽(tīng)參數(shù)文件LISTENER.ORA 文件中增加參數(shù)
direct_handoff_ttc_listener = off
3、重新啟動(dòng)數(shù)據(jù)庫(kù)服務(wù)。
二、1、修改Windows系統(tǒng)中Boot.ini文件
/3GB /PAE
說(shuō)明:修改操作系統(tǒng)中Boot.ini文件,可以使oracle使用更多的內(nèi)存空間。
2、修改用戶組策略中鎖定內(nèi)存頁(yè)大小權(quán)限。
參數(shù)修改完畢問(wèn)題解決。
3、重啟計(jì)算機(jī)。
select *
from x$ksppi a, x$ksppcv b
where a.indx = b.indx
order by ksppinm
你查看的是初始化文件initorcl.ora,initorcl.ora記錄了控制文件的路徑。所以內(nèi)容是正確的
。
你可以
create
pfile='e:\oracle\aaa.ora'
from
spfile;
然后查看e:\oracle\aaa.ora文件
這里記錄就是你的參數(shù),可以修改
接著通過(guò)pfile文件生成spfile文件
create
spfile
from
pfile=='e:\oracle\aaa.ora';
啟動(dòng)數(shù)據(jù)庫(kù)就可以了
pfile是文本的,可以修改,但修改后數(shù)據(jù)庫(kù)必須重新啟動(dòng)才生效。
spfile是二進(jìn)制的,不可以手工修改,可以在線修改參數(shù),不需要重新啟動(dòng)數(shù)據(jù)庫(kù)。
普通參數(shù):也就是Oracle系統(tǒng)正常使用的一些參數(shù),
非凡參數(shù):包括三種,過(guò)時(shí)參數(shù)、強(qiáng)調(diào)參數(shù)和隱藏參數(shù)。
隨著Oracle數(shù)據(jù)庫(kù)新版本的發(fā)布,相應(yīng)每次都會(huì)增加或者刪除一些參數(shù)。下面具體介紹如何查詢當(dāng)前系統(tǒng)版本中的各種參數(shù)情況。
一、過(guò)時(shí)參數(shù) 和 強(qiáng)調(diào)參數(shù)
Oracle 數(shù)據(jù)庫(kù)中,系統(tǒng)提供了幾個(gè)視圖可以查看系統(tǒng)參數(shù)的情況。視圖 V$OBSOLETE_PARAMETER 中含有所有的過(guò)時(shí) (obsolete) 和強(qiáng)調(diào) (underscored) 參數(shù)。
這里首先說(shuō)明一下什么是 Oracle 的過(guò)時(shí) (obsolote) 和強(qiáng)調(diào) (underscored) 參數(shù),過(guò)時(shí)參數(shù),顧名思義就是在 Oracle 以前的版本中存在,但在新版本中已經(jīng)淘汰了的參數(shù),已經(jīng)不再使用;而強(qiáng)調(diào)參數(shù),是指那些在新版本中保留了下來(lái),但是除非非凡需要不希望用戶使用的那些參數(shù)。在視圖 V$OBSOLETE_PARAMETER 中,包含這些參數(shù)的名稱和一個(gè)標(biāo)志字 ISSPECIFIED ,該標(biāo)志字用來(lái)指出這個(gè)參數(shù)是否在 init.ora 文件中已實(shí)際設(shè)置。 下面的 SQL 腳本列出了當(dāng)前系統(tǒng)中所有的過(guò)時(shí)參數(shù)名稱以及它們是否在當(dāng)前系統(tǒng)中設(shè)定。
查詢優(yōu)化器參數(shù)
1. optimizer_mode
查詢優(yōu)化器是為了找一個(gè)最高效的執(zhí)行計(jì)劃,這個(gè)參數(shù)用來(lái)定義什么是“高效”,比如是更快還是占用資源更少。在oracle10g中只支持兩個(gè)參數(shù)值:
all_rows:提供全部數(shù)據(jù)
first_rows(n):n為大于0的自然數(shù),表示盡快傳輸前面n條數(shù)據(jù)(比如分頁(yè)查詢的時(shí)候,我第一次只查詢前面10條數(shù)據(jù))
oracle10g默認(rèn)為all_rows,可以再數(shù)據(jù)庫(kù)級(jí)別,會(huì)話級(jí)別,或者執(zhí)行SQL的時(shí)候修改該參數(shù)的值。
數(shù)據(jù)庫(kù)級(jí)別:alter system set optimizer_mode=first_rows(10) scope=spfile;
會(huì)話級(jí)別:ALTER SESSION SET OPTIMIZER_MODE=first_rows(10);
SQL級(jí)別:SELECT /*+ first_rows(10) */ id,name from t1 order by id;
其實(shí),默認(rèn)all_rows是最好的方式,如果確實(shí)是只要查詢小部分?jǐn)?shù)據(jù),可以在sql級(jí)別加上提示,看是否能提高性能。
2. db_file_multiblock_read_count
在多塊讀的情況下(比如全表掃描),該參數(shù)說(shuō)明一次最多可讀取的數(shù)據(jù)塊數(shù)目。設(shè)置得太小的話,效率低。設(shè)置得太高也不見(jiàn)得就好(太高,會(huì)受I/O最大吞吐量限制。比如設(shè)置成一次最多讀取1024塊,但I(xiàn)/O最大吞吐量只允許32塊,那一次最多也只讀取32塊。而且一次讀取很多塊,開(kāi)銷會(huì)偏高。)應(yīng)該通過(guò)測(cè)試,才能知道應(yīng)該把該參數(shù)設(shè)置成哪一個(gè)值。
測(cè)試過(guò)程:
1. 創(chuàng)建一張大表,比如上千萬(wàn)行級(jí)別的數(shù)據(jù)
2. 循環(huán)設(shè)置該參數(shù)的值,查看全表掃描的速度。類似于以下語(yǔ)句:
[sql] view plain copy
span style="font-size:14px;" declare
l_count pls_integer;
l_time pls_integer;
l_starting_time pls_integer;
l_ending_time pls_integer;
begin
dbms_output.put_line('dbfmbrc seconds');
for l_dbfmbrc in 1..32
loop
execute immediate 'alter session set db_file_multiblock_read_count='||l_dbfmbrc;
l_starting_time := dbms_utility.get_time();
select /*+ full(t) */ count(*) into l_count from big_table t;
l_ending_time := dbms_utility.get_time();
l_time := round((l_ending_time-l_starting_time)/100);
dbms_output.put_line(l_dbfmbrc||' '||l_time);
end loop;
end;
//span
3. optimizer_index_cost_adj
影響走索引掃描的開(kāi)銷計(jì)算。 取值范圍1到10000.默認(rèn)值為100,超過(guò)100后,走索引掃描的開(kāi)銷越高,從而使得查詢優(yōu)化器更加傾向于使用全表掃描。相反,小于100,索引掃描的開(kāi)銷就越低,從而使得查詢優(yōu)化器更加傾向于使用索引掃描。從下面索引掃描開(kāi)銷計(jì)算公式可以看出:
io_cost=(blevel+(leaf_blocks+culstering_factor)*selectivity) *optimizer_index_cost_adj/100.
一般是默認(rèn)值不需要修改,但是如果發(fā)現(xiàn)本應(yīng)該走索引掃描結(jié)果走了全表掃描,可以適當(dāng)調(diào)低該值,但是,這個(gè)值不應(yīng)該設(shè)置過(guò)低,因?yàn)?,過(guò)低的話,如果兩個(gè)索引掃描的開(kāi)銷不同,可能通過(guò)該公式一算,開(kāi)銷就變成一樣的了??傊唤ㄗh修改該參數(shù)的值。
PGA參數(shù)
1. workarea_size_policy
管理工作區(qū)域內(nèi)存(PGA)的方式,
auto:oracle10g默認(rèn)方式,委托給內(nèi)存管理器自動(dòng)管理(建議不需要修改)
manual:oracle9i默認(rèn)方式,oracle9i沒(méi)有自動(dòng)管理功能。
2. pga_aggregate_target
如果是自動(dòng)管理PGA,那么該參數(shù)用于指定實(shí)例可用的PGA的大小,默認(rèn)是SGA的20%。即使今后用的內(nèi)存超過(guò)了設(shè)置的值,也沒(méi)有關(guān)系,oracle會(huì)自動(dòng)增大PGA的值。比如該參數(shù)設(shè)置的是200M,今后某一時(shí)刻,需要300M,也是沒(méi)問(wèn)題的,會(huì)自動(dòng)增長(zhǎng)。
3. sort_area_size
手動(dòng)管理PGA,該參數(shù)指定分配多大的內(nèi)存用于排序操作,過(guò)小的話,會(huì)影響性能,過(guò)大的話浪費(fèi)空間。很難說(shuō)一個(gè)合適的默認(rèn)值,因?yàn)橛脩魣?chǎng)景變化非常大,實(shí)際情況得實(shí)際處理。
4. hash_area_size
手動(dòng)管理PGA,該參數(shù)用于指定哈希連接的工作區(qū)域大小,同樣建議它的值也很困難。如果過(guò)小,那么查詢優(yōu)化器就會(huì)高估哈希連接的開(kāi)銷,偏向于合并連接。
當(dāng)前標(biāo)題:oracle怎么查參數(shù),oracle查詢參數(shù)
標(biāo)題URL:http://jinyejixie.com/article12/dsedcgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、App設(shè)計(jì)、網(wǎng)站維護(hù)、移動(dòng)網(wǎng)站建設(shè)、域名注冊(cè)、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)