日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle自带调优,oracle 参数调优

發布時間:2023/12/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle自带调优,oracle 参数调优 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.升級到11gR2之后

oracle數據庫升級助手(DBUA)配置工具包括一個自動擴展系統文件的命令選項,能夠從oracle express(XE或免費版)升級到其他版本。

升級前腳本檢查以下各項:

1.無效用戶或角色

2.無效數據類型或對象

3.不支持的字符集

4.統計信息的收集

5.足夠的資源(undo/rollback段,表空間和空閑磁盤空間)

6.缺失的升級需要的腳本

7.運行的監聽器

8.oracle數據庫軟件已連接到database vault選件

如果在安裝過程中指定ORACLE_BASE環境變量,oracle將使用此值設置DIAGNOSTIC_DEST參數,其中包括所有的ADR目錄。

1.11g新特性

默認安裝完,密碼是區分大小寫的

SEC_CASE_SENSITIVE_LOGON ?默認是true 大小寫敏感

SEC_MAX_FAILED_LOGIN_ATTEMPTS 默認值是10 設定嘗試次數。

alter user username account unlock;

2.oracle的重要參數

MEMORY_TARGET

MEMORY_MAX_TARGET

SGA_TARGET

SGA_MAX_SIZE

PAG_AGGREGATE_TARGET

DB_CACHE_SIZE

SHARED_POOL_SIZE

默認讀取參數文件的順序

1.spfile.ora

2.spfile.ora

3.init.ora

如果使用alter system命令只修改spfile,而且在啟動的時候發現設置錯誤,數據庫將不會啟動。這時,不能使用alter system命令去解決這個問題,需要根據spfile創建一個pfile,修改這個pfile,然后使用這個pfile來啟動數據庫。之后需要再創建spfile然后使用spfile重啟數據庫。

在V$PARAMETER視圖里有兩個關鍵的字段(V$PARAMETER顯示會話級別有效的參數,V$SYSTEM_PARAMETER顯示在整個實例級別有效的參數):

ISSES_MODIFIABLE:表明擁有alter session權限的用戶是否可以在他們的會話級別修改這個初始化參數

ISSYS_MODIFIABLE:表明擁有ALTER SYSTEM權限的用戶是否可以修改這個參數。

select name,value,isdefault,isses_modifiable,issys_modifiable from V$PARAMETER where issys_modifiable <> 'FALSE' or ?isses_modifiable <> 'FALSE' order by name;

alter session set sort_area_size=10000000;

動態地修改初始化參數對開發人員和DBA來說是非常強大的特性。因此,如果不做限制的話,擁有alter session 特權的用戶就可以隨意地為某個會話的sort_area_size 分配大于100M的內存。

3.優化DB_CACHE_SIZE來提高性能

oracle 10g DB_BLOCK_BUFFERS變為隱含參數,在11g又被啟用,默認為0,意思是除非設置它,否則它不會被使用(用DB_CACHE_SIZE取而代之)。

DB_CACHE_SIZE是為主數據庫緩存或存放數據而初始分配的內存量。如果設置了MEMORY_TARGET或SGA_TARGET,那么該參數就無須設置。我們的目標應該是實現一個駐留在內存的數據庫,至少要把所有將被查詢的數據都放進內存里。

如果DB_CACHE_SIZE設置太低,不論怎樣優化這個系統,oracle也沒有足夠的內存來有效的執行操作,系統運行狀態也會很糟糕。如果設置過高,您的系統可能會使用交換空間,甚至停機。DB_CACHE_SIZE是SGA的一部分,用于存儲和處理數據以及查詢訪問。設置過低,那么最近使用的數據會從內存中清除出去,如果有另外一個查詢重新調用這些被清除的數據,就必須重新從磁盤中讀取(將會使用到I/O和CPU資源).

MEMORY_TARGET,SGA_TARGET(如果使用的話)和DB_CACHE_SIZE(如果設置了最小值) 是用來優化數據緩存命中率的關鍵參數:命中率就是指那些不用從磁盤上執行物理讀操作就可以訪問到的數據塊的比例。

如果系統負載情況不變,而緩存命中率劇烈變化,就應該立刻調查發生的原因。糟糕的連接和索引也會由于讀取許多索引塊而產生非常高的命中率,因此一定要保證命中率不是因為這些因素而提高的,而是因為系統經過良好調優而得到的。異常高的命中率通常也暗示有代碼用到了糟糕的索引或連接。

通過比較隨時間變化的命中率,可以幫助您注意系統某天發生的重大改變。

4.使用V$DB_CACHE_ADVICE優化DB_CACHE_SIZE

可以利用如下清單查看修改DB_CACHE_SIZE后對數據緩存命中率的影響

select name,size_for_estimate,size_factor,estd_pyhsical_read_factor from v$db_cache_advice;

