文章詳情頁(yè)
優(yōu)化Oracle .Net配置
瀏覽:122日期:2023-11-20 10:10:28
由于Oracle數(shù)據(jù)庫(kù)通常需要在不同地方被訪問(wèn),所以O(shè)racle開(kāi)發(fā)人員必須搞清楚數(shù)據(jù)庫(kù)性能如何被網(wǎng)絡(luò)通訊所影響。由Oracle提供的TNS(Transparent Network Substrate)答應(yīng)不同數(shù)據(jù)庫(kù)之間的分布式通訊。作為一種分布式協(xié)議的TNS,答應(yīng)遠(yuǎn)距離的系統(tǒng)之間的透明數(shù)據(jù)庫(kù)通訊。TNS成為Oracle邏輯數(shù)據(jù)請(qǐng)求與遠(yuǎn)距離服務(wù)器的物理通訊之間的“絕緣體(insulator)”。由此,網(wǎng)絡(luò)治理人員可以控制很多方面的網(wǎng)絡(luò)性能優(yōu)化,這樣,Oracle治理人員就極少獲得影響整個(gè)數(shù)據(jù)庫(kù)性能(圖A)的網(wǎng)絡(luò)設(shè)置的控制權(quán)。
你可以通過(guò)使用一些要害設(shè)置來(lái)提高分布式處理的性能,這篇文章討論了一些重要的設(shè)置。與分布式通訊相關(guān)的init.ora參數(shù),比如tcp.nodelay,能夠用于改變Oracle數(shù)據(jù)庫(kù)中的信息包傳輸(packet-shipping)的機(jī)制。本文中我也討論了sqlnet.ora, tnsnames.ora和protocol.ora文件中的參數(shù)。你可以使用這些方法來(lái)改變TCP信息包的配置和大小,改變之后的信息包能夠?qū)W(wǎng)絡(luò)透明層產(chǎn)生重要影響,以達(dá)到提高整個(gè)Oracle交流的目的。Oracle NET不能答應(yīng)Oracle治理人員優(yōu)化Oracle網(wǎng)絡(luò)參數(shù)以提高網(wǎng)絡(luò)性能。事實(shí)上,絕大部分網(wǎng)絡(luò)通訊都無(wú)法在Oracle環(huán)境中得到優(yōu)化。Oracle *Net是位于特定網(wǎng)絡(luò)協(xié)議棧的OSI模型中的一個(gè)層。為了響應(yīng)一個(gè)數(shù)據(jù)請(qǐng)求,Oracle *Net 獲得數(shù)據(jù)并傳遞到協(xié)議棧。協(xié)議棧然后從這一數(shù)據(jù)建立一個(gè)信息包并傳遞到網(wǎng)絡(luò)。Oracle *Net的作用是將數(shù)據(jù)傳送到協(xié)議棧。然而,DBA能夠控制網(wǎng)絡(luò)信息包的頻率和大小。在Oracle中存在著豐富的可以更改信息包頻率和大小的工具。一個(gè)簡(jiǎn)單的例子就是以更低的頻率改變傳送更大數(shù)量快照的時(shí)間間隔。可以使用不同參數(shù)來(lái)優(yōu)化不同服務(wù)器之間的Oracle *Net.請(qǐng)記住,網(wǎng)絡(luò)優(yōu)化是Oracle范圍之外的操作,一個(gè)合格的網(wǎng)絡(luò)治理人員應(yīng)該經(jīng)得起各種詢問(wèn)。使用一些設(shè)置可以影響網(wǎng)絡(luò)信息包傳送的頻率和大小,這些設(shè)置包含在以下的參數(shù)文件。protocol.ora文件—tcp.nodelaysqlnet.oraserver 文件—automatic_ipcsqlnet.oraclient 文件—break_poll_skiptnsnames.ora文件—SDU, TDUlistener.ora文件—SDU, TDU, 以及queuesize這些優(yōu)化參數(shù)只影響Oracle *Net層的性能。現(xiàn)在讓我們仔細(xì)地查看這些參數(shù),以及這些參數(shù)如何被調(diào)整以提高Oracle *Net.在缺省的情況下,Oracle *Net在傳送數(shù)據(jù)之前一直等待,直到緩沖區(qū)填滿。所以請(qǐng)求一般不會(huì)立即發(fā)送它們的目的地。當(dāng)大量數(shù)據(jù)從一端流往另一端時(shí)候,這種情況很常見(jiàn)。添加一個(gè)protocol.ora文件,然后指定一個(gè)tcp.nodelay停止緩沖溢出延遲,都可以解決這一問(wèn)題。protocol.ora文件可以被指定以顯示所有TCP/IP執(zhí)行中的數(shù)據(jù)。這一參數(shù)可用于服務(wù)端和客戶端。protocol.ora聲明為:tcp.nodelay = yes指定這一參數(shù)使得TCP緩沖被跳過(guò),以致可以立即發(fā)送每一個(gè)請(qǐng)求。然而請(qǐng)注重,網(wǎng)絡(luò)通訊量會(huì)增大,因?yàn)楦〉模斓男畔粋鬟f,所以會(huì)導(dǎo)致網(wǎng)絡(luò)速度的減慢。tcp.nodelay參數(shù)只有在TCP超時(shí)產(chǎn)生的時(shí)候才被使用。設(shè)置tcp.nodelay可以提高數(shù)據(jù)庫(kù)服務(wù)器之間的大量數(shù)據(jù)通訊的性能。sqlnet.ora中的automatic_ipc參數(shù)automatic_ipc參數(shù)忽略了網(wǎng)絡(luò)層,所以加快了數(shù)據(jù)庫(kù)的邏輯連接。當(dāng)automatic_ipc=on,Oracle *Net查看當(dāng)?shù)財(cái)?shù)據(jù)庫(kù)是否定義以相同的名稱,假如是,網(wǎng)絡(luò)層將被忽略,因?yàn)榇藭r(shí)的連接被直接轉(zhuǎn)譯為當(dāng)?shù)氐腎PC連接。這對(duì)于數(shù)據(jù)庫(kù)服務(wù)器是有用的,但對(duì)于Oracle *Net客戶端是沒(méi)有什么用處。只有當(dāng)一個(gè)Oracle *Net連接于當(dāng)?shù)財(cái)?shù)據(jù)庫(kù)的時(shí)候,automatic_ipc參數(shù)才有可能使用在數(shù)據(jù)庫(kù)服務(wù)器上。假如不需要當(dāng)?shù)剡B接,將這一參數(shù)設(shè)置為off,由此可以提高所有Oracle *Net客戶端的性能。tnsnames.ora和listener.ora中的SDU和TDU參數(shù)SDU(session data unit)和TDU(transport date unit)都位于tnsnames.ora and listener.ora文件中。SDU指定信息包的大小以傳送到網(wǎng)絡(luò)。在理想情況下,SDU不會(huì)超過(guò)MTU(maximum transmission unit)的大小。MTU是一個(gè)固定值,它取決于使用的實(shí)際網(wǎng)絡(luò)操作。Oracle建議SDU設(shè)置相同于MTU.注重在7.3.3之前,SDU和TDU都固定于2K而且不能改變。TDU是使用于Oracle *Net分組數(shù)據(jù)的缺省信息包。在理想情況下,TDU參數(shù)應(yīng)該是SDU參數(shù)的倍數(shù)。SDU和TDU的缺省值為2,048,最大值都為32,767字節(jié)。

標(biāo)簽:
Oracle
數(shù)據(jù)庫(kù)
排行榜
