正式上崗前的準備:怎麼檢視資料庫引數配置資訊
做效能測試實際上是一個不短調優和測試的過程,而不是一次測試結束就完成了那麼簡單,中間分析調優的過程至關重要,接觸oracle也有很長時間了,我們開發使用的資料庫都是使用oracle的,也一直沒有對oracle做總結,這裡寫這篇文章也算是自己學習和總結吧。下面就開始吧,不對之處還望指正,有些是摘自學習從書上拿來,有些查到的資料收集,也有一些自己的心的。
2、專用伺服器與共享伺服器的區別:在專用連線中,連線所需要的資源全部在PGA中分配。該記憶體區為指定連線私有,其它進:程不能訪問。 專用連線採用一對一的連線方式,能很快的響應使用者的請求,但是,如果連線使用者太多時,由於要對每一個連線分配資源,因此,連線數受硬體限制比較大。為了克服這種情況,Oracle 提出了共享連線的連線方法,即用一個伺服器的程式響應多個使用者連線,與專用連線不同有連線時才建立PGA不同,共享連線在例項一啟動,就分配指定數量的伺服器程式,所使用者的連線,以排隊的方式,由分配器指定給伺服器程式,其它的程式排隊等待。只要使用者的請求一執行完,就會馬上斷開連線,分配器會把空閒的伺服器程式分配給其它排除的程式。
長事務的共享連線會造成shared server程式的嚴重排隊,造成效能的嚴重下降,長事務採用專用模式
在短事務多使用者併發的情況下,多用Oracle的共享模式提高資料庫效能,提高訪問速度。web服務都是採用這樣的服務模式來提高系統的併發效能,如果你的是j2ee或者.net的web服務都是需要採用這樣的服務模式,具體配置過程你可以查手冊。。。
檢視共享配置成功的方式: 可在登陸sql下輸入以下命令 Sql>show parameter dispat顯示出含有dispat的所有涉及到的引數 Sql>show parameter share 顯示出含有share的所有涉及到的引數 SELECT * FROM V$PARAMETER 檢視Oracle所有的配置引數 select username,server from v$session檢視所有的session以及它們的狀態 select name, (busy / (busy + idle))*100 "Dispatcher % busy Rate" from V$DISPATCHER 在命令列下輸入 lsnrctl services 可檢視所有監聽服務的狀態以及連線數量 正確的監聽連線顯示如下 服務摘要.. 服務 "PLSExtProc" 包含 1 個例程。 例程 "PLSExtProc", 狀態 UNKNOWN, 包含此服務的 1 個處理程式... 處理程式: "DEDICATED" 已建立:0 已被拒絕:0 LOCAL SERVER 服務 "RMS01_XPT" 包含 1 個例程。 例程 "rms01", 狀態 READY, 包含此服務的 2 個處理程式... 處理程式: "DEDICATED" 已建立:8 已拒絕:0 狀態:ready LOCAL SERVER "D000" 已建立:59 已被拒絕:0 當前: 57 最大: 1002 狀態: ready DISPATCHER (ADDRESS=(PROTOCOL=tcp)(HOST=gate2)(PORT=1685)) 服務 "rms01" 包含 1 個例程。 例程 "rms01", 狀態 READY, 包含此服務的 2 個處理程式... 處理程式: "DEDICATED" 已建立:8 已拒絕:0 狀態:ready LOCAL SERVER "D000" 已建立:59 已被拒絕:0 當前: 57 最大: 1002 狀態: ready DISPATCHER (ADDRESS=(PROTOCOL=tcp)(HOST=gate2)(PORT=1685)) 命令執行成功
D000建立的連線說明的,當前共享模式下的連線已經配置成功。
SGA的記憶體配置建議為系統記憶體的55%; 配置完成需要重啟oracle資料庫 sql>shutdown; sql>startup; 5、其他引數說明:
共享池(SHARED_POOL):用於快取最近被執行的SQL語句和最近被使用的資料定義 緩衝區快取記憶體(DB_CACHE):用於快取從資料檔案中檢索出來的資料塊。可以大大提高查詢和更新資料的效能。使用LRU演算法進行管理 大型池(LARGE_POOL): 只用於shared server環境。可以減輕共享池的負擔,可以為備份、恢復等操作來使用,不使用LRU演算法來管理. Java 池(JAVA_POOL):為Java命令的語法分析提供服務,在安裝和使用Java的情況下使用. Program Global Area(PGA): PGA是為每個連線到Oracle database的使用者程式保留的記憶體。 Program Global Area(PGA): PGA儲存一個伺服器程式或後臺程式的資料和控制資訊,並且只能由一個程式使用。它在程式建立時分配,在程式結束時被收回。 6、一般這些引數配置經驗值:
設定SGA記憶體大小的經驗公式:(作為參考)
假定oracle是 32 bit ,伺服器RAM大於2G ,注意你的PGA的情況,,則建議 shared_pool_size + data buffer +large_pool_size + java_pool_size < 1.6G 再具體化,如果512M RAM 建議 shared_pool_size = 50M, data buffer = 200M 如果1G RAM shared_pool_size = 100M , data buffer = 500M 如果2G RAM shared_pool_size = 150M ,data buffer = 1.2G 可以通過設定pre_page_sga=true,使得資料庫啟動的時候就把所有記憶體頁裝載,這樣可能起到一定的作用。 alter system set timed_statistics = true 下面的檢視提供了關於SGA元件和他們的動態大小的資訊: 檢視 描述 V$SGA 顯示關於SGA的摘要資訊. V$SGAINFO 顯示關於SGA的大小資訊,包括不同SGA元件的大小資訊,記憶體顆粒大小,和自由記憶體空間 V$SGASTAT 顯示SGA的詳細資訊. V$SGA_DYNAMIC_COMPONENTS 顯示SGA元件的資訊.此檢視摘要了從例項啟動以來所有SGA大小調整操作資訊. V$SGA_DYNAMIC_FREE_MEMORY 顯示為將來調整SGA大小可用的自由記憶體空間. V$SGA_RESIZE_OPS Displays 關於最近400條碗櫥大額SGA大小調整操作的資訊. V$SGA_CURRENT_RESIZE_OPS 顯示當前進行中的關於SGA大小調整的操作資訊.一個調整操作是SGA元件的動態增大或減小。 查詢動態效能檢視 SELECT SUM(value) FROM V$SGA job_queue_processes:oracle任務佇列數量,不一定越大越好 Dispatchers:開啟後Oracle可自動設定 pga_aggregate_target:決定可以由所有伺服器程式使用的記憶體的總量 open_cursors:開啟游標數 processes:同時連線的程式數 db_block_size:資料庫塊大小,Oracle預設塊為2KB,太小了,因為如果我們有一個8KB的資料,則2KB塊的資料庫要讀4次盤,才能讀完,而8KB塊的資料庫只要1次就讀完了,大大減少了I/O操作。資料庫安裝完成後,就不能再改變db_block_size的值了,只能重新建立資料庫並且建庫時,要選擇手工安裝資料庫 db_file_multiblock_read_count 影響Oracle在執行全表掃描時一次讀取的block的數量 Oracle最多每次IO能夠讀取128個Block,由於block_size為8k,也就是每次最多讀取了1M資料. Oracle一次IO能讀取多少block還和很多因素有關,比如儲存是否連續,磁碟是否經過條帶等方式劃分,並且Oracle的單次IO讀取不能跨越Extent邊界等.某些平臺還和作業系統的引數設定有關.
10、修改方法 修改檔案後的,對該檔案的載入步驟(使該檔案生效的方法): Sqlplus sys/sys as sysdba SQL> shutdown abort; SQL> create spfile from pfile='E:\oracle\product\10.2.0\admin\RMS\pfile\init.ora.2302007162934'; SQL> startup; 通過命令列修改引數的方法: 例: Sql>alter system set job_queue_processes=50
SQL語句的效率: 我們可以調整應用程式的SQL質量: 1.不要進行全表掃描(Full Table Scan):全表掃描導致大量的I/O 2.儘量建好和使用好索引:建索引也是有講究的,在建索引時,也不是索引越多越好,當一個表的索引達到4個以上時,ORACLE的效能可能還是改善不了,因為OLTP系統每表超過5個索引即會降低效能,而且在一個sql 中, Oracle 從不能使用超過 5個索引;當我們用到GROUP BY和ORDER BY時,ORACLE就會自動對資料進行排序,而ORACLE在INIT.ORA中決定了sort_area_size區的大小,當排序不能在我們給定的排序區完成時,ORACLE就會在磁碟中進行排序,也就是我們講的臨時表空間中排序, 過多的磁碟排序將會令 free buffer waits 的值變高,而這個區間並不只是用於排序的,對於開發人員我提出如下忠告: 1)、select,update,delete 語句中的子查詢應當有規律地查詢少於20%的錶行.如果一個語句查詢的行數超過總行數的20%,它將不能通過使用索引獲得效能上的提高. 2)、索引可能產生碎片,因為記錄從表中刪除時,相應也從表的索引中刪除.表釋放的空間可以再用,而索引釋放的空間卻不能再用.頻繁進行刪除操作的被索引的表,應當階段性地重建索引,以避免在索引中造成空間碎片,影響效能.在許可的條件下,也可以階段性地truncate表,truncate命令刪除表中所有記錄,也刪除索引碎片. 3)、在使用索引時一定要按索引對應欄位的順序進行引用。 4)、用(+)比用NOT IN更有效率
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25736250/viewspace-703391/,如需轉載,請註明出處,否則將追究法律責任。
select * from v$dispatcher;檢視當前共享服務的監聽以及狀態
select * from v$shared_server; 檢視當前shareserver執行緒的狀態
SGA = 55%實體記憶體
Shared pool = 45% SGA
Buffer cache = 45% SGA
Redo Log Cache = 10% SGA
SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY
相關文章
- [Q]怎麼檢視資料庫引數 zt資料庫
- 【手摸手玩轉 OceanBase 166】怎麼檢視資料備份相關引數?
- MySQL檢視當前資料庫庫MySql資料庫
- oracle 資料庫安裝前環境檢查和準備工作Oracle資料庫
- 檢視資料庫中的隱藏引數(指令碼)資料庫指令碼
- 資料庫相關崗位面試準備建議資料庫面試
- win10怎樣檢視電腦配置引數_win10電腦配置引數檢視教程Win10
- 資料遷移前的準備和系統檢查
- Oracle資料庫升級前必要的準備工作Oracle資料庫
- 檢視引數(parameter)的字典與資料庫字符集資料庫
- 檢視資料庫中各表資訊資料庫
- 如何檢視資料庫當前的狀態?資料庫
- win10怎麼看電腦配置資訊 win10如何檢視電腦硬體引數Win10
- 檢視mysql資料庫連線數、併發數相關資訊MySql資料庫
- win10筆記本怎麼看配置引數 win10如何檢視膝上型電腦配置資訊Win10筆記
- 檢視各項Oracle資料庫資訊Oracle資料庫
- 檢視JVM預設配置引數JVM
- 如何檢視資料庫中的授權資訊資料庫
- 資料庫db_files引數增大怎麼辦資料庫
- win10系統怎麼檢視電腦配置 檢視電腦配置資訊的詳細方法Win10
- win10如何檢視電腦配置引數 win10系統配置怎麼看Win10
- 在開啟dbcc連線資料庫檢視資料庫配置引數時提示SQL1337錯誤資料庫SQL
- Nagios資料庫引數配置分析iOS資料庫
- Linux檢視環境變數當前資訊和檢視命令Linux變數
- Datapump資料遷移前的準備工作
- 什麼是資料庫檢視?資料庫
- [Q]怎麼檢視資料庫版本 zt及實驗資料庫
- 檢視資料庫版本與補丁的版本資訊資料庫
- 檢視oracle資料庫例項引數的集中方式及其異同Oracle資料庫
- Logcat怎麼設定filter,檢視當前執行app的log資訊GCFilterAPP
- mysql 的資料庫同步怎麼配置?MySql資料庫
- postgresql資料庫怎麼備份SQL資料庫
- oracle10g data guard 主備資料庫配置引數說明Oracle資料庫
- Openfire安裝準備-MySQL資料庫準備MySql資料庫
- ORACLE資料庫檢視ACQ(ACTIVE CHECKPOINT QUEUE)資訊Oracle資料庫
- 配置資料庫非同步I/O引數資料庫非同步
- 檢視oracle資料庫的連線數以及使用者檢視Oracle資料庫
- Datapump資料遷移前的準備工作(二)