TNS服務器被看作Oracle的邏輯數據請求中的絕緣體和遠程服務器間的服務器。同樣的,網絡管理員有能力控制網絡性能調諧性,但是Oracle管理員沒有控制影響數據庫性能的網絡設置的權利。
可以利用下面我所說的重要的設置來改變分布式事物元的性能。其中包括了sqlnet.ora, tnsnames.ora, 和 protocol.ora文件中的參數,這些參數可以被用做改變設置和TCP包的大小,並且調整這些參數可以影響根本的網絡傳輸層以便改變Oracle事物元的吞吐量。
正如剛才所說,Oracle網不允許Oracle專業人員調整根本的網絡傳輸層,並且大多數的網絡流量不能在Oracle環境中被改變。記住,Oracle網絡是一個在OSI模型中的網絡層,這個網絡層存在於網絡協議棧上。
但是,網絡信息包的頻率和大小可以被Oracle DBA來控制。Oracle有大量的工具來改變信息包的頻率和大小。
在服務器間的Oracle網絡連接可以用幾個參數來調諧。但是,你一定要記住,網絡的調諧一定要在Oracle的外面並且一個有資格的網絡管理員必須有在被商議後才可以調諧網絡。信息包的頻率和大小可以受到下面參數文件的設置的影響。
·sqlnet.ora服務器文件——automatic_ipc參數
·sqlnet.ora 客戶文件—break_poll_skip 參數
·tnsnames.ora 和 listener.ora 文件—SDU 和 TDU 參數
·protocol.ora 文件—tcp.nodelay 參數
這些調諧參數僅僅影響Oracle網絡層的性能。讓我們來詳細的解釋一下它們並看看它們怎麼被調整用來改變Oracle網絡吞吐量。
在傳輸數據之前Oracle網絡默認等待直到緩沖器被填滿。因此,需求不能被立即送到它們的目的地。當大量的數據從一個地方送到另外一個地方的時候這個是最普通的了。Oracle網絡不能傳送信息包直到緩沖器滿了。添加一個protocol.ora 文件和指定一個tcp.nodelay 停止緩沖器的延遲可以修補這個缺陷。
protocol.ora文件可以被指定用來說明所有TCP/IP實現的無數據緩沖。這個參數可以被用在客戶和服務器端。protocol.ora語句是這樣的:
tcp.nodelay = yes
指定這個參數可以使TCP緩沖器被跳過這樣每個請求就可以很快的被送到。但是請記住,由於更小和更頻繁的信息包的傳送導致網絡流量的增加,這樣就會降低網絡的速度。
tcp.nodelay
tcp.nodelay參數僅僅在TCP遭遇超時設定的時候被使用。當在數據庫服務器之間有大量的流量時設置tcp.nodelay可以導致在性能上巨大的改變。
sqlnet.ora文件中的automatic_ip參數
automatic_ipc參數迂回於網絡層,所以它可以給本地連接到數據庫加速。當automatic_ipc=on的時候,Oracle網絡會檢查本地數據庫是否被定義成相同的別,如果有,當連接被直接轉化成本地ICP連接的時候網絡層被回避。這個在數據庫服務器上是非常有用的,但是對於Oracle網絡用戶來說這個一點用都沒有。
當Oracle網絡連接必須被當作本地數據庫時,automatic_ipc參數僅僅應該被用在數據庫服務器上。如果不需要本地連接的時候,將這個參數設置成off,通過利用這個設置,所有的Oracle網絡可以可以改善其性能。
tnsnames.ora文件中的SDU和TDU
SDU和TDU參數位於tnsnames.ora 和 listener.ora文件中。SDU指定送入網絡的信息包的大小,理論上,SDU不應該超過MTU最大值的大小。MTU依賴一個現實的網絡實現上,它是一個不變值。SDU在Oracle中的地位和MTU一樣。
在Oracle的網絡中,TDU的信息包的大小是一個默認值。理想狀態下,TDU參數應該被定義為SDU參數的一倍。SDU和TDU默認的值的大小是2048,最大值是32767字節。