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<minextents會降低系統的操作性能。
select class,count from v$waitstat where upper(class) in (‘system undo header)’,’system undo block’,
‘undo header’,’undo block’);
select sum(value) from v$sysstat where upper(name)
in (‘db block gets’,’consistent gets’);
第一條查詢中的每一類與第二條查詢中的比率最好<0.01
3. 提高緩沖區的效率。
select reloads,pins from v$librarycache;
reloads存入sql命令被載入和分解的次數
pins存入數據庫對sql高速緩沖區查找一條語句的次數
如果reloads與pins的比率大于1%則應增加init.ora中的shared_pool_size的參數值。
select getmisses,gets from v$rowcache;
如果reloads與pins的比率大于10%則應增加init.ora中的
shared_pool_size的參數值。
4. 用戶任何時點擁有的打開游標的最大數
修改init.ora中的open_cursors的參數值。
與高速緩存有關的是游標在會話中的緩存方式。
在init.ora中增加 session_cached_cursors=100
5. select sum(gets),sum(getmisses) from v$rowcache;
必須使getmisses比率接近0, 為了優化性能﹐可以增加init.ora中的參數shared_poll_size和db_block_buffers的值。
6. select name,value from v$sysstat where upper(name) in
(‘sorts(memory)’,’sorts(disk)’);
如果用于磁盤上的排序量較高﹐可以增加init.ora中的sort_area_size的值。
7. lgwr的日志文件如果切換太快會影響數據庫的活動﹐導致性能的下將。
在init.ora 中 checkpoint_process=true
log_checkpoint_interval=10000
log_checkpoint_timeout=1800
8. 多線程服務器(mts)的配置
1> mts_service
這是調度程序用來向sql.net監聽器注冊服務的服務名。
最好取和sid相同的名稱。
2> mts_dispatchers
配置調度進程的數目。
3> mts_max_dispatchers
配置調度進程的最大數目。
4> mts_sercers
啟動共享服務器的最初數目。
5> mts_max_servers
設置共享服務器的最大數目。
6> mts_listenter_address
這是調度程序用來向sql.net監聽器注冊服務的服務名的地址。
一個mts的配置例子:
在init.ora中
mts_listener_address=’(address=(protocol=tcp)(key=mydb))’
mts_dispatchers=’tcp,10’
mts_dispatchers=’ipx,2’
mts_max_dispatchers=10
mts_max_servers=10
mts_servers=2
在listener.ora中應包括下類似的內容:
listener=
(address_list=
(address=
(protocol=ipx)
(key=mydb)
)
(address=
(protocol=tcp)
(host=ourhost)
(port=1521
)
startup_wait_time_listener=0
connect_timeout_listener=10
trace_level_listener=admin
sid_list_listener=
(sid_list=
(sid_desc=
(sid_name=mydb)
)
)
添加mts參數之后要重新啟動數據庫。
在sql*plus下用ps命令檢查共享服務器和調度程序是否存在。
ø ps -efgrep foxmold;
具有ora_snnn_sid和ora_dnnn_sid名稱的進程分別是共享服務器和調度進程。
select username,program,server from v$session where audsid=userenv(‘sessionid’);
在server列中返回的值應該是shared,如果是dedicated,就說明沒有正確配置mts.
用lsnrctl services命令來檢查調度程序是否向監聽器登記了服務。
7. 移動數據庫文件
第一種方法﹕(alter database)
關閉數據庫-移動數據文件-裝載并改名-啟動
1> svrmgrl
2> connect internal
3> shutdown
4> exit
5> mv /u/product/oradata/foxmold/user01.dbf /db3/oradata
6> svrmgrl
7> connect internal
8> startup mount foxmold
9> alter database rename file
‘/u/product/oradata/foxmold/user01.dbf’ to
‘/db3/oradata/user01.dbf’
10> alter database open
第二種方法﹕(alter tablespace)
關閉數據庫-移動數據文件-裝載并改名-啟動
1> svrmgrl
2> connect internal
3> shutdown
4> exit
5> mv /u/product/oradata/foxmold/user01.dbf /db3/oradata
6> svrmgrl
7> connect internal
8> alter tablespace data rename datafile
‘/u/product/oradata/foxmold/user01.dbf’ to
‘/db3/oradata/user01.dbf’
9> alter database open
8. 統計分析
spool c:\analyze.sql
select 'analyze table 'trim(object_name)' compute statistics; '
from user_objects
where object_type='table'
然后運行analyze.sql文件即可
最后,對tablespace碎片進行清理.
select tablespace_name, percent_blocks_coalesced
from dba_free_space_coalesced
去看那一個tablespace對應的值不是100的就運行如下命令:
alter tablespace tablespace_name coalesce
注意:如果tablespace的值為100就沒有必要作此命令.
9. 移動table index 到另一個tablespace
1> spool c:\mv_index.sql
2> select ‘alter index ‘trim(object_name)’ rebuild tablespace foxmold1;’ from user_objects where object_type=’index’
3> 將此命令生成mv_index.sql文件
4> @c:\mv_index.sql
10. maintaining the controlfile
1> svrmgrl
2> connect internal
3> shutdown
4> exit
5> cp /u/product/oradata/foxmold/control01.ctl
/db4/oradata/control01.ctl
6> chmod 660 /db4/oradata/control01.ctl
7> 修改init.ora control_files=……
8> startup mount foxmold
11. maintaining redo log file
1> shutdown
2> exit
3> cp /disk1/*.rdo /disk4/*.rdo
4> chmod 660 /disk4/*.rdo
5> startup mount foxmold
12. recover syntax
a. recover a closed database
1> recover database
2> recover datafile ‘/disk1/df2.dbf’
3> alter database recover database
b. recover an open database
1> recover tablespace user_data
2> recover datafile 2
3> alter database recover datafile 2
注意﹕alter database一定在recover后執行。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器