session設多少和你的應用環(huán)境有關系,說一下你的應用部署情況
創(chuàng)新互聯(lián)提供成都做網(wǎng)站、網(wǎng)站建設、網(wǎng)頁設計,成都品牌網(wǎng)站建設,廣告投放平臺等致力于企業(yè)網(wǎng)站建設與公司網(wǎng)站制作,十年的網(wǎng)站開發(fā)和建站經(jīng)驗,助力企業(yè)信息化建設,成功案例突破數(shù)千家,是您實現(xiàn)網(wǎng)站建設的好選擇.
Sessions = (IIS process number) X (min pool size)
按照這個公式算,如iis進程數(shù)為30,連接池min pool size為10,那么安全的Oracle Sessions的數(shù)量應該為300。如果不按照這個數(shù)量進行設置,那么系統(tǒng)運行的過程中IIS會經(jīng)常報告一些莫名奇妙的錯誤,如認證失敗。很多人可能會認為IIS已經(jīng)Crash了,實際上是由于Session的數(shù)量超過了Oracle允許的數(shù)量。
當然我們還必須將由于程序異常處理不當?shù)仍斐傻膲乃赖腟ession的可能數(shù)量計算在內。為了保證系統(tǒng)的運行問題,應該在上文所說的計算方法上加一個保險值,如350。
進去 控制面板 管理工具 服務,打開找到oracle 啟動為手動,等以后開機會,自己再到服務向里面啟動oracle進程,就可以了,這樣最好的,我就是這樣設置的 !
在繁忙的系統(tǒng)中,我們總是會期望提高某些Oracle進程的優(yōu)先級,使其能夠更容易的獲得CPU資源,執(zhí)行重要的任務。在Oracle 10g之前,這樣的工作要通過操作系統(tǒng)上的設置來實現(xiàn),在Oracle 10gR2中,一個新的隱含參數(shù)被引入到數(shù)據(jù)庫中,用于配置提升Oracle后臺進程的優(yōu)先級。
這個核心參數(shù)是: _high_priority_processes
在 10.2 版本中,Oracle 缺省的對 LMS* 設置高優(yōu)先級,在11g開始,對 LMS*||VKTM 設置高優(yōu)先級。
在Linux平臺上,進程的內核調用分為三類:
TS - SCHED_OTHER (SCHED_NORMAL) ,這是分時調度策略,缺省的正常級別;
FF - SCHED_FIFO,這是實時調度策略,先到先服務,先進先出;
RR - SCHED_RR,實時調度策略,時間片輪轉;
其中 FF,RR 都是實時調度隊列的,實時進程調度隊列,是從優(yōu)先級最高的進程運行,如果當前運行的是FIFO進程,如果進程不主動讓出CPU,其他進程都不能運行,如果是RR(時間片輪轉)的,則不會一直獨占CPU,運行一段時間會被切換出來。
以下是在Linux中設置PMON進程提高優(yōu)先級的測試。
[eygle@enmoteam2 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Fri Aug 9 10:43:50 2013
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to an idle instance.
SQL startup
ORACLE instance started.
Total System Global Area 1670221824 bytes
Fixed Size 2228944 bytes
Variable Size 402656560 bytes
Database Buffers 1258291200 bytes
Redo Buffers 7045120 bytes
Database mounted.
Database opened.
檢查此時PMON進程的優(yōu)先級為:TS 。
[eygle@enmoteam2 ~]$ ps -eo pid,class,pri,nice,time,args |grep pmon |grep -v grep
25424 TS 19 0 00:00:00 ora_pmon_enmot2
設置PMON進程,重新啟動數(shù)據(jù)庫:
SQL alter system set "_high_priority_processes"="PMON" scope=spfile;
System altered.
SQL shutdown abort;
ORACLE instance shut down.
SQL startup
ORACLE instance started.
Total System Global Area 1670221824 bytes
Fixed Size 2228944 bytes
Variable Size 402656560 bytes
Database Buffers 1258291200 bytes
Redo Buffers 7045120 bytes
Database mounted.
Database opened.
此時檢查,可以發(fā)現(xiàn)PMON進程運行在RR模式:
SQL ! ps -eo pid,class,pri,nice,time,args |grep pmon |grep -v grep
26222 RR 41 - 00:00:00 ora_pmon_enmot2
在Solaris下有所不同,高優(yōu)先級進程運行在RT模式 - Real Time,實時模式:
SQL show parameter pri
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
_high_priority_processes string LMS*|LGWR|PMON
oracle@solaris:$ ps -eo pid,class,pri,nice,time,args |egrep 'lgwr|pmon' |grep -v grep
27674 RT 101 RT 00:00 ora_pmon_orcl
27694 RT 101 RT 00:00 ora_lgwr_orcl
注意,在RAC系統(tǒng)中,LMS*可能會導致一系列的LMS進程都獲得高優(yōu)先級,這可能是不必要的,也會搶占其他進程的資源,所以可以根據(jù)具體情況進行設置。
當系統(tǒng)中既有分時調度 - TS,又有時間片輪轉調度(RR)和先進先出調度(FF)時,以下是一些細節(jié)上的說明:
當實時進程準備就緒后,如果當前CPU正在運行非實時進程,則實時進程立即搶占非實時進程;
RR進程和FIFO進程都采用實時優(yōu)先級做為調度的權值標準,RR實際上是FIFO的一個延伸;
FIFO時,如果兩個進程的優(yōu)先級一樣,則這兩個優(yōu)先級一樣的進程具體執(zhí)行哪一個是由其在隊列中的位置決定的,這樣導致一些不公正性,如果將兩個優(yōu)先級一樣的任務的調度策略都設為RR,則保證了這兩個任務可以循環(huán)執(zhí)行,保證了公平。
在MOS (My Oracle Support)的文檔:602419.1 上,還描述了這樣一種情況:LMS not running in RT (real time) mode in 10.2.0.3 RAC database (Doc ID 602419.1)。
該案例提示:當 $ORACLE_HOME/bin/oradism 權限不對時,可能會導致進程無法運行在實時模式。
在該案例中oradism的權限如下:
384 -r-sr-s--- 1 oracle oinstall 186568 Dec 20 2006 /n01/app/oracle/product/10.2.0/bin/oradism ===
正常情況下,oradism 的屬主應該為root,并且具有setuid位設置,以下是在我的系統(tǒng)中oradism的正確權限設置:
[eygle@enmoteam1 bin]$ ls -l oradism
-rwsr-x--- 1 root oinstall 71758 9月 17 2011 oradism
你最好買一本專門講ORACLE性能優(yōu)化的書,好好看看\x0d\x0a1、調整數(shù)據(jù)庫服務器的性能\x0d\x0aOracle數(shù)據(jù)庫服務器是整個系統(tǒng)的核心,它的性能高低直接影響整個系統(tǒng)的性能,為了調整Oracle數(shù)據(jù)庫服務器的性能,主要從以下幾個方面考慮: \x0d\x0a1.1、調整操作系統(tǒng)以適合Oracle數(shù)據(jù)庫服務器運行\(zhòng)x0d\x0aOracle數(shù)據(jù)庫服務器很大程度上依賴于運行服務器的操作系統(tǒng),如果操作系統(tǒng)不能提供最好性能,那么無論如何調整,Oracle數(shù)據(jù)庫服務器也無法發(fā)揮其應有的性能。 \x0d\x0a1.1.1、為Oracle數(shù)據(jù)庫服務器規(guī)劃系統(tǒng)資源 \x0d\x0a據(jù)已有計算機可用資源, 規(guī)劃分配給Oracle服務器資源原則是:盡可能使Oracle服務器使用資源最大化,特別在Client/Server中盡量讓服務器上所有資源都來運行Oracle服務。 \x0d\x0a1.1.2、調整計算機系統(tǒng)中的內存配置 \x0d\x0a多數(shù)操作系統(tǒng)都用虛存來模擬計算機上更大的內存,它實際上是硬盤上的一定的磁盤空間。當實際的內存空間不能滿足應用軟件的要求時,操作系統(tǒng)就將用這部分的磁盤空間對內存中的信息進行頁面替換,這將引起大量的磁盤I/O操作,使整個服務器的性能下降。為了避免過多地使用虛存,應加大計算機的內存。 \x0d\x0a1.1.3、為Oracle數(shù)據(jù)庫服務器設置操作系統(tǒng)進程優(yōu)先級 \x0d\x0a不要在操作系統(tǒng)中調整Oracle進程的優(yōu)先級,因為在Oracle數(shù)據(jù)庫系統(tǒng)中,所有的后臺和前臺數(shù)據(jù)庫服務器進程執(zhí)行的是同等重要的工作,需要同等的優(yōu)先級。所以在安裝時,讓所有的數(shù)據(jù)庫服務器進程都使用缺省的優(yōu)先級運行。 \x0d\x0a1.2、調整內存分配\x0d\x0aOracle數(shù)據(jù)庫服務器保留3個基本的內存高速緩存,分別對應3種不同類型的數(shù)據(jù):庫高速緩存,字典高速緩存和緩沖區(qū)高速緩存。庫高速緩存和字典高速緩存一起構成共享池,共享池再加上緩沖區(qū)高速緩存便構成了系統(tǒng)全程區(qū)(SGA)。SGA是對數(shù)據(jù)庫數(shù)據(jù)進行快速訪問的一個系統(tǒng)全程區(qū),若SGA本身需要頻繁地進行釋放、分配,則不能達到快速訪問數(shù)據(jù)的目的,因此應把SGA放在主存中,不要放在虛擬內存中。內存的調整主要是指調整組成SGA的內存結構的大小來提高系統(tǒng)性能,由于Oracle數(shù)據(jù)庫服務器的內存結構需求與應用密切相關,所以內存結構的調整應在磁盤I/O調整之前進行。 \x0d\x0a1.2.1、庫緩沖區(qū)的調整 \x0d\x0a庫緩沖區(qū)中包含私用和共享SQL和PL/SQL區(qū),通過比較庫緩沖區(qū)的命中率決定它的大小。要調整庫緩沖區(qū),必須首先了解該庫緩沖區(qū)的活動情況,庫緩沖區(qū)的活動統(tǒng)計信息保留在動態(tài)性能表v$librarycache數(shù)據(jù)字典中,可通過查詢該表來了解其活動情況,以決定如何調整。 \x0d\x0a \x0d\x0aSelect sum(pins),sum(reloads) from v$librarycache; \x0d\x0a \x0d\x0aPins列給出SQL語句,PL/SQL塊及被訪問對象定義的總次數(shù);Reloads列給出SQL 和PL/SQL塊的隱式分析或對象定義重裝載時在庫程序緩沖區(qū)中發(fā)生的錯誤。如果sum(pins)/sum(reloads) ≈0,則庫緩沖區(qū)的命中率合適;若sum(pins)/sum(reloads)1, 則需調整初始化參數(shù) shared_pool_size來重新調整分配給共享池的內存量。 \x0d\x0a1.2.2、數(shù)據(jù)字典緩沖區(qū)的調整 \x0d\x0a數(shù)據(jù)字典緩沖區(qū)包含了有關數(shù)據(jù)庫的結構、用戶、實體信息。數(shù)據(jù)字典的命中率,對系統(tǒng)性能影響極大。數(shù)據(jù)字典緩沖區(qū)的使用情況記錄在動態(tài)性能表v$librarycache中,可通過查詢該表來了解其活動情況,以決定如何調整。 \x0d\x0a \x0d\x0aSelect sum(gets),sum(getmisses) from v$rowcache; \x0d\x0a \x0d\x0aGets列是對相應項請求次數(shù)的統(tǒng)計;Getmisses 列是引起緩沖區(qū)出錯的數(shù)據(jù)的請求次數(shù)。對于頻繁訪問的數(shù)據(jù)字典緩沖區(qū),sum(getmisses)/sum(gets)10%~15%。若大于此百分數(shù),則應考慮增加數(shù)據(jù)字典緩沖區(qū)的容量,即需調整初始化參數(shù)shared_pool_size來重新調整分配給共享池的內存量。 \x0d\x0a1.2.3、緩沖區(qū)高速緩存的調整 \x0d\x0a用戶進程所存取的所有數(shù)據(jù)都是經(jīng)過緩沖區(qū)高速緩存來存取,所以該部分的命中率,對性能至關重要。緩沖區(qū)高速緩存的使用情況記錄在動態(tài)性能表v$sysstat中,可通過查詢該表來了解其活動情況,以決定如何調整。 \x0d\x0a \x0d\x0aSelect name,value from v$sysstat where name in ('dbblock gets','consistent gets','physical reads'); \x0d\x0a \x0d\x0adbblock gets和consistent gets的值是請求數(shù)據(jù)緩沖區(qū)中讀的總次數(shù)。physical reads的值是請求數(shù)據(jù)時引起從盤中讀文件的次數(shù)。從緩沖區(qū)高速緩存中讀的可能性的高低稱為緩沖區(qū)的命中率,計算公式: \x0d\x0a \x0d\x0aHit Ratio=1-(physical reds/(dbblock gets+consistent gets)) \x0d\x0a \x0d\x0a如果Hit Ratio60%~70%,則應增大db_block_buffers的參數(shù)值。db_block_buffers可以調整分配給緩沖區(qū)高速緩存的內存量,即db_block_buffers可設置分配緩沖區(qū)高速緩存的數(shù)據(jù)塊的個數(shù)。緩沖區(qū)高速緩存的總字節(jié)數(shù)=db_block_buffers的值*db_block_size的值。db_block_size 的值表示數(shù)據(jù)塊大小的字節(jié)數(shù),可查詢 v$parameter 表: \x0d\x0a \x0d\x0aselect name,value from v$parameter where name='db_block_size'; \x0d\x0a \x0d\x0a在修改了上述數(shù)據(jù)庫的初始化參數(shù)以后,必須先關閉數(shù)據(jù)庫,在重新啟動數(shù)據(jù)庫后才能使新的設置起作用。
在數(shù)據(jù)庫服務器上運行 sqlplus system/password@xe (其中 system 是數(shù)據(jù)庫用戶無需改變;
password 是數(shù)據(jù)庫密碼應指定為實際密碼;xe 是數(shù)據(jù)庫實例名稱) ,然后執(zhí)行:
查看一下數(shù)據(jù)庫現(xiàn)有的進程數(shù),是否已經(jīng)達到參數(shù)processes的大小。
1.select count(*) from v$process;取得數(shù)據(jù)庫目前的進程數(shù)。
2.select value from v$parameter where name = 'processes';取得進程數(shù)的上限。
alter system set session_cached_cursors=200 scope=spfile;
alter system set session_max_open_files=200 scope=spfile;
alter system set sessions=20 scope=spfile;
alter system set license_max_sessions=200 scope=spfile;
alter system set license_sessions_warning=200 scope=spfile;
alter system set processes=200 scope=spfile;
執(zhí)行后,重啟 Oracle XE 數(shù)據(jù)庫實例即可。要重啟 Oracle XE 數(shù)據(jù)庫實例:
1. 如安裝于 Windows 上,先運行 net stop oracleservicexe,再運行 net start oracleservicexe 即可。也可通過“服務”管理控制臺重啟 OracleServiceXE 服務。
2. 如安裝于 Linux 上,先運行 /etc/init.d/oracle-xe start,再運行 /etc/init.d/oracle-xe stop 即可。