您好,我在別的論壇也看到了您的提問,很高興為您解答:
創(chuàng)新互聯(lián)于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站制作、網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元呼圖壁做網(wǎng)站,已為上家服務(wù),為呼圖壁各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
查看oracle參數(shù)是靜態(tài)或者是動態(tài)[@more@]
select name,value,ISSYS_MODIFIABLE from v$parameter where ISSYS_MODIFIABLE ='IMMEDIATE' order by name ;--動態(tài)參數(shù)
select name,value,ISSYS_MODIFIABLE from v$parameter where ISSYS_MODIFIABLE ='FALSE' order by name ; ----靜態(tài)參數(shù),需要重啟數(shù)據(jù)庫參數(shù)才有效
select name,value,ISSYS_MODIFIABLE from v$parameter where ISSYS_MODIFIABLE ='DERERRED' order by name ;--延遲,當(dāng)前會話不生效,后續(xù)的會話有效
如果我的回答沒幫助到您,請繼續(xù)追問。
查詢優(yōu)化器參數(shù)
1. optimizer_mode
查詢優(yōu)化器是為了找一個最高效的執(zhí)行計劃,這個參數(shù)用來定義什么是“高效”,比如是更快還是占用資源更少。在oracle10g中只支持兩個參數(shù)值:
all_rows:提供全部數(shù)據(jù)
first_rows(n):n為大于0的自然數(shù),表示盡快傳輸前面n條數(shù)據(jù)(比如分頁查詢的時候,我第一次只查詢前面10條數(shù)據(jù))
oracle10g默認為all_rows,可以再數(shù)據(jù)庫級別,會話級別,或者執(zhí)行SQL的時候修改該參數(shù)的值。
數(shù)據(jù)庫級別:alter system set optimizer_mode=first_rows(10) scope=spfile;
會話級別:ALTER SESSION SET OPTIMIZER_MODE=first_rows(10);
SQL級別:SELECT /*+ first_rows(10) */ id,name from t1 order by id;
其實,默認all_rows是最好的方式,如果確實是只要查詢小部分數(shù)據(jù),可以在sql級別加上提示,看是否能提高性能。
2. db_file_multiblock_read_count
在多塊讀的情況下(比如全表掃描),該參數(shù)說明一次最多可讀取的數(shù)據(jù)塊數(shù)目。設(shè)置得太小的話,效率低。設(shè)置得太高也不見得就好(太高,會受I/O最大吞吐量限制。比如設(shè)置成一次最多讀取1024塊,但I/O最大吞吐量只允許32塊,那一次最多也只讀取32塊。而且一次讀取很多塊,開銷會偏高。)應(yīng)該通過測試,才能知道應(yīng)該把該參數(shù)設(shè)置成哪一個值。
測試過程:
1. 創(chuàng)建一張大表,比如上千萬行級別的數(shù)據(jù)
2. 循環(huán)設(shè)置該參數(shù)的值,查看全表掃描的速度。類似于以下語句:
[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
影響走索引掃描的開銷計算。 取值范圍1到10000.默認值為100,超過100后,走索引掃描的開銷越高,從而使得查詢優(yōu)化器更加傾向于使用全表掃描。相反,小于100,索引掃描的開銷就越低,從而使得查詢優(yōu)化器更加傾向于使用索引掃描。從下面索引掃描開銷計算公式可以看出:
io_cost=(blevel+(leaf_blocks+culstering_factor)*selectivity) *optimizer_index_cost_adj/100.
一般是默認值不需要修改,但是如果發(fā)現(xiàn)本應(yīng)該走索引掃描結(jié)果走了全表掃描,可以適當(dāng)調(diào)低該值,但是,這個值不應(yīng)該設(shè)置過低,因為,過低的話,如果兩個索引掃描的開銷不同,可能通過該公式一算,開銷就變成一樣的了??傊唤ㄗh修改該參數(shù)的值。
PGA參數(shù)
1. workarea_size_policy
管理工作區(qū)域內(nèi)存(PGA)的方式,
auto:oracle10g默認方式,委托給內(nèi)存管理器自動管理(建議不需要修改)
manual:oracle9i默認方式,oracle9i沒有自動管理功能。
2. pga_aggregate_target
如果是自動管理PGA,那么該參數(shù)用于指定實例可用的PGA的大小,默認是SGA的20%。即使今后用的內(nèi)存超過了設(shè)置的值,也沒有關(guān)系,oracle會自動增大PGA的值。比如該參數(shù)設(shè)置的是200M,今后某一時刻,需要300M,也是沒問題的,會自動增長。
3. sort_area_size
手動管理PGA,該參數(shù)指定分配多大的內(nèi)存用于排序操作,過小的話,會影響性能,過大的話浪費空間。很難說一個合適的默認值,因為用戶場景變化非常大,實際情況得實際處理。
4. hash_area_size
手動管理PGA,該參數(shù)用于指定哈希連接的工作區(qū)域大小,同樣建議它的值也很困難。如果過小,那么查詢優(yōu)化器就會高估哈希連接的開銷,偏向于合并連接。
我們一般修改到1000~1500,就好了,再大也沒有什么用處了。
一般和你機器的內(nèi)存有關(guān):
給你copy一段:
ORACLE最大連接數(shù)問題
(2010-09-08 20:27:17)
轉(zhuǎn)載▼
標(biāo)簽:
oracle優(yōu)化
it
分類: 多少會點
oracle 10g安裝在windows 2003 32位操作系統(tǒng),連接數(shù)到120個就不能連接,報ora12518
服務(wù)器IBM XSERVER,內(nèi)存:4G
oracle 數(shù)據(jù)庫配置的主要參數(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ù)庫配置的連接數(shù)是800個,但是現(xiàn)在當(dāng)oracle的連接數(shù)達到250個時候,其他的客戶端就無法再連接上oracle服務(wù)器了,報個錯:ORA-12518: TNS: 監(jiān)聽程序無法分發(fā)客戶機 ;
但是已經(jīng)連接上數(shù)據(jù)庫的應(yīng)用還可以正常應(yīng)用,就是其他沒連上的就再也連不上了,除非已有的連接有退出的,其他的才能再聯(lián)上,就是可連接的總數(shù)是250個;
上網(wǎng)查:說是在可以在listener.ora中加入一行: direct_handoff_ttc_listener name=off,但是依舊不成;
這期間我嘗試著把
pga_aggregate_target 改成200或者500等,結(jié)果是一樣的;
sga_target改成800m后,結(jié)果數(shù)據(jù)庫就起不來了,提示說要不能小于1024m;
后來查到有可能是oracle 10g for win32的一個bug,上網(wǎng)下了補丁,打完補丁后的版本是:10.2.0.3);還懷疑是不是windows 2003的tcp連接數(shù)不夠,上網(wǎng)查說好像是有這毛病,下了個2003的補丁,把tcp連接數(shù)擴到了1000,結(jié)果能夠達到可以有350個并發(fā)連接,但是再多就又連不上了;
現(xiàn)在就是不太清楚究竟是什么參數(shù)配置的不合適,(不管是oracle10g的,還是windows 2003的),才會造成實際上沒有達到oracle設(shè)置的最大連接數(shù)時就不能連接了;
又后來,懷疑是不是windows 2003(32位)的問題,于是就裝了個64位的windows 2003,同樣版本的oracle 10g,裝好后就把連接數(shù)process參數(shù)配置成800,然后做連接測試,一直可以有800個session連接上來,到現(xiàn)在為止,可以大致總結(jié)出癥結(jié)所在了,就是我裝的這個windows 2003 server(32位)的操作系統(tǒng),在安裝oracle 10g(10.2.0.1-10.2.0.3)時有問題,連接數(shù)不能達到系統(tǒng)配置的那么大;可以采用64位的替代。但是我在想,究竟為什么windows 2003 server(32位)的操作系統(tǒng)+oracle 10g數(shù)據(jù)庫連接數(shù)會有限制,有沒有什么辦法,修改一下2003的配置或者oracle 10g的配置, 就可解決掉這個問題,
解決方案:
一、修改oracle參數(shù)
1、原有參數(shù)
#pga_aggregate_target=67108864
#processes=500
#sessions=555
# pga_aggregate_target此參數(shù)是擴大并發(fā)連接數(shù)占用內(nèi)存大小。
# 可調(diào)整此參數(shù),放大或縮小,同時影響并發(fā)數(shù)量。
# 公式: 約=可按照并發(fā)數(shù)量*4M
pga_aggregate_target=720M
# processes、sessions是擴大并發(fā)連接數(shù),是同時使用。
# 公式: sessions = processes *1.1 +5
processes=600
sessions=665
2、在監(jiān)聽參數(shù)文件LISTENER.ORA 文件中增加參數(shù)
direct_handoff_ttc_listener = off
3、重新啟動數(shù)據(jù)庫服務(wù)。
二、1、修改Windows系統(tǒng)中Boot.ini文件
/3GB /PAE
說明:修改操作系統(tǒng)中Boot.ini文件,可以使oracle使用更多的內(nèi)存空間。
2、修改用戶組策略中鎖定內(nèi)存頁大小權(quán)限。
參數(shù)修改完畢問題解決。
3、重啟計算機。
你查看的是初始化文件initorcl.ora,initorcl.ora記錄了控制文件的路徑。所以內(nèi)容是正確的
。
你可以
create
pfile='e:\oracle\aaa.ora'
from
spfile;
然后查看e:\oracle\aaa.ora文件
這里記錄就是你的參數(shù),可以修改
接著通過pfile文件生成spfile文件
create
spfile
from
pfile=='e:\oracle\aaa.ora';
啟動數(shù)據(jù)庫就可以了
pfile是文本的,可以修改,但修改后數(shù)據(jù)庫必須重新啟動才生效。
spfile是二進制的,不可以手工修改,可以在線修改參數(shù),不需要重新啟動數(shù)據(jù)庫。
網(wǎng)站標(biāo)題:oracle參數(shù)怎么看,oracle參數(shù)設(shè)置
鏈接分享:http://muchs.cn/article16/hciedg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、建站公司、網(wǎng)站制作、定制網(wǎng)站、網(wǎng)站設(shè)計公司、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)