ORACLE 服務器的配置及優化


ORACLE 服務器的配置及優化
1. 在ORACLE中實現分布式快速存取和充實內存是很重要的。

要不惜任何代價避免頁面調度和交換﹐每次都必須把系統全局區(SGA)放到內存。

將SGA放到內存中﹐在INIT.ORA中設置參數 PRE_PAGE_SGA

PRE_PAGE_SGA=YES

2. 回卷段的竟爭會降低系統的性能。

SELECT GETS,WAITS FROM V$ROLLSTAT;

GETS代表回卷段被訪問的次數

WAITS代表進程等待回卷段中哪個進程的次數

如果GETS與WAITS的比大于2%表示存在竟爭問題

解決辦法是創建更多的回卷段。

有兩種類型的鎖存竟爭會產生嚴重的后果﹕立即鎖存(IMMEDIATE)和等待(WAIT)鎖存。

等待鎖存的計算公式﹕

WAIT CONTENTION=(MISSES/(GETS+MISSES))*100

立即鎖存的計算公式﹕

IMMEDIATE CONNECTION=(IMMEDIATE_MISSES/(IMMEDIATE_GETS+IMMEDIATE_MISSES))*100

如果任何一個值>0則就存在對鎖存的竟爭

如果發生恢復分配鎖存的竟爭﹐可以減小INIT.ORA中的LOG_SMALL_ENTRY_MAX_SIZE的參數值。如果發生恢復復制竟爭﹐可以增大INIT.ORA中的LOG_SIMULATANOUS_COPIES的參數值。