NAME ? ? ? ? ? ?size_for_estimate ? ? ? ? ? size_factor ? ? ? ? ?estd_pyhsical_read_factor

DEFAULT4.16671.8322

DEFAULT8.33331.0169

DEFAULT12.51.0085

DEFAULT16.66671

DEFAULT20.83331

DEFAULT2411

當前的緩存大小為24M size_factor=1

我們可以吧緩存大小減小為16M 并維持當前的緩存命中率,因為SGA減小到16M時,PHYSICAL_READ_FACTOR仍為1

保持數據緩存命中率超過95%

有些例子中,將命中率從95%增大到98%,就可以顯著得提高性能--特別是最后命中在磁盤的那5%是系統的主要延遲,或者說磁盤的緩存已經不夠用了。

5.監控V$SQLAREA視圖以查找較慢的查詢

盡管低于95%的命中率通常都表明DB_CACHE_SIZE被設置得過低。命中率失真和那些非DB_CACHE_SIZE問題包括:

1.遞歸調用

2.缺少索引或抑制索引

3.內存中駐留的數據

4.UNDO/回滾段

5.數倍的邏輯讀

6.導致系統使用CPU的物理讀

通過監控V$SQLAREA視圖或企業管理器可以找到較慢的查詢。

6.設定DB_BLOCK_SIZE來反映數據讀的大小

如果系統中事務處理的吞吐量非常高或者系統內存有限,或許可以考慮把塊大小設置為小于8K

可以把DB_BLOCK_SIZE增大到8K或者16K ?或者把DB_FILE_MULTIBLOCK_READ_COUNT的值設定為(最大IO大小)DB_BLOCK_SIZE.這樣可以增大每次IO讀到內存中的數據量。

如果由于DB_FILE_MULTIBLOCK_READ_COUNT造成很多全表掃描(因為優化器確定執行全表掃描更快,所以決定更多地使用),那么把OPTIMIZER_INDEX_COST_ADJ設定于在1~10之間,這樣可以強制索引使用的更頻繁。

如果增大DB_BLOCK_SIZE,就必須重新創建數據庫,增大DB_FILE_MULTIBLOCK_READ_COUNT可以允許在一次IO里讀取更多塊,這樣可以帶來和增大塊大小一樣的好處。

7.把SGA_MAX_SIZE設置為主內存大小的25%到50%

如果使用SGA_MAX_SIZE參數,一般經驗是一開始將主內存的20%至25%分配給它。

如果SGA_MAX_SIZE<1G ?那么_KSM_GRANULE_SIZE的值是4M

如果1

如果SGA_MAX_SIZE設置為2000M 將DB_CACHE_SIZE設置為9M,那么DB_CACHE_SIZE被四舍五入至16M(因為粒度是16M)

8.優化Shared_pool_size以獲取最佳性能

oracle使用最近最少使用算法(LRU)

使用結果集緩存,需要設置RESULT_CACHE_SIZE= 和 RESULT_CACHE_MODE=FORCE參數(設置為FORCE以自動使用這個特性)。

為了確保最佳的利用共享SQL區域,請盡量使用存儲過程,因為被解析的SQL每次都完全相同,因此可以將其共享。

SQL的編寫必須完全一樣,這樣才能被重用。

PL/SQL把每條語句都轉換成大寫,然后整理了空格或換行符。

如果設定CURSOR_SHARING=FORCE 針對V$SQLAREA的查詢結果將會改變,這是因為oracle可以在內部構建前面所有語句共享的語句。現在共享語句只包含一條所有用戶共享的簡單語句。

設置足夠大的shared_pool_size以保證充分利用db_cache_size

保證數據字典命中率高于95%

select ((1-(sum(getmisses))/ (sum(gets) + sum(getmisses))))*100) "hit rats" from v$rowcache where gets+ getmisses <> 0;

可以對V$ROWCACHE視圖使用修改后的查詢,以查看這些參數如何組成數據字典緩存,也稱為行緩存

select parameter,gets,getmisses,modifications,flushes,(getmisses/decode(gets,0,1,gets)) getmiss_ratio,(case when (getmisses/decode(gets,0,1,gets)) > .1 then '*' else ' ' end) " " from v$rowcache where gets + getmisses <> 0;

保證庫緩存的重載率為0,并使命中率在95%以上,如果重載率超過1%,可能就應該增大參數shared_pool_size;

有兩種方法可以監控庫緩存:

1.生成STATSPACK報告

2.使用V$LIBRARYCACHE

使庫緩存的PIN命中率接近100%

數據字典緩存的丟失率應該少于10%~15%

oracle通過SHARED_POOL_RESERVED_SIZE參數為緊急操作保留了空間,V$SGASTAT視圖顯示了共享池內存的消耗速度。

使用X$KSMSP表來查看共享池里的詳細情況。

總結

以上是生活随笔為你收集整理的oracle自带调优,oracle 参数调优的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。