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 (mts)="" (‘db="" (‘sorts(memory)’,’sorts(disk)’);="" (‘system="" 0,="" 1="" 1%="" 10%="" 3\.="" 4\.="" 5\.="" 6\.="" 7\.="" 8\.="" <0.01="" block="" block’);="" block’,="" checkpoint_process="TRUE" class,count="" db_block_buffers="" from="" getmisses="" getmisses,gets="" gets’);="" gets’,’consistent="" header)’,’system="" header’,’undo="" in="" init.ora="" lgwr="" log_checkpoint_interval="10000" log_checkpoint_timeout="1800" name,value="" open_cursors="" pins="" reloads="" reloads,pins="" select="" session_cached_cursors="100" shared_poll_size="" shared_pool_size="" sort_area_size="" sql="" sum(gets),sum(getmisses)="" sum(value)="" undo="" upper(class)="" upper(name)="" v$librarycache;="" v$rowcache;="" v$sysstat="" v$waitstat="" where="" ‘undo="" 中="" 中增加="" 中的="" 中的參數="" 修改="" 則應增加="" 命令被載入和分解的次數="" 和="" 在="" 多線程服務器="" 如果="" 如果用于磁盤上的排序量較高﹐可以增加="" 存入="" 存入數據庫對="" 必須使="" 提高緩沖區的效率。="" 會降低系統的操作性能。="" 比率接近="" 為了優化性能﹐可以增加="" 用戶任何時點擁有的打開游標的最大數="" 的值。="" 的參數值。="" 的日志文件如果切換太快會影響數據庫的活動﹐導致性能的下將。="" 的比率大于="" 的配置="" 第一條查詢中的每一類與第二條查詢中的比率最好="" 與="" 與高速緩存有關的是游標在會話中的緩存方式。="" 高速緩沖區查找一條語句的次數=""> 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
179&lt;P class=MsoNormal style="MARGIN-LEFT: 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo1; tab-stops: list 18.0p</minextents>
Published At
Categories with 数据库类
comments powered by Disqus