任何回卷段的OPTIMAL參數的設置不能太小﹐如果OPTIMAL

  1<minextents會降低系統的操作性能。 (‘db="" (‘sorts(memory)’,’sorts(disk)’);="" (‘system="" 1="" 3\.="" 4\.="" 5\.="" 6\.="" 7\.="" 8\.="" block="" block’);="" block’,="" checkpoint_process="TRUE" class,count="" from="" getmisses,gets="" gets’);="" gets’,’consistent="" header)’,’system="" header’,’undo="" in="" lgwr的日志文件如果切換太快會影響數據庫的活動﹐導致性能的下將。="" log_checkpoint_interval="10000" log_checkpoint_timeout="1800" name,value="" pins存入數據庫對sql高速緩沖區查找一條語句的次數="" reloads,pins="" reloads存入sql命令被載入和分解的次數="" select="" session_cached_cursors="100" shared_pool_size的參數值。="" sum(gets),sum(getmisses)="" sum(value)="" undo="" upper(class)="" upper(name)="" v$librarycache;="" v$rowcache;="" v$sysstat="" v$waitstat="" where="" ‘undo="" 中="" 修改init.ora中的open_cursors的參數值。="" 在init.ora="" 在init.ora中增加="" 多線程服務器(mts)的配置="" 如果reloads與pins的比率大于1%則應增加init.ora中的shared_pool_size的參數值。="" 如果reloads與pins的比率大于10%則應增加init.ora中的="" 如果用于磁盤上的排序量較高﹐可以增加init.ora中的sort_area_size的值。="" 必須使getmisses比率接近0,="" 提高緩沖區的效率。="" 為了優化性能﹐可以增加init.ora中的參數shared_poll_size和db_block_buffers的值。="" 用戶任何時點擁有的打開游標的最大數="" 第一條查詢中的每一類與第二條查詢中的比率最好<0.01="" 與高速緩存有關的是游標在會話中的緩存方式。=""> MTS_SERVICE   
  2  
  3這是調度程序用來向SQL*NET監聽器注冊服務的服務名。   
  4  
  5最好取和SID相同的名稱。   
  6  
  72&gt; MTS_DISPATCHERS   
  8  
  9配置調度進程的數目。   
 10  
 113&gt; MTS_MAX_DISPATCHERS   
 12  
 13配置調度進程的最大數目。   
 14  
 154&gt; MTS_SERCERS   
 16  
 17啟動共享服務器的最初數目。   
 18  
 195&gt; MTS_MAX_SERVERS   
 20  
 21設置共享服務器的最大數目。   
 22  
 236&gt; MTS_LISTENTER_ADDRESS   
 24  
 25這是調度程序用來向SQL*NET監聽器注冊服務的服務名的地址。   
 26  
 27一個MTS的配置例子:   
 28  
 29在INIT.ORA中   
 30  
 31mts_listener_address=’(ADDRESS=(PROTOCOL=TCP)(KEY=MYDB))’   
 32  
 33mts_dispatchers=’tcp,10’   
 34  
 35mts_dispatchers=’ipx,2’   
 36  
 37mts_max_dispatchers=10   
 38  
 39mts_max_servers=10   
 40  
 41mts_servers=2   
 42  
 43在LISTENER.ORA中應包括下類似的內容:   
 44  
 45LISTENER=   
 46  
 47(ADDRESS_LIST=   
 48  
 49(ADDRESS=   
 50  
 51(PROTOCOL=IPX)   
 52  
 53(KEY=MYDB)   
 54  
 55)   
 56  
 57(ADDRESS=   
 58  
 59(PROTOCOL=TCP)   
 60  
 61(HOST=OURHOST)   
 62  
 63(PORT=1521   
 64  
 65)   
 66  
 67STARTUP_WAIT_TIME_LISTENER=0   
 68  
 69CONNECT_TIMEOUT_LISTENER=10   
 70  
 71TRACE_LEVEL_LISTENER=ADMIN   
 72  
 73SID_LIST_LISTENER=   
 74  
 75(SID_LIST=   
 76  
 77(SID_DESC=   
 78  
 79(SID_NAME=MYDB)   
 80  
 81)   
 82  
 83)   
 84  
 85添加MTS參數之后要重新啟動數據庫。   
 86  
 87在SQL*PLUS下用PS命令檢查共享服務器和調度程序是否存在。   
 88  
 89Ø PS -EF|GREP FOXMOLD;   
 90  
 91具有ORA_SNNN_SID和ORA_DNNN_SID名稱的進程分別是共享服務器和調度進程。   
 92  
 93SELECT USERNAME,PROGRAM,SERVER FROM V$SESSION WHERE AUDSID=USERENV(‘SESSIONID’);   
 94  
 95在SERVER列中返回的值應該是SHARED,如果是DEDICATED,就說明沒有正確配置MTS.   
 96  
 97用LSNRCTL SERVICES命令來檢查調度程序是否向監聽器登記了服務。   
 98  
 997\. 移動數據庫文件   
100  
101第一種方法﹕(ALTER DATABASE)   
102  
103關閉數據庫-移動數據文件-裝載并改名-啟動   
104  
1051&gt; SVRMGRL   
106  
1072&gt; CONNECT INTERNAL   
108  
1093&gt; SHUTDOWN   
110  
1114&gt; EXIT   
112  
1135&gt; MV /U/PRODUCT/ORADATA/FOXMOLD/USER01.DBF /DB3/ORADATA   
114  
1156&gt; SVRMGRL   
116  
1177&gt; CONNECT INTERNAL   
118  
1198&gt; STARTUP MOUNT FOXMOLD   
120  
1219&gt; ALTER DATABASE RENAME FILE   
122  
123‘/U/PRODUCT/ORADATA/FOXMOLD/USER01.DBF’ TO   
124  
125‘/DB3/ORADATA/USER01.DBF’   
126  
12710&gt; ALTER DATABASE OPEN   
128  
129第二種方法﹕(ALTER TABLESPACE)   
130  
131關閉數據庫-移動數據文件-裝載并改名-啟動   
132  
1331&gt; SVRMGRL   
134  
1352&gt; CONNECT INTERNAL   
136  
1373&gt; SHUTDOWN   
138  
1394&gt; EXIT   
140  
1415&gt; MV /U/PRODUCT/ORADATA/FOXMOLD/USER01.DBF /DB3/ORADATA   
142  
1436&gt; SVRMGRL   
144  
1457&gt; CONNECT INTERNAL   
146  
1478&gt; ALTER TABLESPACE DATA RENAME DATAFILE   
148  
149‘/U/PRODUCT/ORADATA/FOXMOLD/USER01.DBF’ TO   
150  
151‘/DB3/ORADATA/USER01.DBF’   
152  
1539&gt; ALTER DATABASE OPEN   
154  
1558\. 統計分析   
156  
157SPOOL C:\ANALYZE.SQL   
158  
159SELECT 'ANALYZE TABLE '||TRIM(OBJECT_NAME)||' COMPUTE STATISTICS; '   
160  
161FROM USER_OBJECTS   
162  
163WHERE OBJECT_TYPE='TABLE'   
164  
165然后運行analyze.sql文件即可   
166  
167最后,對TABLESPACE碎片進行清理.   
168  
169SELECT TABLESPACE_NAME, PERCENT_BLOCKS_COALESCED   
170  
171FROM DBA_FREE_SPACE_COALESCED   
172  
173去看那一個TABLESPACE對應的值不是100的就運行如下命令:   
174  
175ALTER TABLESPACE TABLESPACE_NAME COALESCE   
176  
177注意:如果TABLESPACE的值為100就沒有必要作此命令.   
178  
1799\. 移動TABLE INDEX 到另一個TABLESPACE   
180  
1811&gt; SPOOL C:\MV_INDEX.SQL   
182  
1832&gt; SELECT ‘ALTER INDEX ‘||TRIM(OBJECT_NAME)||’ REBUILD TABLESPACE FOXMOLD1;’ FROM USER_OBJECTS WHERE OBJECT_TYPE=’INDEX’   
184  
1853&gt; 將此命令生成MV_INDEX.SQL文件   
186  
1874&gt; @C:\MV_INDEX.SQL   
188  
18910\. MAINTAINING THE CONTROLFILE   
190  
1911&gt; SVRMGRL   
192  
1932&gt; CONNECT INTERNAL   
194  
1953&gt; SHUTDOWN   
196  
1974&gt; EXIT   
198  
1995&gt; CP /U/PRODUCT/ORADATA/FOXMOLD/CONTROL01.CTL   
200  
201/DB4/ORADATA/CONTROL01.CTL   
202  
2036&gt; CHMOD 660 /DB4/ORADATA/CONTROL01.CTL   
204  
2057&gt; 修改INIT.ORA CONTROL_FILES=……   
206  
2078&gt; STARTUP MOUNT FOXMOLD   
208  
20911\. MAINTAINING REDO LOG FILE   
210  
2111&gt; SHUTDOWN   
212  
2132&gt; EXIT   
214  
2153&gt; CP /DISK1/*.RDO /DISK4/*.RDO   
216  
2174&gt; CHMOD 660 /DISK4/*.RDO   
218  
2195&gt; STARTUP MOUNT FOXMOLD   
220  
22112\. RECOVER SYNTAX   
222  
223A. RECOVER A CLOSED DATABASE   
224  
2251&gt; RECOVER DATABASE   
226  
2272&gt; RECOVER DATAFILE ‘/DISK1/DF2.DBF’   
228  
2293&gt; ALTER DATABASE RECOVER DATABASE   
230  
231B. RECOVER AN OPEN DATABASE   
232  
2331&gt; RECOVER TABLESPACE USER_DATA   
234  
2352&gt; RECOVER DATAFILE 2   
236  
2373&gt; ALTER DATABASE RECOVER DATAFILE 2   
238注意﹕ALTER DATABASE一定在RECOVER后執行。</minextents會降低系統的操作性能。>
Published At
Categories with 数据库类
comments powered by Disqus