Oracle数据库在不同的地域被人们广泛使用,所以就必须要有专业的Oracle人员懂得网络连接是怎么样影响数据库性能的。Oracle提供的
TNS允许在每个数据库中进行分配通信。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网络吞吐量。
protocol.ora文件中的tcp.nodelay参数
在传输数据之前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字节。
下面是使用SDU和TDU的方针:
・SDU永远不要设置的比TDU大,因为你将浪费掉网络资源空间。
・如果你的用户是通过调制调解器来上网,你应该将SDU和TDU的值设置的小一点,因为频繁的再发送会经常发生在调制调解器的线路上。
・在宽带连接中,你应该将你的网络SDU和TDU的值和MTU的值设置得大小一样。在标准的以太网络中,默认的MTU大小是1514字节,在标准的
令牌环形网中,MTU默认值大小是4202。
・如果MTS被使用,你必须利用适当的MTU,TDU设置来设置mts_dispatchers。
在主机之间,SDU和TDU设置是连接速度的直接函数。例如T1,设置SDU=TDU=MTU。对于速度慢的调制调解器来说,最好使用值较小的SDU和
TDU。
listener.ora文件中的Queuesize参数
当Oracle正在建立的连接的时候,这个连接由queuesize参数来确定。这个参数仅仅被大容量的数据库使用。人们期待同时发生的连接的大
小必须和queuesize参数的大小相等。这里是一个listener.org文件中的关于使用这个参数的例子:
LISTENER =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = marvin)
(PORT = 1521)
(QUEUESIZE = 32)
)
)
这个参数的一个缺点就是它会为预计的请求分配参数,因此,会使用更多的内存和资源。如果你需要使用大容量连接你就要考虑使用MTS。
同时,注意一些UNIX的版本不允许使用的队列超过5,并且还有关于MTS队列大小的限制。
性能
尽管大多数信息包的流量都被调谐好了,但是正确的Oracle网络参数设置将给分布式系统的性能带来巨大影响。对于使用Oracle的专
业人员来说,他们必须完全明白其性能和优化这些重要的参数。