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> MTS_DISPATCHERS
8
9配置調度進程的數目。
10
113> MTS_MAX_DISPATCHERS
12
13配置調度進程的最大數目。
14
154> MTS_SERCERS
16
17啟動共享服務器的最初數目。
18
195> MTS_MAX_SERVERS
20
21設置共享服務器的最大數目。
22
236> 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> SVRMGRL
106
1072> CONNECT INTERNAL
108
1093> SHUTDOWN
110
1114> EXIT
112
1135> MV /U/PRODUCT/ORADATA/FOXMOLD/USER01.DBF /DB3/ORADATA
114
1156> SVRMGRL
116
1177> CONNECT INTERNAL
118
1198> STARTUP MOUNT FOXMOLD
120
1219> ALTER DATABASE RENAME FILE
122
123‘/U/PRODUCT/ORADATA/FOXMOLD/USER01.DBF’ TO
124
125‘/DB3/ORADATA/USER01.DBF’
126
12710> ALTER DATABASE OPEN
128
129第二種方法﹕ (ALTER TABLESPACE)
130
131關閉數據庫 \- 移動數據文件 \- 裝載并改名 \- 啟動
132
1331> SVRMGRL
134
1352> CONNECT INTERNAL
136
1373> SHUTDOWN
138
1394> EXIT
140
1415> MV /U/PRODUCT/ORADATA/FOXMOLD/USER01.DBF /DB3/ORADATA
142
1436> SVRMGRL
144
1457> CONNECT INTERNAL
146
1478> ALTER TABLESPACE DATA RENAME DATAFILE
148
149‘/U/PRODUCT/ORADATA/FOXMOLD/USER01.DBF’ TO
150
151‘/DB3/ORADATA/USER01.DBF’
152
1539> 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<P class=MsoNormal style="MARGIN-LEFT: 18pt; TEXT-INDENT: -18pt; mso-list: l1 level1 lfo1; tab-stops: list 18.0p</minextents>